diff options
author | gdkchan <gab.dark.100@gmail.com> | 2022-10-03 19:45:33 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-03 19:45:33 -0300 |
commit | 5437d6cb13a1487e4ab7cfd64c8b66ed7f9e8c81 (patch) | |
tree | 574af00159405d785188bd7f0876ae7f8a8d80d7 | |
parent | 7539e26144c71f3d73684bf721c9fee115a1a75b (diff) |
Vulkan: Fix buffer texture storage not being updated on buffer handle reuse (#3731)1.1.291
-rw-r--r-- | Ryujinx.Graphics.Vulkan/BufferManager.cs | 4 | ||||
-rw-r--r-- | Ryujinx.Graphics.Vulkan/TextureBuffer.cs | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Vulkan/BufferManager.cs b/Ryujinx.Graphics.Vulkan/BufferManager.cs index 65883fd0..e4820a30 100644 --- a/Ryujinx.Graphics.Vulkan/BufferManager.cs +++ b/Ryujinx.Graphics.Vulkan/BufferManager.cs @@ -38,6 +38,8 @@ namespace Ryujinx.Graphics.Vulkan private readonly IdList<BufferHolder> _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<ulong, BufferHandle>(ref handle64); diff --git a/Ryujinx.Graphics.Vulkan/TextureBuffer.cs b/Ryujinx.Graphics.Vulkan/TextureBuffer.cs index 3e90a96f..fca0598f 100644 --- a/Ryujinx.Graphics.Vulkan/TextureBuffer.cs +++ b/Ryujinx.Graphics.Vulkan/TextureBuffer.cs @@ -16,6 +16,8 @@ namespace Ryujinx.Graphics.Vulkan private Auto<DisposableBufferView> _bufferView; private Dictionary<GAL.Format, Auto<DisposableBufferView>> _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(); } |