D3D12DDI_BARRIER_ACCESS列舉 (d3d12umddi.h)

D3D12DDI_BARRIER_ACCESS值是下列欄位的位 OR,可指定屏障的資源存取權。

Syntax

typedef enum D3D12DDI_BARRIER_ACCESS {
  D3D12DDI_BARRIER_ACCESS_COMMON = 0x0,
  D3D12DDI_BARRIER_ACCESS_VERTEX_BUFFER = 0x1,
  D3D12DDI_BARRIER_ACCESS_CONSTANT_BUFFER = 0x2,
  D3D12DDI_BARRIER_ACCESS_INDEX_BUFFER = 0x4,
  D3D12DDI_BARRIER_ACCESS_RENDER_TARGET = 0x8,
  D3D12DDI_BARRIER_ACCESS_UNORDERED_ACCESS = 0x10,
  D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_WRITE = 0x20,
  D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_READ = 0x40,
  D3D12DDI_BARRIER_ACCESS_SHADER_RESOURCE = 0x80,
  D3D12DDI_BARRIER_ACCESS_STREAM_OUTPUT = 0x100,
  D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT = 0x200,
  D3D12DDI_BARRIER_ACCESS_PREDICATION = 0x200,
  D3D12DDI_BARRIER_ACCESS_COPY_DEST = 0x400,
  D3D12DDI_BARRIER_ACCESS_COPY_SOURCE = 0x800,
  D3D12DDI_BARRIER_ACCESS_RESOLVE_DEST = 0x1000,
  D3D12DDI_BARRIER_ACCESS_RESOLVE_SOURCE = 0x2000,
  D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ = 0x4000,
  D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE = 0x8000,
  D3D12DDI_BARRIER_ACCESS_SHADING_RATE_SOURCE = 0x10000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_READ = 0x20000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_WRITE = 0x40000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_READ = 0x80000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_WRITE = 0x100000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_READ = 0x200000,
  D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_WRITE = 0x400000,
  D3D12DDI_BARRIER_ACCESS_NO_ACCESS = 0x80000000
} ;

常數

 
D3D12DDI_BARRIER_ACCESS_COMMON
值: 0x0
指定 ExecuteCommandLists 範圍內所有資源的預設初始存取權。 支援與目前版面配置和資源屬性相容的任何類型的存取,包括一個以上的寫入存取權。 對於使用 D3D12DDI_BARRIER_LAYOUT_COMMON的緩衝區和紋理, D3D12DDI_BARRIER_ACCESS_COMMON 支援並行讀取和寫入存取。

當做 AccessAfter 使用時, D3D12DDI_BARRIER_ACCESS_COMMON 可用來將資源傳回一般輔助功能。 請注意,如果使用不正確,這可能會強制不必要的快取排清。 可能的話, AccessAfter 應該限制為明確的存取位。

避免使用 D3D12DDI_BARRIER_ACCESS_COMMON 作為屏障 AccessBefore 值。 使用明確的 AccessBefore 位來處理任何讀取後寫入或寫入後寫入障礙。
D3D12DDI_BARRIER_ACCESS_VERTEX_BUFFER
值: 0x1
緩衝區資源可作為目前執行佇列中的頂點緩衝區存取。
D3D12DDI_BARRIER_ACCESS_CONSTANT_BUFFER
值: 0x2
緩衝區資源可作為目前執行佇列中的常數緩衝區存取。
D3D12DDI_BARRIER_ACCESS_INDEX_BUFFER
值: 0x4
緩衝區資源可作為目前執行佇列中的索引緩衝區存取。
D3D12DDI_BARRIER_ACCESS_RENDER_TARGET
值: 0x8
資源可作為轉譯目標存取。
D3D12DDI_BARRIER_ACCESS_UNORDERED_ACCESS
值: 0x10
資源可作為未排序的存取資源來存取。
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_WRITE
值: 0x20
資源可做為可寫入深度/樣板資源存取。
D3D12DDI_BARRIER_ACCESS_DEPTH_STENCIL_READ
值: 0x40
資源可做為唯讀深度/樣板資源存取。
D3D12DDI_BARRIER_ACCESS_SHADER_RESOURCE
值: 0x80
資源可作為著色器資源存取。
D3D12DDI_BARRIER_ACCESS_STREAM_OUTPUT
值: 0x100
緩衝區可作為數據流輸出目標存取。
D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT
值: 0x200
緩衝區可做為間接自變數緩衝區存取。
D3D12DDI_BARRIER_ACCESS_PREDICATION
值: 0x200
緩衝區可做為預先部署緩衝區來存取。 別名為 D3D12DDI_BARRIER_ACCESS_INDIRECT_ARGUMENT
D3D12DDI_BARRIER_ACCESS_COPY_DEST
值: 0x400
資源可做為複製目的地存取。
D3D12DDI_BARRIER_ACCESS_COPY_SOURCE
值: 0x800
資源可作為複製來源存取。
D3D12DDI_BARRIER_ACCESS_RESOLVE_DEST
值: 0x1000
資源可作為解析目的地存取。
D3D12DDI_BARRIER_ACCESS_RESOLVE_SOURCE
值: 0x2000
資源可作為解析來源存取。
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_READ
值: 0x4000
資源可供讀取為光線追蹤加速結構。 資源必須使用D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE的初始狀態來建立。
D3D12DDI_BARRIER_ACCESS_RAYTRACING_ACCELERATION_STRUCTURE_WRITE
值: 0x8000
資源可供寫入為光線追蹤加速結構。 資源必須使用D3D12DDI_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE的初始狀態來建立。
D3D12DDI_BARRIER_ACCESS_SHADING_RATE_SOURCE
值: 0x10000
資源可作為底紋速率來源存取。
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_READ
值: 0x20000
資源可供影片譯碼佇列中的唯讀存取存取。
D3D12DDI_BARRIER_ACCESS_VIDEO_DECODE_WRITE
值: 0x40000
資源可供影片譯碼佇列中的寫入存取權存取。
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_READ
值: 0x80000
資源可供影片進程佇列中的唯讀存取存取。
D3D12DDI_BARRIER_ACCESS_VIDEO_PROCESS_WRITE
值: 0x100000
資源可供影片進程佇列中的寫入存取權存取。
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_READ
值: 0x200000
資源可供影片編碼佇列中的唯讀存取存取。
D3D12DDI_BARRIER_ACCESS_VIDEO_ENCODE_WRITE
值: 0x400000
資源可供影片編碼佇列中的寫入存取權存取。
D3D12DDI_BARRIER_ACCESS_NO_ACCESS
值: 0x80000000
讀取或寫入無法存取資源。 一旦子資源存取轉換為 D3D12DDI_BARRIER_ACCESS_NO_ACCESS,就必須讓 AccessBefore 設定為 D3D12DDI_BARRIER_ACCESS_NO_ACCESS 的屏障重新啟用,才能在相同的 ExecuteCommandLists 範圍內使用。

D3D12DDI_BARRIER_ACCESS_NO_ACCESS 只能與 D3D12DDI_BARRIER_SYNC_NONED3D12DDI_BARRIER_SYNC_SPLIT搭配使用。

D3D12DDI_BARRIER_ACCESS_NO_ACCESS 無法設定為其他存取位。 D3D12DDI_BARRIER_ACCESS_NO_ACCESS 表示在一些後續屏障或下一個 ECL 範圍之前,不會存取資源。

這個值在別名屏障中很有用,當子資源不需要足夠的時間,以便從任何讀取快取清除子資源時,就很合理。

在ExecuteCommandLists範圍的結尾之前,起始配置轉換也很有用。 如果 SyncAfter是D3D12DDI_BARRIER_SYNC_NONE,則 AccessAfter 必須 D3D12DDI_BARRIER_ACCESS_NO_ACCESS

規格需求

需求
最低支援的用戶端 Windows 11 (WDDM 3.0)
標頭 d3d12umddi.h

另請參閱

D3D12DDI_BARRIER_SYNC

D3D12DDI_BUFFER_BARRIER_0088

D3D12DDI_GLOBAL_BARRIER_0088

D3D12DDI_RANGED_BARRIER_0088

D3D12DDI_TEXTURE_BARRIER_0088