Share via


estrutura D3D11_RESOURCE_FLAGS (d3d11on12.h)

Usado com ID3D11On12Device::CreateWrappedResource para substituir sinalizadores que seriam inferidos pelas propriedades do recurso ou propriedades de heap, incluindo sinalizadores de associação, sinalizadores de erro e sinalizadores de acesso da CPU.

Sintaxe

typedef struct D3D11_RESOURCE_FLAGS {
  UINT BindFlags;
  UINT MiscFlags;
  UINT CPUAccessFlags;
  UINT StructureByteStride;
} D3D11_RESOURCE_FLAGS;

Membros

BindFlags

Os sinalizadores de associação devem ser completamente inferidos ou completamente especificados para permitir que o driver de gráficos tenha como escopo um recurso D3D12 geral para algo que o D3D11 possa entender.

Se um sinalizador de associação for especificado, o que não é compatível com o recurso fornecido, um erro será retornado.

Os seguintes sinalizadores de associação (D3D11_BIND_FLAG constantes de enumeração) não serão assumidos e deverão ser especificados para que um recurso seja usado de tal forma:

  • D3D11_BIND_VERTEX_BUFFER
  • D3D11_BIND_INDEX_BUFFER
  • D3D11_BIND_CONSTANT_BUFFER
  • D3D11_BIND_STREAM_OUTPUT
  • D3D11_BIND_DECODER
  • D3D11_BIND_VIDEO_ENCODER
Os seguintes sinalizadores de associação serão assumidos com base na presença do sinalizador de recurso D3D12 correspondente e poderão ser removidos especificando sinalizadores de associação:
  • D3D11_BIND_SHADER_RESOURCE, desde que D3D12_RESOURCE_MISC_DENY_SHADER_RESOURCE não esteja presente
  • D3D11_BIND_RENDER_TARGET, se D3D12_RESOURCE_MISC_ALLOW_RENDER_TARGET estiver presente
  • D3D11_BIND_DEPTH_STENCIL, se D3D12_RESOURCE_MISC_ALLOW_DEPTH_STENCIL estiver presente
  • D3D11_BIND_UNORDERED_ACCESS, se D3D12_RESOURCE_MISC_ALLOW_UNORDERED_ACCESS estiver presente
Um destino de renderização ou um buffer UAV pode ser encapsulado sem substituir sinalizadores; mas um buffer VB/IB/CB/SO deve ter sinalizadores de associação especificados manualmente, pois eles são mutuamente exclusivos no Direct3D 11.

MiscFlags

Se os sinalizadores misc forem diferentes de zero, os sinalizadores especificados serão OR'd no desc de recurso final com sinalizadores inferidos. Sinalizadores incorretos podem ser parcialmente especificados para adicionar funcionalidade, mas sinalizadores incorretos que estão implícitos não podem ser mascarados.

Os seguintes sinalizadores misc (D3D11_RESOURCE_MISC_FLAG constantes de enumeração) não serão assumidos:

  • D3D11_RESOURCE_MISC_GENERATE_MIPS (conflitos com CLAMP).
  • D3D11_RESOURCE_MISC_TEXTURECUBE (altera o comportamento de exibição padrão).
  • D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS (exclusivo com alguns sinalizadores de associação).
  • D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS (exclusivo com outros tipos de UAVs).
  • D3D11_RESOURCE_MISC_BUFFER_STRUCTURED (exclusivo com outros tipos de UAVs).
  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP (proíbe QIs D3D10, entra em conflito com GENERATE_MIPS).
  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX. É possível criar um recurso mutex com chave D3D11, criar um identificador compartilhado para ele e abri-lo por meio de 11on12 ou D3D11.
Os sinalizadores misc a seguir serão assumidos e não poderão ser removidos do desc de recurso produzido. Se um deles estiver definido e o recurso D3D12 não der suporte a ele, a criação falhará:
  • D3D11_RESOURCE_MISC_SHARED, D3D11_RESOURCE_MISC_SHARED_NTHANDLE, D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE, se houver sinalizadores de erro de heap apropriados.
  • D3D11_RESOURCE_MISC_GDI_COMPATIBLE, se o recurso D3D12 for compatível com GDI.
  • D3D11_RESOURCE_MISC_TILED, se o recurso D3D12 foi criado por meio de CreateReservedResource.
  • D3D11_RESOURCE_MISC_TILE_POOL, se um heap D3D12 foi passado.
Os seguintes sinalizadores misc são inválidos para especificar para esta API:
  • D3D11_RESOURCE_MISC_RESTRICTED_CONTENT, já que o D3D12 dá suporte apenas à proteção de hardware.
  • D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER não existe no 12 e não pode ser adicionado após a criação do recurso.
  • D3D11_RESOURCE_MISC_GUARDED deve ser definida apenas por um mecanismo de criação interna.

CPUAccessFlags

O CPUAccessFlags não é inferido do recurso D3D12. Isso ocorre porque todos os recursos são tratados como D3D11_USAGE_DEFAULT, portanto, CPUAccessFlags forçam a validação que pressupõe o Mapa de buffers ou texturas padrão. Os recursos encapsulados não dão suporte a Map(DISCARD). Os recursos encapsulados não dão suporte a Map(NO_OVERWRITE), mas podem ser implementados mapeando o recurso D3D12 subjacente. A emissão de uma chamada de Mapa em um recurso encapsulado será sincronizada com todo o trabalho D3D11 enviado nesse recurso, a menos que o sinalizador DO_NOT_WAIT tenha sido usado.

StructureByteStride

O tamanho de cada elemento na estrutura do buffer (em bytes) quando o buffer representa um buffer estruturado.

Comentários

Use essa estrutura com CreateWrappedResource.

Requisitos

Requisito Valor
Cabeçalho d3d11on12.h

Confira também

Estruturas 11on12