Hello and Welcome to Gamers Nexus!
Today, we're joined by Robert Hallock of AMD, and we're going to talk about GP Rendering Pipeline on DirectX 12. Before we dive into that, we'd like to thank Cyber Power PC for sponsoring this coverage. They recently overclocked their fan book past 4 GHz, and we can't wait to see what other amazing things they have in store for us.
Now, let's get started with the top-level GPU rendering pipeline. From a really high level, here's how it works: the game adds the graphics card to do something, the CPU pulls in that information, orders it up for the graphics card, and sends it off to the GPU. The GPU then interprets the work as provided by the CPU, which is essentially what we call a draw call whenever the CPU asks the GPU to do something.
At the front end of the GPU, you have a hardware scheduler that organizes compute, graphics, and memory workloads. This scheduler sends the work through the graphics pipeline, where you set up geometry, texturing, lighting, and effects before spitting it out on the other side – and that's what comes out in your monitor as raster graphics.
So, when working with geometry, does it get drawn before shaders or effects? Geometry comes first, and then it's followed by the aces. In DirectX 11, this is where the hardware scheduler or aces determine if the work is compute-related or graphics-related, scheduling them separately before proceeding with dx12. With DirectX 12, we have asynchronous compute, which allows for setting up effects like depth of field, artificial intelligence, and GPU physics independently of geometry work.
This asynchronous compute feature saves a ton of time by allowing you to do setup work in parallel with the actual rendering process. When the model is finished, both the geometry and the setup work are completed, making it easier to jump into rendering without any delays.
In some of our previous conversations about DirectX 12, we talked about how AMD has seen significant gains in performance thanks to this technology. According to Robert Hallock, the responsible element for these gains is a combination of two things: asynchronous compute and the use of the Mantle API.
Firstly, the Mantle API was crucial in winning over console developers to work with AMD hardware. By training them on console architecture and providing an API that worked similarly but with desktop capabilities, AMD was able to get a huge following. This means that now, most desktop gaming APIs look and feel like they're using Mantle.
Secondly, the use of asynchronous compute has been instrumental in achieving these gains. With DirectX 12, developers can do setup work for effects independently of geometry work, making it easier to optimize their code and achieve better performance. We've seen 5-30% uplifts on performance tests with this technology, which is just incredible.
Now, we know that Vulcan is another API developed by AMD for desktop gaming. It's still relatively early in its development cycle compared to DirectX 12, but it's built on the same principles as Mantle and shares many of the same features. Robert Hallock mentions that developer conjecture suggests it might be around eight months behind DirectX 12 in terms of development time.
However, what we do know is that Vulcan has already been used by one game – Talis Principal – and there are more games on the way. AMD took the entire Mantle project specification and donated it to Kronos last year, who have built upon it to create a multivendor, multi-operating system. At its heart, though, Vulcan is still very much like Mantle.
Before we wrap up, let's take a look at what's happening at the AMD booth at PAX East 2016. They're hosting a five-on-five League of Legends tournament, followed by different games on each day – including user Choice and Oculus VR demos. Some of their game partners include Banner Saga, who they've been working closely with to showcase their capabilities.
We'll be providing more information and photos from the event in the description below. Thank you for watching, and we'll see you all next time!