diff options
| author | Mary <me@thog.eu> | 2020-12-13 08:46:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-13 08:46:07 +0100 |
| commit | 6bc2733c1796788590c9f0114013d2e4b555e31e (patch) | |
| tree | a729af2552637718fc3883108539c6da6523efd6 /Ryujinx.Graphics.Gpu/Shader/Cache/CacheMigration.cs | |
| parent | 19d18662ea3ed5470898ed2b7bbb06d45f6004dd (diff) | |
salieri: Support read-only mode if archive is already opened (#1807)
This improves shader cache resilience when people opens another program that touch the cache.zip.
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/Cache/CacheMigration.cs')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/Cache/CacheMigration.cs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/Cache/CacheMigration.cs b/Ryujinx.Graphics.Gpu/Shader/Cache/CacheMigration.cs index 965287b5..839853c0 100644 --- a/Ryujinx.Graphics.Gpu/Shader/Cache/CacheMigration.cs +++ b/Ryujinx.Graphics.Gpu/Shader/Cache/CacheMigration.cs @@ -146,7 +146,12 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache string guestBaseCacheDirectory = CacheHelper.GenerateCachePath(baseCacheDirectory, CacheGraphicsApi.Guest, "", "program"); string hostBaseCacheDirectory = CacheHelper.GenerateCachePath(baseCacheDirectory, graphicsApi, shaderProvider, "host"); - if (CacheHelper.TryReadManifestHeader(CacheHelper.GetManifestPath(guestBaseCacheDirectory), out CacheManifestHeader header)) + string guestArchivePath = CacheHelper.GetArchivePath(guestBaseCacheDirectory); + string hostArchivePath = CacheHelper.GetArchivePath(hostBaseCacheDirectory); + + bool isReadOnly = CacheHelper.IsArchiveReadOnly(guestArchivePath) || CacheHelper.IsArchiveReadOnly(hostArchivePath); + + if (!isReadOnly && CacheHelper.TryReadManifestHeader(CacheHelper.GetManifestPath(guestBaseCacheDirectory), out CacheManifestHeader header)) { if (NeedHashRecompute(header.Version, out ulong newVersion)) { |
