diff options
author | gdkchan <gab.dark.100@gmail.com> | 2022-12-05 16:11:32 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-05 19:11:32 +0000 |
commit | bbb24d8c7e6ccc61ceda1f4223fd68feee3b2f20 (patch) | |
tree | 955a54494cda71a9f816a08773886e5168980c59 /Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs | |
parent | 4da44e09cb2a32f69b4a6b47221117b78e4618dc (diff) |
Restrict shader storage buffer search when match fails (#4011)1.1.427
* Restrict storage buffer search when match fails
* Shader cache version bump
Diffstat (limited to 'Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs')
-rw-r--r-- | Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs b/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs index 47963eac..a1a2054c 100644 --- a/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs +++ b/Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs @@ -11,14 +11,18 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations { RunOptimizationPasses(blocks); + int sbUseMask = 0; + // Those passes are looking for specific patterns and only needs to run once. for (int blkIndex = 0; blkIndex < blocks.Length; blkIndex++) { - GlobalToStorage.RunPass(blocks[blkIndex], config); + GlobalToStorage.RunPass(blocks[blkIndex], config, ref sbUseMask); BindlessToIndexed.RunPass(blocks[blkIndex], config); BindlessElimination.RunPass(blocks[blkIndex], config); } + config.SetAccessibleStorageBuffersMask(sbUseMask); + // Run optimizations one last time to remove any code that is now optimizable after above passes. RunOptimizationPasses(blocks); } |