Compartilhar via


D3D12_RESOURCE_STATES enumeração (d3d12.h)

Define constantes que especificam o estado de um recurso sobre como o recurso está sendo usado.

Sintaxe

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
Seu aplicativo deve fazer a transição para esse estado apenas para acessar um recurso em diferentes tipos de mecanismo gráfico.

Especificamente, um recurso deve estar no estado COMMON antes de ser usado em uma fila COPY (quando usado anteriormente em DIRECT/COMPUTE) e antes de ser usado em DIRECT/COMPUTE (quando usado anteriormente em COPY). Essa restrição não existe ao acessar dados entre filas DIRECT e COMPUTE.

O estado COMMON pode ser usado para todos os usos em uma fila de Cópia usando as transições de estado implícitas. Para obter mais informações, em Sincronização de vários mecanismos, localize "comum".

Além disso, as texturas devem estar no estado COMMON para que o acesso à CPU seja legal, supondo que a textura tenha sido criada em um heap visível para CPU em primeiro lugar.
D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Valor: 0x1
Um sub-recurso deve estar nesse estado quando ele é acessado pela GPU como um buffer de vértice ou buffer constante. Esse é um estado somente leitura.
D3D12_RESOURCE_STATE_INDEX_BUFFER
Valor: 0x2
Um sub-recurso deve estar nesse estado quando ele é acessado pelo pipeline 3D como um buffer de índice. Esse é um estado somente leitura.
D3D12_RESOURCE_STATE_RENDER_TARGET
Valor: 0x4
O recurso é usado como um destino de renderização. Um sub-recurso deve estar nesse estado quando ele é renderizado ou quando é limpo com ID3D12GraphicsCommandList::ClearRenderTargetView.

Esse é um estado somente gravação. Para ler de um destino de renderização como um recurso de sombreador, o recurso deve estar em D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE ou D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE.
D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Valor: 0x8
O recurso é usado para acesso não ordenado. Um sub-recurso deve estar nesse estado quando ele é acessado pela GPU por meio de uma exibição de acesso não ordenada. Um sub-recurso também deve estar nesse estado quando for limpo com ID3D12GraphicsCommandList::ClearUnorderedAccessViewInt ou ID3D12GraphicsCommandList::ClearUnorderedAccessViewFloat. Esse é um estado de leitura/gravação.
D3D12_RESOURCE_STATE_DEPTH_WRITE
Valor: 0x10
D3D12_RESOURCE_STATE_DEPTH_WRITE é um estado mutuamente exclusivo com outros estados. Você deve usá-lo para ID3D12GraphicsCommandList::ClearDepthStencilView quando os sinalizadores (consulte D3D12_CLEAR_FLAGS) indicarem que um determinado sub-recurso deve ser limpo (caso contrário, o estado de sub-recurso não importa) ou ao usá-lo em uma exibição de estêncil de profundidade gravável (consulte D3D12_DSV_FLAGS) quando o PSO tiver a gravação de profundidade habilitada (consulte D3D12_DEPTH_STENCIL_DESC).
D3D12_RESOURCE_STATE_DEPTH_READ
Valor: 0x20
DEPTH_READ é um estado que pode ser combinado com outros estados. Ele deve ser usado quando o sub-recurso estiver em uma exibição de estêncil de profundidade somente leitura ou quando a gravação detalhada de D3D12_DEPTH_STENCIL_DESC estiver desabilitada. Ele pode ser combinado com outros estados de leitura (por exemplo, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE), de modo que o recurso possa ser usado para o teste de profundidade ou estêncil e acessado por um sombreador na mesma chamada de desenho. Usá-lo quando a profundidade será gravada por uma chamada de desenho ou um comando clear é inválido.
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Valor: 0x40
O recurso é usado com um sombreador diferente do sombreador de pixel. Um sub-recurso deve estar nesse estado antes de ser lido por qualquer estágio (exceto para o estágio do sombreador de pixel) por meio de uma exibição de recurso de sombreador. Você ainda pode usar o recurso em um sombreador de pixel com esse sinalizador, desde que ele também tenha o sinalizador D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE definido. Esse é um estado somente leitura.
D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Valor: 0x80
O recurso é usado com um sombreador de pixel. Um sub-recurso deve estar nesse estado antes de ser lido pelo sombreador de pixel por meio de uma exibição de recurso de sombreador. Esse é um estado somente leitura.
D3D12_RESOURCE_STATE_STREAM_OUT
Valor: 0x100
O recurso é usado com saída de fluxo. Um sub-recurso deve estar nesse estado quando ele é acessado pelo pipeline 3D como um destino de stream-out. Esse é um estado somente gravação.
D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Valor: 0x200
O recurso é usado como um argumento indireto.
Os sub-recursos devem estar nesse estado quando forem usados como o buffer de argumento passado para o método de desenho indireto ID3D12GraphicsCommandList::ExecuteIndirect.
Esse é um estado somente leitura.
D3D12_RESOURCE_STATE_COPY_DEST
Valor: 0x400
O recurso é usado como o destino em uma operação de cópia.
Os sub-recursos devem estar nesse estado quando forem usados como o destino da operação de cópia ou uma operação blt.
Esse é um estado somente gravação.
D3D12_RESOURCE_STATE_COPY_SOURCE
Valor: 0x800
O recurso é usado como a origem em uma operação de cópia.
Os sub-recursos devem estar nesse estado quando forem usados como a origem da operação de cópia ou uma operação blt.
Esse é um estado somente leitura.
D3D12_RESOURCE_STATE_RESOLVE_DEST
Valor: 0x1000
O recurso é usado como o destino em uma operação de resolução.
D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Valor: 0x2000
O recurso é usado como a origem em uma operação de resolução.
D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE
Valor: 0x400000
Quando um buffer é criado com isso como seu estado inicial, indica que o recurso é uma estrutura de aceleração de raytracing, para uso em ID3D12GraphicsCommandList4::BuildRaytracingAccelerationStructure, ID3D12GraphicsCommandList4::CopyRaytracingAccelerationStructure ou ID3D12Device::CreateShaderResourceView para a dimensão D3D12_SRV_DIMENSION_RAYTRACING_ACCELERATION_STRUCTURE .

OBSERVAÇÃO

Um recurso a ser usado para o estado D3D12_RESOURCE_STATE_RAYTRACING_ACCELERATION_STRUCTURE deve ser criado nesse estado e, em seguida, nunca fez a transição para fora dele. Nem um recurso que foi criado não nesse estado pode ser transferido para ele. Para obter mais informações, confira Restrições de memória da estrutura de aceleração na especificação funcional DXR (raytracing) do DirectX no GitHub.

D3D12_RESOURCE_STATE_SHADING_RATE_SOURCE
Valor: 0x1000000
Começando com Windows 10, versão 1903 (10.0; Build 18362), indica que o recurso é uma imagem de taxa de sombreamento de espaço de tela para VRS (sombreamento de taxa variável). Para obter mais informações, consulte VRS (sombreamento de taxa variável).
D3D12_RESOURCE_STATE_GENERIC_READ
D3D12_RESOURCE_STATE_GENERIC_READ é uma combinação logicamente OR'd de outros bits de estado de leitura. Esse é o estado inicial necessário para um heap de upload. Seu aplicativo geralmente deve evitar a transição para D3D12_RESOURCE_STATE_GENERIC_READ quando possível, pois isso pode resultar em liberações prematuras de cache ou alterações de layout de recurso (por exemplo, compactar/descompactar), causando paralisações desnecessárias do pipeline. Em vez disso, você deve fazer a transição de recursos apenas para os 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
O recurso é usado para Predication.
D3D12_RESOURCE_STATE_VIDEO_DECODE_READ
Valor: 0x10000
O recurso é usado como uma origem em uma operação de decodificação. Exemplos incluem a leitura do bitstream compactado e a leitura de referências de decodificação,
D3D12_RESOURCE_STATE_VIDEO_DECODE_WRITE
Valor: 0x20000
O recurso é usado como um destino na operação de decodificação. Esse estado é usado para decodificar a saída e os histogramas.
D3D12_RESOURCE_STATE_VIDEO_PROCESS_READ
Valor: 0x40000
O recurso é usado para ler dados de vídeo durante o processamento de vídeo; ou seja, o recurso é usado como a origem em uma operação de processamento, como codificação de vídeo (compactação).
D3D12_RESOURCE_STATE_VIDEO_PROCESS_WRITE
Valor: 0x80000
O recurso é usado para gravar dados de vídeo durante o processamento de vídeo; ou seja, o recurso é usado como destino em uma operação de processamento, como codificação de vídeo (compactação).
D3D12_RESOURCE_STATE_VIDEO_ENCODE_READ
Valor: 0x200000
O recurso é usado como a origem em uma operação de codificação. Esse estado é usado para a entrada e referência da estimativa de movimento.
D3D12_RESOURCE_STATE_VIDEO_ENCODE_WRITE
Valor: 0x800000
Esse recurso é usado como o destino em uma operação de codificação. Esse estado é usado para a textura de destino de uma operação de heap de vetor de movimento de resolução.

Comentários

Essa enumeração é usada pelos seguintes métodos:

Requisitos

   
Cabeçalho d3d12.h

Confira também