Prevent the use of PushDescriptors when it will violate vulkan MaxPushDescriptors limitation.

This commit is contained in:
gr3ger 2024-11-16 22:50:23 +01:00
parent 6de3afc43d
commit 2c43ca4f28

View File

@ -170,6 +170,12 @@ namespace Ryujinx.Graphics.Vulkan
bool hasBinding3 = uniformUsage.Any(x => x.Binding == 3);
int[] reserved = isCompute ? Array.Empty<int>() : 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++)
{