These draw calls contain the required data and associated pointers within and are independent of other calls and their states. Instead of a single global state (context), each draw call from the application has its own smaller state (see PSOs below for more). With DirectX 12, the draw calls are more flexible. Furthermore, modifying the global state via state calls is a relatively slower process, further complicating the entire process. Since there’s a single global state/context (and a single main thread on which it’s run), it makes it difficult to multi-thread as multiple draw calls simultaneously can cause errors.
Just cause 3 directx 12 Pc#
The games you run on your PC modify this state via draw calls to the API, after which it’s submitted to the GPU for execution. With DirectX 9 and 11, there’s a global state (or context). Like every application, graphics APIs like DirectX also feature a primary thread that keeps track of the internal API state (resources, their allocation, and availability). How DirectX 12 Improves Performance by Optimizing Hardware UtilizationĪgain, there are a few main API advances that facilitate this gain: Per-Call API Context Luckily, third-party engines like Unreal, CryEngine, and Unity do this for them and they only have to focus on designing. This is a double-edged sword as there are multiple GPU architectures out in the wild and for indie devs, it’s impossible to optimize their game for all of them.