El proyecto Wine ha publicado la versión del paquete vkd3d 1.17 con la implementación de Direct3D 12, funcionando a través de la traducción de llamadas al API gráfico Vulkan. El paquete incluye bibliotecas libvkd3d con la implementación de Direct3D 12, libvkd3d-shader con un traductor para shaders de modelos 4 y 5, y libvkd3d-utils con funciones para facilitar 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 parte de las características de Direct3D 12, incluyendo herramientas para gráficos y cálculos, colas y listas de comandos, descriptores y descriptores de pilas, 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 de bytecode de modelos de shaders a la representación intermedia SPIR-V. Se soportan shaders de vértices, píxeles, teselación, cómputo y shaders geométricos simples, así como la serialización y deserialización de la firma raíz. Se han implementado operaciones aritméticas, atómicas y bit a bit, operadores de comparación y control de flujo, instrucciones sample, gather y load, operaciones de acceso desordenado (UAV, Unordered Access View) a partir de instrucciones de shader.
En la nueva versión:
- Se ha añadido soporte inicial para la memoria compartida de grupos de hilos en la implementación del lenguaje de shaders HLSL, se ha ampliado el soporte para shaders geométricos, y se ha añadido un analizador para recursos StructuredBuffer.
- Se ha continuado el desarrollo de la implementación del lenguaje de shaders MSL (Metal Shading Language), utilizado por Apple en el API gráfico Metal. Por ejemplo, en MSL se ha añadido soporte para bucles, direccionamiento indirecto de buffers constantes, muestreo de texturas y diversas operaciones de aritmética entera y comparación.
- En la biblioteca libvkd3d, se ha añadido el método EnumerateMetaCommands() a la implementación de la interfaz ID3D12Device5.
- Se ha añadido un nuevo tipo de shaders «tx» (VKD3D_SHADER_SOURCE_TX), utilizado para cargar shaders de procesamiento de texturas.
Fuente: opennet.ru
