User:ScotXW/Graphics

Events

 * GPU Technology Conference GTC
 * SIGGRAPH
 * High-Performance Graphics HPC: http://www.highperformancegraphics.org/2014/web-archive/

Presented theories and solutions

 * At SIGGRAPH 08 in December 2008 AMD employee Mike Houston described some of TeraScale microarchitecture.


 * At HPC09 in August 2009 some Nvidia employee said:
 * Rasterization will be dead in 7 years, by 2016, because
 * the polygon size is going down and rasterizer becomes inefficient
 * shading dominates anyway and overdraw hurts
 * passes going up to 100s in modern games
 * Art cost is going up exponentially, and this is unsustainable
 * REYES will be dead in 7 years because
 * it inherits many problems from rasterization, it still needs many passes and has no GI effects
 * involves substantial redundant computation, tesselation per pass, overmodeled => overshaded
 * add geometric richness, but does it really reduce artist time?
 * Ray tracing will be dead in 7 years because, cf. Quake Wars: Ray Traced by Intel
 * not power efficient
 * high cost variability makes framerate difficult to predict
 * unsolved only partially solved aliasing, displacement, dynamic/deforming scenes, efficient SIMD / SIMT
 * not as parallel as you think
 * Nvidia claims
 * that Algorithms of the future will be a blend or a unification of ray tracing, rasterization and REYES
 * algorithmic improvements are as important as HW improvements, thus AMD Catalyst/Nvidia driver will play an increasing role
 * the brave will get there first
 * ⇒ at HPG10 somebody presented a combined solution based on OptiX
 * ⇒ at HPG10 Nvidia RayTraycing I http://highperformancegraphics.org/previous/www_2010/media/RayTracing_I/HPG2010_RayTracing_I_Pantaleoni.pdf https://code.google.com/p/hlbvh/ uses CUDA
 * ⇒ at HPG10 Nvidia RayTraycing II http://highperformancegraphics.org/previous/www_2010/media/RayTracing_II/HPG2010_RayTracing_II_Aila.pdf
 * AMD Radeon HD 5000 http://highperformancegraphics.org/previous/www_2010/media/Hot3D/HPG2010_Hot3D_AMD.pdf
 * ARM Mali-400 http://highperformancegraphics.org/previous/www_2010/media/Hot3D/HPG2010_Hot3D_ARM.pdf
 * Nvidia Fermi http://highperformancegraphics.org/previous/www_2010/media/Hot3D/HPG2010_Hot3D_NVIDIA.pdf


 * AnySL: Efficient and Portable Shading for Ray Tracing
 * At HPG11 in August 2011 AMD employees Michael Mantor (Senior Fellow Architect) and Mike Houston (Fellow Architect) presented Graphics Core Next, the microarchitecture succeeding TeraScale.


 * Process technology below 32 nm is going to be very expensive (cost and leakage power), this will drive more focus on perf/mm² and perf/Watt ⇒ AMD TrueAudio
 * a fully programmable dedicated hardware element to offload audio tasks to. The main problem with developing new tools comes down to whether they should be implemented in a general fashion or with a dedicated element. This comes down to the distinction of having a CPU or an ASIC do the work – if the type of work is specific and never changes, then an ASIC makes sense due to its small size, low power overhead and high throughput. A CPU wins out when the work is not clearly defined and it might change, so it opens up the realm of flexibility in exchange for performance per Watt.
 * Imagine being in a firefight situation in a video game, whereby there are many people running around with multiple gunshots, splatter audio and explosions occurring. Implementing effects on all, and then transposing audio location to the position of the character is actually computationally expensive, all for the sake of realism. This is where the TrueAudio unit comes into play – the purpose is to offload all of this onto a dedicated bit of silicon that has the pathways built in for quicker calculations.

Moved to User:ScotXW/Rendering APIs

Mobile

 * http://www.highperformancegraphics.org/wp-content/uploads/Shebanow-Keynote.pdf
 * http://blog.imgtec.com/powervr/understanding-powervr-series5xt-powervr-tbdr-and-architecture-efficiency-part-4
 * http://blog.imgtec.com/powervr/powervr-series7xt-gpus-push-graphics-and-compute-performance
 * anandtech-Understanding Rendering Techniques
 * http://blog.imgtec.com/powervr/vulkan-explicit-operation-and-consistent-frame-times

Improved rendering API
The rendering APIs available as of July 2013 are power inefficient! Needed:
 * Hints
 * State-less rendering
 * •*API commands supply state with action
 * Frame-less rendering (this may sound as it won't benefit FPS-games, but it would, look at video compression)
 * Compositing deferred and on-demand
 * Hierarchical geometry
 * Deferred detail

HSA
... so how do we do the rendering? Nvidia predicted in 2009 a mixture of rasterization and REYES and ray tracing. Assuming this prediction is correct, which hardware shall do which computations? Looking at Quake Wars: Ray Traced, x86-many-core-bla doesn't seem that bad, but of course a rasterizer engine of that era would probably achieve 1000fps on the used hardware! However the future mixt-rendering is maybe best done on BOTH, on CPU and GPU.
 * 1) Through which API/APIs shall game engines send commands to the GPU, or to GPU and CPU?

It is safe to say, that Nvidia has successfully established their CUDA, proprietary software that runs exclusively on Nvidia hardware. If AMD does not push for OpenCL & Mantle & HSA & HSAIL, they could miss a lot of fun... Officially Mantle is still in beta, but AMD announced to make it an open API.

Programming Tools Roadmap. Given that many users write in different languages for many different purposes, AMD has to have a multifaceted approach when it comes to providing programming tools. Base HSA stack: Base HSA execution stack supporting HSAIL and HSA runtime for Kaveri is expected to become available in Q2 2014.

LLVM: HSAIL is only one piece of the puzzle. While many compiler writers are perfectly happy to directly generate HSAIL from their compilers, many new compilers today are built on top of toolkits like LLVM. AMD will also open-source an HSAIL code generator for LLVM, which will allow compiler vendors using LLVM to generate HSAIL with very little effort. So we may eventually see compilers for languages such as C++, Python or Julia targeting HSA based systems at some point. Along with the work being done in Clang to support OpenCL, the LLVM to HSAIL generator will also simplify the work of building OpenCL drivers for HSA-based systems. In terms of competition, NVIDIA already provides a PTX backend for LLVM.

OpenCL: At the time of launch, Kaveri will be shipping with OpenCL 1.2 implementation. My understanding is that the launch drivers are not providing HSA execution stack and the OpenCL functionality is built on top of their legacy graphics stack built on top of AMDIL. In Q2 2014, a preview driver providing OpenCL 1.2 with some unified memory extensions from OpenCL 2.0 built on top of HSA infrastructure should be released. A driver with support for OpenCL 2.0 built on top of HSA infrastructure is expected in Q1 2015.

C++ AMP: C++ AMP was pioneered by Microsoft and the Microsoft stack is built on top of DirectCompute. DirectCompute does not really expose unified memory, and even Direct3D 11.2 only takes only preliminary steps towards unified memory. Microsoft's C++ AMP implementation targets DirectCompute and thus won't be able to take full advantage of features offered by HSA enabled systems. However, C++ AMP is an open specification and other compiler vendors can write C++ AMP compilers. HSA Foundation member Multicoreware is working with AMD on providing a C++ AMP compiler that generates HSAIL for HSA enabled platforms, and OpenCL SPIR for other platforms (such as Intel).

Tearing & Stuttering

 * Nvidia G-Sync http://www.anandtech.com/show/7582/nvidia-gsync-review 2013-12-12
 * AMD FreeSync http://www.anandtech.com/show/7641/amd-demonstrates-freesync-free-gsync-alternative-at-ces-2014 http://www.anandtech.com/show/7641/amd-demonstrates-freesync-free-gsync-alternative-at-ces-2014

X
For many years the X Window System has been the only major player in providing a base for GUI applications on Linux, UNIX and Unix-like operating systems. The fact that the graphics device drivers for the graphics hardware were part of X.Org Server (DIX + DDX) and hence operated in user space ensured that it's implementation was portable to many OSes. The fact that the graphics drivers didn't run in kernel space led to a number of drawbacks especially with 3D acceleration. At the same time there was a graphics driver stack in the Linux kernel called 'fbdev' which only gained limited relevance and didn't really meet the challenges of state-of-the-art graphics hardware. Furthermore it was completely separated from the 3D driver stack (DRM) in the Linux kernel.

To overcome many of those shortcomings a project called KMS driver (kernel mode setting) was started to integrate a mode setting driver stack and a graphics memory manager with the DRM stack that had already been part of the Linux kernel for quite some years and take advantage of the lessons learned from recent mode setting and on-the-fly configuration projects in X.Org - namely XRandR.