語法
typedef enum D3D12XBOX_GDS_OPERATION
{
D3D12XBOX_GDS_OPERATION_DEFAULT = 0,
D3D12XBOX_GDS_OPERATION_READ_AT_EOS = 1,
D3D12XBOX_GDS_OPERATION_READ_AT_TOP = 2,
D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB = 3,
D3D12XBOX_GDS_OPERATION_WRITE_USE_DATA_BY_POINTER = 4,
D3D12XBOX_GDS_OPERATION_COMPUTE = 8,
} D3D12XBOX_GDS_OPERATION
常數
| 常數 | 描述 |
|---|---|
| D3D12XBOX_GDS_OPERATION_DEFAULT | 讀取為 D3D12XBOX_GDS_OPERATION_READ_PIPELINED_AT_EOS。寫入一律在管線頂端 (TOP) 執行並進行複製;請視需要插入同步處理。表示要使用預設值:ID3D12GraphicsCommandList::ReadGDSX 使用 D3D12XBOX_GDS_OPERATION_READ_AT_EOS,ID3D12GraphicsCommandList::WriteGDSX 使用 D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB。這些設定最接近 DirectX 12 中 SetUAV 的預設行為 |
| D3D12XBOX_GDS_OPERATION_READ_AT_EOS | 在著色器結束時讀取 GDS 內容,並與轉譯以管線方式進行。可能需要柵欄或 WaitUntilIdle,以確保讀取已到達記憶體。GDS 的讀取會以管線方式進行,並在著色器結束 (EOS) 時發生。 如果 GPU 迫切需要對寫入的 GDS 資料進行任何讀取存取,請呼叫 InsertFence 和 InsertWaitOnFence 來封鎖命令處理器 (CP),直到 EOS 寫入完成為止。 如果要透過 L2 快取 (TCC) 讀取計數器,則需要排清快取。如果要透過 CP 讀取計數器,則不需要排清快取。如果寫入的 GDS 資料在 GPU 上的使用位置與寫入位置相距夠遠,則除了可能的快取排清之外,不需要任何同步處理。 |
| D3D12XBOX_GDS_OPERATION_READ_AT_TOP | 在 TOP 讀取 GDS。表示 CP 會在管線頂端 (TOP) 執行 GDS 的非管線讀取。這表示如果有任何執行中的著色器會修改 GDS (例如透過 UAV 計數器),讀取可能會產生非預期的結果,因為結果會是著色器執行期間 GDS 狀態的快照。如果沒有使用 GDS 的執行中著色器,結果將與 EOS 情況下產生的結果相同。適用於 D3D12XBOX_GDS_OPERATION_READ_AT_EOS 的 GPU 寫入-讀取考量,也適用於 D3D12XBOX_GDS_OPERATION_READ_AT_TOP。 |
| D3D12XBOX_GDS_OPERATION_WRITE_COPY_DATA_TO_CB | 在管線頂端寫入 GDS,但會先將計數器資料複製到 CB。表示 GDS 寫入只能從著色器或 CP 執行,因此 WriteGDSX 會在 TOP 執行寫入。要求複製時,提供的計數器資料會複製到命令緩衝區,且可以捨棄來源指標。指標不必指向 GPU 對應的記憶體。這基本上會執行 CPU 到 GDS 的複製。 |
| D3D12XBOX_GDS_OPERATION_WRITE_USE_DATA_BY_POINTER | 在管線頂端寫入 GDS;不過,由於會使用指標,遊戲必須追蹤其存留期和危害。此常數表示 GDS 寫入只能從著色器或 CP 執行,因此 WriteGDSX 會在 TOP 執行寫入。要求依指標複製時,GPU 會在封包執行時使用提供的計數器資料。這表示遊戲必須追蹤 pCounterValues 指標的危害和存留期,且 pCounterValue 必須位於 GPU 對應的記憶體中;若未這麼做,很可能會導致 GPU 當機。這種複製類型較適合 GPU 到 GPU 的 GDS。 |
| D3D12XBOX_GDS_OPERATION_COMPUTE | 對於著色器結束 (EOS) 作業,指定作業是 EOS 計算還是 EOS 圖形。此常數表示封包與計算 (而非圖形) 相關,以便區分不同的著色器結束。 |
備註
D3D12XBOX_GDS_OPERATION 指定全域資料共用 (GDS) 的讀取和寫入作業。
下列函式使用此列舉:
Direct3D 12 不會執行任何隱含的 GDS 管理,因此整個 GDS 空間都可供遊戲使用。如需 GDS 資料目的地指標的詳細資訊,請參閱 D3D12_GPU_VIRTUAL_ADDRESS。
