|
|
@@ -33,6 +33,11 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache
|
|
|
/// </summary>
|
|
|
SaveManifest,
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Remove entries from the hash manifest and save it.
|
|
|
+ /// </summary>
|
|
|
+ RemoveManifestEntries,
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Flush temporary cache to archive.
|
|
|
/// </summary>
|
|
|
@@ -227,11 +232,24 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache
|
|
|
FlushToArchive();
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Queue a task to remove entries from the hash manifest.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="entries">Entries to remove from the manifest</param>
|
|
|
+ public void RemoveManifestEntriesAsync(HashSet<Hash128> entries)
|
|
|
+ {
|
|
|
+ _fileWriterWorkerQueue.Add(new CacheFileOperationTask
|
|
|
+ {
|
|
|
+ Type = CacheFileOperation.RemoveManifestEntries,
|
|
|
+ Data = entries
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Remove given entries from the manifest.
|
|
|
/// </summary>
|
|
|
/// <param name="entries">Entries to remove from the manifest</param>
|
|
|
- public void RemoveManifestEntries(HashSet<Hash128> entries)
|
|
|
+ private void RemoveManifestEntries(HashSet<Hash128> entries)
|
|
|
{
|
|
|
lock (_hashTable)
|
|
|
{
|
|
|
@@ -488,6 +506,9 @@ namespace Ryujinx.Graphics.Gpu.Shader.Cache
|
|
|
case CacheFileOperation.SaveManifest:
|
|
|
SaveManifest();
|
|
|
break;
|
|
|
+ case CacheFileOperation.RemoveManifestEntries:
|
|
|
+ RemoveManifestEntries((HashSet<Hash128>)task.Data);
|
|
|
+ break;
|
|
|
case CacheFileOperation.FlushToArchive:
|
|
|
FlushToArchive();
|
|
|
break;
|