DX12 More CPU cores and threads = more FPS?

PatrikVujicic

Reputable
Jun 2, 2015
336
0
4,780
Hey guys!

So I'm confused I heard that more cores will be able to talk to GPU at same time with DX12 while in DX11 only 1 core can talk to GPU.
http://www.littletinyfrogs.com/article/460524/DirectX11vsDirectX12_oversimplified
DirectX 11: Your CPU communicates to the GPU 1 core to 1 core at a time. It is still a big boost over DirectX 9 where only 1 dedicated thread was allowed to talk to the GPU but it’s still only scratching the surface.
DirectX 12: Every core can talk to the GPU at the same time and, depending on the driver, I could theoretically start taking control and talking to all those cores.
So that means if you have more cores and threads you will gain more FPS?
 
Solution
The Problem with Direct X < 12, Open GL, etc. is that they are an API that is abstracted from the hardware, and handled not by the game, but by a separate program (the driver). Basically, the game would call a bunch of things, wait for the driver to get run, then the driver would pass that information to the GPU and draw it there. Drivers tend to be single-thread solutions, and therefore, only run on a single core. This creates a bottleneck, where, no matter how well you divide your other tasks between your cores, the (driver) task will never benefit from more than one core. This is part of why intel, with the high single-core performance, tends to dominate AMD's multi-thread optimized designs in gaming. Ironically, AMD's drivers are...

Omegaclawe

Honorable
Sep 28, 2013
156
0
10,710
The Problem with Direct X < 12, Open GL, etc. is that they are an API that is abstracted from the hardware, and handled not by the game, but by a separate program (the driver). Basically, the game would call a bunch of things, wait for the driver to get run, then the driver would pass that information to the GPU and draw it there. Drivers tend to be single-thread solutions, and therefore, only run on a single core. This creates a bottleneck, where, no matter how well you divide your other tasks between your cores, the (driver) task will never benefit from more than one core. This is part of why intel, with the high single-core performance, tends to dominate AMD's multi-thread optimized designs in gaming. Ironically, AMD's drivers are worse than Nvidia's at this, and take a bigger performance hit on their own CPU's.

A lot of this is because, as an abstract API, you must try to be safe and never make assumptions about what the game is trying to do. You cannot be sure of thread-safety, so it's much easier to force sequentiallity in a single-thread design. It may even be a part of the API's spec, preventing AMD or Nvidia from making the driver work better even if they wanted to.

Mantle changed this by giving the game (and its developers) more direct access to the GPU. It put the onus of safety not on the driver, but on the game developer. This means that the developer, who can know exactly what they're doing, can implement only those safety checks that make sense with their program (or none at all, as it will sometimes be the case) and make assumptions about how things are done. This means a competent developer can use as many cores as the user has available. This is, in no small part, why Mantle lead to such huge performance improvements on AMD CPU's, particularly those with a large number of cores.

Mantle, however, is now mostly dead, reborn as Vulkan, which is cross platform and handled by the same people who did OpenGL. It will also run on Nvidia hardware, as well as just about everything else. Since Vulkan is based on Mantle (and its source code) the same things apply to it as do Mantle. DX12, meanwhile, is Microsoft's attempt at a proprietary API that accomplishes the same things, and provides a solid argument for Windows 10.

tl;dr: More cores and threads will become more helpful than they used to be, but they are NOT the end-all be-all of determining performance. The only accurate way to tell which CPU is better is to check the benchmarks for things you would do with it. Heck, a Core i3 tends to beat a 6-Core AMD Chip right now...
 
Solution