diff --git a/Ryujinx.Graphics.Vulkan/TextureStorage.cs b/Ryujinx.Graphics.Vulkan/TextureStorage.cs index 7d1e749b2..c9d2d34f1 100644 --- a/Ryujinx.Graphics.Vulkan/TextureStorage.cs +++ b/Ryujinx.Graphics.Vulkan/TextureStorage.cs @@ -33,6 +33,7 @@ namespace Ryujinx.Graphics.Vulkan private readonly Image _image; private readonly Auto _imageAuto; private readonly Auto _allocationAuto; + private Auto _foreignAllocationAuto; private Dictionary _aliasedStorages; @@ -140,6 +141,8 @@ namespace Ryujinx.Graphics.Vulkan } else { + _foreignAllocationAuto = foreignAllocation; + foreignAllocation.IncrementReferenceCount(); var allocation = foreignAllocation.GetUnsafe(); gd.Api.BindImageMemory(device, _image, allocation.Memory, allocation.Offset).ThrowOnError(); @@ -277,6 +280,8 @@ namespace Ryujinx.Graphics.Vulkan _imageAuto.Dispose(); _allocationAuto?.Dispose(); + _foreignAllocationAuto?.DecrementReferenceCount(); + _foreignAllocationAuto = null; } } }