DirectX 12: The future of it within the console gaming space (specifically the XB1)

Mantle began life as an effort to bring a console style low level api patterned after libgcm/gnm to the PC space. It is PC and Xbox that are catching up to the new paradigm that exists on PS4, not the other way around. @Rikimaru

I've thought about this, hence as being one of my counter points to my own arguments earlier. As of this moment, no one knows the state of GNM/GNMX. That's fine, Sony doesn't owe anyone an explanation. Our understanding is actually quite limited on its behaviour with the hardware, and what types of characteristics and features the API has.

That being said if Mantle/PC and Xbox are 'catching' up to the programming paradigm for PS4, I would need to find proof of it. So this one comes up in mind as _not being proof of it_. I pulled these slides from Ubisofts GDC presentation on compute performance. Before they eventually get to where they want it to be in terms of performance, they attempted to run massive compute using a lot of compute shaders.

And you can see from the results, they are immediately CPU bottlenecked due to the number of calls to the system. This behaviour, that what we know so far, is not characteristic of Mantle/Vulkan and DX12. This characteristic is more in line in how we view APIs today. Low overhead will only get you so far, you need to allow for multithreaded submission to make it work as well. So it's in my opinion that GNM today does not support multithreaded submission in the way Vulkan and DX12 do. So already, 1 major paradigm is missing. The 2nd major paradigm is of course fine grained async compute performance. But that builds upon paradigm 1. So as you can see here, it would fail at paradigm 2 as well. That leaves paradigm 3, which still no one knows what it is.

That being said, likely with or without, PS4 is still be a good console. I'd like to see it adopt those 3 pillars in the future, but they don't necessarily have to; as least for a while, there's no rush for them to do it.

AFFvyhK.png
8xOE2gn.png


edit: I think also, if they had DX12, they could have written an ExecuteIndirect version of this shader. I believe that would have removed the need to insert sync points in there extremely long shader.
 
Last edited:
I've thought about this, hence as being one of my counter points earlier. As of this moment, no one knows the state of GNM/GNMX. That's fine, Sony doesn't owe anyone an explanation. Our understanding is actually quite limited on its behaviour with the hardware, and what types of characteristics and features the API has.

That being said if Mantle/PC and Xbox are 'catching' up to the programming paradigm for PS4, I would need to find proof of it. So this one comes up in mind as _not being proof of it_. I pulled these slides from Ubisofts GDC presentation on compute performance. Before they eventually get to where they want it to be in terms of performance, they attempted to run massive compute using a lot of compute shaders.

And you can see from the results, they are immediately CPU bottlenecked due to the number of calls to the system. This behaviour, that what we know so far, is not characteristic of Mantle/Vulkan and DX12. This characteristic is more in line in how we view APIs today. Low overhead will only get you so far, you need to allow for multithreaded submission to make it work as well. So it's in my opinion that GNM today does not support multithreaded submission in the way Vulkan and DX12 do. So already, 1 major paradigm is missing. The 2nd major paradigm is of course fine grained async compute performance. But that builds upon paradigm 1. So as you can see here, it would fail at paradigm 2 as well. That leaves paradigm 3, which still no one knows what it is.

That being said, likely with or without, PS4 is still be a good console. I'd like to see it adopt those 3 pillars in the future, but they don't necessarily have to; as least for a while, there's no rush for them to do it.

AFFvyhK.png
8xOE2gn.png

It has nothing to do with API. You need few point of synchronisation for GPUGPU task not graphic related.
 
Last edited:
I've thought about this, hence as being one of my counter points earlier. As of this moment, no one knows the state of GNM/GNMX. That's fine, Sony doesn't owe anyone an explanation.

The state of GNM seems pretty clear thanks to the Deep Silver interview where Oles Shishkovstov stated:

On PS4, most GPU commands are just a few DWORDs written into the command buffer, let's say just a few CPU clock cycles. On Xbox One it easily could be one million times slower because of all the bookkeeping the API does.
That barely even qualifies as an API as you're just punching values directly into the GPU. Ever 'poke' address 53810 on a C64? You're directly instructing the graphics chip to change the background colour directly. Same with $DFF180 on an Amiga. You don't get any closer to the metal than this.
 
The state of GNM seems pretty clear thanks to the Deep Silver interview where Oles Shishkovstov stated:

On PS4, most GPU commands are just a few DWORDs written into the command buffer, let's say just a few CPU clock cycles. On Xbox One it easily could be one million times slower because of all the bookkeeping the API does.
That barely even qualifies as an API as you're just punching data directly into the GPU. Ever 'poke' address 53810 on a C64? You're directly instructing the graphics chip to change the background colour directly. Same with $DFF180 on an Amiga. You don't get any closer to the metal than this.
Thanks for the update, I'm going to keep this one in mind.
That's as low level as it gets. I appreciate that aspect of it, understanding it and having to code it are two different things though. This really actually only solidifies my argument that GNMX, and DX11 are still going to be used more than the lower variants. At least in the initial phases.

Granted - you can write anything you want when you are that low level and have direct access to memory, but you'd have to write it.
 
Last edited:
This really actually only solidifies my argument that GNMX, and DX11 are still going to be used more than the lower variants. At least in the initial phases.
I think we're probably out of the "initial phases". We're 18 months in from launch and developers probably had final production hardware six months prior to launch so that's two years.

High level APIs have their place and smaller teams, teams not using an existing cross-platform engine that itself uses low-level APIs or teams that lack a dedicated graphics guy will probably really appreciate them. But I can't see many AA or AAA productions going that route. Even The Crew, which is hardly AAA, they started with GNMX just to get it working them dropped into GNM.

And it may be you don't have to make a holistic choice, i.e. like writing code in C with inline assembly for the performance critical parts, you may you have to use higher-level APIs for some things and use GNM for the critical code.
 
I think we're probably out of the "initial phases". We're 18 months in from launch and developers probably had final production hardware six months prior to launch so that's two years.

High level APIs have their place and smaller teams, teams not using an existing cross-platform engine that itself uses low-level APIs or teams that lack a dedicated graphics guy will probably really appreciate them. But I can't see many AA or AAA productions going that route. Even The Crew, which is hardly AAA, they started with GNMX just to get it working them dropped into GNM.

And it may be you don't have to make a holistic choice, i.e. like writing code in C with inline assembly for the performance critical parts, you may you have to use higher-level APIs for some things and use GNM for the critical code.

lol yea, it would be good to get an idea of where most companies are at with what they are using. Obviously the smaller shops/indie developers will likely not being heading that route except on the whim of passion. I don't know if we're officially out of launch yet. Games can take longer than 2 years to build, so we're still looking at titles that have been in development prior to launch. I imagine that collective learnings from previous titles as an industry only get realized after the game ships and then they share their information - otherwise they're only sharing it in house. I guess GDC is a good place for that type of thing.
 
Maybe GNM is already better than Mantle, Vulkan and DX12?
Dice said “PS4 graphics API is good as well, we don’t need Mantle on PS4.” https://twitter.com/repi/status/445327492937560064
The low overhead of GNMX is well documented now. I guess it's more a matter of how many folk use GNM and how efficient that is. As DSoup has said though, this likely won't affect A grade titles. Anyone needing the highest level of performance will go the GNMX route, while middlewares should all be going that route to justify their worth to the platform.

Which does leave us in a curious question about whether PS4 is currently being limited by cross-platform designs? A game intended for PC that is spec'd for DX11 is going to have to be crafted quite differently from what PS4 could enable. But then all the draw-calls in the world don't matter when your GPU is limited in what it can draw. ;) I think that's the take-home point really. The API's may or may not be wonderfully efficient, but the real-world impact of inefficiencies are likely quite low. Have trouble with draw-calls? Design around them, batching and whatnot.

So for me the question isn't one of performance, but difference. What will be different if draw calls become a non-issue? Will we have more diversity in in-game content? Or will we have the option of alternative rendering methods based on flexible drawing?

TBH I'm not really expecting much different at all and I can see the whole DX12 thing being a bit of a let down. Games are still going to look very much the same overall and the effect of DX12 quite possibly won't be noticeable save as improvements in shadows or a bit of framerate on some CPU bound games. Best outcome is maybe some very CPU limited games getting significant improvements on PC, which consoles won't benefit from.
 
Most people start with the GNMX API which wraps around GNM and manages the more esoteric GPU details in a way that's a lot more familiar if you're used to platforms like D3D11. We started with the high-level one but eventually we moved to the low-level API because it suits our uses a little better," says O'Connor, explaining that while GNMX is a lot simpler to work with, it removes much of the custom access to the PS4 GPU, and also incurs a significant CPU hit

From DF article about the Crew. GNMX is for indie title and not for having good performance on AAA title.

GNM is the low level API. GNMX and GNM are twi different API.
 
Last edited:
Which does leave us in a curious question about whether PS4 is currently being limited by cross-platform designs? A game intended for PC that is spec'd for DX11 is going to have to be crafted quite differently from what PS4 could enable. But then all the draw-calls in the world don't matter when your GPU is limited in what it can draw. ;) I
=P But are we really GPU limited yet ? Furmark was about GPU limited, no rest allowed for the GPU. It caused power draw and heat like no other causing many cards to die under its own lack of cooling. Drivers were modified to detect Furmark and throttle down to ensure the card doesn't kill itself. Those days are over now, but I doubt that game code has gotten anywhere close to that point of saturation.
 
It has nothing to do with API. You need few point of synchronisation for GPUGPU task not graphic related.
Calling a lot of compute shaders is part of the API. And that is exactly where it failed to do it. A multithreaded command buffer would have filled it. That task was only accomplished in the same way batch jobs are done today. Same materials, same shader code, with synchronization points.
 
Calling a lot of compute shaders is part of the API. And that is exactly where it failed to do it. A multithreaded command buffer would have filled it. That task was only accomplished in the same way batch jobs are done today. Same materials, same shader code, with synchronization points.

Many synchronisation point is to be avoided for GPGPU task like cloth physics. Direct X 12 or Mantle or GNM it is the same things. They were CPU bound with many synchronisation point.

Synchronisation is not CPU free.
 
Last edited:
Triple A game development has become so complex and expensive relative to amount of money being made that I wouldn't be surprised if companies are not spending time on getting the most out of the hardware or refining the graphics performance. Getting the game completed, relatively bug free and shipped are main priorities. The only developers/publishers that will really have the resources and willingness to polish a game graphically are first party studios which themselves are making less and less games these days. The only triple A 3rd party games that I can think of that are an exception to this are GTA and Call of Duty...maybe one or two others.
 
And for non graphic task you need to synchronise with CPU. Because the CPU needs to know you update physics simulation for example.
 
Last edited:
Triple A game development has become so complex and expensive relative to amount of money being made that I wouldn't be surprised if companies are not spending time on getting the most out of the hardware or refining the graphics performance. Getting the game completed, relatively bug free and shipped are main priorities. The only developers/publishers that will really have the resources and willingness to polish a game graphically are first party studios which themselves are making less and less games these days. The only triple A 3rd party games that I can think of that are an exception to this are GTA and Call of Duty...maybe one or two others.
Yea, Bungie comes to mind as well. But I agree, but I think having to deal with so many different code bases is a likely culprit as to what caused this year to be exceptionally bad in terms of optimization. Once cross gen games are out of the picture, I expect quality to improve.
 
I think iRoboto is correct. The question isn't really about how low level the api's are. The GNM api is probably as low level as you can get since it is specific to that device. The question I'm curious about is..is the GNM api currently capable of all of the features that we are seeing in DirectX 12 and Vulkun. The main one being the ability to utilize multiple CPU cores efficiently to feed the GPU.

Hard to say because Sony doesn't really talk about it. But I would suspect if it did have all these type of features now we would be seeing a much more of difference between PS4 and Xbox One right now in terms of graphics. Right now it just feels like the raw hardware is the difference maker.

I would suspect that Sony is probably looking at mantle/vulkun and implementing/improving features into GNM that aren't there. Question is how far along are they on that?
 
I think iRoboto is correct. The question isn't really about how low level the api's are. The GNM api is probably as low level as you can get since it is specific to that device. The question I'm curious about is..is the GNM api currently capable of all of the features that we are seeing in DirectX 12 and Vulkun. The main one being the ability to utilize multiple CPU cores efficiently to feed the GPU.

Hard to say because Sony doesn't really talk about it. But I would suspect if it did have all these type of features now we would be seeing a much more of difference between PS4 and Xbox One right now in terms of graphics. Right now it just feels like the raw hardware is the difference maker.

I would suspect that Sony is probably looking at mantle/vulkun and implementing/improving features into GNM that aren't there. Question is how far along are they on that?

Mantle has this possibility too and it is not needed on PS4 because GNM has this possibility too.

Draw Calls limit and multithreading limit command buffer are a PC problem comong from Direct X implementation before DX12 not a console problem not on PS3 not on 360 and not on PS4 and maybe low level API of Xbox One .
 
Last edited:
The drawcall limit on PS3 and Xbox 360 comes from limited power, same things for new consoles with good mow level API...
 
Last edited:
So xb1 will see zero benefit from parallel draw call submission?

Maybe it was in the low level API If not yes it will bring improvement... Because if it will come with Direct X12 the case Xbox One API was a simple port of Direct X11.

But it is not new on consoles.
 
Last edited:
Back
Top