From 21c9ac6240a3db3300143d1d0dd4a1070d4f576f Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Sat, 3 Jun 2023 20:12:18 -0300
Subject: Implement shader storage buffer operations using new Load/Store
 instructions (#4993)

* Implement storage buffer operations using new Load/Store instruction

* Extend GenerateMultiTargetStorageOp to also match access with constant offset, and log and comments

* Remove now unused code

* Catch more complex cases of global memory usage

* Shader cache version bump

* Extend global access elimination to work with more shared memory cases

* Change alignment requirement from 16 bytes to 8 bytes, handle cases where we need more than 16 storage buffers

* Tweak preferencing to catch more cases

* Enable CB0 elimination even when host storage buffer alignment is > 16 (for Intel)

* Fix storage buffer bindings

* Simplify some code

* Shader cache version bump

* Fix typo

* Extend global memory elimination to handle shared memory with multiple possible offsets and local memory
---
 .../Translation/HelperFunctionManager.cs                      | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

(limited to 'src/Ryujinx.Graphics.Shader/Translation/HelperFunctionManager.cs')

diff --git a/src/Ryujinx.Graphics.Shader/Translation/HelperFunctionManager.cs b/src/Ryujinx.Graphics.Shader/Translation/HelperFunctionManager.cs
index 206facd4..7dd267f3 100644
--- a/src/Ryujinx.Graphics.Shader/Translation/HelperFunctionManager.cs
+++ b/src/Ryujinx.Graphics.Shader/Translation/HelperFunctionManager.cs
@@ -19,6 +19,14 @@ namespace Ryujinx.Graphics.Shader.Translation
             _stage = stage;
         }
 
+        public int AddFunction(Function function)
+        {
+            int functionId = _functionList.Count;
+            _functionList.Add(function);
+
+            return functionId;
+        }
+
         public int GetOrCreateFunctionId(HelperFunctionName functionName)
         {
             if (_functionIds.TryGetValue(functionName, out int functionId))
@@ -27,8 +35,7 @@ namespace Ryujinx.Graphics.Shader.Translation
             }
 
             Function function = GenerateFunction(functionName);
-            functionId = _functionList.Count;
-            _functionList.Add(function);
+            functionId = AddFunction(function);
             _functionIds.Add(functionName, functionId);
 
             return functionId;
-- 
cgit v1.2.3-70-g09d2