UID | title | description | helpviewer_keywords | old-location | tech.root | ms.assetid | ms.date | req.header | req.include-header | req.target-type | req.target-min-winverclnt | req.target-min-winversvr | req.kmdf-ver | req.umdf-ver | req.ddi-compliance | req.unicode-ansi | req.idl | req.max-support | req.namespace | req.assembly | req.type-library | req.lib | req.dll | req.irql | targetos | req.typenames | req.redist | f1_keywords | dev_langs | topic_type | api_type | api_location | api_name | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
NE:d3d12.D3D12_RESOURCE_STATES |
D3D12_RESOURCE_STATES |
Defines constants that specify the state of a resource regarding how the resource is being used. |
|
direct3d12\d3d12_resource_states.htm |
direct3d12 |
AB14DE3E-97EA-47BE-8917-805B9651ED3A |
11/03/2021 |
d3d12.h |
Windows |
Windows |
D3D12_RESOURCE_STATES |
|
|
|
|
|
|
Defines constants that specify the state of a resource regarding how the resource is being used.
Your 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 previously used on DIRECT/COMPUTE), and before being used on DIRECT/COMPUTE (when previously used on COPY). This restriction doesn't 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.
A 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.
A subresource must be in this state when it is accessed by the 3D pipeline as an index buffer. This is a read-only state.
The 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.
The 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_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).
DEPTH_READ is a state that can be combined with other states. It should be used when the subresource is in a read-only depth stencil view, or when depth write of D3D12_DEPTH_STENCIL_DESC is disabled. 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.
The 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.
The 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.
The 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.
The 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 <a href="/windows/win32/api/d3d12/nf-d3d12-id3d12graphicscommandlist-executeindirect">ID3D12GraphicsCommandList::ExecuteIndirect</a>.
This is a read-only state.
The 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.
The 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.
The resource is used as the destination in a resolve operation.
The resource is used as the source in a resolve operation.
When 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.
Note
A resource to be used for the D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE state must be created in that state, and then never transitioned out of it. Nor may a resource that was created not in that state be transitioned into it. For more info, see Acceleration structure memory restrictions in the DirectX raytracing (DXR) functional specification on GitHub.
Starting 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_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.
Equivalent to D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
.
Synonymous with D3D12_RESOURCE_STATE_COMMON.
The resource is used for <a href="/windows/win32/direct3d12/predication">Predication</a>.
The resource is used as a source in a decode operation. Examples include reading the compressed bitstream and reading from decode references,
The resource is used as a destination in the decode operation. This state is used for decode output and histograms.
The 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).
The 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).
The resource is used as the source in an encode operation. This state is used for the input and reference of motion estimation.
This 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.
This enum is used by the following methods: