protonscr

[Feature Request] Ability to merge V17 caches together

dxvkclosed wontfix
doitsujin/dxvk#3376 · opened 2023-04-22 by ghost · updated 2024-04-27 · 9 comments · github
?ghost 2023-04-22 github

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?

KK0bin maintainer 2023-04-22 github

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.

?ghost 2023-04-22 github

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.

KK0bin maintainer 2023-04-22 github

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.

?ghost 2023-04-22 github

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: @.***>

KK0bin maintainer 2023-04-22 github

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.

Mmbriar 2023-04-22 github

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.

?ghost 2023-04-23 github

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.

KK0bin maintainer 2023-05-07 github

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.

MMicro-Wave-Oven 2024-04-27 github

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

Upstream links