D3D12_RESOURCE_STATES enumeration (d3d12.h)
Defines constants that specify the state of a resource regarding how the resource is being used.
Syntax
typedef enum D3D12_RESOURCE_STATES {
D3D12_RESOURCE_STATE_COMMON,
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER,
D3D12_RESOURCE_STATE_INDEX_BUFFER,
D3D12_RESOURCE_STATE_RENDER_TARGET,
D3D12_RESOURCE_STATE_UNORDERED_ACCESS,
D3D12_RESOURCE_STATE_DEPTH_WRITE,
D3D12_RESOURCE_STATE_DEPTH_READ,
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE,
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE,
D3D12_RESOURCE_STATE_STREAM_OUT,
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT,
D3D12_RESOURCE_STATE_COPY_DEST,
D3D12_RESOURCE_STATE_COPY_SOURCE,
D3D12_RESOURCE_STATE_RESOLVE_DEST,
D3D12_RESOURCE_STATE_RESOLVE_SOURCE,
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE,
D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE,
D3D12_RESOURCE_STATE_GENERIC_READ,
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE,
D3D12_RESOURCE_STATE_PRESENT,
D3D12_RESOURCE_STATE_PREDICATION,
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ,
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE,
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ,
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE,
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ,
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
} ;
Constants
D3D12_RESOURCE_STATE_COMMONYour application should transition to this state only for accessing a resource across different graphics engine types. Specifically, a resource must be in the COMMON state before being used on a COPY queue (when previous used on DIRECT/COMPUTE), and before being used on DIRECT/COMPUTE (when previously used on COPY). This restriction does not exist when accessing data between DIRECT and COMPUTE queues. The COMMON state can be used for all usages on a Copy queue using the implicit state transitions. For more info, in Multi-engine synchronization, find "common". Additionally, textures must be in the COMMON state for CPU access to be legal, assuming the texture was created in a CPU-visible heap in the first place. |
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFERA subresource must be in this state when it is accessed by the GPU as a vertex buffer or constant buffer. This is a read-only state. |
D3D12_RESOURCE_STATE_INDEX_BUFFERA subresource must be in this state when it is accessed by the 3D pipeline as an index buffer. This is a read-only state. |
D3D12_RESOURCE_STATE_RENDER_TARGETThe resource is used as a render target. A subresource must be in this state when it is rendered to or when it is cleared with ID3D12GraphicsCommandList::ClearRenderTargetView. This is a write-only state. To read from a render target as a shader resource the resource must be in either D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE or D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE. |
D3D12_RESOURCE_STATE_UNORDERED_ACCESSThe resource is used for unordered access. A subresource must be in this state when it is accessed by the GPU via an unordered access view. A subresource must also be in this state when it is cleared with ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt or ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat. This is a read/write state. |
D3D12_RESOURCE_STATE_DEPTH_WRITED3D12_RESOURCE_STATE_DEPTH_WRITE is a state that is mutually exclusive with other states. You should use it for ID3D12GraphicsCommandList::ClearDepthStencilView when the flags (see D3D12_CLEAR_FLAGS) indicate a given subresource should be cleared (otherwise the subresource state doesn't matter), or when using it in a writable depth stencil view (see D3D12_DSV_FLAGS) when the PSO has depth write enabled (see D3D12_DEPTH_STENCIL_DESC). |
D3D12_RESOURCE_STATE_DEPTH_READDEPTH_READ is a state which can be combined with other states. It should be used when the subresource is in a read-only depth stencil view, or when the DepthEnable parameter of D3D12_DEPTH_STENCIL_DESC is false. It can be combined with other read states (for example, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE), such that the resource can be used for the depth or stencil test, and accessed by a shader within the same draw call. Using it when depth will be written by a draw call or clear command is invalid. |
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCEThe resource is used with a shader other than the pixel shader. A subresource must be in this state before being read by any stage (except for the pixel shader stage) via a shader resource view. You can still use the resource in a pixel shader with this flag as long as it also has the flag D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE set. This is a read-only state. |
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCEThe resource is used with a pixel shader. A subresource must be in this state before being read by the pixel shader via a shader resource view. This is a read-only state. |
D3D12_RESOURCE_STATE_STREAM_OUTThe resource is used with stream output. A subresource must be in this state when it is accessed by the 3D pipeline as a stream-out target. This is a write-only state. |
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENTThe resource is used as an indirect argument. Subresources must be in this state when they are used as the argument buffer passed to the indirect drawing method ID3D12GraphicsCommandList::ExecuteIndirect. This is a read-only state. |
D3D12_RESOURCE_STATE_COPY_DESTThe resource is used as the destination in a copy operation. Subresources must be in this state when they are used as the destination of copy operation, or a blt operation. This is a write-only state. |
D3D12_RESOURCE_STATE_COPY_SOURCEThe resource is used as the source in a copy operation. Subresources must be in this state when they are used as the source of copy operation, or a blt operation. This is a read-only state. |
D3D12_RESOURCE_STATE_RESOLVE_DESTThe resource is used as the destination in a resolve operation. |
D3D12_RESOURCE_STATE_RESOLVE_SOURCEThe resource is used as the source in a resolve operation. |
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTUREWhen a buffer is created with this as its initial state, it indicates that the resource is a raytracing acceleration structure, for use in ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure, or ID3D12Device::CreateShaderResourceView for the D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE dimension. |
D3D12_RESOURCE_STATE_SHADING_RATE_SOURCEStarting with Windows 10, version 1903 (10.0; Build 18362), indicates that the resource is a screen-space shading-rate image for variable-rate shading (VRS). For more info, see Variable-rate shading (VRS). |
D3D12_RESOURCE_STATE_GENERIC_READD3D12_RESOURCE_STATE_GENERIC_READ is a logically OR'd combination of other read-state bits. This is the required starting state for an upload heap. Your application should generally avoid transitioning to D3D12_RESOURCE_STATE_GENERIC_READ when possible, since that can result in premature cache flushes, or resource layout changes (for example, compress/decompress), causing unnecessary pipeline stalls. You should instead transition resources only to the actually-used states. |
D3D12_RESOURCE_STATE_PRESENTSynonymous with D3D12_RESOURCE_STATE_COMMON. |
D3D12_RESOURCE_STATE_PREDICATIONThe resource is used for Predication. |
D3D12_RESOURCE_STATE_VIDEO_DECODE_READThe resource is used as a source in a decode operation. Examples include reading the compressed bitstream and reading from decode references, |
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITEThe resource is used as a destination in the decode operation. This state is used for decode output and histograms. |
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READThe resource is used to read video data during video processing; that is, the resource is used as the source in a processing operation such as video encoding (compression). |
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITEThe resource is used to write video data during video processing; that is, the resource is used as the destination in a processing operation such as video encoding (compression). |
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READThe resource is used as the source in an encode operation. This state is used for the input and reference of motion estimation. |
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITEThis resource is used as the destination in an encode operation. This state is used for the destination texture of a resolve motion vector heap operation. |
Remarks
This enum is used by the following methods:
Requirements
| Header | d3d12.h |
See also
Using Resource Barriers to Synchronize Resource States in Direct3D 12