お世話になっております。
バックグランド状態においてGPU負荷が症状した際のGPU Timeoutの挙動に関してご質問させてください。
<br/>
ゲームをウィンドウモード等で実行中にバックグラウンドにて他のアプリケーションを操作した際に、
GPU Timeoutが発生するという状況が発生しており対処方法を検討しております。
具体的な事例としてはゲーム画面を録画した動画をフォトでシークバーを移動させて内容の確認、トリミング作業を行っていた際に発生しています。
<br/>
ドキュメントにてご案内のある「TDR イベントを解決する方法」にてGPU Timeout自体は回避できております。
ただ出来ればレジストリ変更などを実施せずにゲーム側の対処でTimeoutを回避できればと考えています。
<br/>
こういった他のアプリケーションによるGPU Timeoutに対して有効な対応策などはございますでしょうか?
<br/>
何卒よろしくお願いいたします。
[Attachment Removed]
t-nikaido1
(t-nikaido1)
3
お世話になっております。
このGPUタイムアウトは OS(Windows)の働きによるものですので、アプリケーション側での対処は難しいかと思います。
既に目を通されているかもしれませんが特殊な場合として、ハードウェアレイトレーシング使用時については負荷の重いパスを分割してレンダリングする機能が用意されており、これによりタイムアウトの確率を下げることが期待できます(同ページに案内されています)。
参考までに、以下は Substance Painter のドキュメントですがやはりレジストリを変更する方法が案内されています。
[https://support.borndigital.co.jp/hc/ja/articles/360000574634\-長いコ\[…]AFラッシュする](https://support.borndigital.co.jp/hc/ja/articles/360000574634-長いコンピューター計算でGPUドライバがクラッシュする)
よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
ご教示頂きありがとうございます。
OS(Windows)の働きによるもので制御が難しい旨、承知いたしました。
その上でもう少しだけ伺いたいのですが、
実行中のゲーム側がバックグラウンド状態(他のアプリケーションを利用している状態)の際にゲーム側で負荷を下げる等で回避することは出来ないでしょうか?
もし実行ゲームがバックグラウンド状態のときに実施できる対処方法などあればご教示いただけないでしょうか?
[Attachment Removed]
t-nikaido1
(t-nikaido1)
6
ご確認ありがとうございます。
実際に対策として有効であるかどうかは分かりかねますが、バックグラウンドへの移動/復帰タイミにグについて
・FSlateApplication::Get().OnApplicationActivationStateChanged() デリゲートへのバインド
・UGameViewportClient::ReceivedFocus / UGameViewportClient::LostFocus のオーバーライド
といった方法で処理を追加できますので、ここで描画に関する設定の変更等の対処を行うことが可能です。
具体的な設定内容は非常に多岐に渡り、何が有力であるかはプロジェクトの内容次第でもあるため言及しづらいところです。
手軽な項目としてはスケーラビリティによる一括設定があり、コンソールコマンド “scalability 0” (低品質に設定する場合)などとして操作ができます。
https://zenn.dev/ryu_takatsukasa/books/d22a6992bce434/viewer/5f8679
よろしくお願いいたします。
[Attachment Removed]