D3D12_RESOURCE_STATES列舉 (d3d12.h)

定義常數,指定資源使用方式的相關資源狀態。

Syntax

typedef enum D3D12_RESOURCE_STATES {
  D3D12_RESOURCE_STATE_COMMON = 0,
  D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER = 0x1,
  D3D12_RESOURCE_STATE_INDEX_BUFFER = 0x2,
  D3D12_RESOURCE_STATE_RENDER_TARGET = 0x4,
  D3D12_RESOURCE_STATE_UNORDERED_ACCESS = 0x8,
  D3D12_RESOURCE_STATE_DEPTH_WRITE = 0x10,
  D3D12_RESOURCE_STATE_DEPTH_READ = 0x20,
  D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE = 0x40,
  D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE = 0x80,
  D3D12_RESOURCE_STATE_STREAM_OUT = 0x100,
  D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT = 0x200,
  D3D12_RESOURCE_STATE_COPY_DEST = 0x400,
  D3D12_RESOURCE_STATE_COPY_SOURCE = 0x800,
  D3D12_RESOURCE_STATE_RESOLVE_DEST = 0x1000,
  D3D12_RESOURCE_STATE_RESOLVE_SOURCE = 0x2000,
  D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE = 0x400000,
  D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE = 0x1000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_8000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_4000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_100000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_40000000,
  D3D12_RESOURCE_STATE_RESERVED_INTERNAL_80000000,
  D3D12_RESOURCE_STATE_GENERIC_READ,
  D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE,
  D3D12_RESOURCE_STATE_PRESENT = 0,
  D3D12_RESOURCE_STATE_PREDICATION = 0x200,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_READ = 0x10000,
  D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE = 0x20000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ = 0x40000,
  D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE = 0x80000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ = 0x200000,
  D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE = 0x800000
} ;

常數

 
D3D12_RESOURCE_STATE_COMMON
值: 0
您的應用程式應該只會轉換至此狀態,以便跨不同的圖形引擎類型存取資源。

具體來說,在先前在 DIRECT/COMPUTE) 上使用 COPY (佇列之前,資源必須處於 COMMON 狀態,在先前在 COPY) 上使用 DIRECT/COMPUTE (之前,必須先處於 COMMON 狀態。 存取 DIRECT 和 COMPUTE 佇列之間的資料時,並不存在此限制。

COMMON 狀態可用於使用隱含狀態轉換之複製佇列上的所有使用方式。 如需詳細資訊,請在 多引擎同步處理中尋找「通用」。

此外,紋理必須處於 COMMON 狀態,才能讓 CPU 存取成為合法狀態,假設紋理是在第一個位置以 CPU 可見堆積建立的。
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
值: 0x1
當 GPU 以頂點緩衝區或常數緩衝區的形式存取子資源時,子資源必須處於此狀態。 這是唯讀狀態。
D3D12_RESOURCE_STATE_INDEX_BUFFER
值: 0x2
當 3D 管線以索引緩衝區的形式存取子資源時,子資源必須處於此狀態。 這是唯讀狀態。
D3D12_RESOURCE_STATE_RENDER_TARGET
值: 0x4
資源會當做轉譯目標使用。 當子資源轉譯為 時,或以 ID3D12GraphicsCommandList::ClearRenderTargetView清除時,子資源必須處於此狀態。

這是僅限寫入的狀態。 若要從轉譯目標讀取為著色器資源,資源必須位於 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCED3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE中。
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
值: 0x8
資源用於未排序的存取。 當透過未排序的存取檢視存取 GPU 存取子資源時,子資源必須處於此狀態。 當子資源使用 ID3D12GraphicsCommandList::ClearUnorderedAccessViewIntID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat清除時,子資源也必須處於此狀態。 這是讀取/寫入狀態。
D3D12_RESOURCE_STATE_DEPTH_WRITE
值: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE 是與其他狀態互斥的狀態。 當旗標 (看到D3D12_CLEAR_FLAGS時,您應該將它用於ID3D12GraphicsCommandList::ClearDepthStencilView,) 表示指定的子資源應該清除 (否則子資源狀態並不重要) , 或在可寫入深度樣板檢視中使用時, (當PSO 已啟用深度寫入時D3D12_DSV_FLAGS) (請參閱D3D12_DEPTH_STENCIL_DESC) 。
D3D12_RESOURCE_STATE_DEPTH_READ
值: 0x20
DEPTH_READ是可以與其他狀態結合的狀態。 當子資源處於唯讀深度樣板檢視時,或停用 深度寫入D3D12_DEPTH_STENCIL_DESC 時,應該使用它。 它可以與其他讀取狀態結合 (例如, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE) ,讓資源可用於深度或樣板測試,並由相同繪製呼叫內的著色器存取。 當繪製呼叫或清除命令寫入深度時,使用它會無效。
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
值: 0x40
資源會與圖元著色器以外的著色器搭配使用。 子資源必須處於此狀態,才能由任何階段讀取 (,但圖元著色器階段除外,) 透過著色器資源檢視。 只要它也有旗標 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE 集,您仍然可以使用此旗標的圖元著色器中的資源。 這是唯讀狀態。
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
值: 0x80
資源會與圖元著色器搭配使用。 子資源必須處於這個狀態,才能透過著色器資源檢視由圖元著色器讀取。 這是唯讀狀態。
D3D12_RESOURCE_STATE_STREAM_OUT
值: 0x100
資源會與資料流程輸出搭配使用。 當 3D 管線以串流輸出目標存取子資源時,子資源必須處於此狀態。 這是僅限寫入的狀態。
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
值: 0x200
資源會當做間接引數使用。
當子資源作為傳遞至間接繪圖方法 ID3D12GraphicsCommandList::ExecuteIndirect的引數緩衝區時,子資源必須處於此狀態。
這是唯讀狀態。
D3D12_RESOURCE_STATE_COPY_DEST
值: 0x400
資源會當做複製作業中的目的地使用。
當子資源作為複製作業的目的地或 blt 作業時,子資源必須處於此狀態。
這是僅限寫入的狀態。
D3D12_RESOURCE_STATE_COPY_SOURCE
值: 0x800
資源會當做複製作業中的來源使用。
當子資源做為複製作業的來源或 blt 作業時,子資源必須處於這個狀態。
這是唯讀狀態。
D3D12_RESOURCE_STATE_RESOLVE_DEST
值: 0x1000
資源會當做解析作業中的目的地使用。
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
值: 0x2000
資源會當做解析作業中的來源使用。
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
值: 0x400000
以這個 作為初始狀態建立緩衝區時,它會指出資源是光線追蹤加速結構,用於 ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructureID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructureID3D12Device::CreateShaderResourceView,用於D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE 維度。

注意

要用於 D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE 狀態的資源必須以該狀態建立,然後永遠不會從中轉換。 也不會有建立的資源未處於該狀態,而無法轉換成該資源。 如需詳細資訊,請參閱 GitHub 上 DirectX 光線追蹤 (DXR) 功能規格中的 加速結構記憶體限制

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
值: 0x1000000
從 Windows 10 1903 版開始, (10.0 版;組建 18362) ,表示資源是可變速率網底的螢幕空間網底影像, (VRS) 。 如需詳細資訊,請參閱 可變速率網底 (VRS)
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ是其他讀取狀態位的邏輯 ORD 組合。 這是上傳堆積的必要開始狀態。 您的應用程式通常應該盡可能避免轉換至D3D12_RESOURCE_STATE_GENERIC_READ,因為這可能會造成提前快取排清,或資源配置變更 (例如壓縮/解壓縮) ,而導致不必要的管線停止。 您應該改為只將資源轉換為實際使用的狀態。
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
相當於 D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
D3D12_RESOURCE_STATE_PRESENT
值: 0
與D3D12_RESOURCE_STATE_COMMON同義。
D3D12_RESOURCE_STATE_PREDICATION
值: 0x200
資源用於 預先部署
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
值: 0x10000
資源會當做解碼作業中的來源使用。 範例包括讀取壓縮的 bitstream 和從解碼參考讀取,
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
值: 0x20000
資源會當做解碼作業中的目的地使用。 此狀態用於解碼輸出和長條圖。
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
值: 0x40000
資源用於在影片處理期間讀取視訊資料;也就是說,資源會當做處理作業中的來源使用,例如視訊編碼 (壓縮) 。
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
值: 0x80000
資源是用來在影片處理期間寫入視訊資料;也就是說,資源會當做處理作業中的目的地,例如視訊編碼 (壓縮) 。
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
值: 0x200000
資源會當做編碼作業中的來源使用。 此狀態用於動作估計的輸入和參考。
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
值: 0x800000
此資源會當做編碼作業中的目的地使用。 這個狀態用於解析動作向量堆積作業的目的地紋理。

備註

下列方法會使用此列舉:

規格需求

   
標頭 d3d12.h

另請參閱