Пикс, не могу отлаживать шейдеры

Я не могу заставить Pix отлаживать шейдеры. Раньше я использовал его совершенно нормально, но сегодня я продолжаю получать эту ошибку при попытке отладить либо вершинный, либо пиксельный шейдер:

Вызов, который ранее завершился неудачей при воспроизведении:

EID: 8 Вызов: IDirect3D9::CreateDevice() HRESULT:D3DERR_NOTAVAILABLE

Для получения дополнительной информации нажмите «Справка».

Справка выдает это:

"Playback failure is the error state that occurs following a successful timing capture.

There are many reasons why a call that succeeded at capture time can fail during PIX playback. Here are some common causes:

If the run file was captured on a system with different capabilities or more video memory. Also, PIX Win will use up more video memory than the original title did when it allowed debugging.

It can also occur if your Direct3D control panel settings are different from when the run file was captured. Some Direct3D 9 calls only fail when the debug runtime is active.

In the case of Direct3D 9 playback, the mesh viewer and shader debugging potentially use different device settings than the original application that can cause playback failures. For example, the shader debugging has to use a reference device. In this situation, there is a possibility that the HW device supports settings that are not supported under the reference device like StretchRect() filters. "

Я действительно не понимаю, почему это будет работать в один день, а не в следующий, я собираюсь исследовать драйверы моей графической карты, но у меня нет реального понимания того, как проверить ошибки, указанные выше.

Я также должен добавить, что использую Pix с приложением DirecX 9 XNA. Я пробовал тестировать как сборку отладки, так и сборку выпуска. Я отключил анализ D3D и использую захват кадров.

Если у кого-нибудь есть идеи, что это может быть, пожалуйста, помогите!

Ваше здоровье


person Bushes    schedule 04.03.2013    source источник


Ответы (2)


Просто из любопытства, работает ли это, если вы используете программное обеспечение вместо аппаратного для обработки вершин?

i.e.

Direct3D.CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, HWindow, D3DCREATE_SOFTWARE_VERTEXPROCESSING, D3DInit, Устройство);

Если с момента последнего запуска кода ничего не изменилось, возможно, ваши драйверы (или некоторые настройки в панели управления DirectX) были изменены.

person crazylpfan    schedule 07.03.2013
comment
Я не могу это контролировать. Все это делается через XNA. Мои мысли были такими же. Я обновил свои драйверы несколько дней назад, но все еще не исправил это. Возможно, восстановление системы может помочь. - person Bushes; 07.03.2013

Ошибка предполагает аппаратный сбой, чтобы решить эту проблему, я думаю, вам действительно нужно восстановить систему.

но с точки зрения отладки шейдера, он не обязательно ограничен XNA, вы можете создать программу-заглушку D3D, даже использовать программный конвейер, предложенный @crazylpfan, тогда вы можете подключить свой PIX к этой программе для отладки.

person zinking    schedule 14.03.2013