ClioSport.net

Register a free account today to become a member!
Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

  • When you purchase through links on our site, we may earn an affiliate commission. Read more here.

DX12 performance - a positive start?



Darren S

ClioSport Club Member
With the recent release of Windows 10, much has been speculated about the potential of DirectX 12 that comes built into it. A lot has been said, but given its early days - not much is out there (yet) in terms of true performance stats and real-world gaming results.

One that is out there is the API Call test within 3DMark. Although this actually proves very little in the graphical capabilities of your PC and what it can achieve - the API performance alone, at least, is certainly very impressive.

DX12%20API%20calls_zps18pwoj8v.jpg


The above image was run on my PC. As expected, there's an increase in the calls per second in DX11 running in single thread when switched to Multi-Thread. But look at the step up to DX12. That magnitude increase on the same hardware is pretty damn impressive. Just watching the calculation being carried out on-screen was a virtual night and day difference in terms of performance.

I'm no developer - and I've no experience of how tricky or straight-forward DX12 is to utilise. But the gains from one benchmark tool alone - are pretty evident.

@SharkyUK @sn00p
 

SharkyUK

ClioSport Club Member
DX12 is a bit of an... 'interesting' beast to utilise. It's still undergoing work, tweaks and developments and nVidia and AMD have their driver teams working full-throttle. Without a doubt, it is a significantly better architecture than DX11 and earlier. It has been re-factored (and largely rewritten) PROPERLY to take advantage of modern processor architectures (multi-threading, multi-cores, etc.) Earlier versions of the API didn't lend themselves well to multi-threading at all. DX11 tried to some extent but it was not a trivial thing to take advantage of and the headaches and pitfalls were often not worth the effort (Deferred Contexts in DX11 were a 'shadow state' system where GPU state could pulled in from secondary threads; it was a compromise that typically resulted in performance loss). Prior to DX11... forget it. Single-threading was the only way to go and God-help those who tried to use the API in a multi-threaded way. DX9 and DX10 were primarily designed to be single-threaded. When trying to use multi-threading then deadlock was never far away and you instantly saw a 50% performance drop in your game...

DX12 has been built properly; embracing the parallel processing nature and capabilities of modern GPUs and CPUs. By clever scheduling and ordering of rendering tasks, some significant gains can be made in terms of resulting performance boosts. The draw call example given above hints at how effective the new architecture could be. The draw call overhead has been massively reduced with DX12. Rendering engines using DX11 and earlier would try to minimise the number of draw calls made per frame by carefully managing and batching render geometry and managing the GPU global state. Once everything was in order a "draw call" would be made and the rendering request sent to the driver for processing. On CPU-bound systems this could introduce a stall / latency. With DX12, there are multiple threading compartments that can schedule compatible tasks a lot better, and often in parallel (simultaneously). As seen, an order of magnitude difference can be seen in the number of draw calls made. However, this can also be a bit misleading.

The draw call improvements will benefit the lesser-powered CPU system for sure (as seen in early reports and demos) whilst the effects will be considerably less evident on higher enthusiast spec machines. Draw call overhead alone isn't a suitable metric for measuring and comparing the general performance of one system against another. As a measure of latency, the draw call overhead is a poor metric to use. I think it could be some time before we see some real measure as to how much of a performance benefit DX12 will bring to the PC (and Xbox One) platforms. the development community need to be persuaded to make the move to DX12 (which some are doing and some are resisting).

The move to DX12 could be a blessing or a curse. Often, DX11 (and earlier) was termed as too high-level. The driver handled a lot of the operational complexities whilst the developer was free to get on and concentrate on other things. The driver handled memory page swapping and other lower-level tasks. This made development easier but didn't necessarily allow the developer to squeeze the very best performance out of the hardware. Whereas console developers were afforded the luxury of a somewhat lower-level abstraction to the underlying hardware, this was not mirrored in PC development circles. That's where DX12, Mantle and Vulkan come in (Mantle effectively having become deprecated). DX12 affords the developer a lower-level view of the hardware and the ability to write code to perform tasks that were effectively the domain of the graphics driver in previous API versions. As said, this can be a blessing and a curse. It allows a savvy developer to extract more performance from a system by carefully developing and tailoring their code to a specific hardware setup. But this runs the risk of reducing compatibility in terms of other hardware in the market. To what degree to developers go to introduce new and lower-level code paths to accommodate the plethora of hardware available to consumers? Effective and efficient low-level development takes time and money, something that isn't always readily available to game developers. It's a bit of a double-edged sword in some ways. It will be interesting to see developer reactions to the API as it begins to gather momentum and become more widespread. Personally I think it's (DX12) a very good thing and developers will have to eventually consider updating and evolving their engines to utilise DX12. But I also think it could take some time before we see the first real benefits of DX12 in new games; maybe as far as 18 months / 2 years from now (but don't hold me to that!)
 

Darren S

ClioSport Club Member
Great response Andy there - cheers!

It will be interesting to see how it pans out with the developers over the next several months and coming years. From my non-developer standpoint - I'm hoping that the majority of DX12 benefits can be achieved with a minimum amount of fuss. After all, the majority of PC gamers will either be running the latest nVidia driver or the most recent incarnation of the Catalyst suite - and both cover a very wide range of cards. Obviously, that's my simplistic and naive view - but here's hoping!

I'm wondering if any software houses will retro-offer a DX12 patch for their games too? Or whether or not that will be a total waste of time and resources for them? Personally, if a DX12 patch was released for the likes of GTAV for £10 - I would happily buy it. But then I'm not too sure how many others would? And even if they released them for free - given the amount of developer time required for the patch - would the majority of people just stick with the default DX11 as "...it works fine for me?"

Interesting times ahead. It almost feels like the release of MMX architecture again where game boxes proudly displayed the MMX-supported logo on the cover. :smile:
 


Top