diff --git a/Ryujinx.Graphics.Vulkan/BufferManager.cs b/Ryujinx.Graphics.Vulkan/BufferManager.cs index 65883fd0d..e4820a303 100644 --- a/Ryujinx.Graphics.Vulkan/BufferManager.cs +++ b/Ryujinx.Graphics.Vulkan/BufferManager.cs @@ -38,6 +38,8 @@ namespace Ryujinx.Graphics.Vulkan private readonly IdList _buffers; + public int BufferCount { get; private set; } + public StagingBuffer StagingBuffer { get; } public BufferManager(VulkanRenderer gd, PhysicalDevice physicalDevice, Device device) @@ -56,6 +58,8 @@ namespace Ryujinx.Graphics.Vulkan return BufferHandle.Null; } + BufferCount++; + ulong handle64 = (uint)_buffers.Add(holder); return Unsafe.As(ref handle64); diff --git a/Ryujinx.Graphics.Vulkan/TextureBuffer.cs b/Ryujinx.Graphics.Vulkan/TextureBuffer.cs index 3e90a96f5..fca0598fe 100644 --- a/Ryujinx.Graphics.Vulkan/TextureBuffer.cs +++ b/Ryujinx.Graphics.Vulkan/TextureBuffer.cs @@ -16,6 +16,8 @@ namespace Ryujinx.Graphics.Vulkan private Auto _bufferView; private Dictionary> _selfManagedViews; + private int _bufferCount; + public int Width { get; } public int Height { get; } @@ -107,7 +109,8 @@ namespace Ryujinx.Graphics.Vulkan { if (_bufferHandle == buffer.Handle && _offset == buffer.Offset && - _size == buffer.Size) + _size == buffer.Size && + _bufferCount == _gd.BufferManager.BufferCount) { return; } @@ -115,6 +118,7 @@ namespace Ryujinx.Graphics.Vulkan _bufferHandle = buffer.Handle; _offset = buffer.Offset; _size = buffer.Size; + _bufferCount = _gd.BufferManager.BufferCount; ReleaseImpl(); }