File dxvk.changes of Package dxvk
-------------------------------------------------------------------
Sun Aug 31 15:08:24 UTC 2025 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.7.1:
+ Bug fixes and Improvements
Fixed a regression that would cause MSAA resolves to look like MSAA was not
working in a number of D3D9 games.
Improved performance in some D3D9 games by avoiding unnecessary render pass
barriers, such as Dead Space 2 (PR #5112).
Fixed the way tessellation factors are interpreted for line tessellation.
This fixes particle rendering in DCS World and potentially other issues.
(#4327)
Added the d3d9.modeCountCompatibility configuration option to work around
buffer overflows in older games that do not expect monitors to support more
than ~16 different display modes. This fixes a crash in AquaNox 2.
Alone in the Dark: Worked around a crash on start. (PR #5158)
Comanche 4: Worked around an issue where the in-game anti-aliasing option
would only be exposed on certain GeForce4 Ti GPUs.
Crysis 3: Removed GPU vendor override to work around an issue where the
game wouldn't start after recent EA app updates.
Note that this change may cause a noticeable performance regression on AMD
systems due to less efficient code paths in the game.
Dungeon Siege 2: Fixed a regression that would cause character models to
not show in the menu. (#5175)
Everybody's Gone to the Rapture: Worked around poor CPU-bound performance.
(PR #5168)
Fallout New Vegas: Added vendor override to work around an issue with the
FNV Reloaded mod using an unimplemented NVAPI function on Nvidia GPUs.
(PR #5136)
Guilty Gear: Added 60 FPS cap to work around the game speeding up at higher
frame rates. (#5142, PR #5143)
PsiOps: Added 60 FPS cap to work around broken physics at higher frame
rates. (PR #5145)
Scarface: Worked around a rendering issue caused by breaking changes in
D3D9 API behaviour.
Team Fortress 2: Fixed an MSAA-related rendering issue. (#5119, PR #5132)
The Witcher 1: Added 300 FPS cap to work around a game issue where Geralt's
hair would not render properly in the inventory menu.
Top Spin 2004: Fixed a memory leak as well as rendering issues. (PR #5155)
- Update to version 2.7.0:
+ Driver support
The Vulkan extension VK_KHR_maintenance5 is now required. DXVK has been
relying on guarantees made by this extension since version 2.5, so in order
to remove some maintenance burden, fallbacks that would allow older drivers
to run were now removed.
+ Binding model changes
Descriptor management was largely rewritten and modernized. On newer AMD
and Nvidia cards, VK_EXT_descriptor_buffer is now used by default, which
significantly reduces CPU overhead compared to the legacy binding model and
may thus improve CPU-bound performance in games such as Final Fantasy XIV,
God of War, Metaphor: ReFantazio, Watch Dogs 2 and others.
+ Memory management
Memory defragmentation is now enabled by default on Intel Battlemage and
Lunar Lake GPUs. On older Intel GPUs, this feature remains disabled as it
may cause rendering issues for unknown reasons, see #4395. On discrete
GPUs, DXVK will now enforce the driver-reported VRAM budget as much as
possible, and dynamically evict unused resources to system memory when
under memory pressure. This should improve performance in many Unity Engine
titles on VRAM-constrained systems, and may allow for higher texture
quality settings to be used in some games. Temporary slowdowns and stutters
are still expected when exceeding VRAM capacity. Note: This feature
currently does not work as intended on AMD GPUs due to kernel driver issues.
+ Legacy feature removal
The state cache was introduced in Version 0.80 to reduce shader compilation
stutter, and has been largely unused since the introduction of
VK_EXT_graphics_pipeline_library in DXVK 2.0. In order to reduce
maintenance burden, particularly with pipeline-related changes in this
release, this legacy feature was now removed.
Additionally, the d3d9.forceSwapchainMSAA option was removed. This feature
was not really useful since most games either use additional render targets
or provide a built-in MSAA option themselves anyway. For games that do not
provide built-in MSAA, users are encouraged to use Gamescope to run these
games with a higher render resolution instead.
+ Bug fixes and Improvements
Added support for planar video output views. (PR #4872).
This is required for video playback in JR EAST Train Simulator.
D3D11 shaders will now zero-initialize all variables and groupshared memory
by default in order to work around game bugs resulting in undefined
behaviour. The d3d11.zeroWorkgroupMemory option was removed accordingly.
Optimized D3D9 StretchRect in certain multisample resolve cases encountered
in Source Engine. (PR #5023)
Fixed an instance of invalid Vulkan usage in Modulus, and possibly other
Unity Engine games that use the D3D11 video API.
Implemented support for the ID3DDestructionNotifier interface.
Vulkan devices that lack the required feature support to run DXVK will no
longer be listed as DXGI / D3D9 adapters. This may fix crashes in case an
outdated graphics driver or an unsupported integrated GPU are present on
the system.
Trying to build DXVK in a MinGW environment with AVX enabled will now
result in a compile-time error.
We cannot support AVX builds due to toolchain issues, nor is it expected to
be beneficial.
Astebreed: Fixed crash when changing graphics options. (PR #5034)
GTR - FIA GT Racing Game: Worked around a game issue that would cause it to
not start. (PR #5072)
LEGO City Undercover: Worked around a game issue that would cause the intro
video to be broken. (#4997, PR #5000)
Star Trek: Starfleet Command III: Worked around resource leak in GOG build.
(PR #5056)
Test Drive Unlimited 2: Worked around alt-tab issue causing input loss.
(PR #5057)
Wargame: European Escalation: Worked around gamma issue when the game
detects an Nvidia GPU. (PR #5055)
- Update to version 2.6.2:
+ Bug fixes and Improvements
Added DXVK_FILTER_DEVICE_UUID environment variable to filter devices by
their reported driver UUID. (PR #4956) This may be useful on setups with
multiple GPUs of the same model.
Improved vendor ID override logic for D3D9 and added
d3d9.hide{Amd,Intel,Nvidia}Gpu configuration options to improve the
out-of-the-box experience in games that refuse to run on Intel GPUs, or
only run with significantly reduced graphics features. (PR #4869)
Improved WSI backend selection in dxvk-native.
D3D9 vendor hack features are now only exposed when reporting a GPU vendor
that supports the given feature on Windows.
This may avoid issues in case games make assumptions based on vendor IDs
rather than format queries.
FIxed an issue that could lead to one eye not updating properly in some VR
games.
Fixed log spam for unsupported D3D8 render states. (#4918)
Fixed log spam for frequent DXGI adapter queries.
osu! stable: Fixed black screen in D3D9 mode. (#4769, PR #4984)
Pirate Hunter: Worked around out-of-memory crash. (PR #4922)
Red Orchestra: Ostfront: Worked around alt+tab issues. (PR #4919)
Rocketbirds 2: Worked around a game bug that would cause the intro video to
be garbled.
Thumper: Worked around track rendering issues on Intel. (#4861, PR #4866)
-------------------------------------------------------------------
Tue Apr 8 21:57:10 UTC 2025 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.6.1:
+ Bug fixes and Improvements
Removed sparse buffer usage that was introduced in DXVK 2.6. This caused
all sorts of driver issues that would cause hangs and instability on AMD
Vega GPUs and others. (PR #4763)
Note: This may increase peak memory usage in some games again.
Worked around an RTSS bug that would cause the overlay to render
incorrectly if the Vulkan swapchain uses an sRGB format. (#4777, PR #4778)
Worked around an issue where multisample resolves would lead to visual
issues on Nvidia in certain Unity Engine games. (#4817, PR #4818)
Worked around an Intel ANV issue that would cause terrain to misrender in
games such as Assassin's Creed Origins.
Note: This driver bug was fixed in Mesa 25.0.3.
Worked around a RADV issue that would cause hangs on RDNA4 GPUs prior to
Mesa 25.0.2.
Note: Please keep your drivers up to date when using these newer GPUs.
Further improved render pass efficiency for tiling GPUs in some cases,
especially if VK_KHR_load_store_op_none is supported.
Note: This change does not affect desktop GPUs in any meaningful way.
Fixed a potential issue with display mode handling on uncommon monitor
setups. (PR #4764)
Fixed various issues with the SDL3 backend in dxvk-native. (PR #4825, PR
#4826)
Fixed compatibility of MSVC builds with very old CPUs. (PR #4811)
Fixed various minor issues that would cause Vulkan validation errors in
rare scenarios.
Hitman 2: Worked around poor CPU-bound performance in certain areas. (PR
#4796)
Note: This may slightly regress GPU-bound performance.
LEGO Batman: The Video Game and LEGO Indiana Jones: The Original
Adventures: Worked around a game issue causing horrible UI performance. (PR #4798, PR #4810)
Need For Speed: Most Wanted (2005): Worked around a crash on Windows.
(#4624)
-------------------------------------------------------------------
Sat Mar 22 18:01:12 UTC 2025 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.6:
+ D3D10 / D3D11
Nvidia Reflex support
When running Proton Experimental and an Nvidia driver with
VK_NV_low_latency2 support, Reflex can now be enabled in D3D11 games that
support this feature. This includes God of War, Overwatch 2, Quake
Champions and some others. Approximate input latency can be displayed in
these games by setting DXVK_HUD=latency.
Note: Reflex does not work in most Unreal Engine 4 games in D3D11 mode
since LatencySleep and other related functions never get called. This
cannot be worked around inside DXVK; prefer using D3D12 for affected games.
+ Bug fixes and Improvements
Worked around a common game bug that would cause garbled output on Nvidia
when using MSAA. (#4480, PR #4731)
This affects games such as Assassin's Creed 3 / Black Flag, Watch Dogs,
Stalker: Clear Sky, and others.
Note: This may have a small impact on performance and memory usage in
affected games, including on AMD GPUs, where this issue did not manifest in
rendering issues due to hardware details.
Potentially improved GPU-bound performance in games that use NVAPI
UAVOverlap feature, such as Baldurs Gate 3.
While this feature was supported before, our previous implementation was
too conservative. (PR #4691)
Note: Like other vendor extensions, this does not work on Windows.
Removed d3d11.dcSingleUseMode option. Submitting deferred command lists
multiple times will now behave as expected by default.
Note: This may increase memory usage in some games. Fixes rendering issues
in Cardfight!! Vanguard Dear Days 2.
Slightly improved GPU-bound performance in modern games that extensively
use pixel shader UAVs, such as Trine 5. (PR #4693)
Slightly reduced CPU overhead in some games that use resource binding
methods inefficiently, such as God of War.
Fixed layered D3D11 video processor view creation. (PR #4651)
Added support for the ID3D11On12Device1 interop interface.
Clanfolk: Worked around a game bug that would cause missing geometry on
Intel. (PR #4716)
Kingdom Come: Deliverance: Fixed a case of invalid Vulkan usage. (PR #4684)
Watch Dogs 2: Worked around a game bug that would cause the sky to flicker
on RDNA3 GPUs. (PR #4717)
+ D3D8 / D3D9
Fixed a race condition that could lead to crashes in games doing
multi-threaded asset loading. (#4613, PR #4646)
Fixed various issues that would occur when disabling shader support via the
d3d9.shaderModel option. (#4625, PR #4629)
Fixed an issue where games using both software and hardware cursors would
not transition between the two smoothly. (PR #4670)
Fixed a regression that would cause textures to not be bound correctly in
some games. (PR #4694)
Fixed an issue where games that request half-rate Vsync would run at
quarter-rate instead.
Fixed minor issues that would cause wine test failures. (PR #4732)
CivCity: Rome: Added vendor ID override to make the game render shadows on
Intel GPUs. (PR #4739)
Global Operations: Fixed rendering issues (#4138, PR #4678)
Need For Speed: Hot Pursuit 2: Fixed missing fog. (#4113, PR #4653)
Silent Hill 2: Fixed an issue where the menu would render incorrectly with
the Silent HIll 2 Enhancements mod. (#3943, PR #3948)
Tom Clancy's Splinter Cell: Worked around alt+tab and shadow rendering
issues. (PR #4656, PR #4660)
Trainz v1.3: Worked around alt+tab issue. (#4116, PR #4659)
+ General Improvements
Reworked Vulkan swapchain implementation to be more robust. (PR #4609)
Improved efficiency of multisample resolves on tiling GPUs.
Fixed a regression introduced in DXVK 2.5 that would cause memory
allocation errors on certain unified memory setups, including the Qualcomm
proprietary driver.
Note: This does not mean that DXVK will officially support Android, or
proprietary mobile drivers.
Fixed a crash if an application unloads the SetupAPI DLL. This issue
affected various AdvHD-based visual novels. (#4662, PR #4668)
Fixed an issue where software rasterizers such as Lavapipe would not be
considered when setting DXVK_FILTER_DEVICE_NAME. (PR #4716)
Resource initialization is now always performed on the asynchronous
transfer queue if possible, and no longer uses additional memory on drivers
that support Vulkan sparse residency features. This may save up to 64 MiB
of VRAM in some games.
Worked around an std::regex bug that would cause games to instantly crash
when using Japanese locale. (PR #4669)
Worked around potential 32-bit crashes caused by stack alignment issues in
GCC-compiled binaries. (PR #4627, PR #4633)
-------------------------------------------------------------------
Sat Feb 15 18:55:00 UTC 2025 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.5.3:
+ Bug fixes and Improvements
Fixed a regression that would cause severe rendering issues in many D3D8
and D3D9 games that use fixed-function rendering. (PR #4533)
Fixed invalid shader code generation for certain rare texture operations in
D3D11.
This fixes a potential crash in TopSpin 2k25. (PR #4576)
Fixed a potential issue with handling NaN tessellation factors in D3D11
hull shaders.
Fixed an issue with D3D9 shader validation that would cause valid shader
code to be rejected in some situations. (#4576, PR #4590)
Improved the debugging experience when DXVK_DEBUG=markers is set.
(PR #4589, PR #4591)
Arcana Heart 3 Love Max!!!!!: Enabled 60 FPS limit to work around a game
issue on Steam Deck OLED. (PR #4566)
Bright Memory: Worked around an issue where the game would prioritize
integrated graphics over dedicated Intel GPUs. (PR #4605)
Far Cry 5: Worked around an issue that would cause terrain to be invisible
on Intel GPUs. (PR #4604)
Halo: The Master Chief Collection: Fixed a shader-related issue that would
cause flickering objects on some drivers. (PR #4603)
Max Payne 3: Enabled strict float emulation to work around broken rendering
in D3D9 mode. (PR #4611)
The Hurricane of the Varstray -Collateral hazard-: Enabled 60 FPS limit to
work around game issues when running in windowed mode. (#4568, PR #4573)
-------------------------------------------------------------------
Sat Dec 21 18:25:34 UTC 2024 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.5.2:
+ Bug fixes and Improvements
Added an implementation of D3D9 shader validation interfaces. This is
needed for The Void and used in several other D3D9 games. (PR #4398)
Fixed behaviour when D3D9 applications use incorrect texture types as seen
in Alpha Protocol. (PR #4513)
If VK_KHR_maintenance5 is supported, DXVK will now use VK_FORMAT_A8_UNORM
to implement the corresponding D3D11 format. This fixes warnings in various
games, as well as rendering issues in TopSpin 2K25 (#4514).
Optimized behaviour of disabled clip planes for D3D9 games. (PR #4508)
Fixed an issue where the DXVK_CONFIG environment variable was not applied
correctly under specific circumstances.
Fixed various issues causing Wine test failures for D3D8 and D3D9.
(PR #4479)
Borderlands 2: Fixed missing lava in certain places. (PR #4482)
Codename Panzers: Phase One / Two: Work around an issue with the main menu
not rendering on regular Wine builds. (PR #4495)
The Sims 2: Extended existing app profiles to various mod tools. (#4518,
PR #4520)
-------------------------------------------------------------------
Thu Nov 21 21:21:48 UTC 2024 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update winedxvkinstall / setup_dxvk.sh
Add --with-wow option
As there is a real Windows on windows (wow) mode for wine now, we will only
have a wine executable, desipte beeing able to execute 32 and 64 bit
executables, this install 32 and 64 bit dlls when this otion is provided
-------------------------------------------------------------------
Thu Nov 21 20:06:56 UTC 2024 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.5.1:
+ Bug fixes
Fixed a major regression where anisotropic filtering would not work
correctly in D3D9 games. (#4452)
Fixed some build issues with dxvk-native. (PR #4446)
Fixed some build issues with recent versions of clang. (#4467)
GTA Trilogy Definitive Edition: Work around a crash when HDR is enabled.
(PR #4450)
Note: Since these games use Unreal Engine 4, HDR is unsupported in D3D11
mode.
-------------------------------------------------------------------
Fri Nov 15 14:47:00 UTC 2024 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.5:
+ Memory managment
Resource and memory management were completely rewritten in order to use
allocated video memory more efficiently:
Reduced fragmentation may reduce peak memory usage in games such as God of
War by up to 1 GiB in extreme cases. Memory defragmentation is now performed
periodically to return some unused memory back to the system. The goal is
not to reduce VRAM usage at all costs; instead this is done conservatively
if the system is under memory pressure, or if a significant amount of
allocated memory is unused. Keeping some unused memory is useful to quickly
service subsequent allocations.
Note: Defragmentation is currently disabled on Intel's ANV driver, see
#4434. The dxvk.enableMemoryDefrag config option can be set to enable or
disable this feature via the the Configuration file.
+ Driver support
While technically not required, the new memory management works best on
drivers that support both VK_EXT_memory_budget and VK_KHR_maintenance5. The
Driver Support page was updated accordingly.
+ D3D8 / D3D9
Software cursor
Support for emulated cursors was implemented for the D3D9 cursor API, which
allows games to set an arbitrary image as the mouse cursor. This fixes an
issue in Dungeon Siege 2 (#3020) and makes the cursor appear correctly in
Act of War and various older D3D8 games. (PR #4302)
Sampler pool
Unreal Engine 3 games using D3D9 have a quirk in that they pass a seemingly
uninitialized value as the mipmap LOD bias. In order to avoid creating more
Vulkan sampler objects than the driver supports, previous versions of DXVK
would round the LOD bias to a multiple of 0.5, which could introduce visual
inaccuracies. As a more correct solution, DXVK will now destroy unused
Vulkan samplers on the fly and use the correct LOD bias.
Note: The aforementioned workaround was never needed or used in the D3D11
implementation, it only affected D3D9.
Bug fixes and Improvements
On Nvidia driver version 565.57.01 and newer, strict float emulation is
enabled by default for improved correctness. Games for which this option
was already enabled may see a small performance uplift on this driver.
Made various changes to potentially improve performace on certain mobile
GPUs. (includes PR #4358)
Display modes are now ordered by refresh rate to be more consistent with
wined3d and fix issues with some games picking the wrong display mode.
Fixed a large number of wine test failures.
Ascension to the Throne: Fixed old regression that would cause parts of the
ground to render black. (#4338, PR #4341)
Command & Conquer: Generals: Fixed performance issue caused by a missing
D3D8 entry point. (PR #4342)
King's Bounty: Warriors of the North: Fixed water rendering issue.
(#4344, PR #4350)
Tomb Raider: Legend: Fixed flickering geometry with strict float emulation.
(#4319, PR #4442)
Rayman 3: Fixed a regression that caused rendering issues. (#4422, PR #4423)
+ D3D11 / DXGI
Resource management changes
In order to reduce system memory pressure and improve stability in 32-bit
games, creating, uploading and discarding resources is now throttled if the
amount of temporary staging memory allocations exceed a certain threshold.
This fixes crashes in Total War: Rome II and a number of other games.
Additionally, large DYNAMIC textures commonly used for video playback will
no longer use a staging buffer.
The d3d11.maxDynamicImageBufferSize and d3d11.maxImplicitDiscardSize
options were removed accordingly; affected games such as Total War:
Warhammer III and Ryse: Son of Rome should now perform well by default,
without excessive memory usage.
Note: These changes negatively affect CPU-bound performance in a number of
games, including Shadow Warrior 2.
Bug fixes and Improvements
SEQUENTIAL swap effects are now implemented for DXGI swap chains, which
allows games to read previously presented backbuffers. This fixes an issue
wherein savegame thumbnails would appear black in certain visual novels.
(ValveSoftware/Proton#7017)
Devirtualized some D3D11 method calls to improve compat. with Special K.
Fixed incorrect shader code generation for EvaluateAttributeSnapped.
Lock contention is reduced in certain games that use Deferred Contexts for
rendering.
This may improve performance on older CPUs in Sekiro: Shadows Die Twice and
some other games.
Call of Duty: Modern Warfare 2 Campaign Remastered: Fixed a possible GPU
hang. (#3884)
Diablo 4: Work around an issue where the game does not start if an
integrated GPU is exposed.
The Sims 4: Work around a use-after-free bug in the game's D3D11 renderer
for real this time. (#4360)
Vindictus: Work around potential rendering issues caused by uninitialized
constant buffer data. (#4405, #4406)
Yakuza 0 and Yakuza Kiwami: Fixed a regression introduced in DXVK 2.4.1
that would cause these games to lock up on start. (PR #4297)
+ Miscellaneous changes
An SDL3 backend was added for dxvk-native. (PR #4326, #4404)
Fixed an issue introduced in DXVK 2.4.1 which would lead to error messages
about failed buffer creation.
Fixed a long-standing issue where overlapping occlusion queries would lead
to incorrect Vulkan usage. (#2698)
Fixed a rare issue wherein timestamp queries would not be tracked correctly
and could read incorrect data.
Fixed various other issues that led to Vulkan validation errors in games
such as Dishonored 2, Tales of Arise and The Sims 4.
Fixed various issues with MSVC builds. (PR #4444)
Disabled a workaround for broken render target clears on Nvidia drivers
prior to version 560.28.03 on unaffected drivers.
If supported, VK_EXT_pageable_device_local_memory is now used to enable
better driver-side memory management.
-------------------------------------------------------------------
Sun Sep 29 12:44:00 UTC 2024 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.4.1:
+ General improvements
The size for memory chunks is now determined dynamically based on the
amount of memory the application has already allocated. This should improve
the out-of-the-box behaviour in various game launchers;
the dxvk.maxChunkSize option was removed accordingly.
Fixed an issue where the Vulkan swap chain would not always be recreated
appropriately in a native Wayland environment. (PR #4252)
Fixed an issue with descriptor pools growing too large on Nvidia cards in
some situations. (PR #4166)
Changed default shader code generation for DXBC mad instructions to work
around flickering issues in games that use different vertex shaders to
render the same geometry in multiple render passes. The d3d11.longMad and
d3d9.longMad options were removed accordingly.
+ D3D8 / D3D9
Improved overall robustness of the D3D8 implementation with error handling
and fixed various memory leaks.
Slightly improved performance by optimizing vertex buffer uploads.
(PR #4275)
Significantly improved performance in some games using Software Vertex
Processing. (PR #4274)
Fixed full-screen presentation issues in some Game Maker games. (PR #4245)
Removed VK_IMAGE_USAGE_SAMPLED_BIT from textures that don't need it. (#4176)
Enabled strict float emulation by default on AMDVLK now that this driver
optimizes the pattern emitted by DXVK. (PR #4203). Do note that this was
already the case on RADV.
Chrome: Gold Edition: Enabled 60 FPS limit to work around game issues at
higher frame rates. (PR #4260)
GTA: San Andreas: Fix regression that made it crash with DXVK 2.4 (#4141,
PR #4151)
Operation Racoon City: Worked around a game crash. (#4172, PR #4175)
Prince of Persia (2008): Enabled 240 FPS limit to work around game issues
at very high frame rates. (PR #4281)
Rayman 3: Fixed missing geometry. (PR #4143)
Serious Sam 2: Fix in-game videos (#4158, PR #4161)
Splinter Cell: Pandora Tomorrow: Enabled 60 FPS limit to fix broken input
and physics. (PR #4254)
The First Templar: Fixed lighting issues. (#4291, PR #4292)
The Sims 2: Fix regression that made it crash with earlier DXVK versions
(PR #4277)
+ D3D11 / DXGI
Worked around a general issue wherein some games default to an integrated
GPU based on the amount of available video memory.
Worked around an issue where various games would misbehave when the amount
of available VRAM is reported as a power of two.
Changed shader code generation for dot product instructions to be more in
line with code generation on native drivers.
This fixes a water rendering issue in Trails through Daybreak on Nvidia.
(#4162)
Implemented a basic dead code elimination pass to avoid generating invalid
SPIR-V shaders in rare situations.
Note: All these shader-related changes will invalidate fossilize databases.
Games will now leave fullscreen mode when the game window loses focus.
This is closer to Windows behaviour and fixes various issues with games
hanging on some setups. (PR #2675)
Made sure the built-in options in DXVK for a game take precedence over the
options enabled/disabled by DXVK-NVAPI.
This fixes a performance regression in God of War on Nvidia GPUs.
Batman Arkham Knight: Worked around an issue where the game does not start
when it detects an Intel GPU. (PR #4152)
Hunt Showdown: Fixed a crash caused by DXVK reporting a very high UMD
driver version.
Kena: Bridge of Spirits: Worked around a water rendering issue when the
game detects an Intel GPU. (PR #4207)
Microsoft Flight Simulator: Fixed garbled screen on start-up (#4276)
Senran Kagura Peach Ball: Fixed character models being rendered the wrong
way around. (#4216)
The Sims 4: Work around a crash caused by a use-after-free bug in the game.
-------------------------------------------------------------------
Fri Jul 12 18:49:08 UTC 2024 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.4:
+ Packaging changes:
Update dxvk_setup/setup_dxvk to install/uninstall d3d8
+ D3D8 support
D8VK is now part of DXVK, and implements D3D8 largely on top of the
existing D3D9 implementation. Please refer to pull request #3411 for
further details.
+ Native WSI changes
dxvk-native now supports multiple window system backends that the
application can choose between at runtime. Refer to the corresponding pull
request #3738 for details. In addition, proper ABI versioning has been
added for native libraries.
+ Non-native refresh rate emulation
In environments where the display mode cannot be changed (e.g. Proton), it
is possible that DXVK reports a different refresh rate to the game than
what the display is currently running at. This is problematic for games
that require to be run at 60 FPS but do not limit their frame rate when
using a 60 Hz display mode.
To work around this, the frame rate limiter will now be engaged
automatically if a game runs in full-screen mode with vertical
synchronization enabled, and if the detected frame rate over a short period
of time is higher than the refresh rate of the selected display mode. This
also applies to D3D12 when using vkd3d-proton as of commit 80f6c46 or later.
In case a game runs at a lower rate than expected and does not provide an
in-game option to change refresh rate, this behaviour can be disabled by
setting d3d9.maxFrameRate = -1 (or the corresponding dxgi option for
D3D10+ games). Setting DXVK_FRAME_RATE also overrides this behaviour as
usual.
+ Bug fixes and Improvements
Fixed various issues with D3D9 fixed-function texture coordinate processing
(PR #4015, PR #4026).
Fixed pipeline layout compatibility issues when using graphics pipeline
libraries, which would cause crashes or rendering issues on AMD's official
drivers with pipeline libraries enabled.
If supported, VK_NV_descriptor_pool_overallocation will now be used to
potentially save small quantities of descriptor memory.
Improved descriptor pool management in general to save memory in case a
game renders without ever presenting to the screen.
Improved video processor blit functionality (PR #3970 PR #3984)
Improved compatibility to third-party mods hooking various DXGI entry
points (PR #3966, #3968).
Battlefield 2, 2142: Work around hang on alt+tab (PR #4109).
Dead Space 2: Work around issues caused by the game's Vsync implementation
(PR #4071).
Dragonshard: Work around performance issues (PR #4079).
Fallout 4: Work around an issue with the game locking itself to 45 FPS on
Steam Deck OLED.
Fallout New Vegas: Fix rendering issues when using certain mods (PR #4079).
Ghostbusters Remastered: Work around flickering character faces (#4045,
PR #4046).
Gothic 3: Fix shadow rendering issues caused by incorrectly reported format
support (#3980, PR #3991).
Guild Wars 2: Work around a flickering issue (PR #3992).
Prototype: Work around broken shadow rendering if the game detects an AMD
or Intel GPU (#4008, PR #4011).
Star Citizen: Work around an issue with the game's UMD version check
(PR #3985).
The Sims 2: Work around low CPU-bound performance in some situations.
Tomb Raider Legend: Work around flickering character issues (PR #4105).
Red Faction Guerrila Remastered: Work around sky box rendering issues
(#3696, PR #3972).
Rise of Nations: Work around crash on alt+tab (PR #4117).
Watch Dogs, Watch Dogs 2: Work around flickering character issues
(PR#4059, PR #4090).
WRC 4: Enable 60 FPS limit to work around audio issues (PR #4099).
-------------------------------------------------------------------
Thu Mar 28 18:00:35 UTC 2024 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.3.1:
+ Features
If supported by the driver, DXVK will now use the VK_NV_raw_access_chains
extensions to allow more efficient shader code generation on specifically
on Nvidia GPUs. This is intended to close the gap to Windows performance
drivers specifically in D3D11 games in GPU-bound scenarios, but not all
games will see an improvement.
Note: This extension is currently only supported on Vulkan beta drivers,
version 550.40.55 or later, and currently requires Proton Experimental.
+ Bug fixes and Improvements
Fixed invalid SPIR-V being generated for Renderdoc internal D3D11 shaders.
Fixed undefined behaviour with out-of-bounds constant buffer loads with
dynamic indices.
Fixed HDR not being enabled for DXGI_FORMAT_R16G16B16A16_FLOAT swap chains.
Reworked the dxgi.syncInterval option to also apply to D3D12 games.
Reverted the use of VK_FORMAT_A8_UNORM due to rendering issues in some
games.
D3D9 games will now set the VkApplicationInfo::applicationVersion field to
1.
Reworked how dynamic system memory buffers are copied to the GPU in D3D9
games. (PR #3765)
This improves performance in games such as Shank 2 (#3755), Flammable
Freddy (#2375) and Blood Rayne (#1828).
Only enable alpha to coverage when rendering to a multisampled render
target in D3D9. (#3815)
This fixes broken lighting in Flatout 3 (#3798) and incorrect dithering in
Injustice: Gods Among Us. (#3617)
Ace Combat Assault Horizon: Fixed GPU hang on RADV. (#3715, PR #3716)
Assassin's Creed 2: Fixed crash on alt tab. (#3653, PR #3763)
Battlefield 2, Battlefield 2142: Fixed disappearing spawn and gear
selection UI on alt tab. (#3651, PR #3797)
Battlestations Midway: Improved performance. (PR #3683)
Codename Panzers Phase One/Two: Improved performance. (PR #3812)
Dead Space (2008): Fixed diagonally sliced menu on RADV. (Mesa Issue 9126,
PR #3764)
Granblue Fantasy Relink: Work around a game bug that would cause broken
rendering with AMDAGS enabled.
Also enabled the dxvk.ignoreGraphicsBarriers option to increase performance
in case neither NVAPI nor AGS are loaded.
Gujian 2: Fix invisible geometry. (#3838, PR #3839)
Kenshi: Improved performance (PR #3776)
MySims: Fix mouse selection being off. (#3825, PR #3840)
Operation Flashpoint: Red River: Fix missing main menu UI elements.
(#2184, PR #3852)
SkyDrift: Work around OOM crash on alt tab. (#3639, PR #3689)
Sonic CD: Limit to 60 FPS because game speed is tied to the frame rate.
(PR #3771)
Supreme Ruler Ultimate: Work around game bug causing a freeze on alt tab
(#3784, PR #3816)
Tales from the Borderlands: Fixed crash. (PR #3664)
The Settlers: Fixed crash. (PR #3734)
Total War: Medieval 2: Fix black loading screen in windowed mode. (#3724,
PR #3843)
UK Train Simulator 1: Fix black foliage. (#3780, PR #3782)
War Thunder: Fix particle effects not rendering properly.
-------------------------------------------------------------------
Tue Sep 5 16:01:27 UTC 2023 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.3:
+ Presentation improvements
If VK_KHR_present_wait is supported, and if vertical synchronization is
enabled, frame latency events will now be signaled when an image is
actually being presented, rather than when rendering work prior to the
present request has completed on the GPU. This may reduce input latency in
some games, also affects the dxgi.maxFrameLatency and d3d9.maxFrameLatency
options.
This functionality is also used to more accurately report the number of
frames actually presented via DXGI frame statistics.
Note: On some platforms and compositors, Vulkan present events may not
correspond to the image actually being presented on screen, in which case
frame latency is going to remain higher than expected.
Additionally, if VK_EXT_swapchain_maintenance1 is supported, enabling and
disabling vertical synchronization may no longe require recreating the
Vulkan swap chain, which works around severe performance issues in games
which change their present interval on a per-frame basis.
Note: On Linux, this is currently only supported when running Gamescope
with ENABLE_GAMESCOPE_WSI=1 set.
+ Configuration changes
The dxgi.nvapiHack config option was deprecated, and a new option
dxgi.hideNvidiaGpu with a slight change in behaviour was added instead,
alongside similar options for AMD and Intel GPUs. This allows implementing
more targeted application workarounds for issues with e.g. XESS libraries
in the future if necessary. Refer to the example configuration for more
details.
Note: The old dxgi.nvapiHack option still works if dxgi.hideNvidiaGpu is
not set, but will be removed in a future release.
Additionally, the dxgi.tearFree and d3d9.tearFree options were consolidated
into a new dxvk.tearFree option, due to changes in the presentation logic.
The old options were removed.
+ Bug fixes and Improvements
Configuration options can now be specified via an environment variable,
DXVK_CONFIG. See the README for details (PR #3581).
If VK_EXT_depth_bias_control is supported, depth bias scaling will now be
correct in most situations. This fixes shadow rendering artifacts in
various D3D9 games and is especially important on GPUs that do not support
24-bit depth formats. This affects games such as F.E.A.R. (#1461), Far Cry
2 (#2941) and Assassin's Creed Brotherhood (#2642).
If VK_EXT_line_rasterization and its relevant features are supported,
smooth or rectangular lines will now be used if requested by the
application. This functionality is generally not used by games, but may be
useful for applications such as level editors.
If VK_KHR_maintenance5 is supported, DXGI_FORMAT_A8_UNORM images will now
use the corresponding Vulkan format.
D3D9 command submission now works the same way as it does for D3D11, which
will lead to more submissions but generally reduces resource readback
latency. This may improve performance in games that frequently synchronize
with the GPU.
Fixed a minor issue with D3D9 feedback loop tracking.
Fixed a minor issue with D3D11 stream output (#3634).
Fixed a bug and performance issues with the implementation of D3D11 tiled
resources.
Fixed various issues with reporting HDR metadata.
Fixed a crash when compiling D3D9 shaders generated by the vkd3d HLSL
compiler. (PR #3616)
Implemented keyed mutex synchronization on top of newly added winevulkan
functionality (PR #3601, PR #3635).
Note: This will only work with recent Proton builds.
Added stubs for various D3D9On12 interop interfaces. This is needed for
Train Simulator Classic (#3445).
Added an interface to allow external libraries, such as NVAPI, to enable
HDR in various D3D11 games as well as Elden Ring (PR #3625).
Note: This will only work in combination with jp7677/dxvk-nvapi@c3a1c48 or
newer. This will not work on Windows.
A Total War Saga: TROY: Fixed trees not rendering when MSAA is enabled.
Far Cry 2: Fixed crash when using D3D10.
Halo Online: Fixed water rendering. (#3594, PR: #3627)
Lara Croft and the Temple of Osiris: Fixed deadlock when using Exclusive
Fullscreen (#3458).
RaceRoom Racing Experience: Fixed a crash when starting a race. (#3386,
PR: #3389)
Spider Man: Shattered Dimensions: Fixed a regression that caused blocky
shadows. (#3593, PR: #3624)
Test Drive Unlimited 2: Fixed shadows on grass. (#3469, PR: #3471)
The Sims 2: Fixed a regression in DXVK 2.2 that affected terrain rendering.
(#3474, PR: #3476)
Titanfall: Fixed a crash caused by a miscompiled shader.
Tomb Raider Anniversary: Improved performance. (#3438, PR: #3439)
-------------------------------------------------------------------
Sat May 13 21:04:25 UTC 2023 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.2:
+ D3D11On12 support
In order to enable D3D12 support in recent Unity Engine titles such as Lego
Builder's Journey, this release introduces support for creating D3D11
devices from a D3D12 device using D3D11On12CreateDevice, as well as the
basic ID3D11On12Device interface. This is achieved by importing the Vulkan
device and resource handles from vkd3d-proton into DXVK, and otherwise uses
DXVK's existing D3D11 implementation.
A vkd3d-proton build as of HansKristian-Work/vkd3d-proton@26c4fed or later
is required for this to work.
+ D3D9 Partial Presentation
DXVK now supports presenting to parts of a window by copying the contents
of the backbuffer to system memory and then drawing them into the window on
the CPU. This improves compatibility with game launchers, particularly
those based on Microsoft's WPF toolkit, and some visual novels. It will
however come with a noticable performance hit.
Additionally, overall behaviour of D3D9 swap chains was improved and the
d3d9.noExplicitFrontBuffer option was removed.
+ Logging changes
When running on Proton or plain Wine, DXVK will no longer create log files
by default and instead only write log messages to the console using
wine-specific functionality, in order to avoid creating unnecessary extra
files. This matches vkd3d-proton behaviour. Note that log file creation can
be re-enabled by setting the environment variable DXVK_LOG_PATH to a valid
path.
When filing bug reports, users are encouraged to upload the full Proton log.
+ Bug fixes and Improvements
Warnings about unknown interfaces being queried via QueryInterface will
only be logged once in order to avoid growing log files indefinitely in
some games. (#3231)
Fixed a regression when rendering YUY2 or UYUY texture formats. This fixes
in-game videos in Jade Empire (#3182) and Sid Meier's Pirates (#3189)
(PR #3342)
Fixed an issue wherein threads were not properly destroyed.
Fixed Vulkan validation errors caused by incorrect layout tracking when
enabling feedback loops for a texture.
Fixed Vulkan validation errors caused by 0x0 sized clears in D3D9.
D3D9 StateBlocks now only allocate memory for the parts that are actually
used. This fixes Total War: Shogun 2 running out of address space when
using the D3D9 renderer. (#2703, PR #3248)
Improved usage of some VK_EXT_extended_dynamic_state3 features to avoid
hitting slow paths on some drivers.
Improved enumeration of DXGI outputs on systems with multiple GPUs. This
fixes performance issues with recent RE Engine games (D3D12) on such
systems.
Significantly reduced memory usage in situations where games create unused
D3D11 devices.
Battle Fantasia Revised Edition: Locked frame rate to 60 FPS to work around
game bugs at higher frame rates. (PR #3256)
Cold Fear: Fixed missing geometry (#3293, PR #3390)
Dawn of Magic 2: Fixed a crash upon start (#3271, PR #3272)
DC Universe Online: Fixed a hang after alt-tabbing out and back in.
(#3314, PR #3316)
Far Cry 2: Work around rendering issues on Intel hardware, as well as low
performance on all GPUs. (PR #3241)
Halo: The Master Chief Collection: Fixed memory leak due to invalid query
usage by the game (PR #3273)
Warhammer 40k: Space Marine: Fixed shadow rendering (#3298, PR #3305)
-------------------------------------------------------------------
Wed Jan 25 16:11:55 UTC 2023 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.1:
+ 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)
+ GeneralNotes
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.
This package still ships setup_dxvk.sh as provided by Version 2.0.
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.
-------------------------------------------------------------------
Fri Nov 11 11:53:17 UTC 2022 - Tobias Klausmann <tobias.klausmann@freenet.de>
- Update to version 2.0:
+ Driver compatibility
A Vulkan 1.3 capable driver and wine version are required to run this
version of DXVK.
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.
+ 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)