如何调试DirectX 11计算着色器?

4
我已开始使用DirectX 11 Compute Shader技术进行GP-GPU编程。我在HLSL上写了一个相当复杂的程序,当我想要调试它时,我意识到DX SDK August 2009中的PIX工具不支持Compute Shaders... 我知道Nvidia将发布适用于Visual Studio的Nexus,它将支持Direct Compute调试,但仅适用于尚未发布的下一代NVidia GPU :( Compute Shader技术对我来说看起来非常有前途,因为它不依赖特定设备,但是如果没有调试支持,使用它将非常困难。
您是否了解任何可以用于Compute Shader调试的工具或方法,现在或计划在不久的将来发布?
4个回答

2

我在等待 NVIDIA Nexus 广泛可用。也许微软可以推出与参考光柵化器配合使用的东西,但我认为重要的是与硬件进行紧密集成: 在这种情况下,只有供应商才能提供必要的工具。

有人可能知道AMD是否计划在GPU PerfStudio中添加对计算着色器的支持。


2
将复杂的 HLSL Compute Shader 编译成 C++ 是一种高效的开发和调试方式。这样做之后,你就可以利用与 C++ 相同的 IDE 调试功能,例如内存和变量查找等。下面是一个概念验证演示项目,展示了如何调试 DirectX HLSL Compute Shader: https://github.com/cezbloch/shaderator 一旦你的代码正常工作并且正确无误,就可以在 GPU 上执行它 - C++ 版本只是用于帮助开发。

0

很抱歉,目前对于那个问题没有简单的答案。

也许可以尝试加入NVIDIA Nexus测试计划: http://supportcenteronline.com/ics/support/default.asp?deptID=4639

你在哪里看到Nexus需要Fermi架构的GPU?我认为要求是具有SLI功能的工作站,配备2个最新的NVIDIA GPU,或者2个基于NVIDIA的工作站(然后远程调试目标)。


0

不幸的是,调试计算着色器非常类似于以前调试顶点和像素着色器... 我发现最好的方法是进行小的更改并将测试值输出到临时纹理资源中。然后,您可以将纹理资源渲染到应用程序屏幕上(甚至保存到文件),并使用它来提取有关着色器中正在发生的情况的信息。

这真的是一个可怕的情况,但这就是目前工具状况的情况...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接