DirectCapture
DirectCapture 是 XBOX Game Streaming 平台功能,可針對相容的畫面自動將伺服器延遲降至最低。XGameStreamingGetDisplayDetails API 可讓您查詢相容畫面的需求,以確保您的遊戲能夠利用 DirectCapture。相容畫面的需求說明如下。 XBOX Game Streaming 串流遊戲的方式是擷取 (複製) 所呈現的畫面,然後對畫面進行編碼以供串流。若未使用 DirectCapture,畫面會使用顯示硬體從輸入呈現參數轉換為用於編碼的格式。畫面在 Present Queue 中有 0-66 毫秒的延遲,然後在經過 Display Writeback (DWB) 擷取畫面時,會再增加 8.3 毫秒的延遲。在 Present Queue 中的時間取決於遊戲的畫面播放速率,以及是否使用雙重或三重緩衝等因素。8.3 毫秒的 Display Writeback 時間固定為 8.3 毫秒,因為它與 HDMI 時脈繫結。 不過,XBOX Game Streaming 伺服器並未連接 HDMI 顯示器,因此 DirectCapture 改用軟體實作而非顯示硬體來縮短這段時間。DirectCapture 藉由消除等候 VSync 以及等候雙重或三重緩衝翻轉等作業,可在大約 2-12 毫秒內擷取畫面以供編碼。這可將延遲減少最多 72 毫秒。 若要獲得較低的延遲,遊戲必須以與 DirectCapture 相容的參數進行呈現。- 支援的主機模式
- Lockhart 分析模式
- 支援的遊戲轉譯解析度
- 任何解析度,包括自訂解析度
- 支援的交換鏈格式
- 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 執行。收集記錄檔
若要收集串流記錄檔:- 開始執行遊戲
- 開始串流並使用其中一個內容測試應用程式 (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。
