仕組み
- ゲームが GPU ダイナミック電力状態を有効にします。
- GPU が正規化されたフレーム統計を計算し、履歴データとして保存します。
- GPU が現在の需要と履歴に基づいて自動的に電力状態を変更し、エネルギーを節約します。
ゲームは XBOX Sustainability Toolkit の他の項目を採用することで、エネルギー消費をさらに削減できます。
ケース スタディ
Call of Duty: Black Ops 6
Call of Duty のシニア ディレクター オブ テクノロジー Rulon Raymond 氏:DPS で数日間実験を行ったところ、結果は有望なものでした。具体的には、XBOX Sustainability Toolkit を用いて導入した部分 以外 の領域で、追加の 10〜15% の電力削減 が確認できました。私たちはすでに(メニューやフロントエンド画面などで)ゲーム エンジンの一部をスロットリングしており、プレイヤーのフレームレートは変えずに多くの電力を節約していましたが、DPS は労力ゼロでさらなる削減を可能にしました。出荷時点での Black Ops 6 チームの計画:
- すでに電力削減策が適用されているすべての領域で DPS を有効化する。
- 数日間にわたるパフォーマンス テストを続ける間、DPS を常に有効化するフラグをデフォルト オフで公開する。
Two Point Museum
Two Point Studios の共同創設者兼テクニカル ディレクター Ben Hymers 氏は、XBOX チームが管理するクラウド設定を通じ、コード変更なしで DPS を出荷しました。エネルギー効率を最大化するため、Dynamic Power States を Constrained+ モードと併せてテストしました。これらの機能により、メイン メニューで約 50〜58% の消費電力削減、constrained モード中で 39〜63% のエネルギー使用量削減が実現しました。ロールアウト以降、ゲームプレイの忠実度を損なうことなく、平均エネルギー消費量に顕著な減少が見られました。たとえば、XBOX Series X の消費電力は平均 135 W から 125 W に減少しました。プレイヤー全体では、これは年間 約 6.5 メガワット時 のエネルギー削減に相当し、テレビを 65,000 時間、つまり約 7.5 年間ぶっ通しで視聴するのと同等のエネルギー量です。Two Point Museum は、クラウド構成を通じてリモートで DPS を採用した最初のサード パーティ スタジオです。
コードを変更せずに DPS をテストする(開発時のみ)
タイトルをリビルドすることなく、devkit で DPS をグローバルに有効化できます:1
devkit をアップデートする
devkit に少なくとも August 2024 Recovery がインストールされていることを確認してください。
2
フラグ ファイルを作成する
PC 上に
DynamicPowerEnable という名前の空ファイルを作成します。3
コンソールの D: ドライブにコピーする
4
起動してプロファイリングする
ゲームを起動します。DPS が有効になっています。
5
完了後に DPS を無効化する
DPS をリアルタイムで確認する
PIX または XBOX Manager のコンソール設定から Title Performance Overlay を有効にします。- DPS が有効になっている場合、オーバーレイの右下に赤い線と GPU power state メトリック(0〜4)が表示されます。4 はフル スピード、それより低い値はエネルギー節約を示します。
- DPS が無効の場合、GPU power state は
N/Aと表示されます。
ゲームで DPS を有効にする(リテール)
グラフィックス デバイス上の既存 APISetDriverHintX() を使用します。
API
DPS を有効化する
DPS を無効化する
フレーム統計で DPS を実行時に検出する
ゲームはフレーム統計を照会することで、DPS の挙動に基づいてレンダリングの判断(動的解像度など)を行うことができます。GetFrameStatisticsX
新しいフレーム統計タイプが利用できます。D3D12XBOX_RENDER_STATISTICS は GPUBusyDuration を返します。
GPUBusyDuration は 正規化された 値です — GPU クロックが P4 にあると仮定し、現在の電力状態に依存しません。パワー スケーリング フレーム統計は電力状態の変化 を受けます — したがって GPUBusyDuration とは異なる値になります。
例
P4 で 8 ms かかる GPU ワークロードは、P2(クロックが低い)では 12 ms に伸びます:正規化された
GPUBusyDuration は、ゲーム エンジンが動的解像度の計算に使用するため保持されます。正規化 と スケール後 の測定値を分離することで、低い電力状態が動的解像度を最下限まで下げ続けるようなフィードバック ループを回避します。