dcl_uav_structured (sm5 - asm)

宣告未排序的存取檢視, (UAV) 以供著色器使用。

dcl_uav_structured[_glc] dstUAV, structByteStride
項目 描述
dstUAV
[in]UAV。
structByteStride
[in]結構的大小,以位元組為單位。

備註

dstUAV 是宣告為結構化緩衝區 UnorderedAccessView 參考的 u# 暫存器,其具有必須在 API 上系結至 UAV 位置 # 的指定步幅。

結構的內容沒有型別;在記憶體上執行的作業可能會隱含地將資料解譯為具有類型。

structByteStride 是所宣告緩衝區中以位元組為單位的結構大小。 這個值必須大於零。 structByteStride 的類型為 uint,而且必須是 4 的倍數。

參考結構化 u# 的指示會採用 2D 位址,其中第一個元件會挑選 [struct],而第二個元件會挑選 [結構內的位移,以對齊的位元組為單位]。

_glc旗標表示「全域一致性」。 缺少_glc表示 UAV 只會在計算著色器中宣告為「群組一致」,或在單一圖元著色器調用中宣告為「本機一致」。

_opc旗標是保留順序計數器。 它表示如果 UAV 系結至 slot # (u#) ,則必須使用 COUNTER 旗標建立它。 這表示 著色 器中的imm_atomic_alloc或 imm_atomic_consume 作業操作計數器,其值可以在著色器中當做 UAV 中位置的永久參考使用。 著色器結束之後,無法重新排序資料。

缺少_opc旗標表示,如果著色器使用imm_atomic_allocimm_atomic_consume 指令,且 UAV 系結至 slot # (u) ,則必須使用 APPEND 旗標建立,以提供不保證在著色器調用之後保留順序的計數器。

如果_opc旗標不存在,而且著色器不包含 imm_atomic_allocimm_atomic_consume 指令,則允許使用 COUNTER 旗標建立 UAV# (u) , (計數器將無法使用此著色器) 使用,而且沒有旗標 (沒有計數器) ,但未使用 APPEND 旗標。

注意

cs_4_0和cs_4_1支援 dcl_tgsm_structured,但不支援 dcl_tgsm_raw

本指示適用于下列著色器階段:

頂點 船體 網域 幾何形狀 像素 計算
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)

注意

cs_4_0和cs_4_1支援此指示。

著色器模型 5 元件 (DirectX HLSL)