diff options
-rw-r--r-- | Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs | 7 | ||||
-rw-r--r-- | Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs | 8 |
2 files changed, 9 insertions, 6 deletions
diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs index 9e888f50..13b332f4 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Threed/SpecializationStateUpdater.cs @@ -253,14 +253,19 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed /// Indicates that any storage buffer use is unaligned. /// </summary> /// <param name="value">The new value</param> - public void SetHasUnalignedStorageBuffer(bool value) + /// <returns>True if the unaligned state changed, false otherwise</returns> + public bool SetHasUnalignedStorageBuffer(bool value) { if (value != _graphics.HasUnalignedStorageBuffer) { _graphics.HasUnalignedStorageBuffer = value; Signal(); + + return true; } + + return false; } /// <summary> diff --git a/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs b/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs index b611f4e7..572f7fb0 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Threed/StateUpdater.cs @@ -304,14 +304,12 @@ namespace Ryujinx.Graphics.Gpu.Engine.Threed /// </summary> private void CommitBindings() { - var buffers = _channel.BufferManager; - var hasUnaligned = buffers.HasUnalignedStorageBuffers; - UpdateStorageBuffers(); - if (!_channel.TextureManager.CommitGraphicsBindings(_shaderSpecState) || (buffers.HasUnalignedStorageBuffers != hasUnaligned)) + bool unalignedChanged = _currentSpecState.SetHasUnalignedStorageBuffer(_channel.BufferManager.HasUnalignedStorageBuffers); + + if (!_channel.TextureManager.CommitGraphicsBindings(_shaderSpecState) || unalignedChanged) { - _currentSpecState.SetHasUnalignedStorageBuffer(buffers.HasUnalignedStorageBuffers); // Shader must be reloaded. _vtgWritesRtLayer should not change. UpdateShaderState(); } |