[Techradar] The forgotten API: just what is going on with DX12?

Page 2 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

Bacon1

Diamond Member
Feb 14, 2016
3,430
1,018
91
SO you jump into a thread, change the title as a mod, throw in a 4 word half sentence, and post nothing to challenge the article or any link either.
Seems like you want to use your mod powers to change a title of a thread and then derail a thread rather than debate the context with something usefull..
Good job and thanks.

Uhhh he added the SOURCE which is well... a rule:

Thread-Title Citation Expectations:
Per community voting, thread titles containing information based on 3rd party sources must include a citation of the source in the thread-title.
 

antihelten

Golden Member
Feb 2, 2012
1,764
274
126
that's not begging the question.

Ironically, one might argue that TechRadar is in fact begging the question with this article, since they very much seem to have approached the subject with preconceived notions, i.e. they take the conclusion (DX12 is having adoption issues) and use it as the premise instead of as the conclusion, and then starts building an argument around this unproven premise.
 

Mopetar

Diamond Member
Jan 31, 2011
8,021
6,473
136
we call that thread crapping .

Eh, "misuse of begging" the question is one of those things that I think deserves its own special place in hell.

You should probably be happy that he pointed it out and allowed you to state that you copied it from the article. Otherwise a lot of people would have probably thought that you were an idiot instead of the article's author. It's a bit like someone saying the phrase "intensive purposes" where it's apparent they're trying to sound intelligent, but don't know what they're talking about.

It doesn't take much investigation to learn that it takes several years of development effort to produce modern AAA games and that many of these use existing engines or build off of an existing engine. Most of the games that have DX12 include it more as a bolt-on rather than designing around it from a starting point. It will be another 18 months before we start to see a lot of DX12 games built that way from the ground up, because it can take that much lead time for projects that started in the last 18 months to finish and actually come out. Some companies are still finishing projects that were started prior to DX12, so at best they tack it on as an after thought, so they might not even start a DX12 project for another year. Hell, there are still modern games coming out today (Killing Floor 2 is one recent example I can think of) with DX10 support even though it's over a decade old at this point. We go through the same thing every time, so I don't see why people are surprised when we see the same kinds of patterns in adoption.

It's a useless article. Take the following bit: "why don’t developers love DX12, and is this becoming a significant issue?" Funny enough, the author is actually begging the question there, not that he'd know that given his immediate prior misuse of the term. Worse yet, he asks what could be an interesting question, but then he doesn't even bother to try and answer it. He could have reached out to a few dozen developers at different studios and asked about if they were using DX12 on any current or future projects, what they thought about it, etc. but that would require actual work so let's just paint some doom and gloom to drive clicks instead.
 

Elixer

Lifer
May 7, 2002
10,376
762
126
I think this statement pretty much spells it out about DX 12 & Vulkan, directly from a developer.

On DirectX 11, you need a pretty powerful machine to run Ashes of the Singularity (on DirectX 12 or later Vulkan, you can run it on a potato practically, that's how much better DX12/Vulkan are).
...
DirectX 12
I can't even begin to tell you how much of a game-changer DirectX 12 was. Suddenly, this game that was going to require a monster machine to run could run on much more reasonable hardware. That's because DirectX 12 lets every CPU core talk to the graphics card at the same time. On DirectX 11, only 1 CPU core can talk to the GPU at once. As some may recall, people were dubious about the game's benchmark results on DirectX 12. But as people quickly saw, it was a massive difference.
BTW, Kudos to Stardock for doing the right thing with AotS!
http://forums.ashesofthesingularity.com/481725/MERGING-the-SINGULARITY
 
Last edited:
Reactions: DarthKyrie

Madpacket

Platinum Member
Nov 15, 2005
2,068
326
126
AoTS is kind of a best case scenario. Thousands of units independently moving around performing different tasks require a lot of CPU draw calls. We also know what ID is capable of with DOOM and Vulcan. So we have two major genres covered. I'm curious if game development will shift in any significant way, like new genres created due to the copies amounts of draw calls available. Perhaps we'll see something first on the PS Pro or Scorpion consoles. Either way, DX11 needs to die ASAP. I don't want it hanging around like DX9/10 did for many years. Thankfully the consoles use both X86/GCN so transition should happen faster. I don't think Mobile Vulcan game development will benefit us PC gamers much but at least there's hope for something other than vendor lock in Windows 10. Be honest. Who here actually likes Windows 10?
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Direct3D 11 was released in 2011. Didn't it take a good three, four years before it started gaining traction?

What I hope to see, is Bethesda finally getting some decent rendering programmers, so we can finally move on from just having 5x5 game cells loaded at once.
 

bystander36

Diamond Member
Apr 1, 2013
5,154
132
106
Direct3D 11 was released in 2011. Didn't it take a good three, four years before it started gaining traction?

What I hope to see, is Bethesda finally getting some decent rendering programmers, so we can finally move on from just having 5x5 game cells loaded at once.
According to the person he talked to, DX11 may have been the fastest ever to gain adoption as well.
 

Dribble

Platinum Member
Aug 9, 2005
2,076
611
136
The biggest problem I have with DX12 is that it doesn't seem to have added anything in real games over DX11, in fact often there are DX11 and DX12 implementations for the same game. I am not aware of those games giving me new feature only available in DX12, or most of the time even running any faster. All that DX12 tends to add is more instability, so what have I got to get excited about?

Hence I can see dev's not being to bothered - why put all that effort in for no real gain.

This is different to DX11 where they at least added some new graphical options not available in DX9, so there at least seemed some point in using it.
 

Krteq

Senior member
May 22, 2015
993
672
136
The biggest problem I have with DX12 is that it doesn't seem to have added anything in real games over DX11, in fact often there are DX11 and DX12 implementations for the same game. I am not aware of those games giving me new feature only available in DX12, or most of the time even running any faster. All that DX12 tends to add is more instability, so what have I got to get excited about?

Hence I can see dev's not being to bothered - why put all that effort in for no real gain.

This is different to DX11 where they at least added some new graphical options not available in DX9, so there at least seemed some point in using it.
There is a great post regarding this from Sebbi (Sebastian Aaltonen - Graphics engineer @RedLynx) on Beyond3D forums
Sebbi said:
The reason why we don't see bigger performance boost in DX11->DX12 ports is that most engine code bases are designed around DX11 (DX9 roots). If you simply implement DX12 behind an existing graphics API wrapper, you will basically end up emulating the DX11 driver. That's not going to bring magical performance boosts. You need to completely rewrite your whole resource management pipeline, including data streaming, loading, memory management, dynamic resources, etc. You need to implement logic to group draws in bundles (and cache them) instead of submitting lots of tiny new draw calls every frame. You need to use ExecuteIndirect when drawing lots of bulk objects with similar state (such as shadow maps). And you need to use bindless resources to reduce draw call counts (bindless makes all resources are available without binding -> resource changes don't need draw call boundaries). None of the current DX12 PC games use bindless resources. The reason is that most engines are so tightly programmed around the old DX9/10/11 binding model. Changing that would require a major rewrite to the engine code base.

The biggest problem is: Major rewrite to support DX12 perfectly (bindless and all) would make the code base incompatible with the old DX9/DX11 binding and resource management model. Dropping DX11 support is not an option for most developers, as Windows 7 is still so widely used. Vulkan (supporting Windows 7) might be the black horse, allowing developers to move faster to these radically new rendering engine designs. As soon as we get fully featured robust HLSL -> SPIR-V compiler (it is bound to happen), there is nothing preventing studios in dropping the legacy DX11 support. That's when we see big changes. IMHO Microsoft made a big mistake when they decided to limit DX12 to Windows 10. Many developers would have already dropped DX11 (in favor of DX12) if DX12 supported Windows 7....

...Gears is using Unreal Engine. Unreal Engine 4 is designed around traditional (DX11) binding model. Quantum Break developers (Remedy) had a full presentation talking about their DX12 porting process. They were not DX12 from the beginning. I don't know details about Forza, but the previous Forza game was released before DX12, and I am pretty sure they didn't rewrite their whole graphics engine between the last two games.

Ashes of Singularity is one of the only true DX12 titles. Nitrous engine was designed for DX12 from the ground up. Their Star Swarm stress test already showed huge performance gains on DX12. And even they have DX11 legacy code path (limiting their options). We have to wait for engines designed around ExecuteIndirect and bindless resources. Console exclusives of course can already use these features, but porting to PC is going to be tricky, unless you can afford to be Windows 10 only.
forum.beyond3d.com
 

thecoolnessrune

Diamond Member
Jun 8, 2005
9,673
580
126
Direct3D 11 was released in 2011. Didn't it take a good three, four years before it started gaining traction?

What I hope to see, is Bethesda finally getting some decent rendering programmers, so we can finally move on from just having 5x5 game cells loaded at once.

Direct3D 11 released with Windows 7, which came out in 2009.

DX11 was released in 2009 and it got hacked on patches to DX9 games for years. In fact, the first commercial native DX11 game was Civilization 5, which came out 1 year after DX11 released.

So yeah, at least from the surface, DX12 is doing fine.
 

SlickR12345

Senior member
Jan 9, 2010
542
44
91
www.clubvalenciacf.com
Simple, Win10 is backwards compatible with DX11 and lower, therefore there are 100% DX11 gamers and only about 25% DX12 gamers. So if there are lets say 500 million gaming PC's, about 125m would be DX12, while all 500m would be DX11.

Further the DX12 is harder to implement, its more time consuming, it's harder, its more tricky. Because its low level developers would need to optimize for each individual hardware, considering there are at least 30 different graphic cards just from the past 3 generations alone, lets not forget intel integrated and amd apu's that can be up to 50 graphics just in the the 3 generations. Optimizing for each one and setting up your engine to work the best with all is impossible.

What we can hope is that there is going to be higher level coding that works for 95% of graphics, and good amount of headroom for devs to optimize for specific graphics, for example for the latest models like the 1060 and higher and 470 and higher.

But again its going to be at least a year before we see fully DX12 capable engines, fully DX12 capable games around those 100% DX12 engines and where the game is optimized for each individual hardware to a good extent. Again this is a big issue, in that it takes a lot more time and resources.

So are we going to see wide spear adoption of DX12 ever? I don't think so. I think its going to coexist with DX11 for the foreseeable future. At least 3 years where DX11 and DX12 will coexist and DX12 won't be the primary API.
 
Last edited:

Krteq

Senior member
May 22, 2015
993
672
136
Because its low level developers would need to optimize for each individual hardware, considering there are at least 30 different graphic cards just from the past 3 generations alone, lets not forget intel integrated and amd apu's that can be up to 50 graphics just in the the 3 generations. Optimizing for each one and setting up your engine to work the best with all is impossible.

What we can hope is that there is going to be higher level coding that works for 95% of graphics, and good amount of headroom for devs to optimize for specific graphics, for example for the latest models like the 1060 and higher and 470 and higher.
Hmm, nope. DX12 still have an abstraction layer. You are not writing a code "to metal", there are still feature levels and capability bits used.

Anyway, once nvidia will finally provide GPU uarch with resource binding tier 3 ("bindless" uarch like GCN or Intel IGP Gen. 9 and above), we will see more DX12 native engines/titles.
 
Last edited:

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
Hmm, nope. DX12 still have an abstraction layer. You are not writing a code "to metal", there are still feature levels and capability bits used.

Anyway, once nvidia will finally provide GPU uarch with resource binding tier 3 ("bindless" uarch like GCN or Intel IGP Gen. 9 and above), we will see more DX12 native engines/titles.

It's weird, people treat Direct3D 12 & Vulkan like they're ASM languages. The best way to describe them, is they are to Direct3D 11, what C++ is to Lua. Less behind the scenes code, magnitudes more performance.
 

biostud

Lifer
Feb 27, 2003
18,407
4,968
136
so, it will take some years before it is widely adopted, and? In the end it is not whether a game run with dx11 or dx12 that makes the game worth playing.
 

bystander36

Diamond Member
Apr 1, 2013
5,154
132
106
so, it will take some years before it is widely adopted, and? In the end it is not whether a game run with dx11 or dx12 that makes the game worth playing.
But when it is fully adopted, dev's will be able to do things they currently can't, or rather, they'll compromise less often. It may also allow people with slower CPU's to play at higher settings, and allow people to take advantage of more cores, allowing higher end CPU's to matter more.
 

SlickR12345

Senior member
Jan 9, 2010
542
44
91
www.clubvalenciacf.com
But when it is fully adopted, dev's will be able to do things they currently can't, or rather, they'll compromise less often. It may also allow people with slower CPU's to play at higher settings, and allow people to take advantage of more cores, allowing higher end CPU's to matter more.
This is not true. DX12 doesn't magically make slower cpu's perform better, where DX12 helps is if say a slow 4 core cpu is not being utilized on all cores, its just wasting 1 thread massively and the other 3 doing a lot less. This is where it helps and balances the load between all cores.

Say you run a single core processor and it gets used up, DX12 will perform worse than DX11,
 

bystander36

Diamond Member
Apr 1, 2013
5,154
132
106
This is not true. DX12 doesn't magically make slower cpu's perform better, where DX12 helps is if say a slow 4 core cpu is not being utilized on all cores, its just wasting 1 thread massively and the other 3 doing a lot less. This is where it helps and balances the load between all cores.

Say you run a single core processor and it gets used up, DX12 will perform worse than DX11,
While there is no magic, DX12 has much lower overhead and if taken advantage of will allow for a massive increase if draw calls. There are a number of draw call benchmarks that show this. DX12 also allows the use of more cores too.
 

Bacon1

Diamond Member
Feb 14, 2016
3,430
1,018
91
Say you run a single core processor and it gets used up, DX12 will perform worse than DX11,

DX12 should never be slower than DX11 when used correctly. Even in a worse case scenario. There is less overhead from DX12 calls and no error handling wrapper. So even if the CPU was at 100% usage the whole time, the DX12 version should be faster due to doing less work by default.
 

MajinCry

Platinum Member
Jul 28, 2015
2,495
571
136
DX12 should never be slower than DX11 when used correctly. Even in a worse case scenario. There is less overhead from DX12 calls and no error handling wrapper. So even if the CPU was at 100% usage the whole time, the DX12 version should be faster due to doing less work by default.

Bingo. The new explicit APIs (Zlatan's term, IIRC) have less overhead and are embarrassingly parallel. What was the figure being thrown around by AMD concerning Mantle? 50k draw calls per core?
 
Reactions: Krteq and Bacon1

TheELF

Diamond Member
Dec 22, 2012
3,993
744
126
Best example of what a low level API can do for a slow low core count CPU is Dota 2 because they have a terrible Dx driver that gobbles up large amounts of CPU cycles,
~10-15% in this video and because the game only runs 3 threads plus driver you won't see any benefit on a 4 core CPU.
AAA titles have a much smaller driver usage so the benefits are also much smaller.
(Unless they use better commands that are faster)
 

Bacon1

Diamond Member
Feb 14, 2016
3,430
1,018
91
Best example of what a low level API can do for a slow low core count CPU is Dota 2 because they have a terrible Dx driver that gobbles up large amounts of CPU cycles,
~10-15% in this video and because the game only runs 3 threads plus driver you won't see any benefit on a 4 core CPU.
AAA titles have a much smaller driver usage so the benefits are also much smaller.
(Unless they use better commands that are faster)

Man the GPU load % is so low on both, 50% DX11 and 70s in Vulkan :'( But yes good example of how much it matters for low end hw.
 

TheELF

Diamond Member
Dec 22, 2012
3,993
744
126
Well if you can drive your GPU(reach ~100%) in dx11 than you won't get any benefit from dx11/vulkan anyway so I consciously went with low GPU utilization to show the maximum benefit.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |