Wednesday, January 25, 2023

DXVK version 2.1 has been released with HDR support

On systems supporting HDR10 color spaces, HDR can now be enabled by setting the environment variable DXVK_HDR=1, or by setting the option dxgi.enableHDR = True in the configuration file. When using vkd3d-proton 2.8 or newer, this will allow D3D12 games to detect and use the HDR10 color space if they support it.


No major Linux desktop environment currently supports HDR. In order to use this on Linux, a Gamescope session with --hdr-enabled is required. This is currently only supported under AMDGPU and requires kernel patches from the josh-hdr-colorimetry branch.

Note: D3D11 support is implemented, but not expected to work in most games as they typically require AMDAGS or NVAPI to set up HDR output, rather than using the corresponding DXGI APIs. Additionally, only Nvidia drivers are expected to work on Windows.

Shader compilation improvements

Use of pipeline libraries was extended to pipelines with tessellation or geometry shaders in order to further reduce stutter. Additionally, more features of the VK_EXT_extended_dynamic_state3 extension are leveraged to reduce stutter in some situations when MSAA is used, provided that the Vulkan driver supports them.

Note: Current development builds of RADV will expose VK_EXT_graphics_pipeline_library with the features that DXVK needs if the RADV_PERFTEST=gpl environment variable is set. Note that the implementation is not yet complete and does not support shader caching at this time, but it should generally work with DXVK.

Sample rate shading

For older games that support MSAA, the d3d9.forceSampleRateShading and d3d11.forceSampleRateShading options were added to let users enable sample rate shading for all shaders. This will have a very high impact on GPU-bound performance, but may increase overall image quality in certain games that suffer from specular aliasing or shimmering alpha-tested geometry.

Note: Games that resolve the rendered images inadequately (e.g. performing a linear resolve on HDR render targets) will likely not benefit from this option.

GLFW backend

For native Linux builds of DXVK, a GLFW backend was added as a compile-time alternative to the existing SDL2 backend. See PR #3111 for details.

Bug fixes and Improvements

  • Improved D3D11 command submission logic in order to make overall performance more consistent, and to bring DXVK's behaviour more in line with native D3D11 drivers.
  • Fixed D3D11 reference counting issues around 2D textures. (#3169)
  • Fixed Vulkan validation errors when creating DXGI_FORMAT_A8_UNORM UAVs. Note that UAVs of this format may not work as expected.
  • Fixed Vulkan validation errors that would occur when allocating dedicated image memory on Nvidia GPUs in some situations.
  • Fixed Vulkan validation errors caused by broken timeline semaphores on 32-bit Proton.
  • Worked around an issue with the Uplay overlay being stuck on screen. (#3146)
    Note that this fix does not apply to Windows as it was achieved by loading winevulkan.dll directly instead of the actual Vulkan loader.
    Note that this change will break Red Dead Redemption 2 with dxvk-nvapi prior to this commit: jp7677/dxvk-nvapi@ac00a42
  • Worked around a bug in AMD's Windows driver as well as AMDVLK that would cause numerous games to crash since DXVK 2.0. (#3172)
  • Fewer threads will be used to perform background optimization of graphics pipeines. This may result in a smoother gameplay experience on some systems. Note that this change does not affect initial shader compiling, as finishing that quickly is crucial to avoid stutter.
  • The state cache file will now only be created when the first pipeline is written to it, in order to avoid empty cache files.
    This change mostly affects D3D9 games on systems with EXT_graphics_pipeline_library support.
  • Ashes of the Singularity: Fixed performance regression caused by suboptimal descriptor set allocation.
  • Battlefield: Bad Company 2: Fixed flickering (#3078, PR #3079)
  • Cardfight!! Vanguard: Fixed rendering (PR #3068).
  • Gujian 3: Fixed rendering issues on some GPUs. (#1784)
  • Resident Evil 4 HD: Fixed invalid Vulkan usage causing a GPU hang on RADV. (PR #3089)
  • Saints Row: The Third: Fixed a severe performance issue with rain when using the D3D9 renderer. (#2473, PR #3158)
  • Sekiro: Shadows Die Twice: Fixed stuttering issues on Nvidia GPUs. (#3179)
  • Sonic Frontiers: Worked around a game bug that would cause shadows to flicker when GPU-bound.
  • Supreme Commander: Forged Alliance: Fixed a crash after loading (#3058, PR #3060)

Note: The setup script was no longer deemed useful and got removed. This change will only affect users who manually install DXVK into a wine prefix, rather than using it through Proton or Lutris.

Note: Due to changes to our DXGI implementation, older versions of vkd3d-proton (prior to 2.8) will no longer work with this version of DXVK.

Link to source code

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

No comments: