Last Week on DirectX Shader Compiler (2017-05-09)

As per usual, lots of good stuff went in.

  • Improved versioning; more components are starting to become aware (version-aware, that is, not the other kind), as we'd expect while we continue making progress while maintaining back compat.
  • SPIR-V work continues.
  • Fixes and codegen improvements. These are all very specific so they don't always have a theme, but week after week the compiler keeps getting better.
  • Debug name support was added.

A bit more on that last item. This change adds a new top-level part to a DXIL container (which isn't part of the DXIL specification per se), providing a name that can be used by tools to look up debug information. The easiest way to use this from the command-line is to specify /Zi to include debug information, and include a directory name with the /Fd switch, like in the following example.

dxc /T ps_6_0 smoke.hlsl /Zi /Fo bin\smoke.ps.cso /Fd debug\

You'll find a file under the debug\ directory then, with an auto-generated name like 0589515043f9814d324d2f39ae0ad50d.lld, cross-referenced from the binary at bin\smoke.ps.cso. You can see when you disassemble the file that a comment '; shader debug name: 0589515043f9814d324d2f39ae0ad50d.lld' is shown.

Tools haven't yet been updated to take advantage, but hey, that's what you get for following week-by-week developments.

More information on the (gasp!) documentation checked in, available here. Disregard the link formatting on GitHub - it cross-references properly when built with Sphinx (as far as I can tell, in any case).

Enjoy!