mirror of
https://github.com/GreemDev/Ryujinx
synced 2025-01-03 01:19:51 +01:00
Refactor descriptor count validation
This change retains the same functionality, but in a more performat way. I measured ticks for both the above for loop and the new one, and opted for moving this one down as well since it was slightly slower.
This commit is contained in:
parent
2c43ca4f28
commit
15b4d4c5e3
1 changed files with 10 additions and 6 deletions
|
@ -170,12 +170,6 @@ 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++)
|
||||
{
|
||||
|
@ -188,6 +182,16 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//Prevent the sum of descriptors from exceeding MaxPushDescriptors
|
||||
int totalDescriptors = 0;
|
||||
foreach (ResourceDescriptor desc in layout.Sets.First().Descriptors)
|
||||
{
|
||||
if (!reserved.Contains(desc.Binding))
|
||||
totalDescriptors += desc.Count;
|
||||
}
|
||||
if (totalDescriptors > gd.Capabilities.MaxPushDescriptors)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue