Misc performance tweaks (#4509)

* use Array.Empty() where instead of allocating new zero-length arrays

* structure for loops in a way that the JIT will elide array/Span bounds checking

* avoiding function calls in for loop condition tests

* avoid LINQ in a hot path

* conform with code style

* fix mistake in GetNextWaitingObject()

* fix GetNextWaitingObject() possibility of returning null if all list items have TimePoint == long.MaxValue

* make GetNextWaitingObject() behave FIFO behavior for multiple items with the same TimePoint
This commit is contained in:
jhorv
2023-03-11 15:05:48 -05:00
committed by GitHub
parent 81691b9e37
commit 23c844b2aa
15 changed files with 48 additions and 31 deletions

View File

@ -29,7 +29,7 @@ namespace Ryujinx.Graphics.Vulkan
uint structSize = 0;
for (int i = 0; i < count; ++i)
for (int i = 0; i < Map.Length; ++i)
{
var typeSize = SizeOf(description[i].Type);
Map[i] = new SpecializationMapEntry(description[i].Id, structSize, typeSize);
@ -46,11 +46,10 @@ namespace Ryujinx.Graphics.Vulkan
// For advanced mapping with overlapping or staggered fields
public SpecDescription(SpecializationMapEntry[] map)
{
int count = map.Length;
Map = map;
uint structSize = 0;
for (int i = 0; i < count; ++i)
for (int i = 0; i < map.Length; ++i)
{
structSize = Math.Max(structSize, map[i].Offset + (uint)map[i].Size);
}