diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.Graphics.Gpu/Shader/DiskCache/BackgroundDiskCacheWriter.cs | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/DiskCache/BackgroundDiskCacheWriter.cs')
| -rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/DiskCache/BackgroundDiskCacheWriter.cs | 138 |
1 files changed, 0 insertions, 138 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/DiskCache/BackgroundDiskCacheWriter.cs b/Ryujinx.Graphics.Gpu/Shader/DiskCache/BackgroundDiskCacheWriter.cs deleted file mode 100644 index 568fe968..00000000 --- a/Ryujinx.Graphics.Gpu/Shader/DiskCache/BackgroundDiskCacheWriter.cs +++ /dev/null @@ -1,138 +0,0 @@ -using Ryujinx.Common; -using Ryujinx.Common.Logging; -using System; -using System.IO; - -namespace Ryujinx.Graphics.Gpu.Shader.DiskCache -{ - /// <summary> - /// Represents a background disk cache writer. - /// </summary> - class BackgroundDiskCacheWriter : IDisposable - { - /// <summary> - /// Possible operation to do on the <see cref="_fileWriterWorkerQueue"/>. - /// </summary> - private enum CacheFileOperation - { - /// <summary> - /// Operation to add a shader to the cache. - /// </summary> - AddShader - } - - /// <summary> - /// Represents an operation to perform on the <see cref="_fileWriterWorkerQueue"/>. - /// </summary> - private readonly struct CacheFileOperationTask - { - /// <summary> - /// The type of operation to perform. - /// </summary> - public readonly CacheFileOperation Type; - - /// <summary> - /// The data associated to this operation or null. - /// </summary> - public readonly object Data; - - public CacheFileOperationTask(CacheFileOperation type, object data) - { - Type = type; - Data = data; - } - } - - /// <summary> - /// Background shader cache write information. - /// </summary> - private readonly struct AddShaderData - { - /// <summary> - /// Cached shader program. - /// </summary> - public readonly CachedShaderProgram Program; - - /// <summary> - /// Binary host code. - /// </summary> - public readonly byte[] HostCode; - - /// <summary> - /// Creates a new background shader cache write information. - /// </summary> - /// <param name="program">Cached shader program</param> - /// <param name="hostCode">Binary host code</param> - public AddShaderData(CachedShaderProgram program, byte[] hostCode) - { - Program = program; - HostCode = hostCode; - } - } - - private readonly GpuContext _context; - private readonly DiskCacheHostStorage _hostStorage; - private readonly AsyncWorkQueue<CacheFileOperationTask> _fileWriterWorkerQueue; - - /// <summary> - /// Creates a new background disk cache writer. - /// </summary> - /// <param name="context">GPU context</param> - /// <param name="hostStorage">Disk cache host storage</param> - public BackgroundDiskCacheWriter(GpuContext context, DiskCacheHostStorage hostStorage) - { - _context = context; - _hostStorage = hostStorage; - _fileWriterWorkerQueue = new AsyncWorkQueue<CacheFileOperationTask>(ProcessTask, "GPU.BackgroundDiskCacheWriter"); - } - - /// <summary> - /// Processes a shader cache background operation. - /// </summary> - /// <param name="task">Task to process</param> - private void ProcessTask(CacheFileOperationTask task) - { - switch (task.Type) - { - case CacheFileOperation.AddShader: - AddShaderData data = (AddShaderData)task.Data; - try - { - _hostStorage.AddShader(_context, data.Program, data.HostCode); - } - catch (DiskCacheLoadException diskCacheLoadException) - { - Logger.Error?.Print(LogClass.Gpu, $"Error writing shader to disk cache. {diskCacheLoadException.Message}"); - } - catch (IOException ioException) - { - Logger.Error?.Print(LogClass.Gpu, $"Error writing shader to disk cache. {ioException.Message}"); - } - break; - } - } - - /// <summary> - /// Adds a shader program to be cached in the background. - /// </summary> - /// <param name="program">Shader program to cache</param> - /// <param name="hostCode">Host binary code of the program</param> - public void AddShader(CachedShaderProgram program, byte[] hostCode) - { - _fileWriterWorkerQueue.Add(new CacheFileOperationTask(CacheFileOperation.AddShader, new AddShaderData(program, hostCode))); - } - - public void Dispose() - { - Dispose(true); - } - - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - _fileWriterWorkerQueue.Dispose(); - } - } - } -} |
