Отладка графики в MSVC 2017 - произошла ошибка.Воспроизведение вашего приложения может быть неполным - PullRequest
0 голосов
/ 18 июня 2019

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

Произошла ошибка.Воспроизведение вашего приложения может быть неполным.(HRESULT = 0x00630000) "Неизвестная ошибка (0x00630000)"

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

У меня есть класс RAII для отладки:

class GPUBlock
{
public:
  GPUBlock() : _startResult(DXGIGetDebugInterface1(0, __uuidof(_directXAnalysis), reinterpret_cast<void**>(&_directXAnalysis)))
  {
    if (debugInitialized())
      _directXAnalysis->BeginCapture();
  }

  ~GPUBlock()
  {
    if (debugInitialized())
      _directXAnalysis->EndCapture();
  }

  bool debugInitialized() const { return _directXAnalysis && !FAILED(_startResult); }
private:
  IDXGraphicsAnalysis* _directXAnalysis = nullptr;
  HRESULT _startResult = OLE_E_BLANK;
};

Используется как:

{
    Debug::GPUBlock debugGPUplease;
    DoGPUWork();
}

1 Ответ

1 голос
/ 18 июня 2019

Оказывается, вы должны нажать кнопку «Остановить сбор». Если вы закончите отладку таким способом, журналы будут работать нормально.

enter image description here

Непонятно, почему раньше это работало без него, но, вероятно, это была удача, а не нормальное поведение.

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

...