vkd3d 1.11 llega con soporte inicial para compilar código de bytes Direct3D, DXIL, mejoras y mas
El proyecto Wine dio a conocer hace pocos días el lanzamiento de la nueva versión del paquete vkd3d 1.11, versión en la cual se han introducido mejoras en el uso de extensiones vulkan, asi como mejoras de soporte, nuevas funciones y más.
Para quienes desconocen de Vkd3d, deben saber que este es un paquete que ofrece una implementación de Direct3D 12 utilizando llamadas a la API de gráficos Vulkan e incluye varias bibliotecas clave. La biblioteca libvkd3d contiene implementaciones de Direct3D 12, cubriendo una amplia gama de funciones como informáticas y gráficas, colas y listas de comandos, identificadores, entre otras.
También se proporciona la biblioteca libvkd3d-shader la cual ofrece un traductor para modelos de sombreador 4 y 5 a una representación SPIR-V intermedia. Esta biblioteca soporta sombreadores de vértices, píxeles, teselación, computación y geometría simple, así como serialización y deserialización de firmas root.
¿Qué hay de nuevo en vkd3d 1.11?
Vkd3d 1.11 introduce un soporte inicial para compilar código de bytes Direct3D heredado en una representación intermedia de sombreadores SPIR-V, asi como también el soporte inicial con el compilador HLSL para compilar perfiles de efectos.
Otra de las mejoras que se presenta de esta nueva versión, es el soporte experimental para compilar DXIL (lenguaje intermedio DirectX) en la representación SPIR-V, proporcionando nuevas opciones para el desarrollo de aplicaciones Direct3D. Esta característica requiere compilar vkd3d con la opción de preprocesador ‘-DVKD3D_SHADER_UNSUPPORTED_DXIL‘ y se considera experimental.
Tambien se ha optimizado el uso de grupos y conjuntos de descriptores cuando están disponibles las extensiones VK_EXT_mutable_descriptor_type y VK_EXT_shader_viewport_index_layer, que se proporciona para mejorar la eficiencia del trabajo con el grupo de descriptores y acelerar la representación de matrices de sombreadores de vértices y teselación.
Se ha implementado la compatibilidad con colores de borde estándar, como blanco y negro y se ha implementado el método GetResourceAllocationInfo1() de la interfaz ID3D12Device4, así como el soporte para las interfaces ID3D12Device7 e ID3D12Resource2.
Se admiten varias consultas de funciones nuevas, incluyendo D3D12_FEATURE_D3D12_OPTIONS6 a D3D12_FEATURE_D3D12_OPTIONS13.
Se han implementado nuevas opciones de compilación: VKD3D_SHADER_COMPILE_OPTION_FEATURE se puede utilizar para
especificar las funciones disponibles en el entorno de destino, mientras que VKD3D_SHADER_COMPILE_OPTION_FEATURE_INT64 indica compatibilidad con
los tipos de enteros de 64 bits en el entorno de destino SPIR y VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64 indica compatibilidad con
tipos de punto flotante de 64 bits en el entorno de destino SPIR-V.
De los demás cambios que se destacan de esta nueva versión:
- Las actualizaciones de descriptores ahora ocurren de forma asincrónica en un hilo de trabajo interno, lo que mejora el rendimiento en aplicaciones que actualizan muchos descriptores por cuadro.
- Se han agregado nuevas características para el tipo de objetivo SPIR-V, incluyendo soporte para vistas de acceso desordenado globalmente coherentes, barreras de visualización de acceso desordenado de grupos de subprocesos y más.
- Se admite la interfaz ID3D12Device7.
- La versión mínima requerida de Vulkan-Headers para esta versión es la versión
1.3.228. - Se admite la interfaz ID3D12Resource2.
- Se admiten varias consultas de funciones nuevas:
– D3D12_FEATURE_D3D12_OPTIONS6
– D3D12_FEATURE_D3D12_OPTIONS7
– D3D12_FEATURE_D3D12_OPTIONS8
– D3D12_FEATURE_D3D12_OPTIONS9
– D3D12_FEATURE_D3D12_OPTIONS10
– D3D12_FEATURE_D3D12_OPTIONS11
– D3D12_FEATURE_D3D12_OPTIONS12
– D3D12_FEATURE_D3D12_OPTIONS13 - Las funciones intrínsecas acos(), asin(), atan() y atan2() ya son soportadas.
- Asignación de registro explícita usando la palabra clave ‘register()’
- Conversion de de tipos enteros a puntos flotantes en perfiles del modelo de sombreador 1-3.
Para los interesados en poder conocer más al respecto, deben saber que el código del proyecto se distribuye con licencia bajo LGPL 2.1 y pueden consultar los detalles de este nuevo lanzamiento en el siguiente enlace.
¿Como instalar vkd3d 1.11?
Para los interesados en poder instalar vkd3d deben saber que deben realizar la compilación del código fuente, por lo que primero debemos de obtenerlo, es importante mencionar que Vkd3d depende de SPIRV-Headers y Vulkan-Headers (>= 1.3.228).
La compilación es bastante sencilla y para ello debemos abrir una terminal en la cual vamos a teclear el siguiente comando:
git clone https://gitlab.winehq.org/wine/vkd3d.git
Procedemos a ingresar a la carpeta donde se descargó con:
cd vkd3d
Y procedemos a realizar la compilación ejecutando los siguientes comandos:
./configure make make install
Si quieres conocer más al respecto sobre la compilación de vkd3d puedes consultar los detalles en este enlace.