El proyecto Wine ha publicado el lanzamiento del paquete vkd3d 1.16 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 características de Direct3D 12, incluidas las funciones gráficas y de cálculo, colas y listas de comandos, descriptores y descriptores de montón, firmas raíz, acceso no ordenado, samplers, firmas de comandos, constantes raíz, renderizado indirecto y métodos Clear*() y Copy*(). libvkd3d-shader implementa la traducción del código de bytes del modelo de sombreado en la representación intermedia SPIR-V. Se admiten sombreadores de vértices, píxeles, teselaciones, cómputo y geometría simple, serialización y deserialización de firmas raíz. Las instrucciones del sombreador 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, y operaciones de vista de acceso no ordenado (UAV).
Versículos nuevos:
- Compatibilidad con sombreadores DXIL (lenguaje intermedio DirectX) estabilizada y habilitada de forma predeterminada.
- Se ha agregado soporte inicial para sombreadores de geometría al compilador del lenguaje de sombreadores HLSL. Para los modelos de sombreado 1,2,3, XNUMX y XNUMX, se ha implementado soporte para direccionamiento indirecto, módulos y límites de valores.
- La biblioteca libvkd3d afirma ser compatible con el modelo de sombreado 6.0. La API ID3D12Device1 implementa el método SetEventOnMultipleFenceCompletion(). Se agregó soporte para la extensión Vulkan VK_KHR_zero_initialize_workgroup_memory para inicializar la memoria del sombreador a ceros. La extensión Vulkan VK_KHR_maintenance2 propuesta en la especificación Vulkan 1.1 ahora está incluida en la lista obligatoria.
- Se agregó soporte para desmontar sombreadores SPIR-V y efectos binarios "fx_2_0".
- Se agregó soporte experimental para direccionamiento indirecto de buffers persistentes en GLSL (OpenGL Shading Language).
- La implementación del lenguaje de sombreado Metal Shading Language (MSL) utilizado por Apple en la API de gráficos Metal se ha actualizado para incluir la capacidad de cargar texturas.
- Se agregó soporte para funciones HLSL integradas: AllMemoryBarrier(), AllMemoryBarrierWithGroupSync(), DeviceMemoryBarrier(), DeviceMemoryBarrierWithGroupSync(), GroupMemoryBarrier() y GroupMemoryBarrierWithGroupSync().
- Se implementaron las banderas VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY, VKD3D_SHADER_COMPONENT_INT64, VKD3D_SHADER_COMPONENT_FLOAT16, VKD3D_SHADER_COMPONENT_UINT16, VKD3D_SHADER_COMPONENT_INT16, VKD3D_SHADER_RESOURCE_DATA_NONE y VKD3D_SHADER_RESOURCE_DATA_UINT.
Fuente: opennet.ru