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:
parent
81691b9e37
commit
23c844b2aa
15 changed files with 48 additions and 31 deletions
|
@ -17,7 +17,7 @@ namespace Ryujinx.Graphics.Vulkan.Queries
|
|||
|
||||
_counterQueues = new CounterQueue[count];
|
||||
|
||||
for (int index = 0; index < count; index++)
|
||||
for (int index = 0; index < _counterQueues.Length; index++)
|
||||
{
|
||||
CounterType type = (CounterType)index;
|
||||
_counterQueues[index] = new CounterQueue(gd, device, pipeline, type);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -60,10 +60,9 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
private void RecreateSwapchain()
|
||||
{
|
||||
var oldSwapchain = _swapchain;
|
||||
int imageCount = _swapchainImageViews.Length;
|
||||
_vsyncModeChanged = false;
|
||||
|
||||
for (int i = 0; i < imageCount; i++)
|
||||
for (int i = 0; i < _swapchainImageViews.Length; i++)
|
||||
{
|
||||
_swapchainImageViews[i].Dispose();
|
||||
}
|
||||
|
@ -147,7 +146,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
_swapchainImageViews = new Auto<DisposableImageView>[imageCount];
|
||||
|
||||
for (int i = 0; i < imageCount; i++)
|
||||
for (int i = 0; i < _swapchainImageViews.Length; i++)
|
||||
{
|
||||
_swapchainImageViews[i] = CreateSwapchainImageView(_swapchainImages[i], surfaceFormat.Format);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue