« glTFの次期バージョンのマテリアル周りの議論 | トップページ | NVIDIA Turingの技術的な詳細記事 »

2018.09.13

Direct3D12でGPUのドライバクラッシュをデバッグする

Direct3D12でGPUのドライバクラッシュをデバッグする話です。

Debugging D3D12 driver crash
http://asawicki.info/news_1690_debugging_d3d12_driver_crash.html

Direct3D12は低レイテンシなAPIな代わりにエラー処理に対して古い世代のグラフィックスAPIより追いにくくなりました。デバイスコンテキストがすぐに処理を実行する時代と違ってコマンドリストにコマンドを積んで、キューに投入されたらエラーが出るなんてときはコマンドリストの積み込みではエラーが負えません。

ただ、Windows 10はGPUのクラッシュに対してOSごとブルースクリーンになったりしないということで、プログラム自体はなんとかプロセスが生きてるうちにクラッシュ状況を残しておこうということで、例えばNVIDIAだとAftermathというライブラリなんかを使えば追えたりするわけですね。クラッシュまでの間に最後に実行していたコマンドをバッファに退避して書きだしておくという感じですね。ただ、これはベンダーに依存するわけですね。

NVIDIA Aftermath
https://developer.nvidia.com/nvidia-aftermath

そこで、この記事はベンダーに依存しない手法というと...という話ですね。なるほどID3D12GraphicsCommandList2::WriteBufferImmediateというのを使ってバッファに書き込んで...ということのようですね。

ちなみに、ソースは下記だそうです。

https://github.com/sawickiap/MISC/tree/master/D3d12AfterCrash

« glTFの次期バージョンのマテリアル周りの議論 | トップページ | NVIDIA Turingの技術的な詳細記事 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« glTFの次期バージョンのマテリアル周りの議論 | トップページ | NVIDIA Turingの技術的な詳細記事 »