Desmitificando o
DirectX 12
O que Intel, NVIDIA
e AMD tem ou não a oferecer?
Traduzido por Marcus Sarmanho H. Marques
Agradecimentos ao Grupo do Facebook PC Facts
Administrado por Marcus S. H. Marques e Felipe Assunçao
Fonte: ExtremeTech
Quando o Windows 10 chegar mês que vem, entregará o primeiro upgrade
total em DirectX desde o Windows 7, seis anos atrás. Por mais de um ano, AMD e
NVIDIA vem divulgando que várias famílias de antigas GPU’s terão suporte ao
DirectX 12 na data de lançamento. Recentemente, entretanto, há certa confusão
sobre que nível de suporte Intel, AMD e NVIDIA oferecerão para a nova API e
quais produtos rodarão os futuros games desenvolvidos na mesma. Tal confusão
parece ter origem nos comentários de Robert Hallock da AMD, que reconheceu que
várias GPUs AMD GCN teriam suportes em diferentes níveis de DX12. Isso acabou
fazendo com que surgissem alegações de que a AMD não suportaria DX12
“totalmente”. Na verdade, Intel, NVIDIA e AMD suportam DirectX 12 em vários
níveis e nenhuma GPU no mercado hoje suporta todos os níveis do mesmo.
Níveis de DirectX e pontos de
update não são a mesma coisa
A primeira coisa a se entender é que os níveis de DirectX 12 não são a
mesma coisa que um ponto de update. Um ponto de update (DirectX 10.1, 11.1 e
11.2) são um pacote de capacidades padronizadas que permitem aos
desenvolvedores fazer certas tarefas mais eficientemente ou oferecem
capacidades específicas. O DirectX 10.1 por exemplo, implementou novos padrões
de qualidade visual, novas instruções de shader, e suporte para Cube Map
Arrays. Não era uma novidade significativa o suficiente para definir uma
versão inteiramente nova do DirectX por si só, mas era um passo grande o
bastante para garantir seu próprio crescimento.
Um nível de DirectX (ou nível de características), ao contrário, define o
nível de suporte que a GPU dá mesmo quando ainda suporta o nível anterior. Essa
capacidade foi introduzida no DirectX 11. Microsoft define a nível de
características como :”um bem definido pacote de funcionalidades de GPU. A
título exemplificativo, o nível 9.1 implementa a funcionalidade do Direct3d 9
que expõe as habilidades de modelos de shader ps_2_x e vs_2_x, enquanto o nível
11.0 implementa as funcionalidades trazidas no Direct3D 11” .
Recursos / DirectX
|
11.1
|
11.0
|
10.1
|
10.0
|
9.3
|
9.2
|
9.1
|
Modelo Shader
|
5.0
|
5.0
|
4.x
|
4.0
|
2.0 (4.0-9.3)
|
2.0 (4.0-9.1)
|
2.0 (4.0 9.1)
|
Geometria de Shader
|
SIM
|
SIM
|
SIM
|
SIM
|
NÃO
|
NÃO
|
NÃO
|
Stream Out
|
SIM
|
SIM
|
SIM
|
SIM
|
NÃO
|
NÃO
|
NÃO
|
Direct Compute
|
SIM
|
SIM
|
Opção
|
Opção
|
N/A
|
N/A
|
N/A
|
Hull ou Domain de Shader
|
SIM
|
SIM
|
NÃO
|
NÃO
|
NÃO
|
NÃO
|
NÃO
|
Texture Resource de Shader
|
SIM
|
SIM
|
SIM
|
SIM
|
NÃO
|
NÃO
|
NÃO
|
O propósito da função de nível de características é permitir ao
desenvolvedor focar em uma única API em vez de desenvolver códigos separados em
paralelo para certificar que o jogo possa rodar suavemente em múltiplas
gerações de GPUs ao invés de escrever códigos específicos para DX 12, 11, 10 e
assim por diante. Uma GPU DX11 com nível 9.3 não pode magicamente produzir
efeitos DX11 mas pode rodar jogos em modo DX9 sem a necessidade de existir uma
implementação de engine independente para que isso ocorra. É assim que jogos
como Civilization V foram possíveis de
rodar tanto em DX11 como DX9 com um mesmo código.
AMD, Intel e NVIDIA: quem suporta
o quê?
Um dos problemas em identificar qual GPUs suportam quais características
está na confusão entre o suporte a API Directx e o Nível de suporte às
características. A página de suporte da NVIDIA, por exemplo, detalha com as
Fermi e Kepler podem suportar DirectX 11.1 ao nível de características 11.0. O
motivo de Kepler e Fermi não suportarem DX11.1 ao nível de características 11.1
é porque duas das capacidades requisitadas pelo 11.1 não estão presentes nas
GPUs. NVIDIA deu uma pincelada para apontar que a
atualização de DX 11.1 na verdade adiciona suporte de algumas capacidades que a
Fermi introduziu em 2010.
O seguinte Slide da Microsoft detalha exatamente que níveis de
características são compatíveis com cada iteração de hardware:
IHV
|
AMD
|
Intel
|
NVIDIA
|
|||||
HW
|
GCN
|
Haswell
|
Broadwell
|
Fermi
|
Kepler
|
Maxwell
|
||
|
1.0
|
1.1
|
|
|
|
|
GMX1xx
|
GMX2xx
|
Resource Binding
|
3
|
3
|
1
|
1
|
1
|
2
|
2
|
2
|
Conservative Rasterization
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
2
|
Tield Resources
|
1
|
2
|
1
|
1
|
1
|
2
|
2
|
3
|
Raster Order Views
|
Não
|
Não
|
Sim
|
Sim
|
Não
|
Não
|
Não
|
Sim
|
Typed UAV Formats
|
1
|
2
|
0
|
0
|
0
|
0
|
1
|
1
|
DX Feature Level
|
11.1
|
12.0
|
11.1
|
11.1
|
11
|
11.1
|
12.0
|
12.1
|
Não está claro porque a Microsoft lista a Kepler como suportando DirectX
11.1 enquanto a NVIDIA a mostra como limitada do DirectX 11.0 para baixo, mas,
mesmo assim, um ponto é certo: O suporte de DirectX 12 tem nuances e é variado
entre as muitas famílias de placas de vídeo de cada fabricante. Os chips AMD
GCN 1.0 como Cape Green, PitCairn a Tahiti suportam nível 11.1, enquanto
Bonaire, Hawaii, Tonga, (possivelmente Oland) e Fiji vão suportar características
de 12.0. Todas as placas das séries de NVIDIA 4xx, 5xx, 6xx e 7xx irão suportar
DirectX 12 ao nível 11.0 e 11.1 com a GTX 750ti oferencendo 12.0.
O problema foi causado por, em dado momento, clamores de que as Maxwell
seriam as únicas placas com suporte total ao DirectX 12. Enquanto que é verdade
que as Maxwell são as únicas GPU’s com suporte para nível 12.1, as GPU’s AMD
são as únicas a terem suporte ao Tier 3 de Resource Binding e shaders
assíncronos para computação e gráficos simultâneos. Isso não significa que uma
das duas esteja mentindo – significa que certos recursos e capacidades de cada
placa não é perfeitamente capturado pelos níveis e denominar uma GPU de “Full”
DX12 é não entender a distinção. Intel,
por exemplo, oferece ROV a nível 11.1 – coisa que nem AMD e NVIDIA conseguem
bater.
Porque DirectX parece desse jeito?
Um senso comum entre os gamers é que se suas placas só suportam DX 12 em
11.1 ou 12.1, eles perderão o que o DX12 tem a oferecer. É importante lembrar
que as capacidades de multi-threading e de multigpu de DX12 que vimos (e
demonstramos via Mantle) está completamente disponível para cada nível. Kepler
e placas GCN mais antigas irão se beneficiar completamente das novidades que o
DX 12 tem a oferecer. Dito isso, há determinadas características, gravadas no
DX12.0 e DX 12.1 que gamers com placas mais antigas não terão acesso – mas como
mostra o gráfico acima, não é um problema restrito à AMD, Intel ou NVIDIA.
Nenhuma IGP Intel suporta DirectX 12.0, enquanto só NVIDIA Maxwell suporta DX
12.0 ou 12.1.
|
680
|
780ti
|
980ti
|
PERFORMANCE
|
1x
|
1.8x
|
3x
|
DX
|
11.0
|
11.0
|
12.1
|
MEMÓRIA
|
2GB
|
3GB
|
6GB
|
CONSUMO
|
195w
|
250w
|
250w
|
PERF / WATT
|
1x
|
1.4x
|
2.3x
|
Este
Slide recente do lançamento da 980ti mostra que a Kepler está limitada a nível
11.0, não 11.1
Para entender porque a Microsoft construiu DirectX 12 deste jeito,
considere o seguinte. Desde o DirectX 11, todo novo directx estava atrelado a
requisitos de novos hardwares. De tempo em tempo, AMD ou NVIDIA tinham que
implementar uma característica específica no hardware antes dele se tornar
parte de um futuro padrão de DirectX, mas as placas acabavam tendo que ser
vinculadas àquela API no lançamento. Sem a flexibilidade proporcionada pelos
níveis de características, os únicos gamers que poderiam ter vantagens é DX 12
seriam os que compraram GCN 1.1, 1.2, ou Maxwell. Todos os outros, incluindo as
milhões de pessoas com placas um pouco antigas, seriam deixadas a ver navios.
Adicionar e implementar os níveis de características como parte do DX 12
significa que milhões de pessoas verão benefícios significativos ao adotar a
nova API no aqui e agora. Não, placas mais velhas não devem suportar todos as
características, mas ninguém vai ter que escolher jogar um game em DX11 por
causa dos erros advindos da falta de recursos do DX12 na sua placa de vídeo.
Quando AMD, NVIDIA e Intel falam sobre compatibilidade de DX 12 em hardware
antigo, eles estão falando dos recursos que mais importam – API’s com menor
Overhead, melhor utilização de CPU e funcionalidade multiGPU. O verdadeiro
nível de características que diferencia o 12.1 do 11.0 são interessantes e
úteis em certos cenários, mas não são essas as características que irão
efetivamente moldar como gamers irão usufruir um jogo na nova API.
Como existem poucos games que requisitam DirectX 11.2 ou 11.1 (à parte,
não consigo pensar em nenhum), haverão também poucos jogos DirectX 12 que
obriguem uma hardware use DX 12 NC 12.0 ou 12.1. Não estou dizendo que jogos
assim nunca apareçam, mas isso será daqui a alguns anos, bem depois das GPUs
serem repostas por hardware modernos. Se você tem uma GCN 1.0, Fermi ou Kepler,
você terá acesso aos recursos mais importantes de DirectX 12. Por isso, a
Microsoft criou os níveis de características (feature levels) que placas
antigas possam usar – do contrário, Microsoft as desqualificaria para uso, em
primeiro lugar. A API foi desenhada propositadamente para ter
retrocompatibilidade a fim de garantir que os desenvolvedores quisessem
efetivamente utilizá-la.