diff options
| author | Stenzek <stenzek@gmail.com> | 2017-06-24 19:29:03 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2017-07-20 17:46:59 +1000 |
| commit | 228ddb8abab02105e02233647834bde2528d9ba9 (patch) | |
| tree | 8dc8f33d450c8b0773aff2d0b51e0bae8811a211 /Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp | |
| parent | 62a901508b1fd23eb386a3d108950ab061bbc19a (diff) | |
D3D11: Reload shader cache when relevant config changes
Diffstat (limited to 'Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp b/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp index 6dbd3d3dde..951b4287da 100644 --- a/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp +++ b/Source/Core/VideoBackends/D3D/GeometryShaderCache.cpp @@ -158,18 +158,29 @@ void GeometryShaderCache::Init() Clear(); 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-gs.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), - SConfig::GetInstance().GetGameID().c_str()); - GeometryShaderCacheInserter inserter; - g_gs_disk_cache.OpenAndRead(cache_filename, inserter); - } + LoadShaderCache(); +} - last_entry = nullptr; +void GeometryShaderCache::LoadShaderCache() +{ + if (!File::Exists(File::GetUserPath(D_SHADERCACHE_IDX))) + File::CreateDir(File::GetUserPath(D_SHADERCACHE_IDX)); + + std::string cache_filename = StringFromFormat( + "%sdx11-%s-%s-gs.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), + SConfig::GetInstance().GetGameID().c_str(), g_ActiveConfig.GetHostConfigFilename().c_str()); + GeometryShaderCacheInserter inserter; + g_gs_disk_cache.OpenAndRead(cache_filename, inserter); +} + +void GeometryShaderCache::Reload() +{ + g_gs_disk_cache.Sync(); + g_gs_disk_cache.Close(); + Clear(); + + if (g_ActiveConfig.bShaderCache) + LoadShaderCache(); } // ONLY to be used during shutdown. @@ -180,6 +191,7 @@ void GeometryShaderCache::Clear() GeometryShaders.clear(); last_entry = nullptr; + last_uid = {}; } void GeometryShaderCache::Shutdown() |
