As we look to the future, maintaining a proprietary IR format (even one based on an open-source project) is counter to our commitments to open technologies, so Shader Model 7.0 will adopt SPIR-V as its interchange format. Over the next few years, we will be working to define a SPIR-V environment for Direct3D, and a set of SPIR-V extensions to support all of Direct3D’s current and future shader programming features through SPIR-V. This will allow developers to take better advantage of existing tools and unify the ecosystem around investing in one IR.
↫ Chris Bieneman and Cassie Hoef at the DirectX Developer Blog
SPIR-V is developed by the Khronos Group and is an “intermediate language for parallel computing and graphics by Khronos Group”. I don’t know what any of this means, but any adoption of Khronos technologies is a good thing, especially by a heavyweight like Microsoft.
This is them throwing in the towel on games and the games market. My guess is they are going to pivot to embracing and extending some AI tech, and the cloud infrastructure in general. There’s no future in owning graphics APIs, but there’s plenty of future for AI and cloud.
I think you’re about 5 levels deeper than “Hey, this thing does the exact same job and it’ll save a tonne of effort.”
Basically, GPU Shaders (i.e. programs to run on the GPU) need to be compiled into something you can think of like a Java .class file which the GPU driver can load.
in the past, OpenGL had GLSL and DirectX had a diverging variant of nVidia’s Cg named HLSL. (Cg could compile for either target before nVidia sunsetted the compiler for it.)
When Vulkan came around, Khronos developed SPIR-V to serve the role for Vulkan that GLSL serves for OpenGL.
Now, with DirectX 12 being low-enough level to be very similar to Vulkan, for Shader Model 7.0, Microsoft is saying the GPU equivalent of “you’ll still be making Win32 API calls, but it’s not worth the hassle anymore to maintain our own .EXE format (PE). Instead, so everyone can use the same debuggers and profilers, we’re going to store our machine code in ELF-format containers as is standard for Linux, the BSDs, and everyone else except us and Apple”.
Thank you. This is why we have comments, and this is why I even post links to stories I don’t always fully understand – because I know many of you do.
very neat response but I found funny the way you’re implying that ELF is not the outlier here (maybe if you count android phones as elf-based)
There are more computers running ELF binaries than you can shake a stick and and more platforms… that was the point ELF is the standard everyone uses, except for the legacy universal and PE formats
If you count all servers , over half of mobile devices and virtually every embedded device… then yes ELF dominates by far.
If you are looking at the number of platforms, ELF dominates. However, if what you think of when you hear the word “computer” is desktops and laptops, then the fact neither Windows nor macOS use ELF means that ELF feels like the outlier ( 5% of systems? ). If you broaden the definition of “computers” to include smartphones then ELF is still not on iPhone or iPad. So, that explains the comment about Android.
To condense the Wikipedia page’s list, ELF is used by…
Unix-like:
Linux, Solaris/Illumos, IRIX, FreeBSD, NetBSD, OpenBSD, Redox, DragonFlyBSD, Syllable, HP-UX (except for 32-bit PA-RISC which stayed on their old SOM format), QNX Neutrino, and MINIX.
Non-Unix:
OpenVMS, BeOS r4+ for x86, Haiku, RISC OS, Stratus VOS, SkyOS, Fuchsia OS, Z/TPF, HPE NonStop OS, Deos
Game Consoles:
PSP, PS Vita, Playstation 1 through 5, GP2X, Dreamcast, GameCube, Nintendo 64, Wii, Wii U (A.K.A. Café OS)
PowerPC:
AmigaOS 4, MorphOS, AROS, and loadable by (but not used by) Power Mac Open Firmware.
Mobile phones:
Symbian OS v9, Sony Ericsson W800i/W610/W300/etc., Siemens SGOLD and SGOLD2 platforms, various Motorola models, Bada stuff like the Samsung Wave S8500, Maemo and Meego, Android JNI and ART on-install AOT compilation.
…as well as ATmel AVR, AVR32, and TI MSP430, apparently, and though Mac OS isn’t ELF, PowerPC G4 Open Firmware can load ELF, which I assume is how PPC Linux does things.
It’s quite literally everything of note and then some, except Microsoft stuff (Windows, XBox, Mono/.NET Core), UEFI (because Microsoft-dominated market), Apple stuff, and Nintendo Switch. (The switch apparently uses a binary format named NSO which is a proprietarized derivative of ELF according to https://switchbrew.org/wiki/NSO )
…and, as Wikipedia notes, it’s also showing up on Windows in the form of stuff to run in WSL.
What better counterpart to OpenGL and Vulkan formats, when set opposite DirectX- and Metal-proprietary formats, could there be?
directx is a dying trechnology. Vulkan is the future.
Does anybody know the market share trends for DirectX vs Vulkan? As a Linux user, obviously it is all about Vulkan for me including emulating older DirectX. But it has not been my impression that Vulkan is winning against DirectX in the gaming market generally. Obviously both Windows and Xbox still use DirectX.
This adoption of SPIR-V is welcome news but I am not sure that it signals a move away from DirectX for Microsoft generally. I guess it will make it easier for game devs to target both DirectX and Vulkan which will, longer term, make it easier to move to Vulkan exclusively. That said, I have heard that DirectX is easier to work with.
The incentive to work with Vulkan is to be cross-platform but do devs care about that? The incentive to work with DirectX is that it is the standard on the platforms that generate the most revenue and is also easier to work with. Honestly, given those trade-offs, I would not expect Vulkan to push DirectX out.
Any other thoughts or data?
tanishaj,
I’m also curious about this.
Xbox may end up shutting down in favor of multi-platform services…
https://www.complex.com/pop-culture/a/kevin-wong/is-xbox-shutting-down-heres-what-we-know
XBox is a big reason to use DirectX. If xbox gets discontinued, then it seems logical that directx would have a diminished role in the future for games too. Personally I think vulkan makes more sense for portability unless microsoft were to officially port directx to new platforms.
My thoughts as well. I don’t really know which way publishers are leaning. Many haven’t bothered to support alternative platforms and windows still dominates the gaming computer market.
The adoption of vulkan in both ps and switch spelled the deathknell of directx devolopment. It makes more financial sense now that windows supposrts both openGL and Vulkan to target a single 3d API. Cost is just one factor, also features. Vulkan now supports more rendering features than d3d does.
Xbox was the one thing keeping it alive. With the death of directinput and deprecation of the xbox. No further software will be made for the plattform, unless they like to waste their effort. And streaming games is not going to happen. it is not worth it.
NaGERST,
I agree with that, but I’m not sure what the publisher’s think. After all they are the ones who will decide it, not us.
Did you mean streaming remote gameplay, as in the now defunct google stadia? Or are you referring to subscription services like game pass?
If you mean streaming remote games, yeah it seems like an expensive undertaking for games that will perform worse unless you live near the data centers.
I think there’s a good chance microsoft sees game subscriptions as the future and they might not be wrong. Leave behind the business of expensive hardware sold below cost to focus on building lucrative game stores without having to subsidize their hardware. They have something like 30 million subscribers and maybe even an opportunity to displace steam’s marketshare with non-xbox gaming in the future.