DXVK State caches are generally not all that useful anymore since DXVK 2.0.
On drivers that support VK_EXT_graphics_pipeline_library, DXVK can compile most shaders similar to what it would do if there was a populated state cache. There's a handful of exceptions to that but these are thankfully rare enough to not be a problem.
DXVK State caches are generally not all that useful anymore since DXVK 2.0.
On drivers that support VK_EXT_graphics_pipeline_library, DXVK can compile most shaders similar to what it would do if there was a populated state cache. There's a handful of exceptions to that but these are thankfully rare enough to not be a problem.
While that is true, eliminating stutter is important to a good experience and a fully populated state cache can still improve the experience with 2.1 . I don't think it's worth writing off just because of the other improvements made.
and a fully populated state cache can still improve the experience with 2.1
Hardly so. Keep in mind that DXVK state caches do not cache compiled shaders. They don't contain any shader code in general. They just allow DXVK to compile shaders as soon as the game provides the actual shader code. That's how it works with DXVK 2 in almost all cases anyway. DXVK 2 doesn't even write entries to the state cache anymore unless they use tessellation, geometry shaders or some other edge case and like I said, that's rare enough to not really be a problem.
Just in time shader compilation on UE4 engine titles can still benefit from the precomputated cache I have found personally.
Sent from Outlook for iOShttps://aka.ms/o0ukef
From: Robin Kertels @.>
Sent: Saturday, April 22, 2023 4:23:04 PM
To: doitsujin/dxvk @.>
Cc: Silent @.>; Author @.>
Subject: Re: [doitsujin/dxvk] [Feature Request] Ability to merge V17 caches together (Issue #3376)
and a fully populated state cache can still improve the experience with 2.1
Hardly so. Keep in mind that DXVK state caches do not cache compiled shaders. They don't contain any shader code in general. They just allow DXVK to compile shaders as soon as the game provides the actual shader code. That's how it works with DXVK 2 in almost all cases anyway. DXVK 2 doesn't even write entries to the state cache anymore unless they use tessellation, geometry shaders or some other edge case and like I said, that's rare enough to not really be a problem.
—
Reply to this email directly, view it on GitHubhttps://github.com/doitsujin/dxvk/issues/3376#issuecomment-1518685387, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AD24QU4U35QAOZKDYNR2JTTXCPZVRANCNFSM6AAAAAAXH4VCR4.
You are receiving this because you authored the thread.Message ID: @.***>
The problem with UE4 is that it calls D3D11Device::Create*Shader too late.
Both DXVK 2 and DXVKs state cache only start compiling as soon as the game does that.
You're probably thinking of a shader cache, not the state cache.
Yeah, UE4 doesn't benefit from the state cache at all really. You might think that it does if you play the same section of the game twice, but what is actually helping there is the driver's shader cache, which is unshareable and GPU and driver version specific.
Getting back to the topic at hand, I still think it would be a worthwhile endeavour to have a native tool to combine 2 x V17 caches together.
The headers document the format pretty well. We don't intent to provide such a tool ourselves but there's nothing stopping anyone else from writing one.
For people still looking for a solution, I've forked and updated a project to support v17 caches.
https://github.com/Micro-Wave-Oven/dxvk-cache-tool
Efforts have been made in the past to do this for V15 caches, why not allow the ability to merge 2 caches that might have differing data together?