Níveis de recursos do Direct3D

Para lidar com a diversidade de placas de vídeo em computadores novos e existentes, o Microsoft Direct3D 11 apresenta o conceito de níveis de recursos. Este tópico discute os níveis de recursos do Direct3D.

Cada cartão de vídeo implementa um determinado nível de funcionalidade do Microsoft DirectX (DX), dependendo das GPUs (unidades de processamento gráfico) instaladas. Em versões anteriores do Microsoft Direct3D, você poderia descobrir a versão do Direct3D que a placa de vídeo implementou e programar o seu aplicativo adequadamente.

Com o Direct3D 11, um novo paradigma é introduzido chamado níveis de recursos. Um nível de recurso é um conjunto bem definido de funcionalidades de GPU. Por exemplo, o nível de recurso 9_1 implementa a funcionalidade que foi implementada no Microsoft Direct3D 9, que expõe os recursos de modelos de sombreador ps_2_x e vs_2_x, enquanto o nível de recurso 11_0 implementa a funcionalidade implementada no Direct3D 11.

Agora, ao criar um dispositivo, você pode tentar criar um dispositivo para o nível de recurso que deseja solicitar. Se for possível criar um dispositivo, isso significa que o nível de recursos existe; caso contrário, o hardware não permite tal nível de recursos. Você pode tentar recriar um dispositivo em um nível de recursos inferior ou optar por sair do aplicativo. Para obter mais informações sobre como criar um dispositivo, consulte a função D3D11CreateDevice .

Usando níveis de recursos, você pode desenvolver um aplicativo para Direct3D 9, Microsoft Direct3D 10 ou Direct3D 11 e, em seguida, executá-lo em hardware 9, 10 ou 11 (com algumas exceções; por exemplo, novos 11 recursos não serão executados em um 9 cartão existente). Aqui estão algumas outras propriedades básicas dos níveis de recursos:

  • Uma GPU que permite que um dispositivo seja criado atende ou excede a funcionalidade desse nível de recurso.
  • Um nível de recurso sempre inclui a funcionalidade de níveis de recursos anteriores ou inferiores.
  • Um nível de recurso não implica desempenho, apenas funcionalidade. O desempenho depende da implementação de hardware.
  • Escolha um nível de recurso ao criar um dispositivo Direct3D 11.

Para obter informações sobre limitações na criação de dispositivos do tipo nãohardware em determinados níveis de recursos, consulte Limitações ao criar dispositivos WARP e de referência.

Para ajudá-lo a decidir com qual nível de recurso projetar, compare os recursos para cada nível de recurso.

A seção 10Level9 Reference lista as diferenças entre como vários métodos ID3D11Device e ID3D11DeviceContext se comportam em vários níveis de recurso 10Level9.

Formatos de números de versão

Há três formatos para versões do Direct3D, modelos de sombreador e níveis de recursos.

  • As versões do Direct3D usam um período; por exemplo, Direct3D 12.0.
  • Os modelos de sombreador usam um período; por exemplo, modelo de sombreador 5.1.
  • Os níveis de recurso usam um sublinhado; por exemplo, nível de recurso 12_0.

Suporte a recursos do Direct3D 12 (níveis de recursos 12_2 a 11_0)

Os recursos a seguir estão disponíveis para os níveis de recursos listados. Os títulos na linha superior são níveis de recursos do Direct3D 12. Os títulos na coluna à esquerda são recursos. Confira também Notas de rodapé para as tabelas.

Recurso \ Nível de Recurso 12_28 12_10 12_00 11_11 11_0
Modelo de sombreador 6.5 5.12 5.12 5.12 5.12
Modelo de driver WDDM 2,0 1.x 1.x 1.x 1.x
Raytracing Camada 1.1 Opcional Opcional Opcional Opcional
Taxa de sombreamento variável Camada 2 Opcional Opcional Opcional Opcional
Sombreador de malha Camada 1 Opcional Opcional Opcional Opcional
Comentários do sampler Camada 0.9 Opcional Opcional Opcional Opcional
Associação de recursos Nível 3 Nível 3 Nível 3 Nível 3 Camada 1
Assinatura raiz 1,1 1 1 1 1
Teste de limites de profundidade Sim Opcional Opcional Opcional Opcional
Gravar buffer imediato Direct, Compute, Bundle Opcional Opcional Opcional Opcional
Bits de endereço virtual de GPU 4010 4010 4010
Recursos lado a lado Camada3 Camada 26 Camada 26 Opcional Opcional
Rasterização conservativa Camada3 Camada 16 Opcional Opcional Não
Exibições de ordem do rasterizador Yes Sim Opcional Opcional Não
Filtros mínimos/máximos Yes Sim Sim Opcional Não
Mapear buffer padrão N/D Opcional Opcional Opcional Opcional
Valor de referência de estêncil especificado pelo sombreador Opcional Opcional Opcional Opcional Não
Cargas de exibição de acesso não ordenadas digitadas 18 formatos, mais opcionais 18 formatos, mais opcionais 18 formatos, mais opcionais 3 formatos, mais opcionais 3 formatos, mais opcionais
Sombreador de geometria Sim Yes Yes Yes Yes
Stream Out Sim Sim Sim Sim Sim
Sombreador DirectCompute/Compute Sim Sim Sim Yes Yes
Sombreadores hull e domain Yes Sim Sim Sim Sim
Recurso \ Nível de Recurso 12_28 12_10 12_00 11_11 11_0
Matrizes de recursos de textura Sim Sim Sim Sim Sim
Matrizes de recursos de cubemap Yes Sim Sim Sim Yes
Compactação BC4/BC5 Yes Yes Yes Yes Sim
Compactação BC6H/BC7 Sim Sim Sim Sim Sim
Alpha-to-coverage Sim Sim Sim Yes Sim
Formatos estendidos (BGRA e assim por diante) Sim Sim Yes Yes Yes
Formato XR High Color de 10 bits Yes Yes Yes Yes Yes
Operações lógicas (fusão de saída) Yes Sim Sim Yes Opcional1
Rasterização independente de destino Yes Sim Yes Yes Não
MrT (destino de renderização múltipla) com ForcedSampleCount 1 Sim Sim Sim Sim Opcional1
Slots UAV Camadas 9 64 64 64 8
UAVs em todos os estágios Sim Sim Sim Sim Não
Recurso \ Nível de Recurso 12_28 12_10 12_00 11_11 11_0
Contagem máxima de exemplos forçados para renderização somente UAV 16 16 16 16 8
Deslocamento de buffer constante e atualizações parciais Sim Sim Sim Yes Opcional1
Formatos de 16 bits por pixel (bpp) Yes Sim Yes Yes Opcional1
Dimensão máxima de textura 16384 16384 16384 16384 16384
Dimensão de Mapa de Cubo Máximo 16384 16384 16384 16384 16384
Extensão máxima do volume 2.048 2.048 2.048 2.048 2.048
Repetição máxima de textura 16384 16384 16384 16384 16384
Anisotropia máxima 16 16 16 16 16
Contagem primitiva máxima 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1
Índice máximo de vértice 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1
Máximo de slots de entrada 32 32 32 32 32
Destinos de Renderização Simultânea 8 8 8 8 8
Recurso \ Nível de Recurso 12_28 12_10 12_00 11_11 11_0
Consultas de oclusão Sim Sim Sim Yes Sim
Separar a Mistura Alfa Sim Sim Sim Sim Sim
Espelhar uma vez Sim Sim Yes Sim Yes
Elementos de vértice sobrepostos Yes Yes Yes Yes Yes
Máscaras de Gravação Independentes Sim Sim Sim Sim Yes
Instanciação Sim Yes Sim Yes Yes
Sem potências de 2 condicionalmente3 Não Não Não Não Não
Nonpowers-of-2 incondicionalmente4 Yes Yes Sim Yes Sim

Além disso, os seguintes sinalizadores são definidos:

Recurso \ Nível de Recurso 12_28
WaveOps TRUE
OutputMergerLogicOp TRUE
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation TRUE
CopyQueueTimestampQueriesSupported TRUE
CastingFullyTypedFormatSupported TRUE
Int64ShaderOps TRUE

Suporte a recursos do Direct3D 11 (níveis de recursos 12_1 a 9_1)

Os recursos a seguir estão disponíveis para os níveis de recursos listados. Os títulos na linha superior são níveis de recurso do Direct3D 11. Os títulos na coluna à esquerda são recursos. Confira também Notas de rodapé para as tabelas.

Recurso \ Nível de Recurso 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
Modelo de sombreador 5.12 5.12 5.02 5.02 4.x 4,0 2.0 (4_0_level_9_3) [vs_2_a/ps_2_x]5 2.0 (4_0_level_9_1) 2.0 (4_0_level_9_1)
Modelo de driver WDDM 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x 1.x
Recursos em bloco Camada 26 Camada 26 Opcional Opcional Não Não Não Não Não
Rasterização conservativa Camada 16 Opcional Opcional Não Não Não Não Não Não
Exibições de ordem do rasterizador Sim Opcional Opcional Não Não Não Não Não Não
Filtros mínimos/máximos Sim Sim Opcional Não Não Não Não Não Não
Mapear buffer padrão Opcional Opcional Opcional Opcional Não Não Não Não Não
Valor de referência de estêncil especificado pelo sombreador Opcional Opcional Opcional Não Não Não Não Não Não
Cargas de exibição de acesso não ordenadas digitadas 18 formatos, mais opcionais 18 formatos, mais opcionais 3 formatos, mais opcionais 3 formatos, mais opcionais Não Não Não Não Não
Sombreador de geometria Yes Sim Sim Yes Sim Yes Não Não Não
Stream Out Sim Yes Sim Sim Yes Sim Não Não Não
Sombreador DirectCompute/Compute Sim Sim Sim Sim Opcional Opcional N/D N/D N/D
Sombreadores hull e domain Yes Yes Yes Yes Não Não Não Não Não
Recurso \ Nível de Recurso 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
Matrizes de recursos de textura Yes Sim Yes Sim Yes Yes Não Não Não
Matrizes de recursos de cubemap Sim Sim Sim Sim Sim Não Não Não Não
Compactação BC4/BC5 Sim Sim Sim Sim Sim Sim Não Não Não
Compactação BC6H/BC7 Sim Sim Sim Sim Não Não Não Não Não
Alpha-to-coverage Sim Sim Sim Sim Sim Sim Não Não Não
Formatos Estendidos (BGRA e assim por diante) Sim Sim Yes Sim Opcional Opcional Sim Sim Yes
Formato XR High Color de 10 bits Sim Yes Yes Sim Opcional Opcional N/D N/D N/D
Operações lógicas (fusão de saída) Sim Yes Sim Opcional1 Opcional1 Opcional1 Não Não Não
Rasterização independente de destino Sim Sim Yes Sim Sim Não Não Não Não Não Não
MRT (destino de renderização múltipla) com ForcedSampleCount 1 Sim Opcional1 Opcional1 Opcional1 Não Não Não
Slots UAV 64 64 64 8 1 1 N/D N/D N/D
UAVs em todos os estágios Sim Sim Yes Não Não Não N/D N/D N/D
Recurso \ Nível de Recurso 12_10 12_00 11_11 11_0 10_1 10_0 9_37 9_2 9_1
Contagem máxima de exemplos forçados para renderização somente UAV 16 16 16 8 N/D N/D N/D N/D N/D
Deslocamento de buffer constante e atualizações parciais Sim Yes Yes Opcional1 Opcional1 Opcional1 Sim1 Sim1 Sim1
Formatos de 16 bits por pixel (bpp) Sim Sim Sim Opcional1 Opcional1 Opcional1 Opcional1 Opcional1 Opcional1
Dimensão máxima da textura 16384 16384 16384 16384 8192 8192 4096 2.048 2.048
Dimensão máxima do cubemap 16384 16384 16384 16384 8192 8192 4096 512 512
Extensão máxima do volume 2.048 2.048 2.048 2.048 2.048 2.048 256 256 256
Repetição máxima de textura 16384 16384 16384 16384 8192 8192 8192 2.048 128
Anisotropia máxima 16 16 16 16 16 16 16 16 2
Contagem primitiva máxima 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 1048575 1048575 65535
Índice máximo de vértice 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 2^32 – 1 1048575 1048575 65534
Máximo de slots de entrada 32 32 32 32 32 16 16 16 16
Destinos de Renderização Simultânea 8 8 8 8 8 8 4 1 1
Recurso \ Nível de Recurso 12_28 12_10 11_11 11_0 10_1 10_0 9_37 9_2 9_1
Consultas de oclusão Sim Yes Sim Sim Sim Yes Yes Yes Não
Separar a Mistura Alfa Yes Yes Sim Sim Yes Sim Yes Yes Não
Espelhar uma vez Yes Yes Sim Sim Yes Yes Yes Yes Não
Elementos de vértice sobrepostos Sim Yes Yes Yes Sim Sim Sim Yes Não
Máscaras de Gravação Independentes Sim Sim Yes Yes Sim Sim Yes Não Não
Instanciação Sim Sim Sim Yes Yes Yes Sim7 Não Não
Sem potências de 2 condicionalmente3 Não Não Não Não Não Não Yes Yes Sim
Nonpowers-of-2 incondicionalmente4 Sim Yes Yes Yes Sim Yes Não Não Não

Notas de rodapé para as tabelas

0 Requer o runtime direct3D 11.3 ou Direct3D 12.

1 Requer o runtime do Direct3D 11.1.

2 O modelo de sombreador 5.0 e superior pode, opcionalmente, dar suporte a sombreadores de precisão dupla, sombreadores de precisão dupla estendidos, instrução de sombreador SAD4 e sombreadores de precisão parcial. Para determinar as opções do modelo de sombreador 5.0 disponíveis para o DirectX 11, chame ID3D11Device::CheckFeatureSupport. Alguma compatibilidade depende de qual hardware você está executando. O modelo de sombreador 5.1 e superior só tem suporte por meio da API do DirectX 12, independentemente do nível de recurso que está sendo usado. O DirectX 11 dá suporte apenas ao modelo de sombreador 5.0. A API do DirectX 12 só vai para o nível de recurso 11_0.

3 Nos níveis de recursos 9_1, 9_2 e 9_3, o dispositivo de exibição dá suporte ao uso de texturas 2D com dimensões que não são potências de dois em duas condições. Primeiro, somente um nível de mapa MIP para cada textura pode ser criado e, segundo, nenhum modo de amostra de encapsulamento para texturas é permitido (ou seja, os membros AddressU, AddressV e AddressW do D3D11_SAMPLER_DESC não podem ser definidos como D3D11_TEXTURE_ADDRESS_WRAP).

4 Nos níveis de recursos 10_0, 10_1 e 11_0, o dispositivo de exibição dá suporte incondicionalmente ao uso de texturas 2D com dimensões que não são potências de dois.

5 Sombreador de Vértice 2a com 256 instruções, 32 registros temporários, controle de fluxo estático de profundidade 4, controle de fluxo dinâmico de profundidade 24 e D3DVS20CAPS_PREDICATION. Sombreador de Pixel 2x com 512 instruções, 32 registros temporários, controle de fluxo estático de profundidade 4, controle de fluxo dinâmico de profundidade 24, D3DPS20CAPS_ARBITRARYSWIZZLE, D3DPS20CAPS_GRADIENTINSTRUCTIONS, D3DPS20CAPS_PREDICATION, D3DPS20CAPS_NODEPENDENTREADLIMIT e D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT.

6 Camadas superiores opcionais.

7 Para o Nível de Recurso 9_3, os únicos métodos de renderização com suporte são Draw, DrawIndexed e DrawIndexInstanced. Também para o Nível de Recurso 9_3, a renderização de lista de pontos tem suporte apenas para renderização por meio do Draw.

8 Compatível com Windows 11.

9 Na API do Direct3D 12, há limites no número de descritores em um heap CBV/SRV/UAV. Consulte Camadas de hardware para obter detalhes. Separadamente, há um limite no número de UAVs em todas as tabelas de descritor em todos os estágios, que se baseia na camada de associação de recursos.

10 Um processo de 64 bits requer 40 bits de espaço de endereço disponível por recurso e por processo. Um processo de 32 bits pode ser limitado a 31 bits de espaço de endereço. Há dois recursos (caps) disponíveis na API: por processo e por recurso. O espaço de endereço por processo é sempre maior ou igual ao espaço de endereço por recurso.

Para obter detalhes do suporte ao formato em diferentes níveis de recursos de hardware, consulte: