Metal Shader Converter shader debug symbols

Hello,

I’ve started testing the Metal Shader Converter to convert my HLSL shaders to metallib directly, and I was wondering if the option ’-frecord-sources’ was supported in any way?

Usually I’m compiling my shaders as follows (from Metal):

xcrun -sdk macosx metal -c -frecord-sources shaders/shaders.metal -o shaders/shaders.air

xcrun -sdk macosx metallib shaders/shaders.air -o shaders/shaders.metallib

The -frecord-sources allow me to see the source when debugging and profiling a Metal frame.

Now with DXC we have a similar option, I can compile a typical HLSL shader with embedded debug symbols with:

dxc -T vs_6_0 -E VSMain shaders/triangle.hlsl -Fo shaders/triangle.dxil -Zi -O0 -Qembed_debug

The important options here are ’-Zi` and ’-Qembed_debug’, as they make sure debug symbols are embedded in the DXIL.

It seems that right now Metal Shader Converter doesn’t pass through the DXIL debug information, and I was wondering if it was possible. I’ve looked at all the options in the utility and haven’t seen anything that looked like it.

Right now debug symbols in my shaders is a must-have both for profiling and debugging.

For reference an alternative pipeline would be to use spir-v cross instead. For reference here's what a typical pipeline with dxc and spir-v cross look like:

HLSL -> SPIRV -> AIR -> METALLIB

dxc -T ps_6_0 -E PSMain -spirv shaders/triangle.hlsl -Zi -Qembed_debug -O0 -Fo shaders/triangle.frag.spirv
spirv-cross --msl shaders/triangle.frag.spirv --output shaders/triangle.frag.metal
xcrun -sdk macosx metal -c -frecord-sources shaders/triangle.frag.metal -o shaders/triangle.frag.air
xcrun -sdk macosx metallib shaders/triangle.frag.air -o shaders/triangle.frag.metallib

As you can see, it's a lot more steps than metal shader converter, but after all those steps you can get some sort of shader symbols in xcode when debugging a metal frame, which is better than nothing:

Please let me know if I can provide files, projects or anything that can help supporting shader symbols directly with metal shader converter.

Thank you for your time!

Metal Shader Converter shader debug symbols
 
 
Q