Desde Linux Darkcrizt  

Microsoft libero el código fuente de la capa D3D9On12 que se usa para traducir los comandos de Direct3D 9 a Direct3D 12

Se han dado a conocer buenas noticias por parte de Microsoft y es que hace poco dio a conocer mediante una publicación de blog la apertura del código fuente de la capa D3D9On12 con la implementación del dispositivo DDI (Device Driver Interface), que traduce los comandos de Direct3D 9 (D3D9) en comandos de Direct3D 12 (D3D12).

Este movimiento por parte de Microsoft permitirá ahora que sea más fácil que nunca para los desarrolladores poder realizar la transición de DirectX11 a DirectX12 para sus juegos. Y es que la capa de traducción DX12 es esencialmente una biblioteca auxiliar para traducir conceptos gráficos y comandos de un dominio de estilo DX11 a un dominio de estilo DX12.

Ha pasado un tiempo desde la última vez que mencionamos la capa de mapeo D3D9On12. Como actualización rápida, asigna los comandos D3D9 a D3D12 actuando como la interfaz de controlador de dispositivo (DDI) D3D9. Tener esta capa de mapeo permite que las aplicaciones D3D9 más antiguas se ejecuten en sistemas modernos que pueden no tener un controlador D3D9. Desde la última publicación del blog, agregamos soporte para las extensiones Alpha to Coverage, corrigimos algunos errores y limpiamos la base del código para el código abierto.

Esto sin dudas es una buena noticia y es que diversos proyectos que trabajan con la capa ahora se podrán ver beneficiados, ya que como tal permite que las aplicaciones heredadas puedan funcionen en entornos que solo admiten D3D12, es decir por ejemplo, esto puede ser útil para implementar D3D9 basado en los proyectos vkd3d y VKD3D-Proton, ya que estos ofrecen una implementación de Direct3D 12 para Linux que funciona traduciendo las llamadas D3D12 a la API de gráficos Vulkan.

D3D9On12 es una capa que mapea comandos gráficos de D3D9 a D3D12. D3D9On12 no es una implementación de la API D3D9, sino una implementación del modo de usuario D3D9 DDI (interfaz de controlador de dispositivo). Eso significa que no es un binario llamado d3d9.dll, sino que se llama d3d9on12.dll.

Cuando una aplicación crea un dispositivo D3D9, se pueden elegir que sea un dispositivo D3D9On12, en lugar de un dispositivo D3D9 nativo. Cuando esto sucede, d3d9on12.dll es cargado por el tiempo de ejecución de D3D9 y se inicializa. Cuando la aplicación llama a los comandos de renderizado, D3D9 validará esos comandos y luego convertirá esos comandos al DDI D3D9 y lo enviará a D3D9On12, como cualquier controlador D3D9.

D3D9On12 tomará estos comandos y los convertirá en llamadas a la API D3D12, que se validan aún más mediante el tiempo de ejecución de D3D12, que incluye opcionalmente la capa de depuración D3D12, que luego se convierten al DDI D3D12 y se envían al controlador D3D12.

Tambien se menciona que el proyecto se basa en el código de un subsistema similar incluido en Windows 10. Cabe señalar que la publicación del código D3D9On12 brindará una oportunidad para que los representantes de la comunidad participen en la corrección de errores y la adición de optimizaciones, y también puede servir como ejemplo para estudiar la implementación de los controladores DDI D3D9 y un marco para crear dichas capas para las traducciones de varias API de gráficos en D3D12.

¿Por qué código abierto?
D3D9On12 ha sido parte de Windows 10 durante algunos años, y durante ese tiempo ha crecido en estabilidad y uso. Hacerlo de código abierto:

Permitir que la comunidad contribuya con correcciones de errores adicionales o mejoras de rendimiento.
servir como otro ejemplo de cómo utilizar el D3D12TranslationLayer
dar a aquellos que estén interesados ​​un vistazo a cómo se ve una implementación de D3D9 DDI

Al mismo tiempo, se ha publicado un paquete DXBC Signer que permite firmar archivos DXBC arbitrarios generados por kits de herramientas de terceros. D3D9On12 usa este paquete para firmar DXBC generados al convertir sombreadores a un nuevo modelo.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles de la publicación que realizo Microsoft en su blog en el siguiente enlace.

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.