El API multimedia Microsoft DirectX 12

El API multimedia Microsoft DirectX 12

por

Futura versión del API gráfica de Microsoft hará su debut a fines del próximo año junto al sistema operativo Windows 9.

Hace algunas semanas Microsoft proporcionó algunos adelantos de lo que ofrecería su futura API DirectX 12, API que por fin fue anunciada oficialmente.

DirectX 12 constituye uno de los avances más significativos en la historia del API (Microsoft lo publicita como el más “directo” de sus DirectX), el cual incluirá nuevas y evolucionadas versiones de los muchos componentes que lo conforman (Direct3D, DirectCompute, DirectDraw, Directx Video Accelerator, Direct2D, DirectWrite, DirectMusic, DirectSound, DirectSound3D, DirectInput) entre otros), siendo Direct3D el que muestra los cambios más significativos.

Direct3D 12

Direct3D 12 (componente de DirectX 12 encargado de gestionar los gráficos en 3 dimensiones tanto en aplicaciones como en juegos) es un API gráfico moderno y muy eficiente, concebido para convertirse en el pilar central de la plataforma gamer para todo tipo de dispositivos Windows con la que sueña Microsoft: PCs, Notebooks, consolas (XBox One), Tablets, Smartphones y otros dispositivos móviles; representando en este último campo, una formidable alternativa a OpenGL ES.

Microsoft piensa que el rendimiento por ciclo de los microprocesadores evoluciona muy poco, factor que obviamente no está a la altura de la gran evolución que mantienen los GPUs. El incremento de la frecuencia y el rendimiento por ciclo trae como efecto indeseado un gran incremento en el consumo.

El negativo efecto anteriormente descrito, puede ser reducido significativamente recurriendo al uso eficiente del multi-procesamiento, característica presente desde hace mucho en los microprocesadores multi-núcleo, por lo que al aprovechar de forma eficiente su capacidad multi-hilo se logra un mayor rendimiento tanto en microprocesadores para PC como para dispositivos móviles, a la vez que este repercute en una mayor eficiencia energética.

Con la anterior premisa, Microsoft ha realizado profundos cambios en la pila de Direct3D, para garantizar que el nuevo API gráfico ofrezca una mayor calidad gráfica (escenas con mayor detalle y número de objetos) y un rendimiento óptimo en toda la amplia gama de dispositivos a los que apunta, por lo que saca provecho de muchos de los adelantos del hardware actual como microprocesadores multi-núcleo y a la gran base instalada de hardware gráfico actual.

Las novedades de Direct3D 12

Direct3D proporciona un mejor nivel de abstracción de hardware que el ofrecido por cualquiera de las versiones anteriores del API, ofreciendo un significativo salto evolutivo que permitirá a los juegos aprovechar modernas tecnologías así como un nuevo conjunto de características y funciones destinadas a ofrecer mayor calidad gráfica y un eficiente uso de los recursos.

Entre las novedades de DirectX3D podemos mencionar:

  • Soporte a multi-procesamiento paralelo masivo (adiós dependencia del procesamiento serial “Mono-hilo”).
  • Mejor balance de carga (el procesamiento de los comandos gráficos se reparte equitativamente entre los múltiples hilos de procesamiento del microprocesador).
  • Menor sobrecarga del controlador gráfico (ejecución de mayor número de comandos de dibujo en simultáneo).
  • Nuevo y eficiente pipeline de renderizado (con nuevas versiones de algoritmos: order-independent transparency, detección de colisiones y geometry culling).
  • Pipeline State Objetcs (tubería de comandos gráficos dinámica y paralela entre el hardware y el controlador gráfico, permite el procesamiento de un mayor número de comandos gráficos simultáneamente).
  • Command List and Bundles (pre-procesado eficiente y paralelo de listas de comandos y paquetes de instrucciones gráficas, reduce el número de ciclos y uso del CPU requeridos en el procesamiento de instrucciones gráficas).
  • Descriptor Heaps and Tables (unidad de hardware Descriptor enfocada a la administración de la “línea de tiempo” usada en la presentación jerárquica de los múltiples y diversos puntos de vista de los recursos usados por cada petición de dibujo, lo que ahorra recursos e incrementa el rendimiento al eliminar la copia innecesaria de objetos y pasos intermedios).
  • Indexación dinámica de recursos en Shaders (mayor flexibilidad en el procesamiento de comandos, logrando una eficiencia 100 veces superior; lo que a su vez permite nuevas técnicas de presentación).
  • Conservative Rasterization (culling de objetos y detección de colisiones mejoradas, las que ahora se ejecutan completamente en el GPU, ofreciendo un rendimiento significativamente superior).
  • Nuevos modos de blending (Aún no detallados por Microsoft).
  • Nuevo y robusto conjunto de herramientas para desarrolladores.

Sistemas operativos compatibles

Aunque DirectX 12 llegará inicialmente con el futuro sistema operativo Windows 9, Microsoft está trabajando muy duro en implementarlo también en Windows 8.1/8 y Windows 7 (lamentablemente Windows Vista y anteriores no soportarán esta nueva API).

GPUs compatibles con DirectX 12

En este punto tenemos buenas y malas noticias para los usuarios, en primer lugar, aunque muchos GPUs DirectX 11 actuales serán parcialmente compatibles con el API (algunas funciones vía hardware como la abstracción a bajo nivel y la mejor administración del CPU; otras vía emulación por software “Tier 1 y Tier 2”, como sus nuevos efectos gráficos); para aprovechar todas las bondades que ofrecerá el nuevo API (Microsoft aún no las ha revelado completamente) se requerirán de nuevos GPUs DirectX 12 con hardware que siga las directrices del futuro API (Tier 3).

De momento tenemos que los siguientes GPUs son parcialmente (DirectX 12 Tier Level1 y/o Tier Level 2) compatibles con DIrectX 12:

  • AMD Graphics Core Next 1.0 1.1, 2.0 (Hardware Level 11, 11.1 y 11.2).
  • Intel: Haswell Graphics y superiores (Hardware Level 11).
  • Nvidia: Maxwell, Kepler y Fermi (Hardware Level 11).
  • Qualcomm Adreno DirectX 11.

Los GPUs 100% compatibles por hardware (Tier 3) con el nuevo API serán:

  • AMD Graphics Core Next 3.0 “Pirate Islands” (Radeon R 300 Series) y superiores.
  • Intel Braswell Graphics (Core de sexta generación) y superiores.
  • Nvidia Volta (GeForce 900 Series) y superiores.

DirectX 12 vs Mantle

Hace algunos días se rumoreaba que DirectX 12 era en realidad una versión renombrada del API gráfica Mantle, rumor que si bien no ha sido desmentido ni confirmado por ninguna de las empresas implicadas en el desarrollo de ambas APIs, podemos deducir que termina siendo falso.

Los motivos que me llevan a deducir la falsedad de este rumor los resumimos en la siguiente tabla:

Guiándonos por lo poco revelado por Microsoft, aparentemente Mantle pareciera ofrecer características superiores a Direct3D 12 en cuanto a la administración de múltiples hilos de procesamiento, pero DirectX 12 parece superarlo en cuanto a nuevas características gráficas, las que requieren nuevas unidades de hardware sólo presentes en los futuros GPUs DirectX 12.

En conclusión, en definitiva DirectX 12 ofrecerá un mayor número de características por hardware y un mayor rendimiento que el que actualmente ofrece Mantle (quizá AMD esté preparando un hipotético Mantle 2.0 que explote las características adicionales de sus futuros GPUs DirectX Pirate Islands “Graphics Core Next 3.0).

La buena noticia es que muchos GPUs actuales soportarán algunas de las funciones de acceso a bajo nivel, rendimiento mejorado y menor dependencia del CPU de DirectX 12; pero muchas nuevas funciones y características gráficas del API requerirán de nuevo hardware. En cuanto a Mantle, los GPUs AMD GCN (Graphics Core Next) soportan desde ya todas sus características.

Links:

También pueden comentar en nuestro foro.