aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs')
-rw-r--r--Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs22
1 files changed, 21 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs b/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs
index 33ed7881..fc30d03c 100644
--- a/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs
+++ b/Ryujinx.Graphics.Gpu/Image/AutoDeleteCache.cs
@@ -3,17 +3,31 @@ using System.Collections.Generic;
namespace Ryujinx.Graphics.Gpu.Image
{
+ /// <summary>
+ /// A texture cache that automatically removes older textures that are not used for some time.
+ /// The cache works with a rotated list with a fixed size. When new textures are added, the
+ /// old ones at the bottom of the list are deleted.
+ /// </summary>
class AutoDeleteCache : IEnumerable<Texture>
{
private const int MaxCapacity = 2048;
- private LinkedList<Texture> _textures;
+ private readonly LinkedList<Texture> _textures;
+ /// <summary>
+ /// Creates a new instance of the automatic deletion cache.
+ /// </summary>
public AutoDeleteCache()
{
_textures = new LinkedList<Texture>();
}
+ /// <summary>
+ /// Adds a new texture to the cache, even if the texture added is already on the cache.
+ /// Using this method is only recommended if you know that the texture is not yet on the cache,
+ /// otherwise it would store the same texture more than once.
+ /// </summary>
+ /// <param name="texture">The texture to be added to the cache</param>
public void Add(Texture texture)
{
texture.IncrementReferenceCount();
@@ -32,6 +46,12 @@ namespace Ryujinx.Graphics.Gpu.Image
}
}
+ /// <summary>
+ /// Adds a new texture to the cache, or just moves it to the top of the list if the
+ /// texture is already on the cache. Moving the texture to the top of the list prevents
+ /// it from being deleted, as the textures on the bottom of the list are deleted when new ones are added.
+ /// </summary>
+ /// <param name="texture">The texture to be added, or moved to the top</param>
public void Lift(Texture texture)
{
if (texture.CacheNode != null)