El proyecto Wine ha publicado el lanzamiento del paquete vkd3d 1.14 con una implementación de Direct3D 12 que funciona mediante llamadas de difusión a la API de gráficos Vulkan. El paquete incluye bibliotecas libvkd3d con implementaciones de Direct3D 12, libvkd3d-shader con un traductor de los modelos de sombreado 4 y 5 y libvkd3d-utils con funciones para simplificar la migración de aplicaciones Direct3D 12, así como un conjunto de ejemplos de demostración, incluido un puerto. de glxgears a Direct3D 12. El código del proyecto se distribuye con licencia LGPLv2.1.
La biblioteca libvkd3d admite la mayoría de las funciones de Direct3D 12, incluidas funciones de cálculo y gráficos, colas y listas de comandos, identificadores y identificadores de montón, firmas raíz, acceso desordenado, muestras, firmas de comandos, constantes raíz, renderizado indirecto, métodos Clear *( ) y Copiar*(). libvkd3d-shader implementa la traducción del código de bytes de los modelos de sombreado a una representación SPIR-V intermedia. Admite sombreadores de vértices, píxeles, teselación, computación y geometría simple, serialización y deserialización de firmas de raíz. Las instrucciones de sombreado incluyen operaciones aritméticas, atómicas y de bits, operadores de comparación y control de flujo de datos, instrucciones de muestreo, recopilación y carga, operaciones de acceso desordenado (UAV, vista de acceso desordenado).
Versículos nuevos:
- Se agregó soporte inicial para el lenguaje de sombreado MSL (Metal Shading Language) utilizado por Apple en la API de gráficos Metal.
- Se implementó soporte de desensamblador para efectos binarios.
- La biblioteca libvkd3 implementa el método OMSetDepthBounds() en la interfaz ID3D12GraphicsCommandList1 para cambiar dinámicamente el rango permitido de valores de profundidad en el búfer Z.
- Se agregó la variable de entorno VKD3D_CAPS_OVERRIDE para anular la información proporcionada a las aplicaciones sobre las capacidades disponibles, como los niveles máximos admitidos de funcionalidad y enlaces de recursos.
- Se agregó soporte inicial para sombreadores de teselación a la implementación del lenguaje de sombreado HLSL. Funciones integradas implementadas dst(), f32tof16(), mad(), modf() y sincos(). Para los modelos de sombreador de perfiles 1, 2 y 3, se agregó soporte para la operación "descartar". Se agregó soporte para la semántica de datos de entrada SV_SampleIndex para sombreadores de fragmentos y SV_GroupIndex para sombreadores de cálculo.
- Se ha implementado una gran parte de nuevas instrucciones para el lenguaje de sombreado GLSL.
Fuente: opennet.ru
