From a10b2c5ff26886e9ffc6f19e3f0fe9505a503b2f Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Wed, 23 Jun 2021 20:51:41 -0300
Subject: Initial support for GPU channels (#2372)

* Ground work for separate GPU channels

* Rename TextureManager to TextureCache

* Decouple texture bindings management from the texture cache

* Rename BufferManager to BufferCache

* Decouple buffer bindings management from the buffer cache

* More comments and proper disposal

* PR feedback

* Force host state update on channel switch

* Typo

* PR feedback

* Missing using
---
 Ryujinx.Graphics.Gpu/Image/TexturePoolCache.cs | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

(limited to 'Ryujinx.Graphics.Gpu/Image/TexturePoolCache.cs')

diff --git a/Ryujinx.Graphics.Gpu/Image/TexturePoolCache.cs b/Ryujinx.Graphics.Gpu/Image/TexturePoolCache.cs
index 268cec38..c9eebf8b 100644
--- a/Ryujinx.Graphics.Gpu/Image/TexturePoolCache.cs
+++ b/Ryujinx.Graphics.Gpu/Image/TexturePoolCache.cs
@@ -1,3 +1,4 @@
+using System;
 using System.Collections.Generic;
 
 namespace Ryujinx.Graphics.Gpu.Image
@@ -7,7 +8,7 @@ namespace Ryujinx.Graphics.Gpu.Image
     /// This can keep multiple texture pools, and return the current one as needed.
     /// It is useful for applications that uses multiple texture pools.
     /// </summary>
-    class TexturePoolCache
+    class TexturePoolCache : IDisposable
     {
         private const int MaxCapacity = 4;
 
@@ -72,5 +73,19 @@ namespace Ryujinx.Graphics.Gpu.Image
 
             return pool;
         }
+
+        /// <summary>
+        /// Disposes the texture pool cache.
+        /// It's an error to use the texture pool cache after disposal.
+        /// </summary>
+        public void Dispose()
+        {
+            foreach (TexturePool pool in _pools)
+            {
+                pool.Dispose();
+            }
+
+            _pools.Clear();
+        }
     }
 }
\ No newline at end of file
-- 
cgit v1.2.3-70-g09d2