misc: chore: Use explicit types in GPU, Device, and Host1x projects

This commit is contained in:
Evan Husted 2025-01-25 14:05:44 -06:00
parent 5099548856
commit 1ae349efb1
55 changed files with 350 additions and 339 deletions

View file

@ -735,7 +735,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
_context.Renderer.BackgroundContextAction(() =>
{
var ranges = _modifiedRanges;
BufferModifiedRangeList ranges = _modifiedRanges;
if (ranges != null)
{
@ -850,7 +850,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
if (_virtualDependencies != null)
{
foreach (var virtualBuffer in _virtualDependencies)
foreach (MultiRangeBuffer virtualBuffer in _virtualDependencies)
{
CopyToDependantVirtualBuffer(virtualBuffer, address, size);
}
@ -875,7 +875,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
[MethodImpl(MethodImplOptions.NoInlining)]
private void CopyFromDependantVirtualBuffersImpl()
{
foreach (var virtualBuffer in _virtualDependencies.OrderBy(x => x.ModificationSequenceNumber))
foreach (MultiRangeBuffer virtualBuffer in _virtualDependencies.OrderBy(x => x.ModificationSequenceNumber))
{
virtualBuffer.ConsumeModifiedRegion(this, (mAddress, mSize) =>
{
@ -914,7 +914,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
byte[] storage = dataSpan.ToArray();
foreach (var virtualBuffer in _virtualDependencies.OrderBy(x => x.ModificationSequenceNumber))
foreach (MultiRangeBuffer virtualBuffer in _virtualDependencies.OrderBy(x => x.ModificationSequenceNumber))
{
virtualBuffer.ConsumeModifiedRegion(address, size, (mAddress, mSize) =>
{

View file

@ -81,7 +81,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
// Storage buffer bindings may require special treatment.
var rawStage = stage & BufferStage.StageMask;
BufferStage rawStage = stage & BufferStage.StageMask;
if (rawStage == BufferStage.Fragment)
{
@ -225,7 +225,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
// Storage write.
_writeCount++;
var rawStage = stage & BufferStage.StageMask;
BufferStage rawStage = stage & BufferStage.StageMask;
if (rawStage == BufferStage.Fragment)
{

View file

@ -412,7 +412,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
dstOffset += subRange.Size;
}
foreach (var buffer in physicalBuffers)
foreach (Buffer buffer in physicalBuffers)
{
buffer.CopyToDependantVirtualBuffer(virtualBuffer);
}
@ -1037,7 +1037,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// <param name="toDelete">List used to track entries to delete</param>
private static void Prune(Dictionary<ulong, BufferCacheEntry> dictionary, ref List<ulong> toDelete)
{
foreach (var entry in dictionary)
foreach (KeyValuePair<ulong, BufferCacheEntry> entry in dictionary)
{
if (entry.Value.UnmappedSequence != entry.Value.Buffer.UnmappedSequence)
{

View file

@ -478,7 +478,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// </summary>
public void CommitComputeBindings()
{
var bufferCache = _channel.MemoryManager.Physical.BufferCache;
BufferCache bufferCache = _channel.MemoryManager.Physical.BufferCache;
BindBuffers(bufferCache, _cpStorageBuffers, isStorage: true);
BindBuffers(bufferCache, _cpUniformBuffers, isStorage: false);
@ -499,10 +499,10 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
if (_bufferTextures.Count > 0)
{
foreach (var binding in _bufferTextures)
foreach (BufferTextureBinding binding in _bufferTextures)
{
var isStore = binding.BindingInfo.Flags.HasFlag(TextureUsageFlags.ImageStore);
var range = bufferCache.GetBufferRange(binding.Range, BufferStageUtils.TextureBuffer(binding.Stage, binding.BindingInfo.Flags), isStore);
bool isStore = binding.BindingInfo.Flags.HasFlag(TextureUsageFlags.ImageStore);
BufferRange range = bufferCache.GetBufferRange(binding.Range, BufferStageUtils.TextureBuffer(binding.Stage, binding.BindingInfo.Flags), isStore);
binding.Texture.SetStorage(range);
// The texture must be rebound to use the new storage if it was updated.
@ -524,19 +524,19 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
ITexture[] textureArray = new ITexture[1];
foreach (var binding in _bufferTextureArrays)
foreach (BufferTextureArrayBinding<ITextureArray> binding in _bufferTextureArrays)
{
var range = bufferCache.GetBufferRange(binding.Range, BufferStage.None);
BufferRange range = bufferCache.GetBufferRange(binding.Range, BufferStage.None);
binding.Texture.SetStorage(range);
textureArray[0] = binding.Texture;
binding.Array.SetTextures(binding.Index, textureArray);
}
foreach (var binding in _bufferImageArrays)
foreach (BufferTextureArrayBinding<IImageArray> binding in _bufferImageArrays)
{
var isStore = binding.BindingInfo.Flags.HasFlag(TextureUsageFlags.ImageStore);
var range = bufferCache.GetBufferRange(binding.Range, BufferStage.None, isStore);
bool isStore = binding.BindingInfo.Flags.HasFlag(TextureUsageFlags.ImageStore);
BufferRange range = bufferCache.GetBufferRange(binding.Range, BufferStage.None, isStore);
binding.Texture.SetStorage(range);
textureArray[0] = binding.Texture;
@ -555,7 +555,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// <param name="indexed">True if the index buffer is in use</param>
public void CommitGraphicsBindings(bool indexed)
{
var bufferCache = _channel.MemoryManager.Physical.BufferCache;
BufferCache bufferCache = _channel.MemoryManager.Physical.BufferCache;
if (indexed)
{
@ -750,19 +750,19 @@ namespace Ryujinx.Graphics.Gpu.Memory
for (ShaderStage stage = ShaderStage.Vertex; stage <= ShaderStage.Fragment; stage++)
{
ref var buffers = ref bindings[(int)stage - 1];
ref BuffersPerStage buffers = ref bindings[(int)stage - 1];
BufferStage bufferStage = BufferStageUtils.FromShaderStage(stage);
for (int index = 0; index < buffers.Count; index++)
{
ref var bindingInfo = ref buffers.Bindings[index];
ref BufferDescriptor bindingInfo = ref buffers.Bindings[index];
BufferBounds bounds = buffers.Buffers[bindingInfo.Slot];
if (!bounds.IsUnmapped)
{
var isWrite = bounds.Flags.HasFlag(BufferUsageFlags.Write);
var range = isStorage
bool isWrite = bounds.Flags.HasFlag(BufferUsageFlags.Write);
BufferRange range = isStorage
? bufferCache.GetBufferRangeAligned(bounds.Range, bufferStage | BufferStageUtils.FromUsage(bounds.Flags), isWrite)
: bufferCache.GetBufferRange(bounds.Range, bufferStage);
@ -792,14 +792,14 @@ namespace Ryujinx.Graphics.Gpu.Memory
for (int index = 0; index < buffers.Count; index++)
{
ref var bindingInfo = ref buffers.Bindings[index];
ref BufferDescriptor bindingInfo = ref buffers.Bindings[index];
BufferBounds bounds = buffers.Buffers[bindingInfo.Slot];
if (!bounds.IsUnmapped)
{
var isWrite = bounds.Flags.HasFlag(BufferUsageFlags.Write);
var range = isStorage
bool isWrite = bounds.Flags.HasFlag(BufferUsageFlags.Write);
BufferRange range = isStorage
? bufferCache.GetBufferRangeAligned(bounds.Range, BufferStageUtils.ComputeStorage(bounds.Flags), isWrite)
: bufferCache.GetBufferRange(bounds.Range, BufferStage.Compute);
@ -841,11 +841,11 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
for (ShaderStage stage = ShaderStage.Vertex; stage <= ShaderStage.Fragment; stage++)
{
ref var buffers = ref bindings[(int)stage - 1];
ref BuffersPerStage buffers = ref bindings[(int)stage - 1];
for (int index = 0; index < buffers.Count; index++)
{
ref var binding = ref buffers.Bindings[index];
ref BufferDescriptor binding = ref buffers.Bindings[index];
BufferBounds bounds = buffers.Buffers[binding.Slot];

View file

@ -117,7 +117,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
lock (_lock)
{
// Slices a given region using the modified regions in the list. Calls the action for the new slices.
ref var overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
ref BufferModifiedRange[] overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
int count = FindOverlapsNonOverlapping(address, size, ref overlaps);
@ -156,7 +156,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
lock (_lock)
{
// We may overlap with some existing modified regions. They must be cut into by the new entry.
ref var overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
ref BufferModifiedRange[] overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
int count = FindOverlapsNonOverlapping(address, size, ref overlaps);
@ -210,7 +210,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
int count = 0;
ref var overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
ref BufferModifiedRange[] overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
// Range list must be consistent for this operation.
lock (_lock)
@ -239,7 +239,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
int count = 0;
ref var overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
ref BufferModifiedRange[] overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
// Range list must be consistent for this operation.
lock (_lock)
@ -355,7 +355,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
int rangeCount = 0;
ref var overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
ref BufferModifiedRange[] overlaps = ref ThreadStaticArray<BufferModifiedRange>.Get();
// Range list must be consistent for this operation
lock (_lock)

View file

@ -73,7 +73,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
if (binding >= 0)
{
var range = new BufferRange(_handle, 0, data.Length);
BufferRange range = new BufferRange(_handle, 0, data.Length);
_renderer.Pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(0, range) });
}
};

View file

@ -14,7 +14,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
get
{
foreach (var regionHandle in _cpuRegionHandles)
foreach (RegionHandle regionHandle in _cpuRegionHandles)
{
if (regionHandle.Dirty)
{
@ -44,7 +44,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// </summary>
public void Dispose()
{
foreach (var regionHandle in _cpuRegionHandles)
foreach (RegionHandle regionHandle in _cpuRegionHandles)
{
regionHandle.Dispose();
}
@ -57,7 +57,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// <param name="action">Action to call on read or write</param>
public void RegisterAction(RegionSignal action)
{
foreach (var regionHandle in _cpuRegionHandles)
foreach (RegionHandle regionHandle in _cpuRegionHandles)
{
regionHandle.RegisterAction(action);
}
@ -70,7 +70,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// <param name="action">Action to call on read or write</param>
public void RegisterPreciseAction(PreciseRegionSignal action)
{
foreach (var regionHandle in _cpuRegionHandles)
foreach (RegionHandle regionHandle in _cpuRegionHandles)
{
regionHandle.RegisterPreciseAction(action);
}
@ -81,7 +81,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// </summary>
public void Reprotect(bool asDirty = false)
{
foreach (var regionHandle in _cpuRegionHandles)
foreach (RegionHandle regionHandle in _cpuRegionHandles)
{
regionHandle.Reprotect(asDirty);
}
@ -92,7 +92,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// </summary>
public void ForceDirty()
{
foreach (var regionHandle in _cpuRegionHandles)
foreach (RegionHandle regionHandle in _cpuRegionHandles)
{
regionHandle.ForceDirty();
}

View file

@ -458,7 +458,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
int pages = (int)((endVaRounded - va) / PageSize);
var regions = new List<MemoryRange>();
List<MemoryRange> regions = new List<MemoryRange>();
for (int page = 0; page < pages - 1; page++)
{

View file

@ -149,7 +149,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
if (_dependencies != null)
{
foreach (var dependency in _dependencies)
foreach (PhysicalDependency dependency in _dependencies)
{
if (dependency.PhysicalBuffer == buffer && dependency.VirtualOffset >= minimumVirtOffset)
{
@ -231,7 +231,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
if (_dependencies != null)
{
foreach (var dependency in _dependencies)
foreach (PhysicalDependency dependency in _dependencies)
{
dependency.PhysicalBuffer.RemoveVirtualDependency(this);
}

View file

@ -102,10 +102,10 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
if (range.Count == 1)
{
var singleRange = range.GetSubRange(0);
MemoryRange singleRange = range.GetSubRange(0);
if (singleRange.Address != MemoryManager.PteUnmapped)
{
var regions = _cpuMemory.GetHostRegions(singleRange.Address, singleRange.Size);
IEnumerable<HostMemoryRange> regions = _cpuMemory.GetHostRegions(singleRange.Address, singleRange.Size);
if (regions != null && regions.Count() == 1)
{
@ -139,7 +139,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
if (range.Count == 1)
{
var singleRange = range.GetSubRange(0);
MemoryRange singleRange = range.GetSubRange(0);
if (singleRange.Address != MemoryManager.PteUnmapped)
{
return _cpuMemory.GetSpan(singleRange.Address, (int)singleRange.Size, tracked);
@ -152,7 +152,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
for (int i = 0; i < range.Count; i++)
{
var currentRange = range.GetSubRange(i);
MemoryRange currentRange = range.GetSubRange(i);
int size = (int)currentRange.Size;
if (currentRange.Address != MemoryManager.PteUnmapped)
{
@ -199,7 +199,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
int offset = 0;
for (int i = 0; i < range.Count; i++)
{
var currentRange = range.GetSubRange(i);
MemoryRange currentRange = range.GetSubRange(i);
int size = (int)currentRange.Size;
if (currentRange.Address != MemoryManager.PteUnmapped)
{
@ -322,7 +322,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
{
if (range.Count == 1)
{
var singleRange = range.GetSubRange(0);
MemoryRange singleRange = range.GetSubRange(0);
if (singleRange.Address != MemoryManager.PteUnmapped)
{
writeCallback(singleRange.Address, data);
@ -334,7 +334,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
for (int i = 0; i < range.Count; i++)
{
var currentRange = range.GetSubRange(i);
MemoryRange currentRange = range.GetSubRange(i);
int size = (int)currentRange.Size;
if (currentRange.Address != MemoryManager.PteUnmapped)
{
@ -382,12 +382,12 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// <returns>The memory tracking handle</returns>
public GpuRegionHandle BeginTracking(MultiRange range, ResourceKind kind)
{
var cpuRegionHandles = new RegionHandle[range.Count];
RegionHandle[] cpuRegionHandles = new RegionHandle[range.Count];
int count = 0;
for (int i = 0; i < range.Count; i++)
{
var currentRange = range.GetSubRange(i);
MemoryRange currentRange = range.GetSubRange(i);
if (currentRange.Address != MemoryManager.PteUnmapped)
{
cpuRegionHandles[count++] = _cpuMemory.BeginTracking(currentRange.Address, currentRange.Size, (int)kind);

View file

@ -19,7 +19,7 @@ namespace Ryujinx.Graphics.Gpu.Memory
/// <param name="renderer">Renderer that the support buffer will be used with</param>
public SupportBufferUpdater(IRenderer renderer) : base(renderer)
{
var defaultScale = new Vector4<float> { X = 1f, Y = 0f, Z = 0f, W = 0f };
Vector4<float> defaultScale = new Vector4<float> { X = 1f, Y = 0f, Z = 0f, W = 0f };
_data.RenderScale.AsSpan().Fill(defaultScale);
DirtyRenderScale(0, SupportBuffer.RenderScaleMaxCount);
}