Compartilhar via


D3D11_RESOURCE_MISC_FLAG enumeração (d3d11.h)

Identifica as opções de recursos.

Syntax

typedef enum D3D11_RESOURCE_MISC_FLAG {
  D3D11_RESOURCE_MISC_GENERATE_MIPS = 0x1L,
  D3D11_RESOURCE_MISC_SHARED = 0x2L,
  D3D11_RESOURCE_MISC_TEXTURECUBE = 0x4L,
  D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS = 0x10L,
  D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS = 0x20L,
  D3D11_RESOURCE_MISC_BUFFER_STRUCTURED = 0x40L,
  D3D11_RESOURCE_MISC_RESOURCE_CLAMP = 0x80L,
  D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX = 0x100L,
  D3D11_RESOURCE_MISC_GDI_COMPATIBLE = 0x200L,
  D3D11_RESOURCE_MISC_SHARED_NTHANDLE = 0x800L,
  D3D11_RESOURCE_MISC_RESTRICTED_CONTENT = 0x1000L,
  D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE = 0x2000L,
  D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER = 0x4000L,
  D3D11_RESOURCE_MISC_GUARDED = 0x8000L,
  D3D11_RESOURCE_MISC_TILE_POOL = 0x20000L,
  D3D11_RESOURCE_MISC_TILED = 0x40000L,
  D3D11_RESOURCE_MISC_HW_PROTECTED = 0x80000L,
  D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE,
  D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER,
  D3D11_RESOURCE_MISC_NO_SHADER_ACCESS
} ;

Constantes

 
D3D11_RESOURCE_MISC_GENERATE_MIPS
Valor: 0x1L
Habilita a geração de mapa MIP usando ID3D11DeviceContext::GenerateMips em um recurso de textura. O recurso deve ser criado com os sinalizadores de associação que especificam que o recurso é um destino de renderização e um recurso de sombreador.
D3D11_RESOURCE_MISC_SHARED
Valor: 0x2L
Habilita o compartilhamento de dados de recursos entre dois ou mais dispositivos Direct3D. Os únicos recursos que podem ser compartilhados são texturas 2D não mipmapped.


D3D11_RESOURCE_MISC_SHARED e D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX são mutuamente exclusivos.


Dispositivos WARP e REF não dão suporte a recursos compartilhados.
Se você tentar criar um recurso com esse sinalizador em um dispositivo WARP ou REF , o método create retornará um código de erro E_OUTOFMEMORY .


Nota Começando com Windows 8, os dispositivos WARP dão suporte total a recursos compartilhados.

 

Nota Começando com Windows 8, recomendamos que você habilite o compartilhamento de dados de recursos entre dois ou mais dispositivos Direct3D usando uma combinação dos sinalizadores D3D11_RESOURCE_MISC_SHARED_NTHANDLE e D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX.

 
D3D11_RESOURCE_MISC_TEXTURECUBE
Valor: 0x4L
Define um recurso como uma textura de cubo criada a partir de um Texture2DArray que contém seis texturas.
D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS
Valor: 0x10L
Habilita a instanciação de conteúdo gerado por GPU.
D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS
Valor: 0x20L
Habilita um recurso como um buffer de endereço de byte.
D3D11_RESOURCE_MISC_BUFFER_STRUCTURED
Valor: 0x40L
Habilita um recurso como um buffer estruturado.
D3D11_RESOURCE_MISC_RESOURCE_CLAMP
Valor: 0x80L
Habilita um recurso com a fixação de mapa MIP para uso com ID3D11DeviceContext::SetResourceMinLOD.
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX
Valor: 0x100L
Permite que o recurso seja sincronizado usando o IDXGIKeyedMutex::AcquireSync e
IDXGIKeyedMutex::ReleaseSync Apis.
As seguintes APIs de criação de recursos do Direct3D 11, que utilizam parâmetros D3D11_RESOURCE_MISC_FLAG , foram estendidas para dar suporte ao novo sinalizador.


Se você chamar qualquer um desses métodos com o sinalizador D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX definido, a interface retornada dará suporte à interface IDXGIKeyedMutex . Você pode recuperar um ponteiro para a interface IDXGIKeyedMutex do recurso usando IUnknown::QueryInterface. A interface IDXGIKeyedMutex implementa as APIs IDXGIKeyedMutex::AcquireSync e IDXGIKeyedMutex::ReleaseSync para sincronizar o acesso à superfície. O dispositivo que cria a superfície e qualquer outro dispositivo que abra a superfície usando OpenSharedResource, deve chamar IDXGIKeyedMutex::AcquireSync antes de emitir comandos de renderização para a superfície. Quando esses dispositivos terminarem de renderizar, eles deverão chamar IDXGIKeyedMutex::ReleaseSync.


D3D11_RESOURCE_MISC_SHARED e D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX são mutuamente exclusivos.


Dispositivos WARP e REF não dão suporte a recursos compartilhados.
Se você tentar criar um recurso com esse sinalizador em um dispositivo WARP ou REF , o método create retornará um código de erro E_OUTOFMEMORY .


Nota Começando com Windows 8, os dispositivos WARP dão suporte total a recursos compartilhados.

 
D3D11_RESOURCE_MISC_GDI_COMPATIBLE
Valor: 0x200L
Habilita um recurso compatível com GDI. Você deve definir o sinalizador D3D11_RESOURCE_MISC_GDI_COMPATIBLE em superfícies que você usa com GDI. Definir o sinalizador D3D11_RESOURCE_MISC_GDI_COMPATIBLE permite a renderização de GDI na superfície por meio de IDXGISurface1::GetDC.


Considere as seguintes dicas de programação para usar D3D11_RESOURCE_MISC_GDI_COMPATIBLE ao criar uma textura ou usar essa textura em uma cadeia de troca:


  • D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX e D3D11_RESOURCE_MISC_GDI_COMPATIBLE são mutuamente exclusivos. Portanto, não os use juntos.

  • D3D11_RESOURCE_MISC_RESOURCE_CLAMP e D3D11_RESOURCE_MISC_GDI_COMPATIBLE são mutuamente exclusivos. Portanto, não os use juntos.

  • Você deve associar a textura como um destino de renderização para o estágio de fusão de saída. Por exemplo, defina o sinalizador D3D11_BIND_RENDER_TARGET no membro BindFlags da estrutura D3D11_TEXTURE2D_DESC .

  • Você deve definir o número máximo de níveis de mapa MIP como 1. Por exemplo, defina o membro MipLevels da estrutura D3D11_TEXTURE2D_DESC como 1.

  • Você deve especificar que a textura requer acesso de leitura e gravação pela GPU. Por exemplo, defina o membro Usage da estrutura D3D11_TEXTURE2D_DESC como D3D11_USAGE_DEFAULT.


  • Você deve definir o formato de textura para um dos tipos a seguir.


    • DXGI_FORMAT_B8G8R8A8_UNORM

    • DXGI_FORMAT_B8G8R8A8_TYPELESS

    • DXGI_FORMAT_B8G8R8A8_UNORM_SRGB

    Por exemplo, defina o membro Format da estrutura D3D11_TEXTURE2D_DESC como um desses tipos.

  • Você não pode usar D3D11_RESOURCE_MISC_GDI_COMPATIBLE com multisampling. Portanto, defina o membro Count da estrutura DXGI_SAMPLE_DESC como 1. Em seguida, defina o membro SampleDesc da estrutura D3D11_TEXTURE2D_DESC para essa estrutura DXGI_SAMPLE_DESC .

D3D11_RESOURCE_MISC_SHARED_NTHANDLE
Valor: 0x800L
Defina esse sinalizador para habilitar o uso de valores NT HANDLE ao criar um recurso compartilhado. Ao habilitar esse sinalizador, você preteri o uso de valores HANDLE existentes.

O valor especifica um novo tipo de recurso compartilhado que direciona o runtime para usar valores NT HANDLE para o recurso compartilhado. Em seguida, o runtime deve confirmar se o recurso compartilhado funciona em todo o hardware no nível de recurso especificado.


Sem esse conjunto de sinalizadores, o runtime não valida estritamente os parâmetros de recursos compartilhados (ou seja, formatos, sinalizadores, uso e assim por diante). Quando o runtime não valida parâmetros de recursos compartilhados, o comportamento de grande parte da API do Direct3D pode ser indefinido e pode variar de driver para driver.

Direct3D 11 e anterior: Esse valor não tem suporte até Direct3D 11.1.
D3D11_RESOURCE_MISC_RESTRICTED_CONTENT
Valor: 0x1000L
Defina esse sinalizador para indicar que o recurso pode conter conteúdo protegido; portanto, o sistema operacional deve usar o recurso somente quando o driver e o hardware dão suporte à proteção de conteúdo. Se o driver e o hardware não derem suporte à proteção de conteúdo e você tentar criar um recurso com esse sinalizador, a criação do recurso falhará.

Direct3D 11: Esse valor não tem suporte até Direct3D 11.1.
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE
Valor: 0x2000L
Defina esse sinalizador para indicar que o sistema operacional restringe o acesso à superfície compartilhada. Você pode usar esse sinalizador junto com o sinalizador D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER e somente quando criar uma superfície compartilhada. O processo que cria o recurso compartilhado sempre pode abrir o recurso compartilhado.

Direct3D 11: Esse valor não tem suporte até Direct3D 11.1.
D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER
Valor: 0x4000L
Defina esse sinalizador para indicar que o driver restringe o acesso à superfície compartilhada. Você pode usar esse sinalizador em conjunto com o sinalizador D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE e somente ao criar uma superfície compartilhada. O processo que cria o recurso compartilhado sempre pode abrir o recurso compartilhado.

Direct3D 11: Esse valor não tem suporte até Direct3D 11.1.
D3D11_RESOURCE_MISC_GUARDED
Valor: 0x8000L
Defina esse sinalizador para indicar que o recurso está protegido. Esse recurso é retornado pelas APIs IDCompositionSurface::BeginDraw (DirectComposition) e ISurfaceImageSourceNative::BeginDraw (Windows Runtime). Para essas APIs, você fornece uma ROI (região de interesse) em uma superfície para atualizar. Essa superfície não é compatível com vários destinos de renderização (MRT).

Um recurso protegido restringe automaticamente todas as gravações na região relacionadas a uma das APIs anteriores. Além disso, o recurso impõe o acesso ao ROI com estas restrições:


Direct3D 11: Esse valor não tem suporte até Direct3D 11.1.
D3D11_RESOURCE_MISC_TILE_POOL
Valor: 0x20000L
Defina esse sinalizador para indicar que o recurso é um pool de blocos.

Direct3D 11: Esse valor não tem suporte até Direct3D 11.2.
D3D11_RESOURCE_MISC_TILED
Valor: 0x40000L
Defina esse sinalizador para indicar que o recurso é um recurso em bloco.

Direct3D 11: Esse valor não tem suporte até Direct3D 11.2.
D3D11_RESOURCE_MISC_HW_PROTECTED
Valor: 0x80000L
Defina esse sinalizador para indicar que o recurso deve ser criado de modo que ele seja protegido pelo hardware. A criação de recursos falhará se não houver suporte para a proteção de conteúdo de hardware.

Esse sinalizador tem as seguintes restrições:


  • Esse sinalizador não pode ser usado com os seguintes valores de D3D11_USAGE :

    • D3D11_USAGE_DYNAMIC

    • D3D11_USAGE_STAGING



  • Esse sinalizador não pode ser usado com os seguintes valores de D3D11_BIND_FLAG .

    • D3D11_BIND_VERTEX_BUFFER

    • D3D11_BIND_INDEX_BUFFER



  • Nenhum sinalizador de acesso de CPU pode ser especificado.


Observação  

A criação de uma textura usando esse sinalizador não garante automaticamente que a proteção de hardware será habilitada para a alocação subjacente. Algumas implementações exigem que os componentes drm sejam inicializados pela primeira vez antes de quaisquer garantias de proteção.


 

Nota Esse valor de enumeração tem suporte começando com Windows 10.
D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE
Permite que o recurso funcione com o recurso de superfícies exibicionáveis . Você deve usar D3D11_RESOURCE_MISC_SHARED_DISPLAYABLE em combinação com D3D11_RESOURCE_MISC_SHARED e D3D11_RESOURCE_MISC_SHARED_NTHANDLE.
D3D11_RESOURCE_MISC_SHARED_EXCLUSIVE_WRITER
TBD

Comentários

Essa enumeração é usada em D3D11_BUFFER_DESC, D3D11_TEXTURE1D_DESC, D3D11_TEXTURE2D_DESCD3D11_TEXTURE3D_DESC.

Esses sinalizadores podem ser combinados por OR bit a bit.

O D3D11_RESOURCE_MISC_FLAG não pode ser usado ao criar recursos com sinalizadores de D3D11_CPU_ACCESS .

Requisitos

Requisito Valor
Cabeçalho d3d11.h

Confira também

Enumerações de recursos