EXPLAINER · STUTTER · SHADER CACHE · DXVK 3.1.1
Shader stutter in DXVK: why it happens and what actually helps in 3.x
How we checked this
- At draw time. The game asks for a shader mid-scene, so the driver compiles it right then and the frame waits. That wait is the hitch.
- At load time. DXVK compiles shaders while the game loads its own, in a menu or loading screen, so the frame does not wait later. Needs a driver with VK_EXT_graphics_pipeline_library.
- From disk. DXVK reads its stored shader work from the cache instead of translating again, so loading is quicker and there is less to compile.
Which stutter do you have?
| Symptom | Likely cause | Go to |
|---|---|---|
| Hitches the first time you see an effect, then gone | Shader compilation | This page |
| Uneven frame times even when nothing new appears | Frame pacing | The FPS limit page |
| Stutter only while an overlay runs | Overlay interference | The overlay conflicts page |
| Started after a DXVK update | A regression, or a changed default | The release history; try the previous version |
| Heavy CPU use and hitching at loading screens | GPL compiling while the game loads | Wait for it to finish |
| Stutter in Unreal Engine games | Shaders created at draw time | See the last section |
No rows match.
What DXVK already does for you
Graphics Pipeline Library (2.0 and later)
On drivers that support the VK_EXT_graphics_pipeline_library extension, DXVK compiles Vulkan shaders when the game loads its Direct3D shaders, not when it first draws with them, which reduces or removes shader compile stutter in many games (README at 3.1.1). Our 3.1.1 runs logged Graphics pipeline libraries supported on both Windows and Wine (F20; software driver). You can watch the work with the HUD’s compiler item; see the HUD guide.
The cost: in games that load shaders in a menu or loading screen, you can see a long stretch of very high CPU use, worse on weaker CPUs. The README advises waiting for compilation to finish before playing.
The shader cache (3.0 and later)
3.0 added a cache of DXVK’s translated shader work (an intermediate form, not finished Vulkan pipelines), which offsets the higher cost of its new shader compiler. We saw it created: the log line Created cache file: …\d457b6a386c27677.dxvk.bin, with a .dxvk.bin and a .dxvk.lut file per game (F19).
Your driver’s own cache
NVIDIA and Mesa drivers keep their own compiled pipelines, and Steam’s shader pre-caching is a separate system. Clearing a driver cache makes DXVK’s pipelines compile again.
First run vs second run: not measured yet
We planned a chart of the same route played twice, first with an empty cache and then with a full one. That needs a real GPU and real games, which this project’s lab does not have, so there is no chart and no number here.
Where the cache is, and how to clear it
| Platform | Location | Basis |
|---|---|---|
| Windows | C:\Users\<you>\AppData\Local\dxvk | Seen in our Windows runs (F19) |
| Wine | %LOCALAPPDATA%/dxvk inside the Wine prefix | README; our run set a custom path (F19), so the default was not seen |
| Proton, Steam Deck | Inside the game's Proton prefix, same layout as Wine | Expected; not verified |
| Native Linux (DXVK Native) | $XDG_CACHE_HOME or ~/.cache | README |
No rows match.
To open it on Windows press Win+R, type %LOCALAPPDATA%\dxvk and press Enter. This is what the folder held after our Windows run with two small test programs:
- dxvk/
- a9eb262a6a302ee0.dxvk.bin ← 0 bytes
- a9eb262a6a302ee0.dxvk.lut ← 12 bytes
- d457b6a386c27677.dxvk.bin ← 0 bytes
- d457b6a386c27677.dxvk.lut ← 12 bytes
The files are tiny because our test programs use trivial shaders; real games will grow them, and we have no real sizes. Delete the folder’s files to clear it; set DXVK_SHADER_CACHE_PATH to move it (verified, F19), or DXVK_SHADER_CACHE=0 to switch it off, which is for troubleshooting only.
“DXVK not creating a cache” and other cache questions
No cache folder usually means one of: DXVK is not loaded, the version is older than 3.0, DXVK_SHADER_CACHE=0 is set, or the folder is not writable. DXVK 1.10.3 and 2.x use the old state cache instead, and 1.10.3 logs it:
warn: DXVK: No state cache file found
The old state cache, normal for 1.10.3.
warn: DXVK: Creating new state cache file
Can you share caches? Pipelines are compiled per driver, so there is little reason to; we did not test whether the 3.x cache is invalidated by version changes.
Things that no longer exist
| Old fix | Status | Use instead |
|---|---|---|
| .dxvk-cache files and sites that sell or share them | The state cache was removed in 2.7 | The 3.x shader cache; nothing to download |
| DXVK_STATE_CACHE, DXVK_STATE_CACHE_PATH | Removed with the state cache in 2.7 | DXVK_SHADER_CACHE_PATH for the 3.x cache |
| DXVK_ASYNC and dxvk.enableAsync | Never in official DXVK; only in the gplasync fork | See the async page for risks |
No rows match.
What you can do
- Let loading screens finish and watch the
compilerHUD item: heavy compile activity after the menu is normal on GPL drivers (README). - Play the same area twice: the cache should help the second run. We have not measured how much.
- Keep your GPU driver current: GPL depends on the driver.
- Cap FPS or set a frame latency to smooth pacing; see the FPS limit page.
- On Linux and Steam Deck, keep Steam’s shader pre-caching on.
- Close overlays.
- If you accept the risks, an async fork: see the async page.
More compiler threads rarely help. dxvk.numCompilerThreads defaults to 0, which uses all CPU cores, and our runs logged DXVK: Using 4 compiler threads.
Unreal Engine and other draw-time shader games
GPL cannot help games that only load their Direct3D shaders at draw time, such as most Unreal Engine games. The README says they will still stutter somewhat, though less than without GPL. Many of these games stutter on native DirectX too; we have not compared.
Questions people ask
Why does DXVK stutter?
Most often because a shader is compiled the first time the game needs it, and the frame waits. DXVK 2.0 and newer compile shaders at load time on drivers with the Graphics Pipeline Library extension, which reduces or removes this in many games.
Where is the DXVK cache on Windows?
In %LOCALAPPDATA%\dxvk, which is C:\Users\<you>\AppData\Local\dxvk. Our Windows runs of 3.1.1 created one .dxvk.bin and one .dxvk.lut file there per game (finding F19).
How do I delete the DXVK cache?
Close the game and delete the files in that folder. DXVK rebuilds them on the next run. That is our reading of how a cache works; we did not time the rebuild.
Why is DXVK not creating a cache?
The cache exists from DXVK 3.0. Older versions use a state cache instead. It will also be missing if DXVK is not loaded, if DXVK_SHADER_CACHE=0 is set, or if the folder cannot be written.
Is there a dxvk-cache download for my game?
No. The .dxvk-cache system was removed in 2.7, and downloaded caches no longer do anything.
Does DXVK 3.0 fix stutter?
Its new shader cache stores compile work between runs, which helps loading, but games that load shaders only at draw time, such as most Unreal Engine games, still stutter somewhat. We have no real-game measurements.
What does GPL mean?
Graphics Pipeline Library, a Vulkan extension (VK_EXT_graphics_pipeline_library). It is not the GNU licence: DXVK's licence never changed.
Sources
- DXVK README at v3.1.1 (Graphics Pipeline Library, shader cache) · accessed 2026-11-07
- DXVK dxvk.conf at v3.1.1 (numCompilerThreads) · accessed 2026-11-07
- DXVK releases · accessed 2026-11-07