Microsoft ha lanzado una nueva versión de su compilador opensource, Shader DirectX, en donde se mejora la interoperabilidad entre DirectX y Vulkan al emplear el Shader Model 6.9. Lo interesante de este lanzamiento son las mejoras a nivel del backend de SPIR-V, lo cual indica que los de Redmond cumplirán con su promesa de que DirectX adoptará la especificación abierta SPIR-V en la próxima gran actualización de Shader Model 7.

¿Por qué resulta tan relevante la especificación SPIR-V?
A diferencia de las CPU, las cuales funcionan bajo arquitecturas comunes, las GPU no han corrido con la misma suerte. Es por ello que una aplicación compilada de hace más de 10 años no tiene el mismo nivel de portabilidad al correrla en un dispositivo reciente. Caso contrario sucede a nivel de la CPU, donde el nivel de portabilidad se mantiene. Como una solución, Microsoft desarrolló DirectX Intermediate Language (DXIL), el cual ofreció una representación interna simplificada para que las GPU pudieran optimizar formatos de códigos de bits. Sin embargo, esta implementación tenía varias deficiencias, como una mala compresión de textura, y no era muy compatible con otras herramientas.
Como solución definitiva, el grupo Khronos (quien desarrolla Vulkan, OpenCL y OpenGL, entre otras API gráficas abiertas) desarrolló el estándar SPIR-V, el cual, además de soportar una serialización binaria muy estable y simple, es compatible con una gran variedad de herramientas, incluyendo las propietarias de Microsoft. Al tener una gran adopción, Microsoft anunció en 2014 que DirectX 12 adoptaría el estándar abierto SPIR-V con la próxima versión de Shader Model 7.
Microsoft destaca las mejoras de interoperabilidad con los controladores de Vulkan en su reciente actualización del compilador DirectX
El día de hoy los de Redmond han publicado una nueva versión actualizada de su compilador Shader DirectX (DXC), en donde uno de los cambios más relevantes es precisamente la interoperabilidad Vulkan-DirectX. ¿Qué mejoras se implementaron en el backend del SPIR-V? Pues, de acuerdo con la nota oficial, se destacan las siguientes:
- Hay grandes mejoras en la disposición de la ABI, incluyendo las reglas de diseño escalar y la consistencia estructural.
- Se amplía el soporte para sistemas tipográficos, incluyendo plantillas y tipos basados en punteros.
- Muchas correcciones en la generación de código en funciones aritméticas, controles de flujos y acceso a recursos.
«Los cambios introducidos en esta nueva actualización mejoran la interoperabilidad con los controladores y herramientas de Vulkan, alineando el comportamiento más estrechamente con la semántica HLSL y DXIL». Señaló Microsoft.
Estos cambios no solamente implican mejoras en el soporte para Linux, sino que también «les facilitan más la vida» a los desarrolladores de controladores gráficos.
