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

I wonder what changes they had to make for 4 thread PC CPU's then and whether we're likely to see significantly better performance on 6 thread+ CPU's in the future on account of most future games being optimised for that number of x86 (albeit significantly weaker) threads.
High end quad core PC CPUs aren't the problem, since a single 3+ GHz Haswell core can run tasks of two lower clocked Jaguar cores in the same allocated time slot (16.6 ms). However older quad core CPUs such as Core 2 Quad have similar IPC than Jaguar, and are clocked usually in the 2 GHz - 3 GHz range. A single core thus doesn't have enough oomph to run two Jaguar cores worth of tasks in the allocated time. This is a real problem for static threading, since 6 is not dividable by 4. In the worst case scenario two cores get twice as much work (6 cores work distributed to the quad core as: 2-2-1-1). In this scenario a lower clocked 6 core CPU would be preferable.

This is one of the reasons why most developers are switching (or have already switched) to a task based system (all work split to small tasks) that dynamically distributes all the work items (jobs) to all the available CPU cores. A modern task based system would automatically split the work evenly on any kind of CPU core setup (from a lowly dual core to a 15 core / 30 thread Ivy Bridge EX). Obviously a game designed to consoles wouldn't automatically fully utilize a 30 thread Ivy Bridge EX, unless the developer added some PC specific "ultra" settings and scaled the environment and AI complexity to match (more NPCs, higher draw distance, more complex environments). Code would scale automatically, but the extra work related to making a more complex environment for PC wouldn't likely be easy (unless the content is mostly based on procedural creation). And the extra testing needed for dynamically scaling content complexity would likely be too much work (unless you would only scale up the visual quality, not the game play elements).
 
High end quad core PC CPUs aren't the problem, since a single 3+ GHz Haswell core can run tasks of two lower clocked Jaguar cores in the same allocated time slot (16.6 ms). However older quad core CPUs such as Core 2 Quad have similar IPC than Jaguar, and are clocked usually in the 2 GHz - 3 GHz range. A single core thus doesn't have enough oomph to run two Jaguar cores worth of tasks in the allocated time. This is a real problem for static threading, since 6 is not dividable by 4. In the worst case scenario two cores get twice as much work (6 cores work distributed to the quad core as: 2-2-1-1). In this scenario a lower clocked 6 core CPU would be preferable.

I'm interested in how it will affect old as well as budget systems.
Should for example an i7 920 or a Haswell i3, both with hyperthreading enabled, be OK for targeting the console performance?
 
Thanks Sebbbi, really interesting info there. I guess that must have proven a challenge then for i3's. I can't imagine squeezing 2 of your threads into a single logical thread of an i3 core with another of your threads taking the other logical thread on that core would be an easy task. Especially with the driver overhead to contend with.
 
http://www.anandtech.com/show/8388/intel-demonstrates-direct3d-12-performance-and-power-improvements

The tech demo looks to be heavy on the cpu part
75% performance improvement on the Core i5-4300U inside the surface pro 3, or at the same performance 50% less power consumption

sp3_dx11_dx12_power_575px.jpg
 
http://www.anandtech.com/show/8388/intel-demonstrates-direct3d-12-performance-and-power-improvements

The tech demo looks to be heavy on the cpu part
75% performance improvement on the Core i5-4300U inside the surface pro 3, or at the same performance 50% less power consumption

Which I translate as "were they completely nuts when they designed DirectX ???".

I also funny to see that the XB1 fanboys go crazy over these numbers. Again, I can't imagine
that there isn't already some low-level API (maybe even a DX11.xx now called DX12)
present.
 
Which I translate as "were they completely nuts when they designed DirectX ???".
The current API had different goals.
It abstracts a lot of complex bookeeping from the program, and it walls off GPU hardware that until recently was too dumb and potentially too dangerous to give explicit memory control for.
 
I understand that the tech demo was built to light the better multithreading in the cpu, so a tons of simple objects.
A real world game will be more heavy on the gpu, so can you make an educated guess on the increase in performance?
 
The best real-world examples we have right now would be the games that are out there with Mantle support, but I haven't monitored AMD's delayed mobile rollout and haven't seen if it's been possible to compare DX vx Mantle on an AMD A6-7000.

The low thermal ceiling makes me doubt the applicability of Mantle tests done on higher-end machines.
 
Would just like to add that modern windows applications/games, those that have moved off gdi/win32 and use more modern techs like winrt/xaml/dx, are CPU heavy. Dx12 sounds like a great evolution for these type of apps/games.

Also I hope more game devs building games on windows eventually move to HUDS in xaml and using multiple swapchains/DXComposition/DX GPUOverlays to compose xaml/dx games...
 
Which I translate as "were they completely nuts when they designed DirectX ???".

I also funny to see that the XB1 fanboys go crazy over these numbers. Again, I can't imagine
that there isn't already some low-level API (maybe even a DX11.xx now called DX12)
present.

No, there isn't such low CPU overhead on xbox one yet (it is even not very parallel, too). the xbox one is still very cpu limited, which is why raising the clock speed from 1,6 to 1,75 GHz had a better effect than raising the GPU-clock speed a bit.
But well, if they'd got Directx12 ready for xbox one launch, they would have raised the clockspeed of the GPU instead.
Yes, there is a little bit less overhead on xbox one already (most of those things you needed because of support for different hardware which isn't needed for a console), but still much much more than DX12. All those things that reduced the CPU overhead in DX12 are not available for xbox one, yet. Only some features that can be used for more efficient rendering are available yet, nothing that really reduces CPU overhead.
 
No, there isn't such low CPU overhead on xbox one yet (it is even not very parallel, too). the xbox one is still very cpu limited, which is why raising the clock speed from 1,6 to 1,75 GHz had a better effect than raising the GPU-clock speed a bit.
But well, if they'd got Directx12 ready for xbox one launch, they would have raised the clockspeed of the GPU instead.

Could DX12 create an opportunity to rebalance the X1 CPU/GPU clock speeds, actually down clocking the CPU (due to the DX12 lower CPU overhead) and up clocking the GPU for better graphic performance? 1.6ghz/900mhz?
 
You can't change clocks once games have started being made. If you have a game that takes full advantage of the specifications already present, limiting that in any way will have a detrimental effect on performance. You don't usually ever see changes to clocks like that in fixed hardware, and there's a reason for that.

DX12 has variables that still don't account for the hardware present.
 
Would it be possible to change the clock's per title? Dynamic clock changes are certainly possible on a hardware level. That'd pose an interesting option for devs, to select which of a few certified profiles to use.
 
The design is currently specified at its max clocks. Perhaps lowering clocks could be done, but lowering one portion and increasing the other past the maximum already set down would not happen unless they've been validating all their chips at higher clocks already.
Since turbo hasn't shown up for Jaguar until it became Puma, the console APUs don't have a clear CPU clock ceiling above the current design point.

If they started an expanded product validation range now, it would leave millions of units out there that might not have passed the new testing methods.

That leaves giving developers the option of forcing lower clocks, maybe, for some reason.
 
No, there isn't such low CPU overhead on xbox one yet (it is even not very parallel, too). the xbox one is still very cpu limited, which is why raising the clock speed from 1,6 to 1,75 GHz had a better effect than raising the GPU-clock speed a bit.
But well, if they'd got Directx12 ready for xbox one launch, they would have raised the clockspeed of the GPU instead.
Yes, there is a little bit less overhead on xbox one already (most of those things you needed because of support for different hardware which isn't needed for a console), but still much much more than DX12. All those things that reduced the CPU overhead in DX12 are not available for xbox one, yet. Only some features that can be used for more efficient rendering are available yet, nothing that really reduces CPU overhead.

Ok maybe you have confused me slightly, but didnt they raise both the cpu and gpu clock on the xbox one before launch. Cpu from 1.6 to 1.75 and gpu from 800mhz to 853mhz.
 
You can't change clocks once games have started being made. If you have a game that takes full advantage of the specifications already present, limiting that in any way will have a detrimental effect on performance. You don't usually ever see changes to clocks like that in fixed hardware, and there's a reason for that.

DX12 has variables that still don't account for the hardware present.

The game api environment is afaik linked into game executables, so why not? As long as the console hardware is tested in the fab for the clocks I see no reason what stops them from allowing this.
 
The game api environment is afaik linked into game executables, so why not? As long as the console hardware is tested in the fab for the clocks I see no reason what stops them from allowing this.
Well, that's the issue. Who knows how high these things have been verified at?

The Durango APU uses a pretty large die, verifying the parts all that high above the original clock plan might have posed a meaningful compromise on yields.
 
Ok maybe you have confused me slightly, but didnt they raise both the cpu and gpu clock on the xbox one before launch. Cpu from 1.6 to 1.75 and gpu from 800mhz to 853mhz.

yes, they did. but if they'd got DX12 ready for xbox one launch they would have raised the GPU clock speed more instead raising the CPU clock speed (because with DX12 the CPU is not that important for the GPU as now).
MS said they had raised the CPU speed because they got more frames out of it than raising the GPU clock speed again. So there was a CPU bottleneck. with DX12 this bottleneck should be gone.
But well, haven more available processing power from the CPU is also a cool thing. E.g. for physics simulation, AI or other things. GPU is not everything, but right now the GPU is often working with the a DX11.x CPU-handbreak.
 
Back
Top