IT & Systems Management

AMD: DirectX 12 the secret star of Windows 10

Windows 10 is a huge deal for Microsoft, a very large deal indeed for computer makers, a major event for application software developers, and a pretty big one for end users. But what of those that labour at the low-level end of the software and hardware pools, the ‘makers’ who have to figure out the knotty questions of driver support and optimising silicon for the new operating system?

On the eve of the Windows 10 launch Robert Hallock, technical marketing manager of chip maker AMD, ran a live stream giving his take on the release and providing some fascinating insights into the mechanics of Windows 10. In particular, Hallock took apart Windows 10’s role as a delivery platform for DirectX 12, Microsoft’s latest family of APIs for handling graphics, motion video and other rich media. While microprocessor makers and Microsoft still align their work, Hallock says that DirectX 12 will mean that even a lot of existing hardware will boost Windows 10, so long as the appropriate drivers are installed.

The following is an edited excerpt from his wide-ranging comments.


What’s so special about Windows 10?

The key thing to know about Windows is that there’s 1.5 billion users’ worth of opportunity for getting Windows right. That’s an absolutely massive market and we think we are ideally positioned to deliver a great Windows 10 experience. To do that you need to acknowledge that people primarily interact with their computer for work or entertainment but behind the scenes Windows 10, more than any other version of Windows, uses a heck of a lot of compute and/or dedicated functional silicon like accelerated video decode and encode to provide that experience.


The need for speed

Windows 10 has a ton of stuff in it that requires functional silicon to power the experience. For applications, movies and TV video players you need video decoding. For the Edge browser there’s simple stuff like webpage composition which is GPU-enabled – the browser is very choppy without good healthy GPU acceleration. There’s WebGL, HTML5 canvassing, HTML5 video playback – all these things make an amazing browser experience, but all of them require compute or video acceleration features.

BlitLocker requires a Trusted Platform Module so our APUs have TPM 2.0 to enable secure encryption of files to protect your files if you misplace your laptop. Using an APU you can accelerate encryption of those files. And of course the Modern UI is GPU accelerated too.

And then there’s things like file extraction, remote desktop using H.264 for video, decode/encode... all these key features we have hardware and driver support for. Zip file extraction is finally compute accelerated, wireless display for streaming pictures to a TV is H.264 encoded…


The huge role of DirectX 12

For a premium entertainment experience be it video or gaming or whatever you do on your PC for entertainment, DirectX 12 readiness is perhaps one of the biggest things you can do. APUs, discrete graphics cards, Xbox One, even a multicore CPU is going to benefit from the jump to DirectX 12.

It’s much, much easier for developers to divide the workload up into multiple threads. That’s the name of the game in DirectX 12: make it easier to divide work and assign work to the hardware that’s going to be running it.


Here come the games

Already we’re starting to see games spool up with DirectX 12. Deus Ex: Mankind Divided and Ashes of the Singularity are two of the three announced DirectX 12 games so far. In the case of Deus Ex: Mankind Divided, they have a brand new game engine called the Dawn engine and on Ashes of the Singularity this is a game that could not exist without DirectX 12. The developers wanted to make this so large, so expansive and have so many lights and units on screen at the same time that DirectX 11 could not handle it. This is a real example of a game that could not exist until the correct software came along.

Microsoft is also keeping up with the times by adding in a game DVR. You can do on-the-fly recording of you game via a hotkey combination in Windows 10 and you can record to disk with zero performance impact.

A really exciting feature is you can now stream your Xbox One games to your PC. On the Xbox end it uses hardware accelerated encode and at the PC end it uses hardware accelerated decode. So there’s an advantage of having AMD on both ends [because AMD supplies chips for Xbox]: that we’re able to fully accelerate content broadcast and reception

So you can play your favourite games with a mouse and a keyboard and have access to a library of games that may never be available on a PC, and you can do that from your desktop.


Digging deeper on DirectX 12

DirectX 12 is the big inflexion point in our industry and there are a huge number of benefits. For low-power devices we’re actually seeing a reduction in system power draw and a huge increase in the amount of work both a CPU and GPU can do. Game developers may use that to do more detail on screen or may increase frame rates or may use a blend of the two.

And we’re seeing more utilisation of multicore CPUs. We’ve had multicore CPUs for quite some time so it’s pleasing to see that silicon being used to its maximum. Ashes of the Singularity for example is using all eight cores of an AMD FX chip to improve performance of their title.

There’s been a lot of discussion over what DirectX 12 is and can do but really there are three key features in the base specification that will make the biggest difference in the lives of gamers: multithreaded command buffer recording, which improves multicore CPU performance; Async Shaders, which improves GPU performance; and Explicit Multi-Adaptor, which will make multi-GPU much more interesting than it has ever been.


Multithreaded command buffer recording

It’s kind of amazing to learn that in the DirectX 11 era, only 1.5 to two cores was about the most multithreading you could get. You’d have the driver and API on one core and the game engine or game itself on the other and those cores would be 75-90% utilisation and the rest of the cores would be sitting effectively idle doing background Windows tasks. People would spend quite a lot of money and the silicon would be dark. It doesn’t have to be that way and this is something DirectX 12 solves.

DirectX 11 and in general DirectX prior to 12 was a high-overhead API. You don’t want the runtime and driver consuming a ton of time. You want the system to be working on game code or presentation of the material to the user and in DirectX 12 that’s finally the case.

We’re actively seeing game developers use more than two cores and the chief reason is that it’s simpler to take a workload in DirectX 12 and make it divisible across multiple CPU cores. In DirectX 11 most of the workloads are by force glommed on to a single working thread and you can’t divide that workload. Even the most skilled developer couldn’t do anything about the way DirectX 11 processes worked - in DirectX 12 they can make good use of that silicon.


Async shaders

Much of the lighting and reflexions you see in games are compute driven prior to entering the graphics pipeline to reduce latency and improve frame rates. There are always gaps called bubble in the pipeline and ideally you want to fill those to do useful work, and with async shading that’s exactly what we can do. Who doesn’t want free graphics work?


Explicit Multi-Adaptor

Explicit Multi-Adaptor is one of my favourite features in DirectX 12. Multi-GPU in DirectX 9 and 11 was something of a workaround. DirectX 11 does not formally support multi-GPU. It doesn’t tell you that you can’t do it but there are no specific API tools or features in DirectX 11 or 9 that help make it possible so as an industry we’ve settled on alternate frame rendering to do multiple-GPU which is very, very popular for raising frame rates. But the problem is you have to build a long queue of frames for AFR to work. That can impair responsiveness of mouse movement and it certainly increases frame latency, which is bad news for virtual reality, and it prevents a lot of interesting techniques that DirectX 12 enables.

DirectX 12 can do split-frame rendering: that is, breaking the seam into multiple tiles and then assigning a tile to each GPU in the system so you no longer have a frame queue anymore. Now you have this one frame you’re working on and the frame latency is half of what it would normally be because half the screen takes half the time.

Developers like to say that split-frame rendering is effectively multiple GPUs behaving like one more powerful GPU and that will be exciting for the performance enthusiasts out there.


« Typical 24: Tom Armstrong, Dashlane


How to build a datacentre in a war zone »
Martin Veitch

Martin Veitch is Contributing Editor for IDG Connect

  • twt
  • twt
  • Mail

Recommended for You

Trump hits partial pause on Huawei ban, but 5G concerns persist

Phil Muncaster reports on China and beyond

FinancialForce profits from PSA investment

Martin Veitch's inside track on today’s tech trends

Future-proofing the Middle East

Keri Allan looks at the latest trends and technologies


Do you think your smartphone is making you a workaholic?