diff options
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs')
-rw-r--r-- | Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs b/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs index 5607fb40..f49a0647 100644 --- a/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs +++ b/Ryujinx.Graphics.OpenGL/Image/TextureBuffer.cs @@ -6,12 +6,17 @@ namespace Ryujinx.Graphics.OpenGL.Image { class TextureBuffer : TextureBase, ITexture { + private Renderer _renderer; private int _bufferOffset; private int _bufferSize; + private int _bufferCount; private BufferHandle _buffer; - public TextureBuffer(TextureCreateInfo info) : base(info) {} + public TextureBuffer(Renderer renderer, TextureCreateInfo info) : base(info) + { + _renderer = renderer; + } public void CopyTo(ITexture destination, int firstLayer, int firstLevel) { @@ -50,16 +55,19 @@ namespace Ryujinx.Graphics.OpenGL.Image public void SetStorage(BufferRange buffer) { - if (buffer.Handle == _buffer && + if (_buffer != BufferHandle.Null && buffer.Offset == _bufferOffset && - buffer.Size == _bufferSize) + buffer.Size == _bufferSize && + _renderer.BufferCount == _bufferCount) { + // Only rebind the buffer when more have been created. return; } _buffer = buffer.Handle; _bufferOffset = buffer.Offset; _bufferSize = buffer.Size; + _bufferCount = _renderer.BufferCount; Bind(0); |