Guide for DXVK-GPLAsync 2.6+ for Guild Wars 2
and explanation of the DXVK config file options relevant to the game
What is DXVK?
DXVK replaces Direct3D 11 calls with Vulkan ones, letting your GPU driver handle Guild Wars 2 in the same low-overhead way it handles modern, Vulkan-native titles. “GPLAsync” is a community build that adds asynchronous pipeline compilation—shaders are finished in a background thread and cached, so the game no longer has to “stop and wait” the instant it needs a brand-new effect. Since version 2.6 the async cache is on by default.
AMD GPUs usually gain the most benefit, but recent Nvidia and Intel drivers often show similar 1 %/0.1 %-low gains. Test on your own rig.
What you can realistically expect from DXVK-GPLAsync in Guild Wars 2
- Noticeably smoother frametimes. The big “freeze frames” that happen the first time a new spell or map asset appears are replaced by tiny micro-blips because shaders compile in the background instead of on the render thread.
- Higher 1 % and 0.1 % lows. With less driver overhead the game feeds work to the GPU more steadily, so busy WvW blobs drop to, say, 65 FPS instead of 60 FPS on the same hardware.
- A modest gain in average FPS (even 5–20 %, biggest on mid-range CPUs). DXVK’s Vulkan path is lighter than native D3D11, leaving more headroom on the one core GW2 relies on.
Limits and possible hiccups to keep in mind:
- DXVK cannot erase Guild Wars 2’s core CPU bottleneck. When the game logic itself tops out a single core, you will still hit a “hard wall” no matter how fast your GPU is.
- Input latency and frames can be improved but not magically boosted to the moon.
- The async cache and optional VRAM defragmenter can load more data into
memory. Generally tries to free space; usually safe even on 4 GB GPUs, but you can force-disable
enableMemoryDefrag
if you hit glitches.
Useful Links:
- DXVK-GPLAsync Releases – https://gitlab.com/Ph42oN/dxvk-gplasync/-/releases
- My config (DXVK 2.6+) – https://github.com/elinlyze/dxvk-gplasync-config/releases
- Official DXVK config file and documentation – https://github.com/doitsujin/dxvk/blob/master/dxvk.conf
- Basic DXVK for GW2 Guide by bwyazel.8431 – https://en-forum.guildwars2.com/topic/153463-guide-how-to-easily-improve-fps-and-decrease-stuttering-on-windows-using-dxvk-greatly-helps-amd-gpus/
Requirements:
- 64-bit OS (minimum Windows 10 21H2+)
- A GPU and driver with Vulkan 1.3 and higher capabilities (generally: AMD RX460+, nVidia GTX 750+, Intel UHD630+ or any later Xe/Arc)
- Up-to-date GPU drivers
- Internet connection to download the necessary files.
- An archive manager (built-in Windows Explorer, 7-Zip etc.)
- GW2 install (duh)
How to Install:
Everything is at your OWN risk! Make backups of files!
-
Download the latest release of GPLAsync from the official GitLab by Ph42oN.
Link: https://gitlab.com/Ph42oN/dxvk-gplasync/-/releases
Download the .zip or .tar.gz file under “Packages”. -
Open the downloaded archive and inside it navigate to “.\dxvk-gplasync-v2.6.1-1\x64”. The exact folder name will vary by version.
-
Backup any existing “d3d11.dll” and “dxgi.dll” files.
From here unpack “d3d11.dll” and “dxgi.dll” to the root directory of your GW2 install.
The root directory is the same folder where the Gw2-64.exe is placed.
ONLY if you already have ArcDPS or Nexus installed:- Unpack the “d3d11.dll” from “.\dxvk-gplasync-v2.6.1-1.zip\dxvk-gplasync-v2.6.1-1\x64” somewhere else.
- Rename that “d3d11.dll” to “d3d11_chainload.dll”. Do not rename the existing ArcDPS or similar .dll!
- Place “d3d11_chainload.dll” and “dxgi.dll” in the root directory of your GW2 install.
-
Either place the official “dxvk.conf” from the DXVK GitHub or my own premade “dxvk.conf” in the root directory of your GW2 install.
You can skip this step if you do not want to use either; a “dxvk.conf” will be generated the first time you start the game with DXVK installed.
-
Start the game.
Easiest sanity check: Use a GPU overlay that shows the current graphics API (should read “Vulkan”) or setdxvk.hud = compiler
in the config and look for the HUD.
If you update DXVK and see new crashes, delete %LOCALAPPDATA%\DXVK\
to flush old shader caches.
DXVK.CONF Explanations and Guide
All options are explained in my config as well. For more indepth documentation please check the official DXVK config file.
These are the most relevant options for GW2 that I tested and benchmarked:
-
dxvk.hud =
With this option you can enable ingame overlays to show you data like FPS, frametimes, pipeline details, device info or everything at once. Very useful for debugging or benchmarking.
Check the comment in my or the official config file for options, -
dxvk.gplAsyncCache =
This setting actually turns on the Async cache. This is enabled by default since DXVK-GPLAsync version 2.6-1 and does not need to be touched here at all. I kept this option in for now to be able to disable Async cache for benchmarking. -
dxgi.maxFrameRate =
You can set the maximum rendered FPS with this option. Works very similar to the ingame FPS limiter, but more stable from my experience. I would recommend setting a limiter to an FPS amount you can actually get and ideally at your display’s refresh rate (e.g. 144 FPS with a 144 Hz display). This helps a lot with frame pacing and consistency, power draw and image tearing. -
dxgi.maxFrameLatency =
This is an interesting option. It sets the amount of frames the CPU queues up before the GPU actually renders them. Raising this can increase overall FPS consistency, especially in bigger WvW battles or meta events, but will add total latency. I recommend setting it to 1 or 2, not higher — or 0 to keep the game’s default mode. Valid values are 1-16 or 0. -
dxgi.maxDeviceMemory =
This option basically tells DXVK how much VRAM your GPU has. Modern GPUs will properly tell this value themselves, but if you are not sure set this value to your GPU’s VRAM in MB. Setting it to a value higher than your actual VRAM can result in bugs and crashes. This makes this a very optional option. -
dxgi.syncInterval =
Setting this option to 0 simply turns off V-sync; 1 enables it. V-sync adds latency and, unless you have major tearing issues, you can leave this off. -
d3d11.relaxedBarriers = / d3d11.ignoreGraphicsBarriers =
These options require a bit of explaining:
- Think of a barrier as a tiny red traffic-light the game puts in the GPU’s work queue: “stop here until the last texture write really is done.”
- They keep the picture correct, but each stop costs a few microseconds.
d3d11.relaxedBarriers = True
- DXVK keeps the important red lights and removes the ones it can prove are pointless.
- Result: a small free speed boost with almost zero risk of visual bugs.
d3d11.ignoreGraphicsBarriers = True
- DXVK rips out all those red lights. The GPU can drive flat-out.
- Fastest, but sometimes a texture is still being painted when the next draw call needs it, so you may see flickering, missing shadows, etc.
Never enable both at once — pick one or leave both off.
-
d3d11.cachedDynamicResources =
Keeps certain “dynamic” GPU data in a quick-access cache, speeding up games that update those buffers every frame.v = cache Vertex buffers (geometry points) i = cache Index buffers (how those points connect) c = cache Constant buffers (per-frame settings like camera or light data) r = cache Shader resources (raw / structured compute buffers) a = cache All of the above (v+i+c+r)
Examples:
d3d11.cachedDynamicResources = "c" ; only constants (safe default) d3d11.cachedDynamicResources = "vi" ; vertex + index d3d11.cachedDynamicResources = "a" ; everythingStart with “c”. If the game still stutters when lots of particles spawn, try “a”. Watch VRAM use; caching more buffers needs more memory, usually not a problem with 4 GB+ GPUs.
-
dxvk.numCompilerThreads =
Sets how many CPU cores are used for shader compilation.
0 means “use all”. On Intel hybrid CPUs this also keeps threads from being parked on E-cores by mistake. -
dxvk.useRawSsbo =
When True, DXVK stores some GPU data in a simple 4-byte-aligned “raw” format instead of the older “structured” one. AMD cards process this 1–2 % faster; Nvidia/Intel usually see no difference. -
dxvk.enableGraphicsPipelineLibrary =
Lets DXVK build reusable “lego bricks” of the graphics pipeline (shaders + state) to cut shader-stutter.- Auto — default; use when the driver supports it.
- True — force on (for testing new drivers).
- False — disable.
-
dxvk.enableMemoryDefrag =
DXVK watches how textures, vertex buffers and shader caches are loaded into VRAM. When fragmentation leaves holes, DXVK moves blocks in the background so large new assets fit without stalls.- Auto — default; on only for known-good drivers.
- True — always defrag, even on unknown drivers.
- False — disable; game may hitch when VRAM fills.
Start with Auto. If map loads hitch for 2–3 s, try True; if you see new glitches, revert.