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_RESOURCE 或 D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE中。 |
D3D12_RESOURCE_STATE_UNORDERED_ACCESS 值: 0x8 資源用於未排序的存取。 當透過未排序的存取檢視存取 GPU 存取子資源時,子資源必須處於此狀態。 當子資源使用 ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt 或 ID3D12GraphicsCommandList::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::BuildRaytracingAccelerationStructure、 ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure或 ID3D12Device::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 |