Noticia vkd3d 1.2 llega con mejoras de compatibilidad, sombreado y mas

vkd3d-wine.jpg


El proyecto Wine ha publicado una nueva versión del paquete vkd3d 1.2 con una implementación de Direct3D 12 que funciona traduciendo las llamadas a la API de gráficos Vulkan.

Esta nueva version de vkd3d 1.2 contiene diversas mejoras, pero de las principales que se destacan son la disponibilidad de libvkd3d-shader como biblioteca pública, el soporte para sombreadores de teselación, así como el soporte de salida de flujo.



El paquete incluye bibliotecas libvkd3d con implementaciones de Direct3D 12, libvkd3d-shader con traductor de shader modelo 4 y 5 y libvkd3d-utils con funciones para simplificar la migración de aplicaciones Direct3D 12, así como un conjunto de demostraciones, incluido el puerto glxgears a Direct3D 12. El código del proyecto se distribuye licenciado bajo LGPLv2.1.


La biblioteca libvkd3d admite la mayoría de las funciones de Direct3D 12, incluidas las funciones de gráficos y computación, listas y colas de comandos, descriptores y descriptores de montón, firmas raíz, acceso no ordenado, muestreadores, firmas de comandos, constantes raíz, representación indirecta, etc.

Libvkd3d-shader implementa la traducción del código de bytes 4 y 5 de los modelos de sombreado en la representación intermedia SPIR-V. Se admiten vértices, píxeles, teselación, sombreadores de geometría simple y computacional, serialización de firmas raíz y deserialización.


Las instrucciones del sombreador incluyen operaciones aritméticas, atómicas y bit a bit, operadores de control de flujo de datos y comparación, instrucciones de muestreo, recopilación y carga, operaciones de acceso no ordenado (UAV, Vista de acceso no ordenado).

En la etapa actual de desarrollo, no todas las llamadas a Direct3D 12 están implementadas y las pruebas se llevaron a cabo principalmente en un conjunto de aplicaciones de demostración. La versión no incluye características en desarrollo como soporte para teselación y sombreadores de geometría compleja, así como una serie de mejoras relacionadas con sombreadores y métodos básicos de Direct3D 12. Estas características se ofrecerán en una versión futura.

Principales novedades de Vkd3d 1.2​


De los cambios mas importantes que se presentan en la nueva version, es la disponibilidad de la biblioteca libvkd3d-shader para su uso en proyectos de terceros, pues se añadieron diversas funciones Direct3D 12, tales como:

  • Multi-sampling.
  • Recursos reservados.
  • Tasas de paso de datos de instancia.
  • API de «datos privados» para todas las interfaces.
  • Asignaciones de componentes de vista de recursos de sombreador.
  • Extensión VK_KHR_draw_indirect_count.
  • Representación predicada / condicional.
  • Representación de profundidad sin sombreador de píxeles.
  • Recorte de profundidad. Esto requiere la extensión VK_EXT_depth_clip_enable.
  • Descarte del rasterizador.
  • Mezcla de doble fuente.
  • Mapeo de recursos colocados.
  • Los métodos ReadFromSubresource () y WriteToSubresource () ID3D12Resource.
  • Acceso simultáneo a recursos de múltiples colas.
  • Vistas nulas. Es decir, vistas sin un recurso subyacente.
  • Varias consultas de soporte de funciones más.

Además de esto, también se destaca el soporte añadido para convertir, serializar y deserializar firmas root (vkd3d_serialize_versioned_root_signature () y vkd3d_create_versioned_root_signature_deserializer (), asi como también el soporte para salida de transmisión.

Otro de los cambio que se destaca es la implementación de variables de entorno: VKD3D_CONFIG para establecer opciones para cambiar el comportamiento de libvkd3d y VKD3D_VULKAN_DEVICE para anular el dispositivo para la API de Vulkan.

Además de que se agregó soporte para las instrucciones de sombreado bufinfo, eval_centroid, eval_sample_index, ld2ms, sample_b, sample_d, sample_info, samplepos y el soporte preliminar para shaders modelo 5.1.

Y también el soporte para entornos de destino OpenGL SPIR-V. Esto permite SPIR-V producido por libvkd3d-shader para ser utilizado con GL_ARB_gl_spirv. Esto incluye soporte para contadores atómicos OpenGL y muestreadores combinados.

Finalmente si quieres conocer mas al respecto sobre esta nueva version, puedes consultar la lista completa de cambios en el siguiente enlace.

¿Cómo instalar vkd3d en Linux?​


Para los que estén interesados en poder instalar vkd3d en su sistema, deberán de obtener el código fuente y proceder a realizar la compilación, aunque para fines prácticos o para aquellos novatos, pueden probar esta biblioteca sin mucho esfuerzo. Para ello solamente deben instalar lutris y dentro de las configuraciones de este.

En cuanto a los interesados en la compilación deben obtener el código con:

Código:
git clone git://source.winehq.org/git/vkd3d.git/
./autogen.sh
./configure
make
../vkd3d/configure --build=i686-pc-linux-gnu "CPPFLAGS=-m32" "LDFLAGS=-m32"

Finalmente se deberán habilitar las capas de Vulkan:

Código:
export VK_INSTANCE_LAYERS=VK_LAYER_LUNARG_standard_validation
VKD3D_CONFIG=vk_debug


qz4jyKrHg3c


Continúar leyendo...