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:
- Suporte ao formato DXGI para Hardware de Nível de Recurso 12.1 do Direct3D
- Suporte ao formato DXGI para Hardware de Nível de Recurso 12.0 do Direct3D
- Suporte ao formato DXGI para Hardware de Nível de Recurso 11.1 do Direct3D
- Suporte ao formato DXGI para Hardware de Nível de Recurso 11.0 do Direct3D
- Suporte de hardware para formatos Direct3D 10Level9
- Suporte de hardware para formatos Direct3D 10.1
- Suporte de hardware para formatos Direct3D 10