enumeración D3D12_RESOURCE_STATES (d3d12.h)

Define constantes que especifican el estado de un recurso con respecto a cómo se usa el recurso.

Sintaxis

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
} ;

Constantes

 
D3D12_RESOURCE_STATE_COMMON
Valor: 0
La aplicación debe realizar la transición a este estado solo para acceder a un recurso en distintos tipos de motor de gráficos.

En concreto, un recurso debe estar en estado COMMON antes de usarse en una cola COPY (cuando se usó anteriormente en DIRECT/COMPUTE) y antes de usarse en DIRECT/COMPUTE (cuando se usó anteriormente en COPY). Esta restricción no existe al acceder a datos entre las colas DIRECT y COMPUTE.

El estado COMMON se puede usar para todos los usos de una cola de copia mediante las transiciones de estado implícitas. Para obtener más información, en Sincronización de varios motores, busque "común".

Además, las texturas deben estar en el estado COMMON para que el acceso a la CPU sea legal, suponiendo que la textura se creó en un montón visible para cpu en primer lugar.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Valor: 0x1
Un subrecurso debe estar en este estado cuando la GPU accede a ella como un búfer de vértices o un búfer de constantes. Se trata de un estado de solo lectura.
D3D12_RESOURCE_STATE_INDEX_BUFFER
Valor: 0x2
Un subrecurso debe estar en este estado cuando la canalización 3D accede a ella como un búfer de índice. Se trata de un estado de solo lectura.
D3D12_RESOURCE_STATE_RENDER_TARGET
Valor: 0x4
El recurso se usa como destino de representación. Un subrecurso debe estar en este estado cuando se representa en o cuando se borra con ID3D12GraphicsCommandList::ClearRenderTargetView.

Se trata de un estado de solo escritura. Para leer desde un destino de representación como un recurso de sombreador, el recurso debe estar en D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE o D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Valor: 0x8
El recurso se usa para el acceso desordenado. Un subrecurso debe estar en este estado cuando la GPU accede a ella a través de una vista de acceso desordenada. Un subrecurso también debe estar en este estado cuando se borra con ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt o ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat. Se trata de un estado de lectura y escritura.
D3D12_RESOURCE_STATE_DEPTH_WRITE
Valor: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE es un estado que se excluye mutuamente con otros estados. Debe usarlo para ID3D12GraphicsCommandList::ClearDepthStencilView cuando las marcas (vea D3D12_CLEAR_FLAGS) indican que se debe borrar un subrecurso determinado (de lo contrario, el estado del subrecurso no importa) o cuando se usa en una vista de galería de símbolos de profundidad grabable (vea D3D12_DSV_FLAGS) cuando el ARCHIVO TIENE habilitada la escritura en profundidad (vea D3D12_DEPTH_STENCIL_DESC).
D3D12_RESOURCE_STATE_DEPTH_READ
Valor: 0x20
DEPTH_READ es un estado que se puede combinar con otros estados. Se debe usar cuando el subrecurso está en una vista de galería de símbolos de profundidad de solo lectura o cuando se deshabilita la escritura en profundidad de D3D12_DEPTH_STENCIL_DESC . Se puede combinar con otros estados de lectura (por ejemplo, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE), de modo que el recurso se pueda usar para la prueba de profundidad o galería de símbolos, y a los que un sombreador tenga acceso dentro de la misma llamada a draw. Su uso cuando se escriba la profundidad mediante una llamada a draw o un comando clear no es válido.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Valor: 0x40
El recurso se usa con un sombreador distinto del sombreador de píxeles. Un subrecurso debe estar en este estado antes de ser leído por cualquier fase (excepto la fase del sombreador de píxeles) a través de una vista de recursos del sombreador. Todavía puede usar el recurso en un sombreador de píxeles con esta marca, siempre y cuando también tenga la marca D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE establecida. Se trata de un estado de solo lectura.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Valor: 0x80
El recurso se usa con un sombreador de píxeles. Un subrecurso debe estar en este estado antes de ser leído por el sombreador de píxeles a través de una vista de recursos del sombreador. Se trata de un estado de solo lectura.
D3D12_RESOURCE_STATE_STREAM_OUT
Valor: 0x100
El recurso se usa con la salida del flujo. Un subrecurso debe estar en este estado cuando la canalización 3D accede a ella como destino de salida. Se trata de un estado de solo escritura.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Valor: 0x200
El recurso se usa como argumento indirecto.
Los subrecursos deben estar en este estado cuando se usan como el búfer de argumentos pasado al método de dibujo indirecto ID3D12GraphicsCommandList::ExecuteIndirect.
Se trata de un estado de solo lectura.
D3D12_RESOURCE_STATE_COPY_DEST
Valor: 0x400
El recurso se usa como destino en una operación de copia.
Los subrecursos deben estar en este estado cuando se usan como destino de la operación de copia o una operación blt.
Se trata de un estado de solo escritura.
D3D12_RESOURCE_STATE_COPY_SOURCE
Valor: 0x800
El recurso se usa como origen en una operación de copia.
Los subrecursos deben estar en este estado cuando se usan como origen de la operación de copia o una operación blt.
Se trata de un estado de solo lectura.
D3D12_RESOURCE_STATE_RESOLVE_DEST
Valor: 0x1000
El recurso se usa como destino en una operación de resolución.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Valor: 0x2000
El recurso se usa como origen en una operación de resolución.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
Valor: 0x400000
Cuando se crea un búfer con este como estado inicial, indica que el recurso es una estructura de aceleración raytracing, para su uso en ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure o ID3D12Device::CreateShaderResourceView para la dimensión D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE .

NOTA

Se debe crear un recurso para el estado de D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE en ese estado y, a continuación, nunca se ha pasado de él. Tampoco es posible que un recurso que se haya creado no en ese estado se realice la transición a él. Para obtener más información, consulte Restricciones de memoria de la estructura de aceleración en la especificación funcional de Raytracing (DXR) de DirectX en GitHub.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
Valor: 0x1000000
A partir de Windows 10, versión 1903 (10.0; Compilación 18362), indica que el recurso es una imagen de sombreado de espacio de pantalla para sombreado de velocidad variable (VRS). Para obtener más información, consulta Sombreado de velocidad variable (VRS).
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ es una combinación lógicamente or'd de otros bits de estado de lectura. Este es el estado de inicio necesario para un montón de carga. Por lo general, la aplicación debe evitar la transición a D3D12_RESOURCE_STATE_GENERIC_READ siempre que sea posible, ya que esto puede dar lugar a vaciados prematuros de la memoria caché o cambios en el diseño de recursos (por ejemplo, comprimir o descomprimir), lo que provoca un bloqueo de canalización innecesario. En su lugar, debe realizar la transición de los recursos solo a los estados realmente usados.
D3D12_RESOURCE_STATE_ALL_SHADER_RESOURCE
Equivalente a D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE | D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_PRESENT
Valor: 0
Sinónimo de D3D12_RESOURCE_STATE_COMMON.
D3D12_RESOURCE_STATE_PREDICATION
Valor: 0x200
El recurso se usa para predicación.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
Valor: 0x10000
El recurso se usa como origen en una operación de descodificación. Algunos ejemplos incluyen leer la secuencia de bits comprimida y leer desde referencias de descodificación,
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
Valor: 0x20000
El recurso se usa como destino en la operación de descodificación. Este estado se usa para descodificar la salida y los histogramas.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
Valor: 0x40000
El recurso se utiliza para leer datos de vídeo durante el procesamiento de vídeo; es decir, el recurso se usa como origen en una operación de procesamiento, como la codificación de vídeo (compresión).
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
Valor: 0x80000
El recurso se utiliza para escribir datos de vídeo durante el procesamiento de vídeo; es decir, el recurso se usa como destino en una operación de procesamiento, como la codificación de vídeo (compresión).
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
Valor: 0x200000
El recurso se usa como origen en una operación de codificación. Este estado se usa para la entrada y la referencia de la estimación de movimiento.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
Valor: 0x800000
Este recurso se usa como destino en una operación de codificación. Este estado se usa para la textura de destino de una operación de montón de vectores de resolución.

Observaciones

Estos métodos usan esta enumeración:

Requisitos

   
Encabezado d3d12.h

Consulte también