diff options
Diffstat (limited to 'src/Ryujinx.Graphics.Gpu')
-rw-r--r-- | src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs | 2 | ||||
-rw-r--r-- | src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs | 19 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs index 6a81720c..b4764d57 100644 --- a/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs +++ b/src/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs @@ -22,7 +22,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache private const ushort FileFormatVersionMajor = 1; private const ushort FileFormatVersionMinor = 2; private const uint FileFormatVersionPacked = ((uint)FileFormatVersionMajor << 16) | FileFormatVersionMinor; - private const uint CodeGenVersion = 5027; + private const uint CodeGenVersion = 4646; private const string SharedTocFileName = "shared.toc"; private const string SharedDataFileName = "shared.data"; diff --git a/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs b/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs index d35b8d92..7db627ba 100644 --- a/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs +++ b/src/Ryujinx.Graphics.Gpu/Shader/GpuAccessorBase.cs @@ -4,6 +4,7 @@ using Ryujinx.Graphics.Gpu.Engine.Threed; using Ryujinx.Graphics.Gpu.Image; using Ryujinx.Graphics.Shader; using Ryujinx.Graphics.Shader.Translation; +using System; namespace Ryujinx.Graphics.Gpu.Shader { @@ -16,6 +17,8 @@ namespace Ryujinx.Graphics.Gpu.Shader private readonly ResourceCounts _resourceCounts; private readonly int _stageIndex; + private readonly int[] _constantBufferBindings; + /// <summary> /// Creates a new GPU accessor. /// </summary> @@ -25,6 +28,12 @@ namespace Ryujinx.Graphics.Gpu.Shader _context = context; _resourceCounts = resourceCounts; _stageIndex = stageIndex; + + if (context.Capabilities.Api != TargetApi.Vulkan) + { + _constantBufferBindings = new int[Constants.TotalGpUniformBuffers]; + _constantBufferBindings.AsSpan().Fill(-1); + } } public int QueryBindingConstantBuffer(int index) @@ -36,7 +45,15 @@ namespace Ryujinx.Graphics.Gpu.Shader } else { - return _resourceCounts.UniformBuffersCount++; + int binding = _constantBufferBindings[index]; + + if (binding < 0) + { + binding = _resourceCounts.UniformBuffersCount++; + _constantBufferBindings[index] = binding; + } + + return binding; } } |