dispose caches
This commit is contained in:
parent
41fb433495
commit
c26df1f7a3
2 changed files with 17 additions and 2 deletions
|
@ -10,7 +10,7 @@ using System.Runtime.Versioning;
|
|||
namespace Ryujinx.Graphics.Metal
|
||||
{
|
||||
[SupportedOSPlatform("macos")]
|
||||
struct EncoderStateManager
|
||||
struct EncoderStateManager : IDisposable
|
||||
{
|
||||
private readonly Pipeline _pipeline;
|
||||
|
||||
|
@ -34,6 +34,12 @@ namespace Ryujinx.Graphics.Metal
|
|||
_depthStencilCache = new(device);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_renderPipelineCache.Dispose();
|
||||
_depthStencilCache.Dispose();
|
||||
}
|
||||
|
||||
public void SaveState()
|
||||
{
|
||||
_backStates.Add(_currentState);
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.Versioning;
|
||||
|
||||
namespace Ryujinx.Graphics.Metal
|
||||
{
|
||||
[SupportedOSPlatform("macos")]
|
||||
public abstract class StateCache<T, TDescriptor, THash>
|
||||
public abstract class StateCache<T, TDescriptor, THash> : IDisposable where T : IDisposable
|
||||
{
|
||||
private readonly Dictionary<THash, T> _cache = new();
|
||||
|
||||
|
@ -12,6 +13,14 @@ namespace Ryujinx.Graphics.Metal
|
|||
|
||||
protected abstract T CreateValue(TDescriptor descriptor);
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
foreach (T value in _cache.Values)
|
||||
{
|
||||
value.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
public T GetOrCreate(TDescriptor descriptor)
|
||||
{
|
||||
var hash = GetHash(descriptor);
|
||||
|
|
Loading…
Reference in a new issue