Skip to main content
Performance Investigator for XBOX (PIX) 是一款效能分析與偵錯工具,適用於建置 DirectX 12 遊戲的遊戲開發人員。本主題介紹 PIX Checklist 檢視 (示範一與示範二),並說明五個範例使用案例 (示範三至示範七)。 新的 PIX Checklist 功能是您進行 GPU 最佳化的一站式工具。它是一份精選的最佳做法清單,所有違規項目都會直接標示在擷取內容中。了解 PIX 如何將許多效能檢查自動化,這些檢查在例行的遊戲 GPU 效能審查中,最常帶來最佳化與改善。
此資訊截至 2022 年 4 月為最新。之後已有數項功能變更或更新。

PIX Checklist 簡介

PIX Checklist 針對 GPU 效能與正確性提供自動化建議。PIX 擷取的分析資料可用來分析 GPU、CPU、記憶體及檔案 IO 效能問題。PIX Checklist 隨附於 2021 年 4 月版的 Microsoft Game Development Kit with XBOX Extensions (GDKX),並在後續版本中持續改善。如果您仍在使用 2021 年 4 月版的 GDK,請立即更新。 PIX Checklist 僅適用於 XBOX Series X|S。之所以未納入 XBOX One X,是因為這會占用 XBOX Series X|S 的工程時間。不過,兩個平台的效能建議通常是相同的。

自動化的優點

自動化可以找出下列問題:
  • 您沒有檢查的問題
  • 多次發生的小問題
  • 需要了解整個擷取內容才能發現的問題
PIX 可以找出您沒有檢查的問題。其中有些問題看似極不可能發生,以致於您可能根本沒想到要檢查。例如,在 XBOX Series X 上有兩種 GPU 記憶體:最佳 (optimal) 與標準 (standard)。一般人往往假設 GPU 擷取中的所有內容都位於最佳記憶體中,但有時並非如此。您可能不會檢查這一點,但 PIX 可以替您檢查。 PIX 可以檢查多次發生的小問題。個別來看,這些問題影響不大。不過,知道它們發生了這麼多次可能很重要。最近,ATG 發現有兩個案例中,遊戲在每次繪製時都重設模板參考值。如果只在一次繪製中看到,那沒有關係。如果每次繪製都出現,就會成為問題。PIX 可以偵測這類重複情況。 PIX 可以找出您必須看過整個擷取內容才會知道的問題。例如,您可能已將某個資源建立為轉譯目標,卻從未將它繫結為轉譯目標。您必須查看擷取中的每次繪製才能確認這一點,但 PIX 可以替您完成。

示範一:找到並瀏覽 PIX Checklist

本節說明 Checklist 檢視。 圖 1. PIX 概觀視窗。 PIX 概觀畫面 圖 1 顯示在 2022 年 3 月版 GDK 中開啟 PIX 時,Checklist 在預設版面配置中的位置。 圖 2. PIX Checklist 檢視。 PIX Checklist 檢視 圖 2 顯示 PIX Checklist 檢視。綠色核取記號表示該項目通過檢查。紅色、橘色或黃色圖示表示檢查失敗。 由於它是一份檢查清單,其中包含 ATG 建議您審查的項目或檢查。例如 Use Async Compute Queue 項目。圖 2 顯示此項目已完成並有綠色核取記號,因此檢查通過。 圖 3. PIX「Collected when running analysis」工具提示範例。 PIX 工具提示範例 綠色核取記號以外的任何圖示都表示該問題需要您注意。紅色、橘色或黃色圖示會警告您該檢查清單項目失敗。沙漏圖示表示該檢查需要您尚未執行的動作。工具提示會告訴您該怎麼做。在圖 3 中,工具提示為 Collected when running analysis。這表示您需要執行分析。 圖 4. PIX「Collected when opening the Resources tab」工具提示範例。 另一個 PIX 工具提示範例 圖 4 顯示 Collected when opening the Resources tab 工具提示。 圖 5. PIX Events 檢視。 PIX Events 檢視 失敗的項目可以展開。視項目而定,PIX 會提供實用的資訊與連結。圖 5 顯示一個 Checklist 項目,其中有一個參考 Global ID 4477 的連結。選取該連結會將您連到 Events 檢視器中 Global ID 4477 的事件。Events 檢視中內建了 Checklist 的一個元件。在這裡,最左側的 Queue ID 欄位具有與 Checklist 檢視中相同的紅色圖示。Events 檢視中的項目也有連結。當您在 Events 檢視中選取紅色圖示時,該項目就會出現在 Checklist 檢視中。

自動化嘗試失敗的原因

為了做對的事,我們需要您了解先前的嘗試出了什麼問題。最明顯的就是誤判 (false positive)。如果檢查清單告訴您做錯了某件事,但實際上您並沒有做錯,那就是必須修正的錯誤。 不過,有時一些細微的問題並不是誤判,但與誤判有關。這些是真陽性 (true positive) 的案例:檢查清單是正確的,確實有失敗,但因為某些原因,您無法或不會修正它。我們將這類問題稱為 _Yes but_ (「是,但是…」)。 範例包括:
  • Checklist 指出 Prefer GPU Optimal Memory for Graphics Resources。是,但是:您的 GPU 最佳記憶體已用盡,而 PIX Checklist 卻要您修正不可能的事。
  • Checklist 指出 Avoid consecutive calls to ResourceBarrier。是,但是:只出現少數幾次。不值得修正,因為無法省下任何實質效益。
  • Checklist 指出 Use the 2nd hardware display plane。是,但是:您不想為 PC、XBOX One X 與 XBOX Series X|S 分支程式碼。
解決這類問題的一種方法是強大的篩選功能。如果不需要,您就不會看到它們。 自動化失敗也會因為意見回饋與反覆修正而發生。檢查清單功能的存續並非必然。目前已有一些不錯的成果,但仍會過度回報不重要的問題。

示範二:篩選 Checklist 檢視

本節說明如何在 Checklist 檢視中進行篩選。 圖 6. 在 Checklist 檢視中依通過/失敗狀態進行 PIX 篩選。 在 Checklist 檢視中依通過/失敗狀態進行 PIX 篩選 圖 6 顯示選取綠色的 Hide rules with no violations 按鈕後,檢查清單依通過/失敗狀態篩選的結果。規則依嚴重性排序。ATG 會為每條規則指派 1 到 4 的嚴重性等級。 圖 7. 在 Checklist 檢視中依嚴重性進行 PIX 篩選。 在 Checklist 檢視中依嚴重性進行 PIX 篩選 如果您只想查看最嚴重的警告,可以將檢查清單限制為嚴重性 1 或嚴重性 2。圖 7 顯示依嚴重性 1 規則篩選的檢查清單。 圖 8. 在 Checklist 檢視中手動停用 PIX 規則。 在 Checklist 檢視中手動停用 PIX 規則 如果有您不想看到的規則,請以滑鼠右鍵按一下該規則,然後選取 Disable this rule。圖 8 顯示透過停用規則來篩選檢查清單。 圖 9. 未篩選的 PIX Checklist 檢視。 未篩選的 PIX Checklist 檢視 您也可以選取綠色 Hide rules with no violations 圖示左側的 Show disabled rules。您先前停用的所有項目都會啟用並顯示。圖 9 顯示未篩選的檢查清單。 圖 10. 在 Checklist 檢視中依文字進行 PIX 篩選。 在 Checklist 檢視中依文字進行 PIX 篩選 如果您想尋找某個警告,且知道其中的部分文字,請在檢查清單的搜尋方塊中輸入該文字。檢查清單會顯示警告標題或詳細描述中符合該文字的規則。 圖 10 顯示依文字篩選的檢查清單。 下列各節中的範例顯示您可能會在檢查清單中看到的警告。這些範例以八款遊戲為樣本。這些遊戲都已上市並經過最佳化,因此要在其中找出問題困難許多。檢查清單在製作初期、仍有問題需要找出時效果最佳。

示範三:不必要的深度解壓縮

本節說明 Use Texture Compatibility on Compressed Resources 警告,並以不必要的深度解壓縮作為範例。 圖 11. 顯示 Use Texture Compatibility on Compressed Resources 警告的 PIX Checklist 檢視。 顯示 Use Texture Compatibility on Compressed Resources 警告的 PIX Checklist 檢視 在第一個範例中,圖 11 顯示 Use Texture Compatibility on Compressed Resources 警告。請注意,您可以閱讀視窗底部的描述,以取得有關此警告的更多詳細資料。選取 Global ID #337 連結以繼續調查此問題。 圖 12. 含深度解壓縮的 PIX Events 檢視。 含深度解壓縮的 PIX Events 檢視 選取該連結會帶您前往 Events 檢視中的 ResourceBarrier 呼叫,如圖 12 所示。Depth Decompress 位於 ResourceBarrier 呼叫下方。不過,在 XBOX Series X|S 上有一項紋理相容性功能,可讓您略過 Depth Decompress,直接原生讀取壓縮格式。深度解壓縮通常不會出現在這個位置。您不會預期看到 Depth Decompress,而它耗費了 0.116 毫秒。檢查清單會告訴您哪裡發生了違規。 圖 13. PIX API Objects 檢視與紋理相容性旗標。 PIX API Objects 檢視與紋理相容性旗標 進一步調查會帶您前往 API Objects 檢視及所示的物件。圖 13 確認物件 #35073 是以深度模板緩衝區建立的,但並未指定紋理相容性。 這個警告在兩款樣本遊戲中都出現了。對其中一款而言,這是很好的發現。另一款則表示「是,但是」:他們已經嘗試過,而且影響不大。因此,即使在其他地方損失了效能,忽略 Depth Decompress 也是合理的。

示範四:差異色彩壓縮 (DCC)

本節說明 Use Delta Color Compression for Pre-cleared Color Textures 警告。 圖 14. PIX 差異色彩壓縮。 PIX 差異色彩壓縮 圖 14 顯示 Use Delta Color Compression for Pre-cleared Color Textures 警告。XBOX Series X|S 上大多數的轉譯目標都會使用 DCC。它支援紋理相容性,因此這個警告與示範三中的範例有關。選取 Global ID #1311 連結會帶您前往所選取的事件。 圖 15. PIX Fast Clear Eliminate 警告。 PIX Fast Clear Eliminate 警告 圖 15 顯示在 Checklist 檢視中選取連結後出現的 Fast Clear Eliminate 警告。這不尋常,因為 DCC 沒有 Fast Clear Eliminate。通常您不會預期在 XBOX Series X|S 擷取中看到這類警告。Fast Clear Eliminate 是 XBOX One 所使用的壓縮類型。在 Fast Clear Eliminate 上觸發警告,表示使用的是 cmask 壓縮 而非 DCC。當您使用 DCC 時,會看到 DCC Eliminate。當您同時使用 DCC 與紋理相容性時,這裡不會顯示任何內容,而且您可以省下 DCC Eliminate 的成本。 圖 16. PIX Velocity Buffer。 PIX Velocity Buffer 此紋理可能很適合使用 DCC。圖 16 顯示該轉譯目標為 Velocity Buffer,這類緩衝區通常可壓縮。在此例中,轉譯目標幾乎全黑,其餘部分則幾乎是相同的灰色。在一款遊戲中,有兩位開發人員表示這個警告可能是個失誤。在開發初期,他們遇到過 DCC 的錯誤。在另一款遊戲中,團隊也因為尚未解決的錯誤而在某些情況下關閉 DCC。其他遊戲也回報遇到 Fast Clear Eliminate 警告。其中有些案例帶來了改善,有些則沒有。這可能是 ATG 需要進一步調查的事項,也可能在最初做出這些決定後已經修正。

示範五:未繫結的轉譯目標

本節說明 Remove Unbound RTVs from Shader/PSO 警告及未繫結的轉譯目標。 圖 17. PIX 未繫結的轉譯目標。 PIX 未繫結的轉譯目標 圖 17 顯示 Remove Unbound RTVs from Shader/PSO 警告。選取 Global ID #4474 連結會前往觸發此警告的連結事件。 圖 18. Pipeline 檢視中的 PIX 連結事件。 Pipeline 檢視中的 PIX 連結事件 圖 18 顯示連結事件的 Pipeline 檢視。其中有兩個轉譯目標:RTV 0 與 RTV 1。RTV 0 為黑色,表示檢查通過。不過,RTV 1 為紅色,表示有問題。 圖 19. PIX 匯出至 mrt1 的程式行。 PIX 匯出至 mrt1 的程式行 圖 19 在視窗底部顯示匯出至 mrt1 的程式碼行。 此擷取沒有符號,因此像素著色器 (PS) 只有 GPU 指令可用。透過回溯暫存器,您可以看到匯出至 RTV 1 的值是如何計算的。原本預期 RTV 1 已繫結,但實際上並未繫結。 圖 20. PIX 語法醒目提示。 PIX 語法醒目提示 透過 PIX 中的語法醒目提示,您可以在圖 20 中看到該匯出的計算成本有多高。 此案例中有兩個問題。
  • 匯出不需要的內容,以及相關的效能成本。
  • 計算匯出值的運算是浪費的成本。
兩款樣本遊戲都出現了 Remove Unbound RTVs from Shader/PSO 警告。其中一款遊戲表示值得修正,另一款則表示不值得。之所以沒有修正,是因為下列兩個因素的組合。
  • 它只短暫發生。
  • 修正它需要新的 PS,這會增加記憶體用量與複雜度。
兩種反應都很合理。

示範六:未使用的 VS 匯出

本節說明 The VS Exports Only Parameters which are Needed by the PS 警告。 圖 21. PIX 未使用的 VS 匯出警告。 PIX 未使用的 VS 匯出警告 圖 21 顯示 The VS Exports Only Parameters which are Needed by the PS 警告。 這個警告與 Remove Unbound RTVs from Shader/PSO 警告互補。在後者中,PS 匯出了不必要的內容。而在 The VS Exports Only Parameters which are Needed by the PS 警告中,頂點著色器 (VS) 也匯出了不必要的內容。圖 22 中選取的案例指出 VS 有兩個參數,但 PS 匯入了零個。 您可以選取連結,查看 PS 為何只匯入 0 個。 圖 22. Pipeline 檢視中的 PIX 繪製呼叫。 Pipeline 檢視中的 PIX 繪製呼叫 圖 22 顯示 Pipeline 檢視中的 繪製呼叫。 選取該連結會帶您前往 Pipeline 檢視中的繪製呼叫。 圖 23. PIX 未繫結的像素著色器。 PIX 未繫結的像素著色器 圖 23 顯示 PS 未繫結,且此事件僅限深度。 VS 中的最後幾項是匯出至參數 0 與參數 1。 由於沒有 PS 來接收,VS 寫入的除了位置以外的任何內容都是浪費的。如果您回溯這些匯出,會發現背後有大量的計算。它們並非匯出常數。此案例有兩個問題。
  • 匯出不需要匯出的參數會占用參數快取的空間。
  • 匯出的參數是可能相當冗長的計算結果,而這些計算也被浪費了。
在一個案例中,團隊想要修正此問題,因為這是僅限深度的轉譯。該團隊回報他們已在 PC 上修正此問題,效果很好。他們想在 XBOX 上嘗試。 另一個團隊則有不同的案例,其中並未進行轉譯。他們認為修正這個問題不值得。這很合理,因為這涉及分支 VS、產生更多 VS 執行個體,以及相關的成本。其他遊戲也會收到此警告,而效能影響各不相同。

示範七:幾乎空白的 wave64

本節說明 Use Wave32 for threadgroups of size 32 or less 警告及幾乎空白的 wave64。
此警告之後已擴大涵蓋更多情況,名稱也隨之變更。
圖 24. PIX 幾乎空白的 wave64。 PIX 幾乎空白的 wave64 圖 24 顯示 Use Wave32 for threadgroups of size 32 or less 警告。 圖 25. PIX 階段內的 Dispatch。 PIX 階段內的 Dispatch 圖 25 顯示在 Checklist 檢視中選取其中一個案例後,會帶您前往某個階段 (pass) 內的 dispatch。不過,這裡出現了奇怪的情況。根據計數器欄位,此階段有 123 個執行緒群組、123 個 wave 及 123 個執行緒。而其中的所有內容都是 dispatch(1,1,1)。此階段只有包含一個執行緒群組的 dispatch,每個執行緒群組包含一個 wave,每個 wave 包含一個執行緒。其他所有執行緒都被浪費了。此警告告訴您,與其在 Wave64 中每 64 個執行緒浪費 63 個,不如只在每 32 個執行緒中浪費 31 個。雖然您可以這麼做,但這並不會讓已經很糟的情況好多少。此警告仍有價值,因為它告訴您正在做一件奇怪的事。

總結

PIX Checklist 正在積極開發中

PIX 小組正在積極開發 PIX Checklist。您的意見回饋非常重要。ATG 小組在進行效能審查時會使用 PIX Checklist,留意誤判並了解問題所在。PIX 小組仍持續更新 Checklist,並持續提出新的警告。我們鼓勵您繼續使用它。

我們對您的請求

PIX Checklist 的開發會受到您意見回饋的影響。
  1. 在您的擷取內容上執行 PIX Checklist。
  2. 透過 PIX 意見回饋按鈕、論壇或您的 Microsoft 聯絡人,將有幫助與沒有幫助的功能意見回饋給我們。開發人員最常在出問題時提供意見回饋。PIX 小組也需要知道哪些功能運作良好,才能了解要繼續投入哪些工作。
  3. 要求新的測試。現在您已經了解可以進行哪些類型的測試,請將您對其他實用測試的想法提供給我們。

未來計畫

以下是 PIX 小組考慮在未來推出的一些功能。
  • 使用者可設定的警告閾值:例如,某個警告可能只有在出現 100 次時才有幫助。不過,其他開發人員可能只需要出現五次就發出警告的閾值。
  • 將 Checklist 檢視擴展到其他類型的擷取:例如,當您在一定數量的畫面中低於目標畫面播放速率時,偵測到此情況的 System Monitor 警告。這會建立 GPU 擷取。
  • Timing Capture Checklist 檢視:它會提供指出 PIX Timing Capture 中失敗項目的警告。

後續步驟

若要檢閱與本概觀相關的簡報資料資訊,請從 XBOX Developer Download Secure Data Storage (SDS) 下載下列檔案。
  • 投影片:Xfest 2022 Graphics Track PowerPoints (Xfest2022GfxPPTs.ZIP) 中的 GR01_A Tour of the New PIX Checklist - GPU Performance Made Easy.pptx
  • 視訊簡報:Xfest 2022 Graphics Track Videos (Xfest2022GfxVids.ZIP) 中的 GR01.mp4

下載 Microsoft PowerPoint 簡報與視訊

  1. 前往 Game Development Kit (GDK) 下載。
  2. 在 Select file type 下,選取 Conference Materials,然後選取 Confirm。
  3. 在 Select build/version number 下,選擇下列其中一個圖形簡報。
    • Xfest 2022 Graphics Track PowerPoints
    • Xfest 2022 Graphics Track Videos
  4. 選取 Download Now,然後等待 .zip 檔案下載完成。
  5. 前往您本機的「下載」資料夾,然後從壓縮資料夾中解壓縮 (擷取) 檔案。

另請參閱

PIX
Last modified on October 6, 2026