Wine project released Vkd3d 1.2 with Direct3D 12 implementation

Wine Project ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» package release vkd3d 1.2 with a Direct3D 12 implementation working through call translation to the Vulkan graphics API. The package includes libvkd3d libraries with Direct3D 12 implementations, libvkd3d-shader with shader model translator 4 and 5, and libvkd3d-utils with functions to simplify porting Direct3D 12 applications, as well as a set of demos, including a port of glxgears to Direct3D 12. Project code spreads licensed under LGPLv2.1.

libvkd3d library supports the most of the Direct3D 12 features, including graphics and compute tools, command queues and lists, descriptors and heap descriptors, root signatures, unordered access, Samplers, command signatures, root constants, indirect rendering, Clear*() methods and Copy*().

libvkd3d-shader implements translation of bytecode 4 and 5 of shader models into an intermediate representation of SPIR-V. Supports vertex, pixel, tessellation, compute and simple geometry shaders, root signature serialization and deserialization. Arithmetic, atomic and bit operations, comparison and data flow control operators, sample, gather and load instructions, unordered access operations (UAV, Unordered Access View) are implemented from shader instructions.

Among the most significant innovations in Vkd3d 1.2 stand out:

  • The readiness of the libvkd3d-shader library for use in third-party projects.
  • Support for tessellation shaders.
  • Support for converting, serializing, and deserializing root signatures (vkd3d_serialize_versioned_root_signature() and vkd3d_create_versioned_root_signature_deserializer()).
  • Support for streaming output.
  • Implementation of many previously unavailable Direct3D 12 features, including support for multisampling, resource reservation,
    indirect indexed rendering, depth rendering without pixel shaders, simultaneous access to resources from different command queues, null views (Null-views).

  • Added environment variables: VKD3D_CONFIG to set options to change libvkd3d behavior and VKD3D_VULKAN_DEVICE to override device for Vulkan API.
  • Added support for bufinfo shader instructions,
    eval_centroid,
    eval_sample_index,
    ld2ms,
    sample_b,
    sample_d,
    sample_info,
    samplepos.

Source: opennet.ru

Add a comment