Pages

Showing posts with label Direct X 12. Show all posts
Showing posts with label Direct X 12. Show all posts

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 setup_dxvk.sh 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.
 

Thursday, November 10, 2022

DXVK version 2.0 has been released with improved driver compatibility

A Vulkan 1.3 capable driver and wine version are required to run this version of DXVK. See the driver support page for details.

Many features in this release, especially the shader compilation changes detailed below, require the use of modern Vulkan features, such as Dynamic Rendering, Extended Dynamic State, and Null Descriptors. Due to the significant changes required to make use of them, it was no longer practical to maintain and test code paths for older drivers which do not support these features.


In practice, any system capable of running D3D11 and D3D12 games using Proton Experimental right now will be able to run DXVK 2.0.

Note: Third-party Vulkan layers that were not updated for Vulkan 1.3 will no longer work.

D3D9 changes

Memory management improvements

In order to reduce the likelihood of running out of address space in 32-bit D3D9 games, DXVK will now use memory-mapped files to store shadow copies of textures. This allows us to unmap memory that is not being used by the game, thus freeing up significant amounts of address space, up to several hundred Megabytes. See PR #2663 for implementation details.

Note: This change does not affect 64-bit games since address space is not a concern there. It also does not affect D3D10 or D3D11 since resource uploads work differently in those APIs and are much more memory efficient.

Render target feedback loops

On drivers which support VK_EXT_attachment_feedback_loop_layout, reading from an active render target in D3D9 games is now properly supported, which previously caused rendering artifacts on newer AMD hardware and required driver-level workarounds. This affects a number of games, including GTA IV.

Alpha test improvements

The D3D9 alpha test implementation was changed to more closely match the behaviour of Nvidia's implementation, which fixes inaccuracies in various games. The d3d9.alphaTestWiggleRoom option was removed, and games that previously required this option should now work correctly by default.

D3D10 changes

DXVK previously shipped incomplete implementations of d3d10.dll and d3d10_1.dll, but has not installed them by default since Version 1.6 since wine's implementation provides more features that are needed for D3D10 games to run, including the D3D10 Effects framework.

Since our implementation is incomplete and has not been used by Proton or Lutris for a very long time, DXVK will no longer ship these DLLs starting with this release. The D3D10 API itself is still supported via d3d10core.dll.

D3D11 changes

Feature support

DXVK now exposes D3D11 Feature Level 12_1 with the following newly added features:

  • Tiled Resources up to Tier 3, provided that the corresponding Vulkan sparse binding and sparse residency features are supported
  • Conservative Rasterization up to Tier 3, provided that the corresponding Vulkan conservative rasterization features are supported.
  • Rasterizer Ordered Views, provided that the corresponding Vulkan fragment shader interlock features are supported.

While no games are known to use these features directly in D3D11, some games and game launchers rely on feature support being consistent between D3D11 and D3D12 in order to allow users to enable D3D12 in the game options. While our implementation of these feature is generally functional, there may be bugs or performance issues in case a game does use them.

Furthermore, DXVK now supports the D3D11_FEATURE_SHADER_CACHE and D3D11_FEATURE_D3D11_OPTIONS5 feature queries.

Note: AMD Vulkan drivers do currently not support fragment shader interlock and are limited to feature level 12_0.

Note: Intel's ANV driver currently does not support the corresponding Vulkan features and is therefore limited to feature level 11_1. This applies to both DXVK and vkd3d-proton.

Device contexts

The implementations of ID3D11DeviceContext were refactored so that immediate contexts and deferred contexts no longer use common entry points. This is closer to Windows behaviour and may improve compatibility to third-party libraries and mods that hook into the D3D11 immediate context specifically, and reduces CPU overhead since some frequently used code paths are now more specialized for each context type.

State clear and restore methods were optimized to further reduce CPU overhead in games that heavily use deferred contexts, e.g. Assassin's Creed: Origins, or explicitly call ClearState frequently, e.g. God of War.

Shader compilation changes

On drivers which support VK_EXT_graphics_pipeline_library, including the IndependentInterpolationDecoration feature, Vulkan shaders will now be compiled at the time the game loads its D3D shaders, rather than at draw time. This reduces or eliminates shader compile stutter in many games.

In games that load their shaders during loading screens or in the menu, this can lead to prolonged periods of very high CPU utilization, especially on weaker CPUs. For affected games it is recommended to wait for shader compilation to finish before starting the game to avoid stutter and low performance. Shader compiler activity can be monitored with DXVK_HUD=compiler.

Note: The relevant Vulkan features are currently only supported by Nvidia drivers (version 520.56.06 or later). Driver support is expected to improve in the future.

State cache interactions

This feature largely replaces the state cache. If the given Vulkan features are supported, only pipelines that cannot use the pipeline library feature (e.g. pipelines using tessellation shaders) will be written to and read from the state cache, so newly created state cache files will typically only contain a few dozen to a few hundred pipelines, as opposed to thousands or tens of thousands. If the graphics pipeline library feature is not supported, the state cache will be used the same way as it was in older DXVK versions.

Note: State cache files created with DXVK versions prior to 1.4.3 can no longer be used.

Note: Despite our efforts, due to the significant changes under the hood, there may be issues when using an older state cache file under some circumstances. If you experience crashes, please test if the game runs with a clean cache file (DXVK_STATE_CACHE=reset) before reporting a bug.

Caveats

  • Games which only load their D3D shaders at draw time (e.g. Witcher 3, most Unreal Engine games) will still exhibit some stutter, although it should still be less severe than without this feature.
  • For 32-bit games, the implementation tries to aggressively free Vulkan pipelines in order to save memory. This may cause stutter if the driver's on-disk shader cache is not working properly.
  • On Nvidia drivers, the on-disk shader cache will be significantly larger than with previous versions of DXVK. It may be necessary to bypass the size limit by setting the environment variable __GL_SHADER_DISK_CACHE_SKIP_CLEANUP=1, or setting a new limit manually via __GL_SHADER_DISK_CACHE_SIZE (in bytes).

Linux build support

Work from dxvk-native has been upstreamed in order to facilitate native Linux builds of DXVK, which can be used as a drop-in replacement to port D3D applications without having to change rendering code.

Note: When porting a D3D11 application, please refer to the Feature support and Developer Guidelines pages on the Wiki to avoid hitting unsupported or slow code paths in DXVK.

Repository changes

As part of cleaning up the repository, test applications that were of limited usefulness, as well as our custom d3dcompiler frontends, have been moved to the new dxvk-tests repository.

Vulkan and SPIR-V headers are now pulled in as submodules from the original repositories. This changes how the repository needs to be cloned and updated, or otherwise building DXVK will fail:

git clone --recursive https://github.com/doitsujin/dxvk.git

# Run the following command to make git pull
# automatically pull in submodule updates
cd dxvk
git config submodule.recurse true

The project wiki was also updated and expanded to be more useful.

Bug fixes and Improvements

  • Improved behaviour of DXGI waitable swap chains.
  • Improved implementation of DXGI frame statistics.
    Note: The implementation is still not accurate, especially in scenarios with multiple displays or if variable refresh rate is used.
  • Removed limitations on how many resources can be bound at the same time.
  • Removed several workarounds for specific Vulkan drivers or driver versions. This is primarily relevant for Steam's shader pre-caching, as the generated shader code no longer diverges as much depending on the driver version and supported feature set.
  • D3D11 shaders now use the Vulkan memory model in order to more accurately implement UAV coherency rules in compute shaders.
  • Fixed various issuses with the D3D11.3 WriteToSubresource and ReadFromSubresource methods.
  • Fixed various float emulation issues in D3D9 applications.
  • Fixed seamless cube map filtering in D3D9 applications (PR #2889).
  • Fixed issues when rendering to DXGI_FORMAT_A8_UNORM (D3D11) or D3DFMT_A8 (D3D9) render targets with blending enabled.
  • Fixed a bug with dual-source blending when multiple render targets are bound, which could lead to unpredictable results. This affects Elex 2 and potentially other games.
  • Fixed memory allocation logic on Intel integrated graphics.
  • Changed behaviour of the DXVK_STATE_CACHE environment variable, see the README for details.
  • Changed the DXVK_PERF_EVENTS environment variable to DXVK_DEBUG, see the README for details.
  • Alan Wake: Fixed a regression that caused grey rectangles to appear on screen on AMD GPUs. (#2834, PR: #2835)
  • Alice Madness Returns: Fixed an issue with flashing bright spots. (PR: #2939)
  • Anomaly: Warzone Earth: Fixed a deadlock when starting the game. (#1650, PR: #3035)
  • Beyond Good and Evil: Enabled 60 FPS limit to work around game bugs. (PR #2828)
  • Dragon Age Origins: Work around an out of memory issue when alt tabbing out of the game. (#3022, PR: #3023)
  • Empire: Total War: Fixed rendering. (#3017, PR #3018)
  • Final Fantasy XV: Improved performance when VXAO is enabled.
  • Grand Theft Auto IV: Disabled support for DF texture formats to make the game render mirrors in higher quality.
  • Heroes Of Annihilated Empires: Fixed crash. (#2879)
  • Limit King Of Fighters XIII: Enabled 60 FPS limit to work around game bugs. (#2647, PR #2831)
  • Metal Gear Solid V: Ground Zeroes: Work around texture streaming issues on GPUs with 4 GiB or more VRAM. (PR #2867)
  • SiN Episodes: Emergence: Work around an out-of-memory issue caused by the game creating an infinite number of textures. (PR #2907)
  • Sonic Generations: Improved performance by reducing GPU synchronization. (PR: #3009)
  • Spider Man: Shattered Dimensions: Fixed a lighting issue. (#2780, PR: #2782)
  • The Ship: Work around an out-of-memory issue caused by the game creating an infinite number of textures. (#2893, PR #2896)
  • Warhammer Online: Enabled 100 FPS limit on 64-bit executable to work around game bugs. (PR #2902)
  • Ys Seven: Fixed a regression that caused the game to only render a black screen. (PR: #2873)

Special thanks to @Blisto91 for doing a significant amount of testing during development.

Link to source code

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

 

Wednesday, June 22, 2022

Vkd3d 1.4 Released

The Wine team is proud to announce that release 1.4 of vkd3d, the Direct3D to Vulkan translation library, is now available.

This release contains improvements that are listed in the release notes. The main highlights are:

  • Many improvements to the HLSL compiler.
  • A new descriptor heap implementation using the VK_EXT_descriptor_indexing extension.
  • A new fence implementation using the VK_KHR_timeline_semaphore extension.

The source is available here.


Friday, April 22, 2022

Proton 7.0-2 has been released

  • Now playable:
    • Atelier Ayesha
    • Devil May Cry HD Collection
    • Dragon Quest Builders 2
    • A Way Out
    • Fall in Labyrinth
    • King of Fighters XIII
    • Montaro
    • ATRI -My Dear Moments-
    • Guilty Gear Isuka
    • INVERSUS Deluxe
    • Metal Slug 2 and 3 and X
    • One Shot and One Shot: Fading Memory
    • Call of Duty Black Ops 3
    • Saint Seiya: Soldiers' Soul
    • Medieval Dynasty
    • Bright Memory: Infinite
    • Double Dragon Trilogy
    • Baseball Stars 2
    • Elden Ring

 


  • Fix The Last Campfire not starting on the Steam Deck.
  • Fix STAR WARS Jedi Knight - Jedi Academy not displaying anything on the Steam Deck.
  • Fix Unity games crashing on launch with certain peripherals connected (e.g. Logitech's Unifying Receiver).
  • Fix Microsoft Flight Simulator crashing after a recent game update.
  • Fix Quake Champions crashing after a recent game update.
  • Fix multiplayer in UNO.
  • Fix some older games including Deus Ex GOTY, Prey 2006, Quake 4 and Chaser having visible banding especially in shadows compared to older Protons.
  • Fix Swords of Legends Online performance regression.
  • Fix video playback in Atelier Meruru, Cook-out, DJMAX RESPECT V, Gloomhaven, Haven, Rust, Rustler, The Complex, TOHU, Monster Train, Hardspace: Shipbreaker, Car Mechanic Simulator 2021, Nine Sols Demo.
  • Fix DiRT Rally 2 and DiRT 4 not being able to connect to the game server.
  • Fix Cyberpunk 2077 crashing with 4.0 audio setups.
  • Fix random hang on exit in Little Nightmares 2.
  • Fix Civilization VI and Chicken Invaders Universe crashing a few minutes into the game.
  • Fix Assassin's Creed Odyssey displaying unsupported driver warning in the overlay.
  • Fix Persona 4 Golden lacking audio in the cutscenes.
  • Fix low Forza Horizon 5 performance with fsync enabled.
  • Fix Uplay / Ubisoft Connect reliably failing to update with fsync enabled.
  • Fix STAR WARS: Squadrons displaying warning about outdated drivers.
  • Fix Devil May Cry 5 and Capcom Arcade Stadium crashing when scrolling through videos too quickly.
  • Fix GTA V randomly crashing on certain window managers.
  • Fix Teardown randomly crashing.
  • Fix Melty Blood: Type Lumina hanging on the intro video.
  • Fix Arma 3 launcher.
  • Fix VR Chat not handling suspend / resume well.
  • Fix Vampyr and The Beast Inside displaying menus a few pixels wide on Steam Decks.
  • Fix Apex Legends sometimes starting minimized on Steam Decks.
  • Fix Quake Live being unable to connect to multiplayer matches.
  • Fix Killing Floor 2 not connecting to the item server.
  • Fix Xbox login window lagging with updating window's content.
  • Fix Horizon Zero Dawn running in slowmotion.
  • Fix Age of Chivalry crashing when starting a match.
  • Fix Ride 3 having horizontally squished main menu on the Steam Deck.
  • Fix Chrono Trigger intro video stutter.
  • Fix Divinity: Original Sin - Enhanced Edition crash on resolution or vsync change.
  • Update dxvk to v1.10.1.
  • Update vkd3d-proton to v2.6.
  • Update dxvk-nvapi to v0.5.3

 Link to source code

MacOS and Windows software bundles, save up to 90% off the normal retail price only at BundleHunt.
 

 

Wednesday, March 2, 2022

Vkd3d 1.3 Released

The Wine team is proud to announce that release 1.3 of vkd3d, the Direct3D to Vulkan translation library, is now available.

This release contains improvements that are listed in the release notes. The main highlights are:

  • Initial HLSL compilation support.
  • Shader model 5.1 descriptor array support.
  • Support for disassembling Direct3D shaders.

The source is available here.


Wednesday, February 16, 2022

Proton 7.0-1 has been released

  • The following games are now playable:
    • Anno 1404
    • Call of Juarez
    • DCS World Steam Edition
    • Disgaea 4 Complete+
    • Dungeon Fighter Online
    • Epic Roller Coasters XR
    • Eternal Return
    • Forza Horizon 5
    • Gravity Sketch VR
    • Monster Hunter Rise
    • NecroVisioN
    • Nights of Azure
    • Oceanhorn: Monster of the Uncharted Seas
    • Order of War
    • Persona 4 Golden
    • Resident Evil 0
    • Resident Evil Revelations 2
    • Rocksmith 2014 Edition
    • SCP: Secret Laboratory
    • Wargroove
    • Wartales
    • Yakuza 4 Remastered


  • Added support for EasyAntiCheat if the game has enabled a Linux module.
  • Added support for local decoding of H264 videos.
  • Fix Sea of Thieves' voice chat.
  • Fix Sea of Thieves getting stuck on "locating fresh supplies" when joining multiplayer.
  • Improve Steam Input controller support for games running via Origin.
  • Fix Beacon crashing when getting into daily/weekly challenge.
  • Improve audio support in Skyrim and Fallout 4.
  • Fix flickering in Mount & Blade II: Bannerlord launcher.
  • Fix Age of Empires IV and Marvel's Avengers displaying graphics drivers warnings.
  • Fix audio in Mass Effect 1 from Mass Effect Legendary Edition.
  • Improve Runescape stability.
  • Fix quick save in Castlevania Advance Collection.
  • Improve Paradox Launcher support.
  • Fix Pathfinder: Wrath of the Righteous hang on exit.
  • Fix Far Cry regression - the game is playable again.
  • Fix Doom Eternal's multiplayer.
  • Various performance improvements around input, windowing, and memory allocation that were previously in Experimental.
  • Update Wine to 7.0.
  • Update DXVK to 1.9.4.
  • Update vkd3d-proton to 2.5-146-g33f17cc7.
  • Update wine-mono to 7.1.2.

Link to source code

MacOS and Windows software bundles, save up to 90% off the normal retail price only at BundleHunt.
 

Thursday, October 19, 2017

The WineHQ Wine development release 2.19 is now available for Linux and Mac

The WineHQ Wine development release 2.19 is now available for Linux and Mac

What's new in this release:
  • Support for 32-bit float audio on Android.
  • Named pipes now fully handled by the Wine server.
  • Support for a new Microsoft root certificate.
  • More transform fixes in GdiPlus.
  • Some heap allocation optimizations.
  • Various bug fixes.
The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.


Bugs fixed in 2.19 (total 16):

   7369  eISLP -help doesn't display, 'text controller' error message
  14530  EM_PASTESPECIAL unimplemented in richedit
  33841  Paint.NET 3.5.10 fails to start
  35372  iTunes 11.1.x shows distorted UI (no text drawn, missing ui controls)
  37251  WiX Toolset v3.8 installer doesn't open with Wine-Mono (unimplemented corruntimehost_CreateDomainEx)
  37637  CreateNamedPipe,  ReadFile, PIPE_WAIT or BufferSize problem
  43044  League of Legends needs function msvcp140.dll.?__ExceptionPtrAssign@@YAXPAXPBX@Z
  43163  Mixcraft 8 crashes when adding a video track ('IAMTimelineGroup', '{9eed4f00-b8a6-11d2-8023-00c0df10d434}' not implemented, 'qedit.dll')
  43261  Error when starting the game Farming Simulator 15
  43776  .NET 4.0 installer spams with error message boxes
  43777  redefinition of typedef ‘REFERENCE_TIME’ (gcc-4.2)
  43805  Regedit.exe crashes when exporting certain registry keys e.g. "HKLM\Software\Classes\steam"
  43829  DigitalSpace Traveler: Unhandled page fault on read access
  43830  Enterprise Architect no longer loads symbols when debugging.
  43860  Microsoft DirectX 9.0c Redistributable (June 2010) installer crashes
  43877  "Cannot allocate DOS memory" error with 16-bit Windows applications

MacOS and Windows software bundles, save up to 90% off the normal retail price only at BundleHunt.