Memory Changes part 2

* Slightly refactors RangeLists from the last Memory Changes MR, which fixes issue 61.

* Convert as many const size array iterators to span iterators as possible. When iterating over a const size array, every iteration created a Span, now only the first iteration does in most places.

* Now using object pooling for a few object types that were rapidly deleted and recreated.

* Converted a few flag checks to binary operations to save memory allocations.
This commit is contained in:
LotP
2025-08-26 15:30:12 -05:00
committed by KeatonTheBot
parent 01cb33f658
commit 171624e7f0
89 changed files with 2121 additions and 1157 deletions
@@ -679,7 +679,7 @@ namespace Ryujinx.Graphics.Vulkan
var program = _program;
if (_dirty.HasFlag(DirtyFlags.Uniform))
if ((_dirty & DirtyFlags.Uniform) == DirtyFlags.Uniform)
{
if (program.UsePushDescriptors)
{
@@ -691,12 +691,12 @@ namespace Ryujinx.Graphics.Vulkan
}
}
if (_dirty.HasFlag(DirtyFlags.Storage))
if ((_dirty & DirtyFlags.Storage) == DirtyFlags.Storage)
{
UpdateAndBind(cbs, program, PipelineBase.StorageSetIndex, pbp);
}
if (_dirty.HasFlag(DirtyFlags.Texture))
if ((_dirty & DirtyFlags.Texture) == DirtyFlags.Texture)
{
if (program.UpdateTexturesWithoutTemplate)
{
@@ -708,7 +708,7 @@ namespace Ryujinx.Graphics.Vulkan
}
}
if (_dirty.HasFlag(DirtyFlags.Image))
if ((_dirty & DirtyFlags.Image) == DirtyFlags.Image)
{
UpdateAndBind(cbs, program, PipelineBase.ImageSetIndex, pbp);
}