From 2c43ca4f28540317a297937eff6eae18dcd447ae Mon Sep 17 00:00:00 2001 From: gr3ger Date: Sat, 16 Nov 2024 22:50:23 +0100 Subject: [PATCH] Prevent the use of PushDescriptors when it will violate vulkan MaxPushDescriptors limitation. --- src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs b/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs index c9aab4018..57c22282d 100644 --- a/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs +++ b/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs @@ -170,6 +170,12 @@ namespace Ryujinx.Graphics.Vulkan bool hasBinding3 = uniformUsage.Any(x => x.Binding == 3); int[] reserved = isCompute ? Array.Empty() : gd.GetPushDescriptorReservedBindings(hasBinding3); + //Prevent the sum of descriptors from exceeding MaxPushDescriptors + if (layout.Sets.First().Descriptors.Where(descriptor => !reserved.Contains(descriptor.Binding)).Sum(descriptor => descriptor.Count) > gd.Capabilities.MaxPushDescriptors) + { + return false; + } + // Can't use any of the reserved usages. for (int i = 0; i < uniformUsage.Count; i++) {