Skip to content

Frequently Asked Questions (FAQ)

Digger1955 edited this page Aug 23, 2025 · 18 revisions

Frequently Asked Questions (FAQ)

Q: Why is GPL disabled by default?

A: Reasons:

  1. 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.

  2. Use of GPL leads to prolonged periods of very high CPU utilization and decreases GPU-bound performance in some cases.

  3. 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.

  4. Use of GPL requires proper implementation of VK_EXT_graphics_pipeline_library extension 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.

Q: Why is there no AVX512 (x86-64-v4) build?

A: Reasons:

  1. DXVK code is hard to vectorize for any C/C++ compiler. DXVK-GPLALL-AVX2-AMD64 branch, 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.

  1. AVX512 instruction 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 of AVX512 instructions leads to severe downclocking, which will lead to lower in-game performance, especially in stock.

  2. DXVK-GPLALL developers do not have CPUs with AVX512 support, so they cannot test such builds. Untested builds will not be provided.

  3. 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.

Q: Why is there no -mtune=AMD GCC build?

A: Reasons:

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.

Q: Why is there no GCC -march=x86-64-v3 equivalent to MSVC /arch:AVX2?

A: Reasons:

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.

Q: Would you consider adding Clang compiler and LLD linker build?

A: Reasons:

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.

Q: Why is there no /arch:SSE4.2 /favor:AMD64 MSVC build?

A: Reasons:

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.

Q: Why is there no /arch:AVX2 /favor:INTEL64 MSVC build?

A: Reasons:

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).

Clone this wiki locally