DirectCapture
DirectCapture は、互換性のあるフレームのサーバー レイテンシーを自動的に最小化する XBOX Game Streaming プラットフォームの機能です。XGameStreamingGetDisplayDetails API を使用すると、互換性のあるフレームの要件を問い合わせて、ゲームが DirectCapture を活用できるようにすることができます。互換性のあるフレームの要件を以下に説明します。 XBOX Game Streaming は、提示されたフレームをキャプチャ (コピー) し、そのフレームをエンコードしてストリーミングします。DirectCapture がない場合、フレームは表示ハードウェアを使用して、入力の提示パラメーターからエンコード用のフォーマットへ変換されます。Present Queue でフレームは 0 〜 66ms のレイテンシーが発生し、その後、フレームをキャプチャするために Display Writeback (DWB) を通過する際にさらに 8.3ms のレイテンシーが発生します。Present Queue にかかる時間は、ゲームのフレームレートやダブル バッファリング / トリプル バッファリングの使用有無などに依存します。8.3ms の Display Writeback 時間は HDMI クロックに結び付けられているため、8.3ms に固定されています。 しかし、XBOX Game Streaming サーバーには HDMI ディスプレイが接続されていないため、DirectCapture は表示ハードウェアを使用する代わりに、ソフトウェア実装によってこの時間を短縮します。DirectCapture は、VSync の待機やダブル / トリプル バッファリングのフリップの待機などを排除することで、約 2 〜 12ms でフレームをキャプチャします。これによりレイテンシーが最大 72ms 削減されます。 低いレイテンシーを実現するには、ゲームが DirectCapture と互換性のあるパラメーターで提示する必要があります。- サポートされるコンソール モード
- Lockhart Profiling Mode
- サポートされるゲーム レンダリング解像度
- 任意、カスタム解像度 を含む
- サポートされるスワップチェーン フォーマット
- DXGI_FORMAT_R8G8B8A8_UNORM
- DXGI_FORMAT_B8G8R8A8_UNORM
- DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
- DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
- DXGI_FORMAT_R10G10B10A2_UNORM
- DXGI_FORMAT_R9G9B9E5_SHAREDEXP
- サポートされる色空間
- DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709
- ゲーム レンダリング解像度: XDK ゲームの 3840x2160
- HDR
- 複数の提示プレーン
タイトルが DirectCapture でストリーミングされていることの検証
タイトルが DirectCapture で実行されていることを、ストリーミング ログ ファイルを確認することで検証できます。ログ ファイルの収集
ストリーミング ログ ファイルを収集するには:- ゲームの実行を開始します
- ストリーミングを開始し、いずれかの Content Test App (CTA) で接続します
- ゲームの短いセクションをプレイします
- ゲームを終了します
- CTA を切断します
- ログの書き込みが完了するまで 30 秒待ちます
- C:\temp などのローカル ディレクトリにログをコピーします
xbcp xt:\XStreamLogs\XStreamManagementService.etl c:\tempxbcp xt:\XStreamLogs\nanotrace.etl c:\temp
遷移メッセージの表示
- Windows Performance Analyzer で XStreamManagementService.etl を開きます
- 左ペインで System Activity を右クリックし、「Add graph to Analysis View」を選択します
- 下のペインで、Microsoft.Xbox.StreamManagementService を展開します
- Microsoft.Xbox.HostStreamingAgent プロバイダーを探し、必要に応じて展開します。これがない場合は、上記のログ ファイル収集の手順を繰り返してください。
- DirectCaptureLog タスクを選択し、必要に応じて Unknown Process を展開します
- 右にスクロールし、0_Message、1_Message などの列を探します。それぞれが DirectCapture からのメッセージで、順序どおりに並んでいます。複数の行がある場合は、時刻順に並べ替えられます。
- 各メッセージの意味については、以下の表を参照してください。これらのメッセージは、DirectCapture が無効化されるケースの理由とともに、DirectCapture の遷移のシーケンスを教えてくれます。
詳細なフレーム情報
- Windows Performance Analyzer で nanotrace.etl を開きます
- 「Microsoft.Xbox.CloudStreaming」プロバイダーに移動し、「VideoFrameCaptureSourceChanged」タスクを選択し、プロセス「ApplicationClipService.exe」を展開して、すべての「VideoFrameCaptureSourceChanged」イベントを表示します。
- 「NewCaptureSource」フィールドを確認します
- その値が「DCap」で始まる場合、タイトルは DirectCapture のより低いレイテンシーでストリーミングされています
- 「DWB」の値は、DirectCapture が使用されていないことを意味し、既定のキャプチャ メカニズムが使用されます。これは次の場合に発生します:
- タイトルが DirectCapture と互換性のないフレームを出力する
- システムがタイトル上にオーバーレイをレンダリングする (例: システム通知)
注意事項
- nanotrace.etl は限られた履歴しか持たないため、「VideoFrameCaptureSourceChanged」が表示されない場合、セッションが長すぎた可能性があります。検証するには、より短いセッションを実行し、ETL を確認してください。
- 開発キットでの DirectCapture サポートは、XBOX Series X 開発キットに限定されています
- 詳細については、XBOX Game Streaming: Reducing Latency and Optimizing for the Best Mobile Experiences をご覧ください。
