-
Notifications
You must be signed in to change notification settings - Fork 3
Frequently Asked Questions (FAQ)
-
This feature is replaced by Async, which does not require any specific driver/extension support and provides better performance than using DXVK with GPL or using DXVK only with state cache.
-
Use of GPL leads to prolonged periods of very high CPU utilization and decreases GPU-bound performance in some cases.
-
Use of GPL significantly increases VRAM/RAM usage and since many Vulkan Drivers on Linux do not have effective memory management mechanisims and do not implement
VK_EXT_pageable_device_local_memory, using GPL decreases GPU-bound performance in VRAM-limited and VRAM/PCIe bandwidth-limited situations. -
Use of GPL requires proper implementation of
VK_EXT_graphics_pipeline_libraryextension which is not available on all devices/drivers.
Note: GPL is disabled by default since 2.6.1-4. GPL still can be enabled by setting dxvk.enableGraphicsPipelineLibrary = True in dxvk.conf.
- DXVK code is hard to vectorize for any C/C++ compiler.
DXVK-GPLALL-AVX2-AMD64branch, ver. 2.6.1-5, MSVC build log:
src\util\util_string.h(113) : info C5002: loop not vectorized due to reason '500'
src\util\util_string.h(113) : info C5012: loop not parallelized due to reason '500'
src\d3d8\d3d8_state_block.cpp : info C5002: loop not vectorized due to reason '1301'
src\d3d8\d3d8_state_block.cpp : info C5012: loop not parallelized due to reason '1007'
src\dxvk\dxvk_context.cpp(6982) : info C5002: loop not vectorized due to reason '504'
src\dxvk\dxvk_context.cpp(6982) : info C5012: loop not parallelized due to reason '504'
src\d3d11\d3d11_context.cpp(4880) : info C5002: loop not vectorized due to reason '502'
src\d3d11\d3d11_context.cpp(4880) : info C5012: loop not parallelized due to reason '502'
and etc... Log size is 22 MB.
-
AVX512instruction set works best only on CPUs with 512 bit datapath. The only such consumer CPUs are AMD Zen 5. And even on them any use ofAVX512instructions leads to severe downclocking, which will lead to lower in-game performance, especially in stock. -
DXVK-GPLALL developers do not have CPUs with
AVX512support, so they cannot test such builds. Untested builds will not be provided. -
GCC-MinGW toolchain has a known bug, which leads to crashes in applications, when DXVK is compiled with
AVX2with more than 128 bit datapath and optimizations. It is acknowledged by upstream DXVK developers.
There is no GCC -mtune=AMD build, because there is no such option in GCC compiler. The closest equivalent is -mtune=generic, which is used for GCC-WinMacLinux-SSE4.2-O3-LTO-GENERIC builds.
There is no GCC -march=x86-64-v3 build, because GCC-MinGW toolchain has a known bug, which leads to crashes in applications, when DXVK is compiled with AVX2 with more than 128 bit datapath and optimizations. It is acknowledged by upstream DXVK developers.
If this bug will be fixed, GCC AVX2 -march=x86-64-v3 build will be added.
In order to provide DXVK-GPLALL builds GitHub Actions infrastructure of upstream DXVK is used. Upstream DXVK only provides GCC and MSVC builds and DXVK-GPLALL limited by upstream DXVK. If upstream DXVK starts to provide LLVM/Clang builds, they will be provided too.
There is no /arch:SSE4.2 /favor:AMD64 build, because there are no AMD CPUs which will benefit from using such builds. All AMD Zen CPUs support AVX2 and get benefits from using AVX2. All older AMD CPUs either do not support SSE4.2 (AMD Phenom II series and older) or will not benefit from using SSE4.2 (AMD FX series) due to specifics of architecture implementation.
There is no /arch:AVX2 /favor:INTEL64 build, because Intel CPUs are affected by downclocking when they encounter any AVX instructions. Downclocking will lead to significanlty lower overall performance of application that is using /arch:AVX2 /favor:INTEL64 build on Intel CPU.
Intel workarounded AVX throttling problem (high power draw, which leads to high temperatures, when AVX instructions are used) using AVX downclocking solution, but Intel did not solve the AVX throttling problem. The full answer on this question will take too long, so here are links with information reletated to your question:
https://skatterbencher.com/intel-avx-ratio-offset/ - Intel AVX Ratio Offset - AVX downclocking workaround information.
https://www.numberworld.org/blogs/2024_8_7_zen5_avx512_teardown/#throttling - Zen5 Article, Intel's Approach section - information about why workaround is needed and is still used in some form.
In short, there are Intel CPUs that fully affected by AVX downclocking (up to Rocket Lake) and that are partially affected by AVX downclocking (Alder Lake and newer). And any Intel CPU still will throttle enough to lower its clock rate, which will lead in lower performance for user that is using DXVK-GPLALL /arch:AVX2 /favor:INTEL64 build on Intel CPU, espescially, if the application for which DXVK-GPLALL is used, does not use AVX at all (D3D8, D3D9, D3D10 games do not use AVX at all, and the number of D3D11 games which use AVX is rather small).