Как отлаживать вычислительные шейдеры DirectX 11? - PullRequest
3 голосов
/ 19 декабря 2009

Я начал использовать DirectX 11 Compute Shader для программирования GP-GPU. Я написал довольно сложную программу на HLSL, и когда я захотел отладить ее, я понял, что утилита PIX из DX SDK, август 2009 г., не поддерживает Compute Shaders ... Я знаю, что Nvidia собирается выпустить Nexus для Visual Studio, которая будет поддерживать отладку Direct Compute, но только на графических процессорах NVidia следующего поколения, которые еще не выпущены :( Технология Compute Shader выглядит очень многообещающе для меня из-за независимости устройства, но это будет очень трудно использовать без поддержки отладки.

Знаете ли вы какие-либо инструменты или подходы, которые можно использовать для отладки Compute Shader, доступные сейчас или планируемые к выпуску в ближайшем будущем?

Ответы [ 4 ]

2 голосов
/ 20 февраля 2018

Эффективным способом разработки и отладки сложного HLSL Compute Shader является его компиляция в C ++. Как только вы добились того, что вы можете использовать возможности отладки IDE, которые вы обычно используете в C ++, такие как поиск памяти и переменных и т. Д. Ниже приведен демонстрационный проект концепции, показывающий, как отлаживать образец DirectX HLSL Compute Shader:

https://github.com/cezbloch/shaderator

Как только ваш код работает и исправляется, вы выполняете его на GPU - C ++ verion предназначен только для помощи в разработке.

2 голосов
/ 19 декабря 2009

Я жду, когда NVIDIA Nexus станет широко доступным. Возможно, Microsoft могла бы предложить что-то, что работает с эталонным растеризатором, но я бы сказал, что важно обеспечить тесную интеграцию с оборудованием: в таком случае только поставщики могут предоставить необходимые инструменты.

Кто-то может знать, планирует ли AMD добавить поддержку вычислительных шейдеров в GPU PerfStudio .

0 голосов
/ 11 января 2013

К сожалению, отладка вычислительных шейдеров очень похожа на отладку вершинных и пиксельных шейдеров ... Лучший способ, который я нашел, - это выполнять небольшие изменения и выводить тестовые значения во временный ресурс текстуры. Затем вы можете отобразить ресурс текстуры на экране вашего приложения (или даже сохранить в файл) и использовать его для извлечения информации о том, что происходит в шейдере.

Это действительно ужасная ситуация, но именно так сейчас обстоят дела с инструментами ...

0 голосов
/ 19 декабря 2009

Извините, но пока нет тривиального ответа на этот вопрос.

Возможно, попробуйте зарегистрироваться в бета-программе NVIDIA Nexus: http://supportcenteronline.com/ics/support/default.asp?deptID=4639

Где вы прочитали Nexus нужен графический процессор на базе Fermi? Я подумал, что требования, когда SLI-совместимая рабочая станция с двумя последними графическими процессорами NVIDIA или двумя рабочими станциями на базе NVIDIA (а затем удаленная отладка цели).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...