- PIX UI GPU 擷取:非常適合擷取執行中的遊戲。
- 以程式設計方式進行 GPU 擷取:非常適合根據遊戲情境進行擷取。例如,在您發射電漿步槍時擷取畫面。
PIX UI GPU 擷取
使用 PIX 進行 GPU 擷取。若要開始使用,請確定您有一個使用檢測驅動程式執行的遊戲,並已連線至開發套件。PIX UI 看起來應該類似下圖。
擷取 UI
進行 GPU 擷取的控制項位於 “XBOX Connection” 檢視的上方,該檢視預設停駐在視窗的左上方。如下圖所示選取 Options 下拉式功能表。展開或摺疊 GPU 擷取選項的鍵盤快速鍵是 Ctrl+Shift+N。
擷取選項
GPU 擷取可使用下列選項:- 擷取畫面數:用來指定要擷取的畫面數目。請注意,隨著畫面數增加,擷取會變得更大,也可能更難瀏覽。
- 包含本機時間擷取:此選項會指示 PIX 除了 GPU 擷取之外,還進行簡短的時間擷取,以便比較遊戲執行階段計時與 GPU 擷取分析所回報的計時。
- 擷取所有 GPU 對應記憶體:在 XBOX Series X|S 平台上,預設只會擷取 GPU 存取的記憶體。此選項會指示 PIX 擷取所有記憶體,無論 GPU 是否使用。選取此選項會使擷取大小大幅增加,但可確保擷取所有資源,即使它們未被使用。
- 擷取完整的 GPU 存取紋理與緩衝區:在 XBOX Series X|S 平台上,如果您未選取擷取所有 GPU 記憶體的選項,可以控制 GPU 存取資源的擷取。這些選項適用於檢視紋理子資源 (例如未存取的 MIP 層級) 或部分緩衝區 (例如部分周遊的 DXR 加速結構),同時仍維持相對較小的擷取檔案大小。
- 啟用即時分析:此選項會讓 PIX 使用「即時分析」,在擷取之後立即在執行中遊戲的內容中分析 GPU 擷取。分析期間,遊戲會保持執行,但所有遊戲執行緒都會暫停。當您準備結束分析工作階段時,可以停止分析或關閉擷取來繼續遊戲。
以程式設計方式進行 GPU 擷取
GPU 擷取方法擷取的資料與使用 PIX 工具相同。這些方法可讓您在程式碼層級控制要擷取的畫面,或擷取開始與結束的時間。 ID3D12CommandQueue 介面中有三個方法。資訊會擷取至主機上的檔案。該檔案的副檔名為 .xpix,需要複製到開發 PC 上進行分析。- ID3D12CommandQueue.PIXGpuBeginCapture:使用此方法擷取多個畫面。每次呼叫 PIXGpuBeginCapture 都必須搭配呼叫 PIXGpuEndCapture。在 PIXGpuEndCapture 呼叫完成之前,檔案不會儲存。
- ID3D12CommandQueue.PIXGpuEndCapture:將此方法與 PIXGpuBeginCapture 搭配使用。
- ID3D12CommandQueue.PIXGpuCaptureNextFrame:使用此方法擷取單一畫面。此呼叫不需要包含在 PIXGpuBeginCapture 與 PIXGpuEndCapture 呼叫之間。
GPU 擷取方法的教學課程
本教學課程會在 Simple Triangle 應用程式中新增畫面擷取。- 如果您尚未撰寫 Simple Triangle 應用程式,請依照 Microsoft Game Development Kit 範例中 Simple Triangle 範例的說明撰寫。
- 確保應用程式已準備好進行 PIX 分析。如果您尚未這麼做,請完成設定與開始使用指南。
- 在您想要擷取下一個畫面的任何位置加入下列程式碼行。
- 開啟 XBOX Gaming Command Prompt 視窗,然後使用遠端工具將資料檔案複製到開發 PC 上的適當資料夾。
- 在 PIX 中開啟
C:\GPUCaptures\TriangleCap.xpix檔案。
GPU 擷取快取檔案 (.pixcache)
為了改善使用者體驗,PIX 會將與 GPU 擷取相關的暫存資料儲存在主機上,以及執行 PIX 的 PC 上。這些檔案的副檔名為 .pixcache。此功能由下列設定控制:“Enable SSD cache”主機 pixcache 檔案
在主機上,pixcache 檔案儲存在 XD:\DRIVES\DEVELOPMENT\PIX 目錄中。每個擷取都由 GUID 識別 (也會顯示在 PIX 的 “File Details” 檢視中)。快取檔案儲存在以此 GUID 命名的目錄中。 您可以使用 xbdir 命令列出主機上的所有快取檔案:PC pixcache 檔案
系統會在 %TMP%\PIX 資料夾中建立以擷取 命名的資料夾。擷取資料夾中最多有 4 個不同的檔案。- pagefile.pixcache
- 引擎會逐漸將擷取資料備份到磁碟。這會隨著時間大幅減少引擎的工作集。
- resources.pixcache
- 收集資源可能是很耗時的作業。如果在工作階段期間收集了資源,它們會儲存到磁碟。目前有一項限制:使用 ExecuteIndirect 時無法使用此功能。
- sqtt.pixcache
- 執行分析後,時間軸與 Sqtt 資料會被快取。開啟擷取時會填入這些資料,不需要執行分析。開啟後第一次執行分析時不會要求資料,因此作業會快得多。
- bottlenecks.pixcache
- 執行分析後,瓶頸資料會被快取。此功能僅適用於 XBOX One Series 主機。
