diff --git a/Ryujinx.Graphics.Gpu/Engine/Compute.cs b/Ryujinx.Graphics.Gpu/Engine/Compute.cs index 9f0034eb15..4d18f4d3f5 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Compute.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Compute.cs @@ -163,7 +163,7 @@ namespace Ryujinx.Graphics.Gpu.Engine qmd.CtaRasterHeight, qmd.CtaRasterDepth); - UpdateShaderState(state); + _forceShaderUpdate = true; } } } \ No newline at end of file diff --git a/Ryujinx.Graphics.Gpu/Engine/Methods.cs b/Ryujinx.Graphics.Gpu/Engine/Methods.cs index 5957bb624f..fc933131f5 100644 --- a/Ryujinx.Graphics.Gpu/Engine/Methods.cs +++ b/Ryujinx.Graphics.Gpu/Engine/Methods.cs @@ -38,6 +38,8 @@ namespace Ryujinx.Graphics.Gpu.Engine private bool _isAnyVbInstanced; private bool _vsUsesInstanceId; + private bool _forceShaderUpdate; + /// /// Creates a new instance of the GPU methods class. /// @@ -121,8 +123,10 @@ namespace Ryujinx.Graphics.Gpu.Engine // Shaders must be the first one to be updated if modified, because // some of the other state depends on information from the currently // bound shaders. - if (state.QueryModified(MethodOffset.ShaderBaseAddress, MethodOffset.ShaderState)) + if (state.QueryModified(MethodOffset.ShaderBaseAddress, MethodOffset.ShaderState) || _forceShaderUpdate) { + _forceShaderUpdate = false; + UpdateShaderState(state); }