aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Vulkan/BackgroundResources.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/BackgroundResources.cs')
-rw-r--r--Ryujinx.Graphics.Vulkan/BackgroundResources.cs117
1 files changed, 0 insertions, 117 deletions
diff --git a/Ryujinx.Graphics.Vulkan/BackgroundResources.cs b/Ryujinx.Graphics.Vulkan/BackgroundResources.cs
deleted file mode 100644
index b93b7a25..00000000
--- a/Ryujinx.Graphics.Vulkan/BackgroundResources.cs
+++ /dev/null
@@ -1,117 +0,0 @@
-using Silk.NET.Vulkan;
-using System;
-using System.Collections.Generic;
-using System.Threading;
-
-namespace Ryujinx.Graphics.Vulkan
-{
- class BackgroundResource : IDisposable
- {
- private VulkanRenderer _gd;
- private Device _device;
-
- private CommandBufferPool _pool;
- private PersistentFlushBuffer _flushBuffer;
-
- public BackgroundResource(VulkanRenderer gd, Device device)
- {
- _gd = gd;
- _device = device;
- }
-
- public CommandBufferPool GetPool()
- {
- if (_pool == null)
- {
- bool useBackground = _gd.BackgroundQueue.Handle != 0 && _gd.Vendor != Vendor.Amd;
- Queue queue = useBackground ? _gd.BackgroundQueue : _gd.Queue;
- object queueLock = useBackground ? _gd.BackgroundQueueLock : _gd.QueueLock;
-
- lock (queueLock)
- {
- _pool = new CommandBufferPool(_gd.Api, _device, queue, queueLock, _gd.QueueFamilyIndex, isLight: true);
- }
- }
-
- return _pool;
- }
-
- public PersistentFlushBuffer GetFlushBuffer()
- {
- if (_flushBuffer == null)
- {
- _flushBuffer = new PersistentFlushBuffer(_gd);
- }
-
- return _flushBuffer;
- }
-
- public void Dispose()
- {
- _pool?.Dispose();
- _flushBuffer?.Dispose();
- }
- }
-
- class BackgroundResources : IDisposable
- {
- private VulkanRenderer _gd;
- private Device _device;
-
- private Dictionary<Thread, BackgroundResource> _resources;
-
- public BackgroundResources(VulkanRenderer gd, Device device)
- {
- _gd = gd;
- _device = device;
-
- _resources = new Dictionary<Thread, BackgroundResource>();
- }
-
- private void Cleanup()
- {
- lock (_resources)
- {
- foreach (KeyValuePair<Thread, BackgroundResource> tuple in _resources)
- {
- if (!tuple.Key.IsAlive)
- {
- tuple.Value.Dispose();
- _resources.Remove(tuple.Key);
- }
- }
- }
- }
-
- public BackgroundResource Get()
- {
- Thread thread = Thread.CurrentThread;
-
- lock (_resources)
- {
- BackgroundResource resource;
- if (!_resources.TryGetValue(thread, out resource))
- {
- Cleanup();
-
- resource = new BackgroundResource(_gd, _device);
-
- _resources[thread] = resource;
- }
-
- return resource;
- }
- }
-
- public void Dispose()
- {
- lock (_resources)
- {
- foreach (var resource in _resources.Values)
- {
- resource.Dispose();
- }
- }
- }
- }
-}