Desmitificando la compatibilidad con DirectX 12 en Windows 10: lo que AMD, Intel y Nvidia hacen y no ofrecen

Logotipo de DirectX 12

Ahora que Windows 10 finalmente se envía , la cuestión de la compatibilidad con DirectX pasará de ser una viñeta de marketing a una cuestión tangible para los usuarios. Durante más de un año, AMD y Nvidia han anunciado que varias familias de GPU más antiguas admitirían DirectX 12 en el lanzamiento. Recientemente, sin embargo, ha habido cierta confusión sobre qué nivel de soporte ofrecerán Intel, AMD y Nvidia para la nueva API y qué productos ejecutarán los próximos juegos que dependen de ella. La confusión actual parece haber sido causada por los comentarios de Robert Hallock de AMD, quien reconoció que las diversas GPU de clase AMD GCN admiten diferentes niveles de funciones de DirectX 12. Esto se ha convertido en acusaciones de que AMD no es compatible con DirectX 12 'completo'. En realidad, Intel, Nvidia y AMD son compatibles con DirectX 12 en varios niveles de funciones, y ninguna GPU en el mercado admite todas las capacidades opcionales de DirectX 12.

Los niveles de funciones de DirectX y las actualizaciones de puntos no son lo mismo

Lo primero que debe comprender es que los niveles de funciones de DirectX no son lo mismo que las actualizaciones de puntos de DirectX. Una actualización puntual (DirectX 10.1, DirectX 11.1 / 11.2) es un conjunto adicional de capacidades estandarizadas que permiten a los desarrolladores realizar ciertas tareas de manera más eficiente u ofrecer capacidades específicas. DirectX 10.1, por ejemplo, implementó nuevos estándares de calidad visual, nuevas instrucciones de sombreado y compatibilidad con matrices de mapas de cubos. No fue una actualización lo suficientemente significativa como para definir una versión completamente nueva de DirectX, pero fue un paso lo suficientemente grande como para garantizar su propia extensión.



Por el contrario, un nivel de función de DirectX define el nivel de compatibilidad que ofrece una GPU sin dejar de admitir la especificación subyacente. Esta capacidad se introdujo por primera vez en DirectX 11. Microsoft define un nivel de característica como “un conjunto bien definido de funciones de GPU. Por ejemplo, el nivel de característica 9_1 implementa la funcionalidad que se implementó en Microsoft Direct3D 9, que expone las capacidades de los modelos de sombreado ps_2_x y vs_2_x, mientras que el nivel de característica 11_0 implementa la funcionalidad que se implementó en Direct3D 11. '



El siguiente cuadro es un ejemplo parcial de los niveles de funciones de DirectX 11, solo para ilustrar el punto:

DX11-FeatureLevels



El propósito de la función de nivel de característica es permitir a los desarrolladores apuntar a una única API en lugar de desarrollar bases de código separadas en paralelo para garantizar que un juego pueda ejecutarse sin problemas en múltiples generaciones de hardware de GPU en lugar de escribir código separado para DX12, DX11, DX10, y así. Una GPU DirectX 11 con nivel de función 9_3 no podría realizar mágicamente efectos DirectX 11, pero podría ejecutar juegos en modo DirectX 9 sin que el desarrollador tenga que escribir una implementación de motor completamente separada para permitirlo. Así es como juegos como Civilization V pudieron ejecutarse en los modos DX11 o DX9 desde una base de código común.

AMD, Intel y Nvidia: ¿Quién apoya qué?

Uno de los problemas para identificar qué GPU admiten qué funciones es la confusión entre el soporte de DirectX API y el soporte de nivel de función. Esta página de soporte de Nvidia, por ejemplo, detalla cómo las GPU Fermi y Kepler pueden admitir DirectX 11.1 en el nivel de función 11_0. La razón por la que Kepler y Fermi no son compatibles con DirectX 11.1 en el nivel de función 11_1 es porque dos de las capacidades necesarias para 11_1 no están disponibles en la GPU. Nvidia se esfuerza en señalar que la actualización 11.1 de DirectX en realidad agrega soporte para algunas capacidades que Fermi introdujo en 2010.

La siguiente diapositiva de Microsoft detalla exactamente qué niveles de funciones de DirectX 12 son compatibles con qué iteraciones de hardware:

DX12FeatureLEvels

No está claro por qué Microsoft enumera Kepler como compatible con DirectX 11_1 mientras que Nvidia lo muestra como limitado a DirectX 11_0 a continuación, pero de cualquier manera, el punto está claro: la compatibilidad con DirectX 12 tiene matices y varía entre varias familias de tarjetas de cada fabricante. Los chips GCN 1.0 de AMD incluyen Cabo Verde, Pitcairn y Tahití y admiten el nivel de función 11_1, mientras que Bonaire, Hawaii, Tonga (posiblemente Oland) y Fiji admitirán el nivel de función 12_0. Las diversas familias 4xx, 5xx, 6xx y 7xx de Nvidia admitirán DirectX 12 en el nivel de funciones 11_0 o 11_1, y la GTX 750 Ti ofrece compatibilidad con FL 12_0. Tenga en cuenta que Oland es un tipo extraño de chip híbrido: puede tener compatibilidad con la función DirectX 12_0, pero carece de funciones como TrueAudio y posiblemente compatibilidad con XDMA.

El problema se ha confundido aún más con las afirmaciones de que Maxwell es la única GPU en el mercado que admite DirectX 12. Si bien es cierto que Maxwell es la única GPU que admite DirectX 12_1, AMD es la única compañía que ofrece Enlace de recursos de nivel 3 y sombreadores asincrónicos para gráficos y cómputo simultáneos. Eso no significa que AMD o Nvidia mientan; significa que ciertas características y capacidades de varias tarjetas están imperfectamente capturadas por niveles de características y que llamar a una GPU u otra DX12 'completa' no hace esta distinción. Intel, por ejemplo, ofrece ROV en el nivel de funciones 11_1, algo que ni AMD ni Nvidia pueden igualar.

Por que DirectX 12 se ve como lo hace

Una preocupación común de los jugadores es que si sus tarjetas solo son compatibles con DirectX 12 11_1 o 12_0, se perderán lo que ofrece DirectX 12. Es importante recordar que las capacidades multi-threading y multi-GPU de DirectX 12 que hemos visto en una vista previa hasta la fecha (y demostradas a través de Mantle) todavía están completamente disponibles para todos los niveles de funciones. Kepler y las GPU GCN más antiguas se beneficiarán absolutamente de las nuevas capacidades que ofrece DirectX 12. Dicho esto, hay algunas capacidades específicas integradas en DirectX 12_0 y 12_1 a las que los jugadores con tarjetas más antiguas no tendrán acceso, pero como muestran los gráficos anteriores, este no es un problema exclusivo de AMD, Nvidia o Intel. Ningún Intel IGP actual es compatible con DirectX 12_0, mientras que solo el hardware Maxwell de Nvidia admite 12_0 o 12_1.

Esta diapositiva reciente del lanzamiento de GTX 980 Ti implica que Kepler está limitado al nivel de función 11_0, no 11_1.

Esta diapositiva reciente del lanzamiento de GTX 980 Ti implica que Kepler está limitado al nivel de función 11_0, no 11_1.

Para comprender por qué Microsoft creó DirectX 12 de la forma en que lo hizo, considere la alternativa. Antes de DirectX 11, cada nueva versión de DirectX estaba vinculada a nuevos requisitos de hardware. De vez en cuando, AMD o Nvidia podrían implementar una función específica en el hardware antes de que se convirtiera en parte de un futuro estándar de DirectX, pero las tarjetas gráficas se fijaron a las API de DirectX que admitían en el lanzamiento. Sin la flexibilidad que ofrecen los niveles de funciones, los únicos jugadores que podrían aprovechar DX12 serían aquellos que compraron una GPU GCN 1.1, 1.2 o Maxwell. Todos los demás, incluidos los millones de personas con tarjetas un poco más antiguas, se habrían quedado al margen.

Agregar niveles de funciones e implementarlos como parte de DX12 significa que millones de personas verán beneficios significativos al adoptar la nueva API aquí y ahora. No, es posible que las GPU más antiguas no admitan todas las funciones de DX12, pero nadie va a tener que elegir entre un juego que se ve genial en DX11 o una versión DX12 a medias debido a problemas de implementación de la tarjeta gráfica. Cuando AMD, Nvidia e Intel hablan sobre la compatibilidad con DirectX 12 en hardware más antiguo, se refieren a las características que más importan: API de menor sobrecarga, mejor utilización de la CPU y funcionalidad multi-GPU . Los niveles de funciones reales que definen 12_1 como diferente de 11_0 son interesantes y útiles en ciertos escenarios, pero no son las capacidades que realmente darán forma a cómo los jugadores experimentan los juegos con la API.

Así como hay muy pocos juegos que requieran DirectX 11.2 o 11.1 (de improviso, no se me ocurre ninguno), habrá muy pocos títulos de DirectX 12 que requieran DirectX 12 FL 12_0 o 12_1. No estoy diciendo que tales juegos nunca sucedan, pero eso será dentro de años, mucho después de que las GPU actuales hayan sido reemplazadas por hardware moderno. Si posee una tarjeta GCN 1.0, Fermi o Kepler, obtendrá las funciones de DirectX 12 que más le importan. Es por eso que Microsoft creó niveles de funciones que las GPU más antiguas podrían usar; si Fermi, Kepler y las tarjetas GCN 1.0 más antiguas no pudieran beneficiarse de las ventajas principales de DirectX 12, Microsoft no los habría calificado para usarlo en primer lugar. La API se diseñó a propósito para permitir la compatibilidad con versiones anteriores a fin de garantizar que los desarrolladores estén dispuestos a apuntar a ella.

Copyright © Todos Los Derechos Reservados | 2007es.com