DirectX 12 API Preview

https://msdn.microsoft.com/en-us/library/dn899127(v=vs.85).aspx

I don't know about other GPUs, but all GCN GPUs should be tier 3. This is because GCN loads resource descriptors directly from memory to general purpose SGPR registers. A shader program could have a loop that loads every single resource descriptor and samples/loads it once.

Is there any good public documentation (similar to the southern islands ISA reference) about NVidia GPUs?
 
I do want to caution guys - Microsoft and Futuremark are *really not kidding* when they are telling you that this is not a useful benchmark for comparing GPUs to one another. They make zero effort to even do a consistent amount of GPU work, let alone anything representative. See the pcper overclocking results for instance, but the rabbit hole goes much deeper.

This benchmark is only useful for comparing how well different APIs work on a given system (CPU+GPU), not for comparing systems. The takeaway here is that DX12 (and Mantle) is clearly much better than DX11, on all hardware.

What I find most un-amusing is some of the selected websites that were given early access in order to prepare their articles do not even bother to inform their readers in any way about this - even if is a statement in bold font on the FM whitepaper. That's only one example of the sad state of today's online-journalism.
 
Well, 1300% increase in draw call performance is pretty misleading, agreed. However reading between the lines, that could in real world performance imply up to 13x more scene complexity, something that PC has generally been suffering from. And for people with multigpu setups, we can finally start to see that horsepower be put towards more than just resolution and SSAA.
 
However reading between the lines, that could in real world performance imply up to 13x more scene complexity, something that PC has generally been suffering from.
I dunno, I go back and forth on that particular issue :) While I think for instance Ashes/StarSwarm are pretty good examples of use cases for this reduced API overhead, we also have stuff like Cities: Skylines released recently with tons of apparent "complexity" but that runs great on a wide range of hardware with conventional APIs (in fact, it's pretty light on the API calls in most views as it batches most stuff together).

My point is just that "complexity" is a nebulous term. From a technical point of view it's a clear improvement to get rid of overhead that doesn't need to be there, but from an "impact on games" point of view, let's just wait and see :)
 
I dunno, I go back and forth on that particular issue :) While I think for instance Ashes/StarSwarm are pretty good examples of use cases for this reduced API overhead, we also have stuff like Cities: Skylines released recently with tons of apparent "complexity" but that runs great on a wide range of hardware with conventional APIs (in fact, it's pretty light on the API calls in most views as it batches most stuff together).

My point is just that "complexity" is a nebulous term. From a technical point of view it's a clear improvement to get rid of overhead that doesn't need to be there, but from an "impact on games" point of view, let's just wait and see :)
haha, okay I get it. The batch stuff, I was just thinking though, all of it needs to be the same shader and materials right? There are some ways to maneuver there too, but it's not as flexible as having an independent draw call right (but likely faster).

Anyway you would know the best, your asteroid demo was pretty good, if that holds perfectly, having a big fleet battle in the middle of that would be pretty sick. If the asteroids were destructible, then I'd guess you'd have to start tapping on those available draw calls.
 
I dunno, I go back and forth on that particular issue :) While I think for instance Ashes/StarSwarm are pretty good examples of use cases for this reduced API overhead, we also have stuff like Cities: Skylines released recently with tons of apparent "complexity" but that runs great on a wide range of hardware with conventional APIs (in fact, it's pretty light on the API calls in most views as it batches most stuff together).

My point is just that "complexity" is a nebulous term. From a technical point of view it's a clear improvement to get rid of overhead that doesn't need to be there, but from an "impact on games" point of view, let's just wait and see :)

It would also be useful in open world games. Dead Rising 3 did a fairly good job in making the zombies not all look the same, but it still isn't quite there. And Cities while it does have a lot of stuff, it all looks rather the same.

I'd like to see this put to making a more diverse and thus more alive looking world. Someday we won't be walking down a street and seeing the same person over and over and over and over again. Even more disconcerting when they attempt to do a crowd of people and large numbers of them are identical.

Regards,
SB
 
Slightly off topic but does anyone know if the bay trail or the upcoming cherry trail products will support dx12. Might come in handy for on-the-go cheap development machine
 
Slightly off topic but does anyone know if the bay trail or the upcoming cherry trail products will support dx12. Might come in handy for on-the-go cheap development machine
Bay trail is Gen7-based (Ivy Bridge) and thus does not support DX12. Cherry trail is Gen8 (Broadwell).
 
Last edited:
I still don't understand why Microsoft chose to break that pretty good pattern by suddenly starting to upgrade .NET (4.0 to 4.5, 4.5.1, 4.5.2) rather than release new versions side-by-side. It went fairly smooth considering, but there have still been some really nasty issues here and there.
 
Why have feature levels ?
I guess there will be lower-level mobile GPUs which support WDDM 2.0 requirements for virtual adress space and driver residency in the memory management unit, but not SM4.x or SM5.x in the shader computing units. These will be essentially "Direct3D12 on feature level 9_3" or "Direct3D12 on feature level 10_1", much like 10Level9 in Direct3D 11.

Could as well be for compabitility reasons, so that the game content authored for Phone 8.1 could still be reused under WDDM 2.0 and either Direct3D12 or Direct3D 11on12 layer.
 
a developer aims to create their application/game on a stable set of features ...
I dont buy that explaination .Level 3 contains everything in level 1 and level 2 so just have level 3! Just because a version has certain features doesnt mean the game has to use them and just because a game doesnt use certain features doesnt mean there needs to be a seperate dx version with those features omitted.
ps: your quote seems to suggest your saying (or ms are saying) dx 11 feature level 1 is stable , level 2 less so ect.

The only reason that makes sense to me as to why ms would not just have dx12 level 3 as dx12 with no feature levels is
if a ihv put pressure on them saying
"our gpu supports all of dx12 except for one or two features which devs can work around or arnt that important
and because of that we will have to market our gpu's as only being dx11 compliant and we will lose sales, you need to come up with a solution so that we can market our gpu's as dx12 compliant"
Hence this feature level nonsense.
 
Last edited:
I dont buy that explaination .Level 3 contains everything in level 1 and level 2 so just have level 3! Just because a version has certain features doesnt mean the game has to use them and just because a game doesnt use certain features doesnt mean there needs to be a seperate dx version with those features omitted.
ps: your quote seems to suggest your saying (or ms are saying) dx 11 feature level 1 is stable , level 2 less so ect.

The only reason that makes sense to me as to why ms would not just have dx12 level 3 as dx12 with no feature levels is
if a ihv put pressure on them saying
"our gpu supports all of dx12 except for one or two features which devs can work around or arnt that important
and because of that we will have to market our gpu's as only being dx11 compliant and we will lose sales, you need to come up with a solution so that we can market our gpu's as dx12 compliant"
Hence this feature level nonsense.

I think it's just an unfortunate byproduct of competition and evolution. Each year better algorithms or new ideas on how certain things can be faster when implemented with fixed function hardware; thus added to new hardware.

Both manufacturers make the case for it to be standard feature so it becomes an API feature set.
 
I dont buy that explaination .Level 3 contains everything in level 1 and level 2 so just have level 3!
That's a pretty strange way of looking at things. Why not just say that feature level 12 requires quad precision computation or any other arbitrary thing? To hit a much more direct example: should there even have been a feature level 10_1? Why not just have made that 10_0 and then disallow using all of the other features in 10_0 on several entire generations of GPU because they didn't support sampling individual MSAA components (a very seldom-used feature). Hell why not have just made feature level 10_0 the same as 12_1 is today and skipped all that intermediate nonsense!

It's obviously a balancing act here. You want to combine together useful features that have enough support in the market so that people can start writing code that assumes it's all present. But there is zero utility in making feature levels that no GPU supports in the market for instance.

Just because a version has certain features doesnt mean the game has to use them and just because a game doesnt use certain features doesnt mean there needs to be a seperate dx version with those features omitted.
I think maybe you are fundamentally misunderstanding something here... for a GPU to claim it is "feature level X", it must support *all* of the features in that level, regardless of whether any game even uses it all. Hell there may even be features that no game has ever used, but if you don't support even one of those you cannot claim to be that feature level. A feature level is a guarantee that all of the features in that level and below are supported.

Feature levels are just a grouping of various required functionality to make application development easier and to drive some amount of required functionality in graphics hardware.
 
Back
Top