DirectX Intermediate Language Announced... via GitHub

Subject: Graphics Cards | January 27, 2017 - 09:19 PM |
Tagged: microsoft, DirectX, llvm, dxil, spir-v, vulkan

Over the holidays, Microsoft has published the DirectX Shader Compiler onto GitHub. The interesting part about this is that it outputs HLSL into DirectX Intermediate Language (DXIL) bytecode, which can be ingested by GPU drivers and executed on graphics devices. The reason why this is interesting is that DXIL is based on LLVM, which might start to sound familiar if you have been following along with The Khronos Group and their announcements regarding Vulkan, OpenCL, and SPIR-V.

As it turns out, they were on to something, and Microsoft is working on a DirectX analogue of it.

View Full Size

The main advantage of LLVM-based bytecode is that you can eventually support multiple languages (and the libraries of code developed in them). When SPIR-V was announced with Vulkan, the first thing that came to my mind was compiling to it from HLSL, which would be useful for existing engines, as they are typically written in HLSL and transpiled to the target platform when used outside of DirectX (like GLSL for OpenGL). So, in Microsoft’s case, it would make sense that they start there (since they own the thing) but I doubt that is the end goal. The most seductive outcome for game engine developers would be single-source C++, but there is a lot of steps between there and here.

Another advantage, albeit to a lesser extent, is that you might be able to benefit from performance optimizations, both on the LLVM / language side as well as on the driver’s side.

According to their readme, the minimum support will be HLSL Shader Model 6. This is the most recent shading model, and it introduces some interesting instructions, typically for GPGPU applications, that allow multiple GPU threads to interact, like balloting. Ironically, while DirectCompute and C++AMP don’t seem to be too popular, this would nudge DirectX 12 into a somewhat competent GPU compute API.

DXIL support is limited to Windows 10 Build 15007 and later, so you will need to either switch one (or more) workstation(s) to Insider, or wait until it launches with the Creators Update (unless something surprising holds it back).


January 27, 2017 | 10:43 PM - Posted by pdjblum

Very informative and instructive. Thanks Scott.

January 27, 2017 | 11:05 PM - Posted by Scott Michaud

Thanks!

January 30, 2017 | 10:30 AM - Posted by KRDucky (not verified)

Looks like Microsoft is pulling an Nvidia........aka copying working tech from the competition and playing it off as their own invention.

January 30, 2017 | 09:46 PM - Posted by Anonymous (not verified)

There's a big difference between cut and paste of code vs taking an idea and putting a lot of work to code into your own ecosystem.

I'm sure a lot of the basic concepts will work both ways with Vulkan using ideas that Microsoft has come up with and integrating those concepts.

(also not sure what NVidia "copied" from the competition either. If we're going to be so loose with the concept of theft then wouldn't Freesync be "stolen" from the idea of GSync?)

January 28, 2017 | 01:17 PM - Posted by Anonymous (not verified)

I rather see the games indistry focus on Vulkan as that will have the largest install base if you include mobile devices and Steam/Linux and Vulkan for PC/Laptops. The lack of windows 7/8.1 and Vulkan reporting is very telling though! And with 2020 getting closer I still have yet to see any Windows/Vulkan articles. There will be some that will go from 7 to 8.1(with third party start menue software) and getting some form of non windows 10 support after 2020 when 7 goes EOL, the windows 8.1 EOL date is Jan 2023.

It looks like RADV is gaining support for an Open Source Vulkan implementation under Linux and the Linux/Vulkan driver stack is improving day by day while AMD works on getting their Vulkan implementation fully open sourced(?).
AMD really needs to up their Linux support as 2020 approaches and I'd like to see AMD/RTG actively getting some Zen/Vega laptop APU designs wins among the Linux OS based laptop OEMs. I'd hate to be forced to spend extra to purchase the more costly Intel/Nvidia Linux OEM laptops just to be able to avoid windows 10 so AMD has until 2020 to get some Linux OS Laptop OEM's on board with Ryzen/Vega APUs on Linux OS based OEM laptops.

Any windows 10 gaming is bound to become a console like experience as M$ uses windows 10 to close off the windows PC/laptop gaming market from the competition and force games/gaming into M$ closed app store/windows 10 ecosystem.

Vulkan will be a true cross platform Graphics API with a much wider hardware base of support so why be restricted under DX12/M$.

January 30, 2017 | 10:03 PM - Posted by Anonymous (not verified)

Re above comment:
Microsoft can't freeze out Steam and others from Windows. They have no legal way to do so. The Microsoft STORE is just another option for purchasing games. The UWP layer is primarily to ensure the desktop PC and mobile devices can work together for certain games and applications.

Vulkan will win out, however completion of the core code is behind DX12 which is why games are slower to be released.

Game developers are free to choose DX11, DX12, Vulkan or any combination of those. Presently, it's usually DX11 only, or DX11 + DX12 because again, Vulkan isn't really ready (yes DOOM is a thing but the people behind that game are really, really good coders so it's not something most people can easily do).

DX12 will hang around though since the XBOX ONE (base + S + Scorpio) uses DX12 so it's not clear how that will work considering the PS4 doesn't use DX12.

It's worth noting that not many games using DX12 do a very good job. Are there ANY GAMES at all that do DX12 better than the DX11 version?

Probably in 2017 we'll get several titles that are BEST played in DX12.

Holding onto Windows 7/8 long-term might not be a good idea anyway since Microsoft will continue to drop support for security and other things. For example, the upcoming Windows Games Mode that should help game performance in some scenarios is probably only for W10 (mostly about reducing CPU usage and memory by other programs when that can affect the current game).