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++) {