GPU resource disposal

This commit is contained in:
gdkchan 2019-12-31 19:09:49 -03:00 committed by Thog
parent f7bcc884e4
commit 59fdaa744b
20 changed files with 195 additions and 46 deletions

View file

@ -13,7 +13,7 @@ namespace Ryujinx.Graphics.Gpu.Image
/// <summary>
/// Represents a cached GPU texture.
/// </summary>
class Texture : IRange<Texture>
class Texture : IRange<Texture>, IDisposable
{
private GpuContext _context;
@ -1011,5 +1011,13 @@ namespace Ryujinx.Graphics.Gpu.Image
_arrayViewTexture?.Dispose();
_arrayViewTexture = null;
}
/// <summary>
/// Performs texture disposal, deleting the texture.
/// </summary>
public void Dispose()
{
DisposeTextures();
}
}
}

View file

@ -11,7 +11,7 @@ namespace Ryujinx.Graphics.Gpu.Image
/// <summary>
/// Texture manager.
/// </summary>
class TextureManager
class TextureManager : IDisposable
{
private const int OverlapsBufferInitialCapacity = 10;
private const int OverlapsBufferMaxCapacity = 10000;
@ -761,5 +761,17 @@ namespace Ryujinx.Graphics.Gpu.Image
{
_textures.Remove(texture);
}
/// <summary>
/// Disposes all textures in the cache.
/// It's an error to use the texture manager after disposal.
/// </summary>
public void Dispose()
{
foreach (Texture texture in _textures)
{
texture.Dispose();
}
}
}
}