github Digger1955/dxvk-gplall DXVK-GPLALL-2.6.9-1
2.6.9-1

2 hours ago

DXVK-GPLALL 2.6.9-1 (DXVK-GPLAsync-LowLatency 2.6.9-1)

Based on DXVK 2.6.2 and commits from DXVK 2.7 and later, DXVK GPLAsync 2.6.2 and DXVK GPLAsync 2.7.1-patch, DXVK Low Latency 2.7.1-commit cfc119b.

It consists of:

  • DXVK-GPLALL-GCC-WinMacLinux-SSE2-O3-LTO 2.6.9-1
  • DXVK-GPLALL-GCC-WinMacLinux-SSE4.2-O3-LTO-ZEN3 2.6.9-1
  • DXVK-GPLALL-GCC-WinMacLinux-SSE4.2-O3-LTO-SKYLAKE 2.6.9-1
  • DXVK-GPLALL-MSVC-Windows-SSE2-O1_Oi_Ob3-LTCG 2.6.9-1
  • DXVK-GPLALL-MSVC-Windows-AVX2-O1_Oi_Ob3-LTCG-AMD64 2.6.9-1
  • DXVK-GPLALL-MSVC-Windows-SSE4.2-O1_Oi_Ob3-LTCG-INTEL64 2.6.9-1
  • DXVK Native-GPLALL-GCC-SSE2-O3-LTO 2.6.9-1
  • DXVK Native-GPLALL-GCC-SSE4.2-O3-LTO-ZEN3 2.6.9-1
  • DXVK Native-GPLALL-GCC-SSE4.2-O3-LTO-SKYLAKE 2.6.9-1
  • Source Code
  • dxvk.conf

Release Notes:

Seventh maintenance release of DXVK-GPLALL 2.6.x branch.

IMPORTANT: Please refer to Quick Start Guide and Builds Reference Guide to achieve the best results on the end-user system.

  • Significant changes:
    • DXVK: 8b751b0 - [dxvk] Disable secondary command buffers on desktop
      • Improves stability and performance on drivers that do not have proper support for usage of secondary command buffers.
        • Specifically fixes bugs on AMD Windows Vulkan Driver on RDNA GPUs in Assassin's Creed Origins - #109 - doitsujin#5813 - doitsujin#5356
          • Thanks to chaosophy for reporting the issue and helping to identify the cause quickly.
    • GPLALL: Reduced amount of Logger calls, by commenting them out.
      • Lowers logging overhead, slightly reduces DLLs size.
    • MSVC: Added a group of optimization compiler flags.
      • Slightly improves CPU-bound performances in some applications.
    • GCC: Adjusted tuning settings for each type of GCC build.
      • Set -mtune=amdfam10 for SSE2 build, -mtune=znver3 for SSE4.2-O3-LTO-ZEN3 build, -mtune=skylake for SSE4.2-O3-LTO-SKYLAKE build, which results in better CPU-bound perfomance for all CPUs that may actually run DXVK. Please refer to Builds Reference Guide for details.
    • GCC: Added a group of safeguard compiler flags, which were already default for MSVC.
      • Ensures consistent behavior across different build types.
    • GCC: Added a group of optimization compiler flags, with a focus on getting all benefits of -O3 and more, with reduced size from -Os - similar to what was done for MSVC previously.
      • As a result, GCC builds are now at least as fast as MSVC builds, and at most are faster than MSVC, even on Windows. Since GCC builds are the most performant, they are the recommended ones to use.
    • Native: Changed GitHub Action build container for DXVK Native builds from SteamRT3-Sniper to SteamRT4.
      • Changes GCC version used to build DXVK-GPLALL from GCC 10 to GCC 14.2.0.
        • Improves CPU-bound performance of DXVK Native builds, due to the compiler improvements and support of new CPUs and compiler flags.
    • GPLALL: Implemented SSE2 SIMD intrinsics in appropriate functions, where applicable and possible.
      • Scalar fallbacks for non-x86 are present. Unaligned operations are used due to inherent problems with alignment in DXVK. AVX is not used because of inherent problems with AVX in DXVK and questionable efficiency.
        • Improves CPU-bound performance and energy efficiency in D3D8/D3D9 applications.
    • DXVK: Clean up device and instance creation and Rework the way device properties are accessed
      • Allows to backport further improvements from upstream DXVK.
        • Thanks to EPOCHvoyager for testing these significant changes.
    • DXVK: Implement shared resources using the D3DKMT API
      • Allows Windows applications on Linux to use the new Shared Resources implementation in Proton 11/Wine 11 and later.
        • Thanks to Laitinlok for testing these significant changes.
    • GPLALL: Optimized existing sleep logic, increased amount of time between wake-up checks in busy-wait phase, set timer resolution (sleepGranularity) to 500 us (0.5 ms, 2000 Hz).
      • Significantly improves power efficiency and precision, when using DXVK FPS Limiter.
    • GPLALL: Changed FPS Limiter algorithm to deadline-based, which is based on upstream DXVK Deadline FPS Limiter with some improvements.
      • Reason: Deadline-based FPS Limiter is the only one, that does work properly under heavy stress, and specific situations, such as usage of d3d9.maxFrameLatency=1. It is not as smooth as the alternatives, but it is compensated by improvements to the sleep logic as much as possible.
    • GPLALL: Implemented various improvements to the DXVK-GPLALL's implementation of MSAA shader.
      • Significantly improves GPU-bound performance in applications that use MSAA.
        • Fully hand-written paths for every mask and 1x/2x/4x/8x sample count, optimized and simplified logic in every possible place. As a result, shader's size increased, but it actually compiles faster than the previous, and shows significant performance improvements, which are higher for higher sample counts. Basically: MSAA 2x - as fast as possible in performance; MSAA 4x - similar to previous MSAA 2x in performance; MSAA 8x - similar to previous MSAA 4x in performance. And all of that without quality loss.
          • Note: Non-standard sample counts, i.e. not MSAA 1x/2x/4x/8x, are using generic paths, so they will be slower, and are not recommended to use.
    • GPLALL: Implemented changes that improve Fullscreen Exclusive (FSE) behaviour on Windows. Author - KaitouJoker, backport - Digger1955.
      • Fullscreen Exclusive (FSE) is converted to an emulated Fullscreen Exclusive (eFSE) that uses Independent Flip (iFlip). As a result, enabling Fullscreen Exclusive should not break any functionality of application and provide the best latency and performance.
        • Important: Unity Engine have broken FSE implementation. Do not enable FSE in Unity Engine applications.
    • DXVK: Deduplicate D3D8/D3D9 device lock
      • Improves CPU-bound performance in D3D8/D3D9 applications.
    • DXVK: Rework staging buffer logic for D3D11 resource initialization + Part of Rework D3D9 shader constant management
      • Improves CPU-bound performance.
    • DXVK Low Latency: cfc119b - [dxvk] Drop 64-bit requirement for GPU timestamps
      • Any GPU may now use dxvk.framePace = "low-latency" or dxvk.framePace = "low-latency-vrr-x" modes.
    • GPLALL: Implemented various improvements from DXVK-Salkim. Author - nanomatters, backport - Digger1955.
      • Signifcant improvements to HDR and Nvidia Reflex behaviour and changes that improve CPU-bound performance.
    • GPLALL: Implemented various improvements from DXVK-Skyrim Community Shaders. Author - doodlum, backport - Digger1955.
      • Improves CPU-bound performance across various applications, with the most signficant improvements in D3D11 applications.
        • Note: Slightly increases VRAM usage.
    • GPLALL: Changed default DXVK-GPLALL settings in order to provide low latency in dxvk.framePace = "max-frame-latency" mode.
      • dxvk.latencySleep = True - enables upstream DXVK latency reduction algorithm, which works well enough without performance regressions; dxvk.allowFse = True - after porting KaitouJoker improvements, it is safe to enable by default; d3d9.maxFrameLatency = 1/dxgi.maxFrameLatency = 1 - improves input latency without performance regressions.
    • GPLALL: Added dxvk.minSwapchainLatency option to prevent forced triple-buffering. Author - KaitouJoker, backport - Digger1955.
    • GPLALL: Added set of non-default config options to dxvk.conf, which are safe to apply for the vast majority of applications, in order to improve application's performance/pacing/latency . Author - Digger1955.

Next maintenance releases will have less changes, due to more significant incompatibilities between DXVK 2.6.x and next DXVK versions.

List of ported and adapted upstream DXVK commits:

8b751b0 - [dxvk] Disable secondary command buffers on desktop

7fedbb7 - [d3d8] Properly handle W11V11U10 support

6c7162f - [d3d8] Rework legacy D3D compatibility mode handling

eab8045 - [d3d8] Clean up CopyRects logging - [d3d8] Assorted debug loggers cleanup

6227b63 - [d3d8] Warn on unhandled tokens in TranslateVertexShader8 - [d3d8] Assorted debug loggers cleanup

bee7816 - [d3d9] Handle D3D9Ex checks with the D3D compatibility flags

87803a3 - [meta] Switch CI Arch builder image

adeda66 - [meta] Use Arch container directly in CI

c68b929 - [dxvk] Add new device capability class for device creation - Clean up device and instance creation

10f14b5 - [dxvk] Add device capability info to adapter - Clean up device and instance creation

b01a7ae - [dxvk] Read adatper info from new device capability class - Clean up device and instance creation

ad8f984 - [dxvk] Use new capability class for device creation - Clean up device and instance creation

e4eb72d - [d3d11] Remove now unused GetDeviceFeatures method - Clean up device and instance creation

21832ae - [d3d9] Remove GetDeviceFeatures method - Clean up device and instance creation

00a361c - [dxvk] Use proper extension list for extension providers - Clean up device and instance creation

65b3292 - [dxvk] Rework instance creation and device filtering - Clean up device and instance creation

f530591 - [dxvk] Remove old extension enablement code - Clean up device and instance creation

ca1aa20 - [dxvk] Fix device creation issues on devices without sparse queue

10c9ef0 - [dxvk] Call providers' initDeviceExtensions with initialized adapters

b9b5ca5 - Fix usage of copyFeature

9cba329 - [dxvk] Fix device typo

60978eb - [dxvk] Re-add workaround for failed device creation with NVX extensions

e664345 - [dxvk] Query queue ownership transfer properties - Misc opts

9157dcc - [dxvk] Expose queue ownership transfer properties in device - Misc opts

c42bd32 - [dxvk] Fix OOB indexing by queue.family when queue type is absent

b6dd5d1 - [dxvk] Re-query device properties on device creation - Rework the way device properties are accessed

c5ae0c3 - [d3d9,d3d11] Always query properties from device when possible - Rework the way device properties are accessed

a607990 - [d3d9] Take format into account when checking MSAA compatibility - [d3d9] Take format into account when checking MSAA compatibility

53c8df7 - [d3d9] Overhaul sample count validation when creating textures - [d3d9] Take format into account when checking MSAA compatibility

bf8f0cf - [d3d9] Only check hardware sample support if we create vulkan image - Fix black squares in Medieval: Total War 2.

cad8bad - [d3d9] Query adapter capabilities separately - Rework the way device properties are accessed

1945226 - [d3d11] Query device features and properties from actual Vulkan device - Rework the way device properties are accessed

26a8268 - [dxvk] Introduce limite adapter properties - Rework the way device properties are accessed

9e2de40 - [dxvk] Use limited adapter info in OpenVR interop - Rework the way device properties are accessed

caadb5c - [dxvk] Use limited adapter info for device enumeration - Rework the way device properties are accessed

9d521a4 - [dxgi] Use limited adapter info for device enumeration - Rework the way device properties are accessed

90a6daf - [dxgi] Use limited adapter info for monitor enumeration - Rework the way device properties are accessed

27bf88b - [d3d9] Use limited adapter info for 9on12 device selection - Rework the way device properties are accessed

0978983 - [d3d9] Use limited adapter info to get texture memory - Rework the way device properties are accessed

f591b89 - [dxvk] Do not expose features and properties in DxvkAdapter - Rework the way device properties are accessed

7ffd67a - [dxvk] Add config option to disable unified layout support - Implement unified image layouts

9e89133 - [dxvk] Add option to disable NV_raw_access_chains - Disable raw access chains for Granblue Relink

3408045 - [dxvk] Allow querying enabled instance extensions - Update to VK_KHR_present_id2/wait2

df15de2 - [dxvk] Enable KHR_surface_maintenance1 instance extension - Update to VK_KHR_present_id2/wait2

1e599e9 - [dxvk] Enable KHR_swapchain_maintenance1 if supported - Update to VK_KHR_present_id2/wait2

3fac2fa - [dxvk] Open adapter D3DKMT handle from the device LUID - Implement shared resources using the D3DKMT API

c2ca319 - [dxvk] Try creating D3DKMT device handles from their adapter - Implement shared resources using the D3DKMT API

e3a85e5 - [dxvk] Open the D3DKMT semaphore local handle on creation - Implement shared resources using the D3DKMT API

482f2ce - [dxvk] Open the D3DKMT resource local handle on allocation - Implement shared resources using the D3DKMT API

5e425a2 - [d3d11] Use the D3DKMT local handles to allocate shared handles - Implement shared resources using the D3DKMT API

2c2d1bf - [d3d9] Use D3DKMTEscape to set shared resource metadata - Implement shared resources using the D3DKMT API

a26bf9e - [d3d9] Validate shared handle D3DKMT descriptor on import - Implement shared resources using the D3DKMT API

38d61a0 - [d3d11] Use D3DKMTEscape to set shared resource metadata - Implement shared resources using the D3DKMT API

df2cc56 - [d3d11] Use the D3DKMT API to open shared resources - Implement shared resources using the D3DKMT API

e3f0efd - [d3d11] Move mutex support checks into AcquireSync / ReleaseSync - Implement shared resources using the D3DKMT API

38c5d6a - [d3d11] Implement keyed mutexes with the D3DKMT API - Implement shared resources using the D3DKMT API

796208b - [d3d11] Avoid accessing keyed mutex pointer if not available

326aff0 - [include] Add E_ABORT, DXGI_ERROR_ALREADY_EXISTS and use last one - Add E_ABORT, DXGI_ERROR_ALREADY_EXISTS and use last one

8833f14 - [include] remove redefinition of 3 typedefs: UINT64, LPWSTR, LPCSTR - Add E_ABORT, DXGI_ERROR_ALREADY_EXISTS and use last one

83f167d - [d3d11] Load Intel vendor hack DLL

0f939f3 - [d3d9] Rename FormatColor to Format - D3D9: Small cleanup to format code + mini fix

19dd2bb - [d3d9] Use fixed-up format for fine-grained MSAA support check - D3D9: Small cleanup to format code + mini fix

d276233 - [d3d9] Ignore zero extent stretch rect

1aecb5d - [dxvk] Add Kosmickrisp to tilers

b07a478 - [d3d9] Set non-empty sampler LOD range for single-mip textures - [d3d9] Set non-empty sampler LOD range for single-mip textures

9370ef1 - [dxgi] Reserve a hot-patchable entry on the DXGI entry points overlays hook - [dxgi] Reserve a hot-patchable entry on the DXGI entry points overlays hook

fd666da - [dxgi] Fix DXVK_HOTPATCHABLE definition - [dxgi] Fix DXVK_HOTPATCHABLE definition

0e117c3 - [util] Add missing includes - [util] Use hybrid_patchable attribute for DXVK_HOTPATCHABLE on ARM64EC

b749c26 - [dxvk] Explicitly cast this to void * to silence -Wnontrivial-memcall warnings - [util] Use hybrid_patchable attribute for DXVK_HOTPATCHABLE on ARM64EC

5bbce04 - [util] Use hybrid_patchable attribute for DXVK_HOTPATCHABLE on ARM64EC - [util] Use hybrid_patchable attribute for DXVK_HOTPATCHABLE on ARM64EC

6c70fd8 - Annotate ResizeTarget(), ResizeBuffers1() as hybrid_patchable - Annotate ResizeTarget() as __declspec(hybrid_patchable)

1ac57a0 - Fix whitespace - Annotate ResizeTarget() as __declspec(hybrid_patchable)

375c522 - [dxvk] Fix dynamic multisample state not getting applied in some cases

fe8a4b5 - [d3d11] Guard against failed video image relocation

28a3211 - [d3d11] Guard against failed image relocation in ClearUAV

5502fe6 - [dxvk] Guard against failed image relocation in copyImageToBufferCs

708fd7d - [dxvk] Do not always print error messages if image relocation fails

75ecd6e - [dxvk] Properly check device support for sample locations

9cd6755 - [dxvk] Add config option to disable CUDA interop extensions - More CUDA interop workarounds

d647fdf - [d3d9] Pass validation for imported D3D11 textures.

d7ac258 - [d3d9] Ensure to always submit if ThrottleAllocation hits threshold

c833ea7 - [d3d8] Extend legacy discard handling to handle legacy buffer mapping

6bc6d9e - [d3d9] Update window handle during swapchain reset

6bbca91 - [util] Add common code implementation of D3D9 device lock - Deduplicate D3D8/D3D9 device lock

e5bf902 - [d3d9] Use new ScopedDeviceLock for device lock - Deduplicate D3D8/D3D9 device lock

624635c - [d3d8] Use new ScopedDeviceLock for device lock - Deduplicate D3D8/D3D9 device lock

878473b - [util] Enable cached dynamic resources for Skyrim SE

911f1dc - [meta] Set working directory as safe for git in CI

260237c - [util] Use one-arg pthread_setname_np on macOS

dc7f97d - [d3d9] Return -1 from D3DPERF_BeginEvent/EndEvent when not annotating

3dbf33c - [d3d11] Fix incorrect swapchain resize dimensions

efeb15e - [dxvk] Fix lack of forward progress guarantee in presenter - Fix possible presenter deadlock (hopefully)

b128f9f - [dxvk] Work around gamescope bug w.r.t. present fence signaling

d495b30 - [dxvk] Replace frame queue with fixed-size ring buffer - Present timing

3b40b91 - [dxvk] Use GetSurfaceCapabilities2 functionality if available - Present timing

40e0164 - [dxvk] End render pass before recording frame capture markers

b419e80 - [d3d9] Initialize the device child device pointer - [d3d8] Cleanup of shader declaration/function translation

96dfda2 - [d3d8] Use standard masks and shifts in encodeDestRegister - [d3d8] Cleanup of shader declaration/function translation

0abbe8a - [d3d8] Encode float constant destination registers as D3DSPR_CONST - [d3d8] Cleanup of shader declaration/function translation

3c40ca1 - [dxvk] Move EXT_swapchain_colorspace to instance extensions

5cbf108 - [dxvk] Disable dual-source blending if fragment shader only has one export

271ad46 - [d3d9] Clean up repeated 9Ex usage checks - Misc. mini changes for D3D9

a25e33e - [d3d9] Improve GetRenderTargetData validation - Misc. mini changes for D3D9

e2c890c - [d3d9] Don't clear imported textures - Misc. mini changes for D3D9

c51f443 - [dxvk] Remove tryInvalidateDeviceLocalBuffer - Misc. mini changes for D3D9

ec93112 - [d3d9] Fix oversight with systemmem surfaces - [d3d9] Fix oversight with systemmem surfaces

6853015 - [d3d9] Check the correct surface for multisampling in GetRTData - [d3d9] Fix oversight with systemmem surfaces

4bdfb9a - [util] Enable more workarounds for Total War Pharaoh

9b6cdd1 - [dxvk] Handle duplicate signals in signal tracker - Rework staging buffer logic for D3D11 resource initialization

35f1123 - [d3d9] Always align constant buffer slices to full cache lines - Rework D3D9 shader constant management

9d0f002 - [d3d9] Add fast path for recursive device lock - Rework D3D9 shader constant management

ba2b59c - [d3d9] Explicitly call ExecuteFlush from locked contexts - Rework D3D9 shader constant management

94967a3 - [dxvk] Add support for partial asynchronous buffer uploads - Rework D3D9 shader constant management - Rework D3D9 constant buffers

850a013 - [d3d11] Revise locking logic in device initializer - Rework staging buffer logic for D3D11 resource initialization

97a2061 - [d3d11] Bump limits for staging memory in flight - Rework staging buffer logic for D3D11 resource initialization

d6e0e94 - [d3d11] Serialize staging buffer allocation requests in initializer - Rework staging buffer logic for D3D11 resource initialization

3200bb1 - [d3d11] Fix infinite loop in AllocStagingBuffer

984bc31 - [d3d11] Fix submission synchronization with VR interop interfaces - Frame memes

f20f363 - [dxvk] Avoid recreating resolve image on first use - Frame memes

ac912ba - [dxvk] Also allocate reflex frame ID on rendersubmit start - Reflex memes

5b94142 - [dxvk] Handle TRIGGER_FLASH reflex marker - Reflex memes

0e10259 - [d3d11] Support converting d3d12 texture info in D3D11Device::ConvertRuntimeDescriptor().

852d454 - [dxvk] Improve hang detection

71ec7b5 - [dxvk] Fix broken negative timeout for keyed mutex

2c94c5f - [util] Only spoof vendor id in New Vegas

List of ported and adapted upstream DXVK Low Latency commits:

7f35548 - [dxvk] Fix edge case in ringbuffer allocator

e394d0c - Revert "[dxvk] Optimize DxvkCsChunkPool"

cfc119b - [dxvk] Drop 64-bit requirement for GPU timestamps

List of ported and adapted DXVK-GPLALL fork commits:

791fd08 - [perf] util: Optimize timer resolution to 0.5ms and reduce sleep threshold for Windows

4661d2e - [wsi] Conditionally exclude non-Win32 WSI sources on Windows builds

aed8771 - [wsi] win32: Add WS_EX_NOREDIRECTIONBITMAP to bypass DWM composition in fullscreen/borderless

ddc5004 - [presenter] Default allowFse to true and apply WS_POPUP for Windows Independent Flip (iFlip)

d48768b - [dxvk] presenter: Add dxvk.minSwapchainLatency option to prevent forced triple-buffering

List of ported and adapted upstream DXVK's forks commits:

a08a24d - [wsi] Query monitor advanced color state.

90c221f - [wsi] Select monitors from the client area.

4d2e22b - [dxgi] Detect HDR state per monitor.

9a72818 - [d3d11] Align Reflex latency reports

8a4b12b - [wsi] Read HDR metadata from all CTA extensions

fc32e39 - [dxgi] Export CompatValue with no compatibility overrides

d36d8aa - [dxvk] Avoid worker self-waits during queue error recovery

6c7ca87 - [dxvk] Check Reflex sleep and semaphore wait results

990267a - [dxvk] Preserve Reflex frame mappings when reusing ring slots

abb7b7b - [dxvk] Preserve unavailable Reflex timestamps

3f240ba - [util] Handle long environment variable values

596df02 - [presenter] Skip unchanged HDR metadata

3b8cbfe - [dxvk] Acquire swapchain images on the application thread

4488d28 - [dxvk] Restore early swapchain image acquisition

f3673ea - perf(d3d11): cut Skyrim render-thread translation cost

6f9fa87 - wip(perf): session-4 exterior optimizations (keep-alive, array-batch cache, adopt) - Note: Reverted - [dxvk] Port DXVK Low Latency changes - [dxvk] Optimize DxvkSharedAllocationCache::freeAllocation - 9e07b86

0b50e2a - fix(d3d11): use-after-free crash during cell streaming (heap corruption)

42ea6b7 - perf(d3d11): non-owning bindings, made safe via deferred wrapper destruction

d7f4cc0 - refactor(dxvk): production cleanup + minimize FSE divergence - Note: Ported part of commit

24440bb - docs(dxvk): genericize comments for standalone use - Note: Ported part of commit

44539f9 - perf(memory): deepen small dynamic-alloc recycling (BatchCapacity 64->256)

f089c5f - perf(cs): tune DxvkCsChunkSize to the swept sweet spot (64K->32K)

8f7153a - [d3d9] Fix Left 4 Dead 2 dynamic buffer uploads

Don't miss a new dxvk-gplall release

NewReleases is sending notifications on new releases.