DirectX 12 API Preview

It should also be noted that the responses he posted there were paraphrased so don't read too much into the exact wording.

So basically DX12 gives developers more rope to hang themselves with and has more opportunities for bugs to appear. Excellent :D
That's not exactly true... although I admit that "safe" was probably not the best word choice.

While it is true that it is easier to write code that might have hazards and races and so on, it's probably more relevant to stability that a thinner driver/API means that developers have more insight into what is "complicated magic" vs. the simple fast paths and will naturally tend to avoid doing the former. In previous APIs a lot of complicated code paths got invoked simply because developers were not aware of them, and these are the sorts of things that lead to robustness issues.

So while I do agree that there is a tradeoff here - and it's not necessarily the right one for every developer - I don't generally agree with the statement that it's more likely that bugs will appear.
 
So while I do agree that there is a tradeoff here - and it's not necessarily the right one for every developer - I don't generally agree with the statement that it's more likely that bugs will appear.


Fair enough. The links posted above provide really good insight into what's changing with D3D12. It's great to see Intel excited and pushing the new approach.

I wonder though about why it's taken this long to turn the corner. Developers were plenty smart before and the PC ecosystem is no less fragmented today. What was the catalyst that convinced MS to finally hand control over to the developer?
 
I wonder though about why it's taken this long to turn the corner. Developers were plenty smart before and the PC ecosystem is no less fragmented today. What was the catalyst that convinced MS to finally hand control over to the developer?

Possibility #1 : Because devs have been asking for that for the last 10 years.
Possibility #2 : Because GPU now allow it.
Possibility #3 : Because XBox.
Possibility #4 : Because Mantle.

Feel free to mix and blend as you like.
 
I'll add a major reason from my point of view... because a much larger majority of games go through a small number of engines these days than in the past. That is a huge reason why it makes sense to double down on those paths and get them as efficient as possible vs. providing an API for consumption by a much broader group of folks (with a wider range of experience levels).

But there definitely are GPU hardware reasons too.
 
So basically DX12 gives developers more rope to hang themselves with and has more opportunities for bugs to appear. Excellent :D
Console developers say hi. They've been doing way more interesting stuff at a lower level for game design (not just graphics) for quite a long time now. Their work on multi-threaded game engines, task parallelism, etc. is still ahead of what's happening on PC.

As for Intel's enthusiasm, they're still scumbags because they chickened out of discrete graphics with Larrabee. We wouldn't be having Mantle/DX12 discussions if Intel had followed through.
 
Yeah hopefully all that experience is portable to PC land once DX12 hits. Are console game environments considered more rich and detailed in terms of objects drawn or was the low level access just compensating for relatively weak console hardware?

I'm not a big console gamer but I don't know of any games that make you say "Wow look at the amount of stuff on the screen".
 
I'm just trying to highlight that the console devs have to be recognised for blazing trails, ultimately doing more with less. Low level hardware access, which definitely provides plenty of rope to hang oneself, is liberation and lifeblood. I think the final games from the generation that's just ended are a testament to their on-going genius in getting so much out of those systems.

Higher res textures/shadows and occasional longer view distances on PC are scant reward for the absurdly more powerful hardware that's typical.
 
I'll add a major reason from my point of view... because a much larger majority of games go through a small number of engines these days than in the past. That is a huge reason why it makes sense to double down on those paths and get them as efficient as possible vs. providing an API for consumption by a much broader group of folks (with a wider range of experience levels).

But there definitely are GPU hardware reasons too.

Correct I forgot to mention it ^^
 
Possibility #1 : Because devs have been asking for that for the last 10 years.
Possibility #2 : Because GPU now allow it.
Possibility #3 : Because XBox.
Possibility #4 : Because Mantle.

Feel free to mix and blend as you like.

Possibility #5 : DirectX became even more crucial to the Windows ecosystem because its considered the modern graphics stack for windows/windows phone.

All Microsofts modern products, business/enterprise products like Office, is re-written ontop of WinRT & DirectX .. moving off Win32 GDI/USER32..

The Windows Store and the Windows Programming model, (WinRT-XAML, WinJS) is totally reliant on HW acceleration from DirectX (DirectComposition, D3D, D2D) ..

Microsofts "fast and fluid" UI's, or so their marketing line says, is only possible if DirectX delivers...

So i'm betting that was a big driver behind the major re-investments in DirectX..

p.s. I'm biased as I'm an application developer and its been drilled into us from many years ago the importance of DirectX in WinRT.. And that it was a skill all native/managed/Web devs should try to pick up if they want their applications to shine in Modern Windows..

It's interesting reading all the posts from the people on this board, and how its always got a "games" slant to it ... Whereas im coming from the application side where DirectX is equally, if not more so, important..

p.s. also Applications are very CPU bound, so Dx12 will definitely benefit us!
 
Possibility #5 : DirectX became even more crucial to the Windows ecosystem because its considered the modern graphics stack for windows/windows phone.

All Microsofts modern products, business/enterprise products like Office, is re-written ontop of WinRT & DirectX .. moving off Win32 GDI/USER32..

The Windows Store and the Windows Programming model, (WinRT-XAML, WinJS) is totally reliant on HW acceleration from DirectX (DirectComposition, D3D, D2D) ..

Microsofts "fast and fluid" UI's, or so their marketing line says, is only possible if DirectX delivers...

So i'm betting that was a big driver behind the major re-investments in DirectX..

p.s. I'm biased as I'm an application developer and its been drilled into us from many years ago the importance of DirectX in WinRT.. And that it was a skill all native/managed/Web devs should try to pick up if they want their applications to shine in Modern Windows..

It's interesting reading all the posts from the people on this board, and how its always got a "games" slant to it ... Whereas im coming from the application side where DirectX is equally, if not more so, important..

p.s. also Applications are very CPU bound, so Dx12 will definitely benefit us!

Thanks for a very interesting perspective on the topic.
 
Max's presentation does not make a distinction between feature level 11.3 and 12. Does that mean all of the new D3D12 features (conservative raster, volume tiled resources etc.) will be available in D3D11 feature level 11.3?
 
Max's presentation does not make a distinction between feature level 11.3 and 12. Does that mean all of the new D3D12 features (conservative raster, volume tiled resources etc.) will be available in D3D11 feature level 11.3?

My interpretation is 'Yes'. 11.3 will have the same feature set of DX12, and DX11.3 will continual to evolve from a feature perspective alongside DX12. So oddly there might be a DX11.4 and a DX12.1 if they decide to follow the notation they have now.

Could be easier to identify if it's rebranded something along the lines of DX12X and DX12
 
My interpretation is 'Yes'. 11.3 will have the same feature set of DX12, and DX11.3 will continual to evolve from a feature perspective alongside DX12. So oddly there might be a DX11.4 and a DX12.1 if they decide to follow the notation they have now.

Could be easier to identify if it's rebranded something along the lines of DX12X and DX12

My interpretation is that 11.3 will have all those 4, but 12 might have some more on top of that. 11.3 (and possible future 11.x's) should work as stepping stone to keep on adding new features while devs learn D3D12
 
Is this some roundabout way of getting D3D12 features onto Win8? Otherwise why even do 11.3? My understanding is that things can still be done D3D11 style in D3D12 if the programmer doesn't care about getting down and dirty with the hardware.
 
However for these reasons a low level API is not suitable for everyone. High level APIs such as Direct3D 11 do exist for a good reason after all; their abstraction not only hides the quirks of the underlying hardware, but it makes development easier and more accessible as well. For these reasons there is a need to offer both high level and low level APIs. Direct3D 12 will be the low level API, and Direct3D 11 will continue to be developed to offer the same features through a high level API.
From anandtech about d3d11.3
http://www.anandtech.com/show/8544
 
My understanding is that things can still be done D3D11 style in D3D12 if the programmer doesn't care about getting down and dirty with the hardware.
To expand on the above link, in Direct3D the API and the hardware feature level are *separate* concepts, and have been since DirectX 11. You can write code for feature level 9 hardware using the Direct3D 11 API. This is also the reason why devs proudly talk about "skipping Direct3D 10 and going straight to 11"... that's precisely how the API is meant to work, not some sort of rebellious behavior ;) There was/is no reason to not write all your code in Direct3D 11 even if you target older hardware with lower feature levels.

As per Max's slides, that model continues with Direct3D 12 - the new Direct3D 12 *API* is what is all about lowered overhead, more explicit access to hardware, etc. But that API runs on feature level 11 hardware as well (GCN, Kepler, Haswell, etc), as was shown earlier this year at GDC.

What Max's new slides talk about is that there are also new features coming beyond feature level 11, and the described features will be exposed both through the D3D 12 and 11.3 APIs. So you don't have to switch entirely to the new lower-overhead D3D12 API to make use of new hardware features, you can use them through D3D11.3.

The choice of which API to use and which hardware feature level to target are now fully separate, so consumers really need to separate those concepts in their minds too. Saying that a given GPU is "DirectX 11" or "DirectX 12" is not really meaningful without a clarification of API and feature level support.
 
Back
Top