| 22 Mar 2025 |
Sean | well it doesn't happen in windows itself | 02:05:28 |
olivia | there are some environment variables in the vkd3d README that configure their shader cache layers that might be worth fiddling with | 02:06:03 |
Sean | should I try disabling shader cache? | 02:07:53 |
olivia | possibly | 02:08:06 |
Hayden R. (they/them) | Prob | 02:08:09 |
olivia | oooh | 02:08:41 |
olivia | if (vkd3d_config_flags & VKD3D_CONFIG_FLAG_PIPELINE_LIBRARY_LOG)
INFO("Ignoring mismatched driver for CachedPSO. Continuing as-if application did not provide cache.\n");
| 02:08:51 |
olivia | that looks juicy | 02:08:57 |
olivia | nvm, this is a different kind of error condition | 02:09:46 |
Sean | no it does the same thing with shader cache disabled | 02:13:06 |
Sean | I think that's just the steam cache anyways, not the game cache | 02:13:22 |
olivia | oh, how are you disabling the shader cache? | 02:13:36 |
Sean | VKD3D_SHADER_CACHE_PATH=0 | 02:13:44 |
olivia | yeah, that was the one I had in mind, but I think it kinda disables the wrong half of the cache here | 02:14:41 |
olivia | I'm wondering whether there's a way to get vkd3d to stop advertising support for D3D12_FEATURE_SHADER_CACHE, so that the application stops trying to do manual shader cache management | 02:15:26 |
olivia | (under the hypothesis that the application is either misusing the shader cache, or that vkd3d's compatibility check is wrong, but that vkd3d's internal shader cache might still work fine here) | 02:16:09 |
olivia | looks like vkd3d advertising this unconditionally | 02:17:00 |
olivia | how difficult would it be for you to test a vkd3d patch? | 02:17:07 |
Sean | sure I can test | 02:17:20 |
olivia | also, would it be possible to confirm that the PSO hash mismatch messages are correlated to the stutters with higher confidence? | 02:17:54 |
olivia | possible we're totally looking in the wrong place here | 02:17:59 |
Sean | sure let me double check | 02:18:11 |
Sean | yes they definitely correlate | 02:20:54 |
olivia | cool! | 02:22:57 |
olivia | alright, try this:
diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c
index a14d30bd..47ad210c 100644
--- a/libs/vkd3d/device.c
+++ b/libs/vkd3d/device.c
@@ -4648,13 +4648,9 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CheckFeatureSupport(d3d12_device_i
return E_INVALIDARG;
}
- /* We cannot query shader cache features from the Vulkan driver,
- * but all relevant drivers have their own disk cache, so we'll
- * advertize support for the AUTOMATIC_*_CACHE feature bits. */
- data->SupportFlags = D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO |
- D3D12_SHADER_CACHE_SUPPORT_LIBRARY |
- D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE |
- D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE;
+ /* Don't advertise shader cache support, to work around a possible
+ * shader cache problem with Monster Hunter Wilds */
+ data->SupportFlags = D3D12_SHADER_CACHE_SUPPORT_NONE;
TRACE("Shader cache support flags %#x.\n", data->SupportFlags);
return S_OK;
| 02:23:06 |
olivia | alright, try this:
diff --git a/libs/vkd3d/device.c b/libs/vkd3d/device.c
index a14d30bd..47ad210c 100644
--- a/libs/vkd3d/device.c
+++ b/libs/vkd3d/device.c
@@ -4648,13 +4648,9 @@ static HRESULT STDMETHODCALLTYPE d3d12_device_CheckFeatureSupport(d3d12_device_i
return E_INVALIDARG;
}
- /* We cannot query shader cache features from the Vulkan driver,
- * but all relevant drivers have their own disk cache, so we'll
- * advertize support for the AUTOMATIC_*_CACHE feature bits. */
- data->SupportFlags = D3D12_SHADER_CACHE_SUPPORT_SINGLE_PSO |
- D3D12_SHADER_CACHE_SUPPORT_LIBRARY |
- D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_INPROC_CACHE |
- D3D12_SHADER_CACHE_SUPPORT_AUTOMATIC_DISK_CACHE;
+ /* Don't advertise shader cache support, to work around a possible
+ * shader cache problem with Monster Hunter Wilds */
+ data->SupportFlags = D3D12_SHADER_CACHE_SUPPORT_NONE;
TRACE("Shader cache support flags %#x.\n", data->SupportFlags);
return S_OK;
| 02:23:11 |
Sean | okay let me figure out how to build proton 😅 | 02:23:58 |
olivia | hahaha good luck | 02:26:06 |
olivia | looks like vkd3d-proton is in nixpkgs | 02:26:36 |
Sean | oh, should I just use that? | 02:26:52 |