From bbb24d8c7e6ccc61ceda1f4223fd68feee3b2f20 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Mon, 5 Dec 2022 16:11:32 -0300 Subject: Restrict shader storage buffer search when match fails (#4011) * Restrict storage buffer search when match fails * Shader cache version bump --- Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'Ryujinx.Graphics.Shader/Translation/Optimizations/Optimizer.cs') 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); } -- cgit v1.2.3