I am trying to use the shader debugger feature of NSight. Here are some details of my setup:
Software:
C++ DirectX 11
Visual Studio 2013
Compiled as Debug x64
Target:
64-bit Windows 7 Ultimate
Intel Core i7 CPU X 990 @ 3.47GHz
12 GB RAM
GTX 580
Host:
64-bit Windows 7 Professional
Intel Core i7-2860QM CPU @ 2.50GHz
16 GB RAM
Quadro 2000M
When I “Start Graphics Debugging”, my software launches on the target machine and I am able to use the frame debug features, but the shader list shows “Shader Debugger is not available” for all shaders.
It is worth noting that once upon a time I used the shader debugger on the same program successfully with this same pair of PCs. It was a while ago and my program has changed quite a bit since then, but the bulk of the underlying graphics code has not.
Here are some things I’ve tried to no avail:
- I had updated to the latest version of NSight, but then realized that it had dropped support for the GTX 580. Since then, I have tried versions 5.0, 4.7 and 4.0. When I did this, I installed the same version on both the target and host machines.
- I thought my trouble could be due to the way I was compiling my shader code at runtime. I tried updating my code to use the compilation flags to produce debug information. I tried using different versions of API compilation functions. I also attempted to use an older version of so it would use an earlier version of the DLL than "d3dcompiler_47.dll" - but I couldn't seem to get that to work right - every time I ran my program it would still require "d3dcompiler_47.dll" be present.
- Finally I pulled out the runtime shader compilation and reorganzied my shader code into .hlsl files that would be pre-compiled by VS2013 and then loaded from .cso files at runtime. I made sure the files were set to compile with the /Gfp, /Zi, and /Od flags. Still, "Shader Debugger is not available".
- Have tried compiling my program both with and without the D3D11_CREATE_DEVICE_DEBUG flag set.
Any ideas are much appreciated!