From 228ddb8abab02105e02233647834bde2528d9ba9 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 24 Jun 2017 19:29:03 +1000 Subject: D3D11: Reload shader cache when relevant config changes --- Source/Core/VideoBackends/D3D/PixelShaderCache.cpp | 34 +++++++++++++++------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'Source/Core/VideoBackends/D3D/PixelShaderCache.cpp') diff --git a/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp b/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp index 289e9a32f9..d3bdce59f1 100644 --- a/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/PixelShaderCache.cpp @@ -498,18 +498,29 @@ void PixelShaderCache::Init() SETSTAT(stats.numPixelShadersAlive, 0); if (g_ActiveConfig.bShaderCache) - { - if (!File::Exists(File::GetUserPath(D_SHADERCACHE_IDX))) - File::CreateDir(File::GetUserPath(D_SHADERCACHE_IDX)); - - std::string cache_filename = - StringFromFormat("%sdx11-%s-ps.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), - SConfig::GetInstance().GetGameID().c_str()); - PixelShaderCacheInserter inserter; - g_ps_disk_cache.OpenAndRead(cache_filename, inserter); - } + LoadShaderCache(); +} - last_entry = nullptr; +void PixelShaderCache::LoadShaderCache() +{ + if (!File::Exists(File::GetUserPath(D_SHADERCACHE_IDX))) + File::CreateDir(File::GetUserPath(D_SHADERCACHE_IDX)); + + std::string cache_filename = StringFromFormat( + "%sdx11-%s-%s-ps.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), + SConfig::GetInstance().GetGameID().c_str(), g_ActiveConfig.GetHostConfigFilename().c_str()); + PixelShaderCacheInserter inserter; + g_ps_disk_cache.OpenAndRead(cache_filename, inserter); +} + +void PixelShaderCache::Reload() +{ + g_ps_disk_cache.Sync(); + g_ps_disk_cache.Close(); + Clear(); + + if (g_ActiveConfig.bShaderCache) + LoadShaderCache(); } // ONLY to be used during shutdown. @@ -520,6 +531,7 @@ void PixelShaderCache::Clear() PixelShaders.clear(); last_entry = nullptr; + last_uid = {}; } // Used in Swap() when AA mode has changed -- cgit v1.2.3