Share via


D3D12_RESOURCE_FLAGS enumeração (d3d12.h)

Define constantes que especificam opções para trabalhar com recursos.

Syntax

typedef enum D3D12_RESOURCE_FLAGS {
  D3D12_RESOURCE_FLAG_NONE = 0,
  D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET = 0x1,
  D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL = 0x2,
  D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS = 0x4,
  D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE = 0x8,
  D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER = 0x10,
  D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS = 0x20,
  D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY = 0x40,
  D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY = 0x80,
  D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE = 0x100
} ;

Constantes

 
D3D12_RESOURCE_FLAG_NONE
Valor: 0
Nenhuma opção foi especificada.
D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET
Valor: 0x1
Permite que uma exibição de destino de renderização seja criada para o recurso; e também permite que o recurso faça a transição para o estado de D3D12_RESOURCE_STATE_RENDER_TARGET. Algumas arquiteturas de adaptador alocam memória extra para texturas com esse sinalizador para reduzir a largura de banda efetiva durante a renderização comum. Essa característica pode não ser benéfica para texturas que nunca são renderizadas, nem está disponível para texturas compactadas com formatos BC. Seu aplicativo deve evitar definir esse sinalizador quando a renderização nunca ocorrer.

As seguintes restrições e interações se aplicam:
D3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL
Valor: 0x2
Permite que uma exibição de estêncil de profundidade seja criada para o recurso, bem como permite que o recurso faça a transição para o estado de D3D12_RESOURCE_STATE_DEPTH_WRITE e/ou D3D12_RESOURCE_STATE_DEPTH_READ. A maioria das arquiteturas de adaptador aloca memória extra para texturas com esse sinalizador para reduzir a largura de banda eficaz e maximizar as otimizações para o teste de profundidade inicial. Seu aplicativo deve evitar definir esse sinalizador quando as operações de profundidade nunca ocorrerem.

As seguintes restrições e interações se aplicam:

  • O formato de textura deve dar suporte a recursos de estêncil de profundidade no nível do recurso atual. Ou, quando o formato é um formato sem tipo, um formato dentro do mesmo grupo sem tipo deve dar suporte a recursos de estêncil de profundidade no nível do recurso atual.

  • Não é possível usar com D3D12_RESOURCE_DIMENSION_BUFFER, Alinhamento 4KB, D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET, D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS, D3D12_TEXTURE_LAYOUT_64KB_STANDARD_SWIZZLE, D3D12_TEXTURE_LAYOUT_ROW_MAJOR, nem usado com heaps que têm D3D12_HEAP_FLAG_DENY_RT_DS_TEXTURES ou D3D12_HEAP_FLAG_ALLOW_DISPLAY.

  • Impede o uso de WriteToSubresource e ReadFromSubresource.

  • Impede a cópia de GPU de uma sub-região. CopyTextureRegion deve copiar um sub-recurso inteiro de ou para recursos com esse sinalizador.

D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS
Valor: 0x4
Permite que uma exibição de acesso não ordenada seja criada para o recurso, bem como permite que o recurso faça a transição para o estado de D3D12_RESOURCE_STATE_UNORDERED_ACCESS. Algumas arquiteturas de adaptador devem recorrer a layouts de textura menos eficientes para fornecer essa funcionalidade. Se uma textura raramente for usada para acesso não ordenado, talvez valha a pena ter duas texturas ao redor e copiar entre elas. Uma textura teria esse sinalizador, enquanto a outra não. Seu aplicativo deve evitar definir esse sinalizador quando as operações de acesso não ordenadas nunca ocorrerem.

As seguintes restrições e interações se aplicam:
D3D12_RESOURCE_FLAG_DENY_SHADER_RESOURCE
Valor: 0x8
Não permite que uma exibição de recurso de sombreador seja criada para o recurso, bem como desabilita a transição do recurso para o estado de D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE ou D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE. Algumas arquiteturas de adaptador experimentam maior largura de banda para texturas de estêncil de profundidade quando as exibições de recursos do sombreador são impedidas. Se uma textura raramente for usada para recursos de sombreador, talvez valha a pena ter duas texturas ao redor e copiar entre elas. Uma textura teria esse sinalizador, enquanto a outra não. Seu aplicativo deve definir esse sinalizador quando texturas de estêncil de profundidade nunca serão usadas de exibições de recursos de sombreador.

As seguintes restrições e interações se aplicam:

  • Deve ser usado com D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL.

D3D12_RESOURCE_FLAG_ALLOW_CROSS_ADAPTER
Valor: 0x10
Permite que o recurso seja usado para dados de adaptador cruzado, bem como os recursos habilitados por D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS. Os recursos de adaptador cruzado geralmente impedem técnicas que reduzem a largura de banda de textura eficaz durante o uso, e algumas arquiteturas de adaptador podem exigir um comportamento de cache diferente. Seu aplicativo deve evitar definir esse sinalizador quando os dados do recurso nunca serão usados com outro adaptador.

As seguintes restrições e interações se aplicam:
D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS
Valor: 0x20
Permite que um recurso seja acessado simultaneamente por várias filas, dispositivos ou processos diferentes (por exemplo, permite que um recurso seja usado com transições ResourceBarrier executadas em mais de uma lista de comandos em execução ao mesmo tempo).

O acesso simultâneo permite vários leitores e um gravador, desde que o gravador não modifique simultaneamente os texels que outros leitores estão acessando. Algumas arquiteturas de adaptador não podem aproveitar técnicas para reduzir a largura de banda de textura eficaz durante o uso.

No entanto, seu aplicativo deve evitar definir esse sinalizador quando vários leitores não forem necessários durante gravações frequentes e não sobrepostas em texturas. O uso desse sinalizador pode comprometer as cercas de recursos para executar esperas e impedir que qualquer compactação seja usada com um recurso.

As seguintes restrições e interações se aplicam:

  • Não é possível usar com D3D12_RESOURCE_DIMENSION_BUFFER; mas os buffers sempre têm as propriedades representadas por esse sinalizador.

  • Não é possível usar texturas MSAA.

  • Não é possível usar com D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_ALLOW_DEPTH_STENCIL.

D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY
Valor: 0x40
Especifica que esse recurso pode ser usado apenas como um quadro de referência de decodificação. Ele pode ser gravado ou lido apenas pela operação de decodificação de vídeo.

D3D12_VIDEO_DECODE_TIER_1 e D3D12_VIDEO_DECODE_TIER_2 podem relatar D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED no sinalizador de configuração da estrutura D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT . Se isso acontecer, seu aplicativo deverá alocar quadros de referência com o sinalizador de recurso D3D12_RESOURCE_FLAGS::D 3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY .

D3D12_VIDEO_DECODE_TIER_3 não deve definir o [D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED]
(.. O sinalizador de configuração /d3d12video/ne-d3d12video-d3d12_video_decode_configuration_flags) e não deve exigir o uso desse sinalizador de recurso.
D3D12_RESOURCE_FLAG_VIDEO_ENCODE_REFERENCE_ONLY
Valor: 0x80
Especifica que esse recurso pode ser usado apenas como um quadro de referência de codificação. Ele pode ser gravado ou lido apenas pela operação de codificação de vídeo.
D3D12_RESOURCE_FLAG_RAYTRACING_ACCELERATION_STRUCTURE
Valor: 0x100
Reservado para uso futuro. Não use.

Requer o SDK de Agilidade do DirectX 12 1.7 ou posterior. Indica que um buffer deve ser usado como uma estrutura de aceleração de raytracing.

Comentários

Essa enumeração é usada pelo membro Flags do D3D12_RESOURCE_DESC.

Requisitos

   
Cabeçalho d3d12.h

Confira também