跳轉到主要內容
在 PIX 中分析 ExecuteIndirect 呼叫具有挑戰性。當 ExecuteIndirect 引數緩衝區是由 GPU 產生時,ExecuteIndirect 的子繪製/分派可能具有不確定的順序。這會讓 PIX 中的效能分析與偵錯作業變得非常困難,因為每次評估時,個別子索引的內容可能完全不同。

XBOX Series X|S 上的 ExecuteIndirect

在 XBOX Series X|S 上,ExecuteIndirect 分析支援已經更新,大幅改善了 PIX 的使用者體驗。對於可能產生多個繪製/分派,或間接指定非繪製/分派參數 (設定根簽章參數、頂點緩衝區、索引緩衝區、管線狀態物件等) 的 ExecuteIndirect 呼叫,在分析期間檢視 ExecuteIndirect 呼叫的子繪製/分派時,PIX 會將 ExecuteIndirect 所使用的 GPU 產生引數及其他 GPU 產生的相依性「鎖定」為在分析開始時產生的單一副本。這讓偵錯作業 (例如檢視管線繫結) 保持一致,不會因為不確定性而持續變動。 不過,這種對 GPU 產生引數的「鎖定」會對 GPU 效能造成重大影響。因此,這些「複雜」ExecuteIndirect 呼叫的個別子索引無法取得計數器與 Dr. PIX 結果等效能資訊。父 ExecuteIndirect 則可取得效能資訊,在 PIX 中可透過其專屬的全域 ID 選取。 此記憶體「鎖定」只適用於 ExecuteIndirect 呼叫的子項。例如,如果選取了 ExecuteIndirect 父項,則可以在管線檢視中檢視其所有子項使用的整個引數緩衝區。重新整理時,此緩衝區的內容可能會因 GPU 產生結果的不確定性而改變。

先前平台上的 ExecuteIndirect

在 XBOX Series X|S 之前的主機上,PIX 不支援上述的 ExecuteIndirect 引數「鎖定」。對於這些平台,PIX 設定中有一個選項可以「強制摺疊」所有 ExecuteIndirect 呼叫,實際上將 ExecuteIndirect 視為單一繪製/分派。

另請參閱

管線檢視 PIX 計數器 Dr. PIX
最後修改於 2026年10月8日