Microsoft Publishes HLSL Shader Model 6.0 MSDN Docs

Subject: Graphics Cards | August 2, 2016 - 07:37 AM |
Tagged: windows 10, vulkan, microsoft, DirectX 12

Update (August 3rd @ 4:30pm): Turns out Khronos Group announced at SIGGRAPH that Subgroup Instructions have been recently added to SPIR-V (skip video to 21:30), and are a "top priority" for "Vulkan Next". Some (like WaveBallot) are already ARB (multi-vendor) OpenGL extensions, too.

Original post below:

DirectX 12's shading language will receive some new functionality with the new Shader Model 6.0. According to their GDC talks, it is looking like it will be structured similar to SPIR-V in how it's compiled and ingested. Code will be compiled and optimized as an LLVM-style bytecode, which the driver will accept and execute on the GPU. This could make it easy to write DX12-compatible shader code in other languages, like C++, which is a direction that Vulkan is heading, but Microsoft hasn't seemed to announce that yet.

View Full Size

This news shows a bit more of the nitty gritty details. It looks like they added 16-bit signed (short) and unsigned (ushort) integers, which might provide a performance improvement on certain architectures (although I'm not sure that it's new and/or GPUs exist the natively operate upon them) because they operate on half of the data as a standard, 32-bit integer. They have also added more functionality, to both the pixel and compute shaders, to operate in multiple threads, called lanes, similar to OpenCL. This should allow algorithms to work more efficiently in blocks of pixels, rather than needing to use one of a handful of fixed function calls (ex: partial derivates ddx and ddy) to see outside their thread.

When will this land? No idea, but it is conspicuously close to the Anniversary Update. It has been added to Feature Level 12.0, so its GPU support should be pretty good. Also, Vulkan exists, doing its thing. Not sure how these functions overlap with SPIR-V's feature set, but, since SPIR was original for OpenCL, it could be just sitting there for all I know.

August 3, 2016 | 01:21 AM - Posted by renz (not verified)

so no new hardware needed for shader model 6? also does SM6 feature only benefit DX12 only or it both DX12 and DX11?

August 3, 2016 | 04:30 PM - Posted by Scott Michaud

Some of these features (like Wave Ballot) are very similar to OpenGL extensions (there called Shader Ballot) for NVIDIA since Kepler, and probably similar for AMD.

Will *all* of these be supported? No idea. An equivalent to WaveAllSum is in OpenCL 2.0. I can't find reference to it in CUDA, at a brief glance, but that's mostly because I'm being buried in a mountain of 2009-era parallel sum reduction PowerPoints. Kepler has some similar functions, though, so it could be in there. But yeah, this is somewhat an extension of DirectX 12's (and Mantle's, and Vulkan's) mission of the graphics folks catching up with the compute folks.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Lines and paragraphs break automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote><p><br>
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.