imm_atomic_alloc (sm5 - asm)
以不可部分完成的方式遞增以計數或附加未排序存取檢視儲存的隱藏 32 位計數器, (UAV) ,並傳回原始值。
imm_atomic_alloc dest[.single_component_mask], dstUAV |
---|
項目 | 描述 |
---|---|
dest |
[in]包含傳回的計數器值。 |
dstUAV |
[in]具有 Count 或 Append 旗標的結構化緩衝區 UAV。 |
備註
有一個與每個 Count 或 Append Buffer 檢視相關聯的隱藏不帶正負號的 32 位整數計數器值,當檢視系結至管線時初始化,包括保留先前值的選項。
此指令會執行計數器值的不可部分完成遞增,並將原始值傳回至 dest。
對於 Append UAV,傳回的值只有在著色器調用的持續時間才有效。 之後,實作可能會重新排列記憶體配置。 根據傳回值的任何記憶體定址,都必須限制為著色器調用。
針對 Append UAV,在著色器調用內,HLSL 編譯器可以使用傳回的值作為結構索引,以用於存取結構化緩衝區。 存取呼叫 (s) 傳回之位置以外的任何結構索引,以 imm_atomic_alloc 或 _consume 產生未定義的結果,也就是 UAV 內的記憶體位置是隨機的,而且只會在著色器調用的存留期內固定。
對於 Count UAV,應用程式可以將傳回的值儲存為 UAV 內固定位置的參考,在著色器調用結束之後有意義。 計數 UAV 中的任何位置一律可以存取,與計數值無關。
計數沒有限制,因此它會在溢位時包裝。
相同的著色器無法在相同的 UAV 上嘗試 imm_atomic_alloc 和 imm_atomic_consume 。 此外,GPU 不允許多個著色器調用在相同的 UAV 上混合 imm_atomic_alloc 和 imm_atomic_consume 。
本指示適用于下列著色器階段:
頂點 | 船體 | 網域 | 幾何形狀 | 像素 | 計算 |
---|---|---|---|---|---|
X | X |
由於 Direct3D 11.1 的所有著色器階段都提供 UAV,因此本指示適用于 Direct3D 11.1 執行時間的所有著色器階段,從 Windows 8 開始提供。
頂點 | 船體 | 網域 | 幾何形狀 | 像素 | 計算 |
---|---|---|---|---|---|
X | X | X | X | X | X |
最小著色器模型
下列著色器模型中支援此指示:
著色器模型 | 支援 |
---|---|
著色器模型 5 | 是 |
著色器模型 4.1 | 否 |
著色器模型 4 | 否 |
著色器模型 3 (DirectX HLSL) | 否 |
著色器模型 2 (DirectX HLSL) | 否 |
著色器模型 1 (DirectX HLSL) | 否 |