El proyecto Wine ha publicado la versión del paquete vkd3d 1.5 con la implementación de Direct3D 12, que funciona a través de la traducción de llamadas al API gráfico Vulkan. El paquete incluye las bibliotecas libvkd3d con la implementación de Direct3D 12, libvkd3d-shader con traductor para modelos de shaders 4 y 5, y libvkd3d-utils con funciones para simplificar la portación de aplicaciones Direct3D 12, así como un conjunto de ejemplos de demostración, incluyendo el puerto de glxgears a Direct3D 12. El código del proyecto se distribuye bajo la licencia LGPLv2.1.
La biblioteca libvkd3d soporta la mayoría de las capacidades de Direct3D 12, incluyendo herramientas para gráficos y computación, colas y listas de comandos, descriptores y descriptores de heaps, firmas raíz, acceso desordenado, Samplers, firmas de comandos, constantes raíz, renderizado indirecto, métodos Clear*() y Copy*().
En libvkd3d-shader se ha implementado la traducción del bytecode de los modelos de shaders 4 y 5 a la representación intermedia SPIR-V. Se soportan shaders de vértices, píxeles, tesselación, computación y simples geométricos, así como la serialización y deserialización de la firma raíz. De las instrucciones de shader se han implementado operaciones aritméticas, atómicas y bit a bit, operadores de comparación y control de flujo, instrucciones de sample, gather y load, operaciones de acceso desordenado (UAV, Unordered Access View).
En la nueva versión:
- Se han realizado numerosas mejoras en el compilador de shaders en HLSL (High-Level Shader Language), disponible desde DirectX 9.0. Entre ellas, se ha mejorado el soporte para tipos de objetos HLSL en estructuras y arrays, como Texture2D, se ha añadido soporte para las funciones incorporadas dot(), ldexp() y lerp(), y para los modelos de shaders 4 y 5 se ha añadido soporte para los operadores lógicos 'and', 'or' y 'not', así como la posibilidad de conversión para tipos booleanos.
- Se ha implementado la opción VKD3D_SHADER_COMPILE_OPTION_TYPED_UAV para cargar la vista de acceso desordenado (UAV) para formatos de múltiples componentes en SPIR-V (DXGI_FORMAT).
Fuente: opennet.ru
