お世話になっております。
Windows版実行中にGPUが無効になった場合に、アプリケーションをクラッシュさせずにエラーメッセージを表示させて終了したいです。
UE5で可能ならば実装方法を教えて下さい。
<br/>
GPU無効にの判定に関しては、MSのページに記載のDXGI_ERROR_DEVICE_REMOVED を今のところは想定しています。
https://learn.microsoft.com/ja-jp/windows/uwp/gaming/handling-device-lost-scenarios
<br/>
ユースケースとしては、ゲームプレイ中に
・ユーザーがディスクリートGPUを無効にする
・ユーザーがディスクリートGPUから統合型GPUへ切り替える
というような操作を想定しています。
<br/>
また、もしもUE5の仕組みとして、GPUクラッシュせずにこのような対応をするのが難しい場合は、教えていただきたいです。
<br/>
以上、よろしくお願いします。
<br/>
<br/>
<br/>
<br/>
お世話になっております。
本件ですが類似の対応事例は見つかっておりませんが、RHI実装を直接改造することで独自のメッセージボックス等を追加できる見込みです。
以下TerminateOnGPUCrash()にて行われているアプリケーションの終了処理やShippingやTest以外でメッセージボックスを表示している箇所が参考になるかと思います。
.\Engine\Source\Runtime\D3D12RHI\Private\D3D12Util.cpp
void FD3D12DynamicRHI::TerminateOnGPUCrash()TerminateOnGPUCrash()から呼ばれている以下関数でエラータイプを判定
void FD3D12DynamicRHI::OutputGPUCrashReport(FTextBuilder& ErrorMessage)ユーザーがディスクリートGPUから統合型GPUへ切り替える、というユースケースですが、Windowsの設定などから行った場合は次回起動時に反映される認識です。
またDeviceが見つからなくなった場合不正な参照へのアクセスなどが発生してしまう可能性があり、速やかに終了させることが望ましいかと思われます。
上記処理をご確認頂き、対応を検討いただけますと幸いです。
よろしくお願いいたします。