diff --git a/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs b/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs index 62fcef348..bf9b14f89 100644 --- a/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs +++ b/src/Ryujinx.Graphics.Host1x/Host1xDevice.cs @@ -46,7 +46,7 @@ namespace Ryujinx.Graphics.Host1x public void RegisterDevice(ClassId classId, IDeviceState device) { - ThiDevice thi = new ThiDevice(classId, device ?? throw new ArgumentNullException(nameof(device)), _syncptIncrMgr); + ThiDevice thi = new(classId, device ?? throw new ArgumentNullException(nameof(device)), _syncptIncrMgr); _devices.RegisterDevice(classId, thi); } diff --git a/src/Ryujinx.Graphics.Metal/BackgroundResources.cs b/src/Ryujinx.Graphics.Metal/BackgroundResources.cs index 8bf6b92bd..e38b877a6 100644 --- a/src/Ryujinx.Graphics.Metal/BackgroundResources.cs +++ b/src/Ryujinx.Graphics.Metal/BackgroundResources.cs @@ -97,7 +97,7 @@ namespace Ryujinx.Graphics.Metal { lock (_resources) { - foreach (var resource in _resources.Values) + foreach (BackgroundResource resource in _resources.Values) { resource.Dispose(); } diff --git a/src/Ryujinx.Graphics.Metal/BufferHolder.cs b/src/Ryujinx.Graphics.Metal/BufferHolder.cs index cc86a403f..5a44dc1fe 100644 --- a/src/Ryujinx.Graphics.Metal/BufferHolder.cs +++ b/src/Ryujinx.Graphics.Metal/BufferHolder.cs @@ -103,7 +103,7 @@ namespace Ryujinx.Graphics.Metal if (_flushFence != null) { - var fence = _flushFence; + FenceHolder fence = _flushFence; Interlocked.Increment(ref _flushWaiting); // Don't wait in the lock. @@ -219,8 +219,8 @@ namespace Ryujinx.Graphics.Metal BufferHolder srcHolder = _renderer.BufferManager.Create(dataSize); srcHolder.SetDataUnchecked(0, data); - var srcBuffer = srcHolder.GetBuffer(); - var dstBuffer = this.GetBuffer(true); + Auto srcBuffer = srcHolder.GetBuffer(); + Auto dstBuffer = this.GetBuffer(true); Copy(cbs.Value, srcBuffer, dstBuffer, 0, offset, dataSize); @@ -262,8 +262,8 @@ namespace Ryujinx.Graphics.Metal int size, bool registerSrcUsage = true) { - var srcBuffer = registerSrcUsage ? src.Get(cbs, srcOffset, size).Value : src.GetUnsafe().Value; - var dstbuffer = dst.Get(cbs, dstOffset, size, true).Value; + MTLBuffer srcBuffer = registerSrcUsage ? src.Get(cbs, srcOffset, size).Value : src.GetUnsafe().Value; + MTLBuffer dstbuffer = dst.Get(cbs, dstOffset, size, true).Value; cbs.Encoders.EnsureBlitEncoder().CopyFromBuffer( srcBuffer, @@ -302,9 +302,9 @@ namespace Ryujinx.Graphics.Metal return null; } - var key = new I8ToI16CacheKey(_renderer); + I8ToI16CacheKey key = new I8ToI16CacheKey(_renderer); - if (!_cachedConvertedBuffers.TryGetValue(offset, size, key, out var holder)) + if (!_cachedConvertedBuffers.TryGetValue(offset, size, key, out BufferHolder holder)) { holder = _renderer.BufferManager.Create((size * 2 + 3) & ~3); @@ -325,9 +325,9 @@ namespace Ryujinx.Graphics.Metal return null; } - var key = new TopologyConversionCacheKey(_renderer, pattern, indexSize); + TopologyConversionCacheKey key = new TopologyConversionCacheKey(_renderer, pattern, indexSize); - if (!_cachedConvertedBuffers.TryGetValue(offset, size, key, out var holder)) + if (!_cachedConvertedBuffers.TryGetValue(offset, size, key, out BufferHolder holder)) { // The destination index size is always I32. diff --git a/src/Ryujinx.Graphics.Metal/BufferManager.cs b/src/Ryujinx.Graphics.Metal/BufferManager.cs index 07a686223..166f5b4f2 100644 --- a/src/Ryujinx.Graphics.Metal/BufferManager.cs +++ b/src/Ryujinx.Graphics.Metal/BufferManager.cs @@ -65,7 +65,7 @@ namespace Ryujinx.Graphics.Metal public BufferHandle Create(nint pointer, int size) { // TODO: This is the wrong Metal method, we need no-copy which SharpMetal isn't giving us. - var buffer = _device.NewBuffer(pointer, (ulong)size, MTLResourceOptions.ResourceStorageModeShared); + MTLBuffer buffer = _device.NewBuffer(pointer, (ulong)size, MTLResourceOptions.ResourceStorageModeShared); if (buffer == IntPtr.Zero) { @@ -74,7 +74,7 @@ namespace Ryujinx.Graphics.Metal return BufferHandle.Null; } - var holder = new BufferHolder(_renderer, _pipeline, buffer, size); + BufferHolder holder = new BufferHolder(_renderer, _pipeline, buffer, size); BufferCount++; @@ -123,7 +123,7 @@ namespace Ryujinx.Graphics.Metal public BufferHolder Create(int size) { - var buffer = _device.NewBuffer((ulong)size, MTLResourceOptions.ResourceStorageModeShared); + MTLBuffer buffer = _device.NewBuffer((ulong)size, MTLResourceOptions.ResourceStorageModeShared); if (buffer != IntPtr.Zero) { @@ -137,7 +137,7 @@ namespace Ryujinx.Graphics.Metal public Auto GetBuffer(BufferHandle handle, bool isWrite, out int size) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { size = holder.Size; return holder.GetBuffer(isWrite); @@ -149,7 +149,7 @@ namespace Ryujinx.Graphics.Metal public Auto GetBuffer(BufferHandle handle, int offset, int size, bool isWrite) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { return holder.GetBuffer(offset, size, isWrite); } @@ -159,7 +159,7 @@ namespace Ryujinx.Graphics.Metal public Auto GetBuffer(BufferHandle handle, bool isWrite) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { return holder.GetBuffer(isWrite); } @@ -169,7 +169,7 @@ namespace Ryujinx.Graphics.Metal public Auto GetBufferI8ToI16(CommandBufferScoped cbs, BufferHandle handle, int offset, int size) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { return holder.GetBufferI8ToI16(cbs, offset, size); } @@ -179,7 +179,7 @@ namespace Ryujinx.Graphics.Metal public Auto GetBufferTopologyConversion(CommandBufferScoped cbs, BufferHandle handle, int offset, int size, IndexBufferPattern pattern, int indexSize) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { return holder.GetBufferTopologyConversion(cbs, offset, size, pattern, indexSize); } @@ -189,7 +189,7 @@ namespace Ryujinx.Graphics.Metal public PinnedSpan GetData(BufferHandle handle, int offset, int size) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { return holder.GetData(offset, size); } @@ -204,7 +204,7 @@ namespace Ryujinx.Graphics.Metal public void SetData(BufferHandle handle, int offset, ReadOnlySpan data, CommandBufferScoped? cbs) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { holder.SetData(offset, data, cbs); } @@ -212,7 +212,7 @@ namespace Ryujinx.Graphics.Metal public void Delete(BufferHandle handle) { - if (TryGetBuffer(handle, out var holder)) + if (TryGetBuffer(handle, out BufferHolder holder)) { holder.Dispose(); _buffers.Remove((int)Unsafe.As(ref handle)); @@ -228,7 +228,7 @@ namespace Ryujinx.Graphics.Metal { StagingBuffer.Dispose(); - foreach (var buffer in _buffers) + foreach (BufferHolder buffer in _buffers) { buffer.Dispose(); } diff --git a/src/Ryujinx.Graphics.Metal/CommandBufferEncoder.cs b/src/Ryujinx.Graphics.Metal/CommandBufferEncoder.cs index ec4150030..c9a337bb0 100644 --- a/src/Ryujinx.Graphics.Metal/CommandBufferEncoder.cs +++ b/src/Ryujinx.Graphics.Metal/CommandBufferEncoder.cs @@ -137,7 +137,7 @@ class CommandBufferEncoder { EndCurrentPass(); - var renderCommandEncoder = _encoderFactory.CreateRenderCommandEncoder(); + MTLRenderCommandEncoder renderCommandEncoder = _encoderFactory.CreateRenderCommandEncoder(); CurrentEncoder = renderCommandEncoder; CurrentEncoderType = EncoderType.Render; @@ -149,8 +149,8 @@ class CommandBufferEncoder { EndCurrentPass(); - using var descriptor = new MTLBlitPassDescriptor(); - var blitCommandEncoder = _commandBuffer.BlitCommandEncoder(descriptor); + using MTLBlitPassDescriptor descriptor = new MTLBlitPassDescriptor(); + MTLBlitCommandEncoder blitCommandEncoder = _commandBuffer.BlitCommandEncoder(descriptor); CurrentEncoder = blitCommandEncoder; CurrentEncoderType = EncoderType.Blit; @@ -161,7 +161,7 @@ class CommandBufferEncoder { EndCurrentPass(); - var computeCommandEncoder = _encoderFactory.CreateComputeCommandEncoder(); + MTLComputeCommandEncoder computeCommandEncoder = _encoderFactory.CreateComputeCommandEncoder(); CurrentEncoder = computeCommandEncoder; CurrentEncoderType = EncoderType.Compute; diff --git a/src/Ryujinx.Graphics.Metal/CommandBufferPool.cs b/src/Ryujinx.Graphics.Metal/CommandBufferPool.cs index 5e7576b37..53f11dd08 100644 --- a/src/Ryujinx.Graphics.Metal/CommandBufferPool.cs +++ b/src/Ryujinx.Graphics.Metal/CommandBufferPool.cs @@ -101,7 +101,7 @@ namespace Ryujinx.Graphics.Metal { for (int i = 0; i < _totalCommandBuffers; i++) { - ref var entry = ref _commandBuffers[i]; + ref ReservedCommandBuffer entry = ref _commandBuffers[i]; if (entry.InConsumption) { @@ -117,7 +117,7 @@ namespace Ryujinx.Graphics.Metal { for (int i = 0; i < _totalCommandBuffers; i++) { - ref var entry = ref _commandBuffers[i]; + ref ReservedCommandBuffer entry = ref _commandBuffers[i]; if (entry.InUse) { @@ -129,7 +129,7 @@ namespace Ryujinx.Graphics.Metal public void AddWaitable(int cbIndex, MultiFenceHolder waitable) { - ref var entry = ref _commandBuffers[cbIndex]; + ref ReservedCommandBuffer entry = ref _commandBuffers[cbIndex]; if (waitable.AddFence(cbIndex, entry.Fence)) { entry.Waitables.Add(waitable); @@ -142,7 +142,7 @@ namespace Ryujinx.Graphics.Metal { for (int i = 0; i < _totalCommandBuffers; i++) { - ref var entry = ref _commandBuffers[i]; + ref ReservedCommandBuffer entry = ref _commandBuffers[i]; if (entry.InUse && entry.Fence == fence) { @@ -172,7 +172,7 @@ namespace Ryujinx.Graphics.Metal { int index = _queuedIndexes[_queuedIndexesPtr]; - ref var entry = ref _commandBuffers[index]; + ref ReservedCommandBuffer entry = ref _commandBuffers[index]; if (wait || !entry.InConsumption || entry.Fence.IsSignaled()) { @@ -207,7 +207,7 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < _totalCommandBuffers; i++) { - ref var entry = ref _commandBuffers[cursor]; + ref ReservedCommandBuffer entry = ref _commandBuffers[cursor]; if (!entry.InUse && !entry.InConsumption) { @@ -234,7 +234,7 @@ namespace Ryujinx.Graphics.Metal { int cbIndex = cbs.CommandBufferIndex; - ref var entry = ref _commandBuffers[cbIndex]; + ref ReservedCommandBuffer entry = ref _commandBuffers[cbIndex]; Debug.Assert(entry.InUse); Debug.Assert(entry.CommandBuffer.NativePtr == cbs.CommandBuffer.NativePtr); @@ -243,7 +243,7 @@ namespace Ryujinx.Graphics.Metal entry.SubmissionCount++; _inUseCount--; - var commandBuffer = entry.CommandBuffer; + MTLCommandBuffer commandBuffer = entry.CommandBuffer; commandBuffer.Commit(); int ptr = (_queuedIndexesPtr + _queuedCount) % _totalCommandBuffers; @@ -254,7 +254,7 @@ namespace Ryujinx.Graphics.Metal private void WaitAndDecrementRef(int cbIndex) { - ref var entry = ref _commandBuffers[cbIndex]; + ref ReservedCommandBuffer entry = ref _commandBuffers[cbIndex]; if (entry.InConsumption) { @@ -262,12 +262,12 @@ namespace Ryujinx.Graphics.Metal entry.InConsumption = false; } - foreach (var dependant in entry.Dependants) + foreach (IAuto dependant in entry.Dependants) { dependant.DecrementReferenceCount(cbIndex); } - foreach (var waitable in entry.Waitables) + foreach (MultiFenceHolder waitable in entry.Waitables) { waitable.RemoveFence(cbIndex); waitable.RemoveBufferUses(cbIndex); diff --git a/src/Ryujinx.Graphics.Metal/DepthStencilCache.cs b/src/Ryujinx.Graphics.Metal/DepthStencilCache.cs index bb6e4c180..92a24b99d 100644 --- a/src/Ryujinx.Graphics.Metal/DepthStencilCache.cs +++ b/src/Ryujinx.Graphics.Metal/DepthStencilCache.cs @@ -25,7 +25,7 @@ namespace Ryujinx.Graphics.Metal ref StencilUid frontUid = ref descriptor.FrontFace; - using var frontFaceStencil = new MTLStencilDescriptor + using MTLStencilDescriptor frontFaceStencil = new MTLStencilDescriptor { StencilFailureOperation = frontUid.StencilFailureOperation, DepthFailureOperation = frontUid.DepthFailureOperation, @@ -37,7 +37,7 @@ namespace Ryujinx.Graphics.Metal ref StencilUid backUid = ref descriptor.BackFace; - using var backFaceStencil = new MTLStencilDescriptor + using MTLStencilDescriptor backFaceStencil = new MTLStencilDescriptor { StencilFailureOperation = backUid.StencilFailureOperation, DepthFailureOperation = backUid.DepthFailureOperation, @@ -47,7 +47,7 @@ namespace Ryujinx.Graphics.Metal WriteMask = backUid.WriteMask }; - var mtlDescriptor = new MTLDepthStencilDescriptor + MTLDepthStencilDescriptor mtlDescriptor = new MTLDepthStencilDescriptor { DepthCompareFunction = descriptor.DepthCompareFunction, DepthWriteEnabled = descriptor.DepthWriteEnabled diff --git a/src/Ryujinx.Graphics.Metal/EncoderState.cs b/src/Ryujinx.Graphics.Metal/EncoderState.cs index 34de168a6..28b59736a 100644 --- a/src/Ryujinx.Graphics.Metal/EncoderState.cs +++ b/src/Ryujinx.Graphics.Metal/EncoderState.cs @@ -165,7 +165,7 @@ namespace Ryujinx.Graphics.Metal { // Inherit render target related information without causing a render encoder split. - var oldState = new RenderTargetCopy + RenderTargetCopy oldState = new RenderTargetCopy { Scissors = other.Scissors, RenderTargets = other.RenderTargets, @@ -180,7 +180,7 @@ namespace Ryujinx.Graphics.Metal Pipeline.Internal.ColorBlendState = other.Pipeline.Internal.ColorBlendState; Pipeline.DepthStencilFormat = other.Pipeline.DepthStencilFormat; - ref var blendStates = ref Pipeline.Internal.ColorBlendState; + ref Array8 blendStates = ref Pipeline.Internal.ColorBlendState; // Mask out irrelevant attachments. for (int i = 0; i < blendStates.Length; i++) diff --git a/src/Ryujinx.Graphics.Metal/EncoderStateManager.cs b/src/Ryujinx.Graphics.Metal/EncoderStateManager.cs index 169e0142d..bfd9a0348 100644 --- a/src/Ryujinx.Graphics.Metal/EncoderStateManager.cs +++ b/src/Ryujinx.Graphics.Metal/EncoderStateManager.cs @@ -1,4 +1,5 @@ using Ryujinx.Common.Logging; +using Ryujinx.Common.Memory; using Ryujinx.Graphics.GAL; using Ryujinx.Graphics.Metal.State; using Ryujinx.Graphics.Shader; @@ -124,21 +125,21 @@ namespace Ryujinx.Graphics.Metal public readonly MTLRenderCommandEncoder CreateRenderCommandEncoder() { // Initialise Pass & State - using var renderPassDescriptor = new MTLRenderPassDescriptor(); + using MTLRenderPassDescriptor renderPassDescriptor = new MTLRenderPassDescriptor(); for (int i = 0; i < Constants.MaxColorAttachments; i++) { if (_currentState.RenderTargets[i] is Texture tex) { - var passAttachment = renderPassDescriptor.ColorAttachments.Object((ulong)i); + MTLRenderPassColorAttachmentDescriptor passAttachment = renderPassDescriptor.ColorAttachments.Object((ulong)i); tex.PopulateRenderPassAttachment(passAttachment); passAttachment.LoadAction = _currentState.ClearLoadAction ? MTLLoadAction.Clear : MTLLoadAction.Load; passAttachment.StoreAction = MTLStoreAction.Store; } } - var depthAttachment = renderPassDescriptor.DepthAttachment; - var stencilAttachment = renderPassDescriptor.StencilAttachment; + MTLRenderPassDepthAttachmentDescriptor depthAttachment = renderPassDescriptor.DepthAttachment; + MTLRenderPassStencilAttachmentDescriptor stencilAttachment = renderPassDescriptor.StencilAttachment; if (_currentState.DepthStencil != null) { @@ -177,15 +178,15 @@ namespace Ryujinx.Graphics.Metal } // Initialise Encoder - var renderCommandEncoder = _pipeline.CommandBuffer.RenderCommandEncoder(renderPassDescriptor); + MTLRenderCommandEncoder renderCommandEncoder = _pipeline.CommandBuffer.RenderCommandEncoder(renderPassDescriptor); return renderCommandEncoder; } public readonly MTLComputeCommandEncoder CreateComputeCommandEncoder() { - using var descriptor = new MTLComputePassDescriptor(); - var computeCommandEncoder = _pipeline.CommandBuffer.ComputeCommandEncoder(descriptor); + using MTLComputePassDescriptor descriptor = new MTLComputePassDescriptor(); + MTLComputeCommandEncoder computeCommandEncoder = _pipeline.CommandBuffer.ComputeCommandEncoder(descriptor); return computeCommandEncoder; } @@ -292,17 +293,17 @@ namespace Ryujinx.Graphics.Metal SetScissors(renderCommandEncoder); } - foreach (var resource in _currentState.RenderEncoderBindings.Resources) + foreach (Resource resource in _currentState.RenderEncoderBindings.Resources) { renderCommandEncoder.UseResource(resource.MtlResource, resource.ResourceUsage, resource.Stages); } - foreach (var buffer in _currentState.RenderEncoderBindings.VertexBuffers) + foreach (BufferResource buffer in _currentState.RenderEncoderBindings.VertexBuffers) { renderCommandEncoder.SetVertexBuffer(buffer.Buffer, buffer.Offset, buffer.Binding); } - foreach (var buffer in _currentState.RenderEncoderBindings.FragmentBuffers) + foreach (BufferResource buffer in _currentState.RenderEncoderBindings.FragmentBuffers) { renderCommandEncoder.SetFragmentBuffer(buffer.Buffer, buffer.Offset, buffer.Binding); } @@ -317,12 +318,12 @@ namespace Ryujinx.Graphics.Metal SetComputePipelineState(computeCommandEncoder); } - foreach (var resource in _currentState.ComputeEncoderBindings.Resources) + foreach (Resource resource in _currentState.ComputeEncoderBindings.Resources) { computeCommandEncoder.UseResource(resource.MtlResource, resource.ResourceUsage); } - foreach (var buffer in _currentState.ComputeEncoderBindings.Buffers) + foreach (BufferResource buffer in _currentState.ComputeEncoderBindings.Buffers) { computeCommandEncoder.SetBuffer(buffer.Buffer, buffer.Offset, buffer.Binding); } @@ -350,7 +351,7 @@ namespace Ryujinx.Graphics.Metal return; } - var pipelineState = PipelineState.CreateComputePipeline(_device, _currentState.ComputeProgram); + MTLComputePipelineState pipelineState = PipelineState.CreateComputePipeline(_device, _currentState.ComputeProgram); computeCommandEncoder.SetComputePipelineState(pipelineState); } @@ -418,7 +419,7 @@ namespace Ryujinx.Graphics.Metal public readonly void UpdateRenderTargetColorMasks(ReadOnlySpan componentMask) { - ref var blendState = ref _currentState.Pipeline.Internal.ColorBlendState; + ref Array8 blendState = ref _currentState.Pipeline.Internal.ColorBlendState; for (int i = 0; i < componentMask.Length; i++) { @@ -427,7 +428,7 @@ namespace Ryujinx.Graphics.Metal bool blue = (componentMask[i] & (0x1 << 2)) != 0; bool alpha = (componentMask[i] & (0x1 << 3)) != 0; - var mask = MTLColorWriteMask.None; + MTLColorWriteMask mask = MTLColorWriteMask.None; mask |= red ? MTLColorWriteMask.Red : 0; mask |= green ? MTLColorWriteMask.Green : 0; @@ -480,7 +481,7 @@ namespace Ryujinx.Graphics.Metal // Look for textures that are masked out. ref PipelineState pipeline = ref _currentState.Pipeline; - ref var blendState = ref pipeline.Internal.ColorBlendState; + ref Array8 blendState = ref pipeline.Internal.ColorBlendState; pipeline.ColorBlendAttachmentStateCount = (uint)colors.Length; @@ -491,7 +492,7 @@ namespace Ryujinx.Graphics.Metal continue; } - var mtlMask = blendState[i].WriteMask; + MTLColorWriteMask mtlMask = blendState[i].WriteMask; for (int j = 0; j < i; j++) { @@ -501,7 +502,7 @@ namespace Ryujinx.Graphics.Metal { // Prefer the binding with no write mask. - var mtlMask2 = blendState[j].WriteMask; + MTLColorWriteMask mtlMask2 = blendState[j].WriteMask; if (mtlMask == 0) { @@ -574,7 +575,7 @@ namespace Ryujinx.Graphics.Metal public readonly void UpdateBlendDescriptors(int index, BlendDescriptor blend) { - ref var blendState = ref _currentState.Pipeline.Internal.ColorBlendState[index]; + ref ColorBlendStateUid blendState = ref _currentState.Pipeline.Internal.ColorBlendState[index]; blendState.Enable = blend.Enable; blendState.AlphaBlendOperation = blend.AlphaOp.Convert(); @@ -687,7 +688,7 @@ namespace Ryujinx.Graphics.Metal { for (int i = 0; i < regions.Length; i++) { - var region = regions[i]; + Rectangle region = regions[i]; _currentState.Scissors[i] = new MTLScissorRect { @@ -717,7 +718,7 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < viewports.Length; i++) { - var viewport = viewports[i]; + Viewport viewport = viewports[i]; // Y coordinate is inverted _currentState.Viewports[i] = new MTLViewport { @@ -746,7 +747,7 @@ namespace Ryujinx.Graphics.Metal { if (i < vertexBuffers.Length) { - var vertexBuffer = vertexBuffers[i]; + VertexBufferDescriptor vertexBuffer = vertexBuffers[i]; _currentState.VertexBuffers[i] = new VertexBufferState( vertexBuffer.Buffer.Handle, @@ -771,7 +772,7 @@ namespace Ryujinx.Graphics.Metal { foreach (BufferAssignment assignment in buffers) { - var buffer = assignment.Range; + BufferRange buffer = assignment.Range; int index = assignment.Binding; Auto mtlBuffer = buffer.Handle == BufferHandle.Null @@ -788,7 +789,7 @@ namespace Ryujinx.Graphics.Metal { foreach (BufferAssignment assignment in buffers) { - var buffer = assignment.Range; + BufferRange buffer = assignment.Range; int index = assignment.Binding; Auto mtlBuffer = buffer.Handle == BufferHandle.Null @@ -805,7 +806,7 @@ namespace Ryujinx.Graphics.Metal { for (int i = 0; i < buffers.Length; i++) { - var mtlBuffer = buffers[i]; + Auto mtlBuffer = buffers[i]; int index = first + i; _currentState.StorageBufferRefs[index] = new BufferRef(mtlBuffer); @@ -816,7 +817,7 @@ namespace Ryujinx.Graphics.Metal public void UpdateCullMode(bool enable, Face face) { - var dirtyScissor = (face == Face.FrontAndBack) != _currentState.CullBoth; + bool dirtyScissor = (face == Face.FrontAndBack) != _currentState.CullBoth; _currentState.CullMode = enable ? face.Convert() : MTLCullMode.None; _currentState.CullBoth = face == Face.FrontAndBack; @@ -980,8 +981,8 @@ namespace Ryujinx.Graphics.Metal private unsafe void SetScissors(MTLRenderCommandEncoder renderCommandEncoder) { - var isTriangles = (_currentState.Topology == PrimitiveTopology.Triangles) || - (_currentState.Topology == PrimitiveTopology.TriangleStrip); + bool isTriangles = (_currentState.Topology == PrimitiveTopology.Triangles) || + (_currentState.Topology == PrimitiveTopology.TriangleStrip); if (_currentState.CullBoth && isTriangles) { @@ -1017,7 +1018,7 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < attribDescriptors.Length; i++) { - ref var attrib = ref pipeline.Internal.VertexAttributes[i]; + ref VertexInputAttributeUid attrib = ref pipeline.Internal.VertexAttributes[i]; if (attribDescriptors[i].IsZero) { @@ -1037,7 +1038,7 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < bufferDescriptors.Length; i++) { - ref var layout = ref pipeline.Internal.VertexBindings[i]; + ref VertexInputLayoutUid layout = ref pipeline.Internal.VertexBindings[i]; if ((indexMask & (1u << i)) != 0) { @@ -1069,7 +1070,7 @@ namespace Ryujinx.Graphics.Metal } } - ref var zeroBufLayout = ref pipeline.Internal.VertexBindings[(int)Constants.ZeroBufferIndex]; + ref VertexInputLayoutUid zeroBufLayout = ref pipeline.Internal.VertexBindings[(int)Constants.ZeroBufferIndex]; // Zero buffer if ((indexMask & (1u << (int)Constants.ZeroBufferIndex)) != 0) @@ -1108,7 +1109,7 @@ namespace Ryujinx.Graphics.Metal return; } - var zeroMtlBuffer = autoZeroBuffer.Get(_pipeline.Cbs).Value; + MTLBuffer zeroMtlBuffer = autoZeroBuffer.Get(_pipeline.Cbs).Value; bindings.VertexBuffers.Add(new BufferResource(zeroMtlBuffer, 0, Constants.ZeroBufferIndex)); } @@ -1117,12 +1118,12 @@ namespace Ryujinx.Graphics.Metal ulong gpuAddress = 0; IntPtr nativePtr = IntPtr.Zero; - var range = buffer.Range; - var autoBuffer = buffer.Buffer; + BufferRange? range = buffer.Range; + Auto autoBuffer = buffer.Buffer; if (autoBuffer != null) { - var offset = 0; + int offset = 0; MTLBuffer mtlBuffer; if (range.HasValue) @@ -1144,7 +1145,7 @@ namespace Ryujinx.Graphics.Metal private readonly (ulong gpuAddress, IntPtr nativePtr) AddressForTexture(ref TextureRef texture) { - var storage = texture.Storage; + TextureBase storage = texture.Storage; ulong gpuAddress = 0; IntPtr nativePtr = IntPtr.Zero; @@ -1156,7 +1157,7 @@ namespace Ryujinx.Graphics.Metal textureBuffer.RebuildStorage(false); } - var mtlTexture = storage.GetHandle(); + MTLTexture mtlTexture = storage.GetHandle(); gpuAddress = mtlTexture.GpuResourceID._impl; nativePtr = mtlTexture.NativePtr; @@ -1167,14 +1168,14 @@ namespace Ryujinx.Graphics.Metal private readonly (ulong gpuAddress, IntPtr nativePtr) AddressForImage(ref ImageRef image) { - var storage = image.Storage; + Texture storage = image.Storage; ulong gpuAddress = 0; IntPtr nativePtr = IntPtr.Zero; if (storage != null) { - var mtlTexture = storage.GetHandle(); + MTLTexture mtlTexture = storage.GetHandle(); gpuAddress = mtlTexture.GpuResourceID._impl; nativePtr = mtlTexture.NativePtr; @@ -1192,7 +1193,7 @@ namespace Ryujinx.Graphics.Metal { bufferTexture.RebuildStorage(false); - var mtlTexture = bufferTexture.GetHandle(); + MTLTexture mtlTexture = bufferTexture.GetHandle(); gpuAddress = mtlTexture.GpuResourceID._impl; nativePtr = mtlTexture.NativePtr; @@ -1221,7 +1222,7 @@ namespace Ryujinx.Graphics.Metal private readonly void UpdateAndBind(Program program, uint setIndex, ref readonly RenderEncoderBindings bindings) { - var bindingSegments = program.BindingSegments[setIndex]; + ResourceBindingSegment[] bindingSegments = program.BindingSegments[setIndex]; if (bindingSegments.Length == 0) { @@ -1244,8 +1245,8 @@ namespace Ryujinx.Graphics.Metal Span vertResourceIds = stackalloc ulong[program.ArgumentBufferSizes[setIndex]]; Span fragResourceIds = stackalloc ulong[program.FragArgumentBufferSizes[setIndex]]; - var vertResourceIdIndex = 0; - var fragResourceIdIndex = 0; + int vertResourceIdIndex = 0; + int fragResourceIdIndex = 0; foreach (ResourceBindingSegment segment in bindingSegments) { @@ -1260,7 +1261,7 @@ namespace Ryujinx.Graphics.Metal int index = binding + i; ref BufferRef buffer = ref _currentState.UniformBufferRefs[index]; - var (gpuAddress, nativePtr) = AddressForBuffer(ref buffer); + (ulong gpuAddress, IntPtr nativePtr) = AddressForBuffer(ref buffer); MTLRenderStages renderStages = 0; @@ -1289,7 +1290,7 @@ namespace Ryujinx.Graphics.Metal int index = binding + i; ref BufferRef buffer = ref _currentState.StorageBufferRefs[index]; - var (gpuAddress, nativePtr) = AddressForBuffer(ref buffer); + (ulong gpuAddress, IntPtr nativePtr) = AddressForBuffer(ref buffer); MTLRenderStages renderStages = 0; @@ -1319,8 +1320,8 @@ namespace Ryujinx.Graphics.Metal { int index = binding + i; - ref var texture = ref _currentState.TextureRefs[index]; - var (gpuAddress, nativePtr) = AddressForTexture(ref texture); + ref TextureRef texture = ref _currentState.TextureRefs[index]; + (ulong gpuAddress, IntPtr nativePtr) = AddressForTexture(ref texture); MTLRenderStages renderStages = 0; @@ -1357,17 +1358,17 @@ namespace Ryujinx.Graphics.Metal } else { - var textureArray = _currentState.TextureArrayRefs[binding].Array; + TextureArray textureArray = _currentState.TextureArrayRefs[binding].Array; if (segment.Type != ResourceType.BufferTexture) { - var textures = textureArray.GetTextureRefs(); - var samplers = new Auto[textures.Length]; + TextureRef[] textures = textureArray.GetTextureRefs(); + Auto[] samplers = new Auto[textures.Length]; for (int i = 0; i < textures.Length; i++) { TextureRef texture = textures[i]; - var (gpuAddress, nativePtr) = AddressForTexture(ref texture); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTexture(ref texture); samplers[i] = texture.Sampler; @@ -1392,7 +1393,7 @@ namespace Ryujinx.Graphics.Metal AddResource(nativePtr, MTLResourceUsage.Read, renderStages, in bindings); } - foreach (var sampler in samplers) + foreach (Auto sampler in samplers) { ulong gpuAddress = 0; @@ -1416,12 +1417,12 @@ namespace Ryujinx.Graphics.Metal } else { - var bufferTextures = textureArray.GetBufferTextureRefs(); + TextureBuffer[] bufferTextures = textureArray.GetBufferTextureRefs(); for (int i = 0; i < bufferTextures.Length; i++) { TextureBuffer bufferTexture = bufferTextures[i]; - var (gpuAddress, nativePtr) = AddressForTextureBuffer(ref bufferTexture); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTextureBuffer(ref bufferTexture); MTLRenderStages renderStages = 0; @@ -1453,8 +1454,8 @@ namespace Ryujinx.Graphics.Metal { int index = binding + i; - ref var image = ref _currentState.ImageRefs[index]; - var (gpuAddress, nativePtr) = AddressForImage(ref image); + ref ImageRef image = ref _currentState.ImageRefs[index]; + (ulong gpuAddress, IntPtr nativePtr) = AddressForImage(ref image); MTLRenderStages renderStages = 0; @@ -1477,16 +1478,16 @@ namespace Ryujinx.Graphics.Metal } else { - var imageArray = _currentState.ImageArrayRefs[binding].Array; + ImageArray imageArray = _currentState.ImageArrayRefs[binding].Array; if (segment.Type != ResourceType.BufferImage) { - var images = imageArray.GetTextureRefs(); + TextureRef[] images = imageArray.GetTextureRefs(); for (int i = 0; i < images.Length; i++) { TextureRef image = images[i]; - var (gpuAddress, nativePtr) = AddressForTexture(ref image); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTexture(ref image); MTLRenderStages renderStages = 0; @@ -1509,12 +1510,12 @@ namespace Ryujinx.Graphics.Metal } else { - var bufferImages = imageArray.GetBufferTextureRefs(); + TextureBuffer[] bufferImages = imageArray.GetBufferTextureRefs(); for (int i = 0; i < bufferImages.Length; i++) { TextureBuffer image = bufferImages[i]; - var (gpuAddress, nativePtr) = AddressForTextureBuffer(ref image); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTextureBuffer(ref image); MTLRenderStages renderStages = 0; @@ -1543,21 +1544,21 @@ namespace Ryujinx.Graphics.Metal if (program.ArgumentBufferSizes[setIndex] > 0) { vertArgBuffer.Holder.SetDataUnchecked(vertArgBuffer.Offset, MemoryMarshal.AsBytes(vertResourceIds)); - var mtlVertArgBuffer = _bufferManager.GetBuffer(vertArgBuffer.Handle, false).Get(_pipeline.Cbs).Value; + MTLBuffer mtlVertArgBuffer = _bufferManager.GetBuffer(vertArgBuffer.Handle, false).Get(_pipeline.Cbs).Value; bindings.VertexBuffers.Add(new BufferResource(mtlVertArgBuffer, (uint)vertArgBuffer.Range.Offset, SetIndexToBindingIndex(setIndex))); } if (program.FragArgumentBufferSizes[setIndex] > 0) { fragArgBuffer.Holder.SetDataUnchecked(fragArgBuffer.Offset, MemoryMarshal.AsBytes(fragResourceIds)); - var mtlFragArgBuffer = _bufferManager.GetBuffer(fragArgBuffer.Handle, false).Get(_pipeline.Cbs).Value; + MTLBuffer mtlFragArgBuffer = _bufferManager.GetBuffer(fragArgBuffer.Handle, false).Get(_pipeline.Cbs).Value; bindings.FragmentBuffers.Add(new BufferResource(mtlFragArgBuffer, (uint)fragArgBuffer.Range.Offset, SetIndexToBindingIndex(setIndex))); } } private readonly void UpdateAndBind(Program program, uint setIndex, ref readonly ComputeEncoderBindings bindings) { - var bindingSegments = program.BindingSegments[setIndex]; + ResourceBindingSegment[] bindingSegments = program.BindingSegments[setIndex]; if (bindingSegments.Length == 0) { @@ -1572,7 +1573,7 @@ namespace Ryujinx.Graphics.Metal } Span resourceIds = stackalloc ulong[program.ArgumentBufferSizes[setIndex]]; - var resourceIdIndex = 0; + int resourceIdIndex = 0; foreach (ResourceBindingSegment segment in bindingSegments) { @@ -1587,7 +1588,7 @@ namespace Ryujinx.Graphics.Metal int index = binding + i; ref BufferRef buffer = ref _currentState.UniformBufferRefs[index]; - var (gpuAddress, nativePtr) = AddressForBuffer(ref buffer); + (ulong gpuAddress, IntPtr nativePtr) = AddressForBuffer(ref buffer); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1604,7 +1605,7 @@ namespace Ryujinx.Graphics.Metal int index = binding + i; ref BufferRef buffer = ref _currentState.StorageBufferRefs[index]; - var (gpuAddress, nativePtr) = AddressForBuffer(ref buffer); + (ulong gpuAddress, IntPtr nativePtr) = AddressForBuffer(ref buffer); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1621,8 +1622,8 @@ namespace Ryujinx.Graphics.Metal { int index = binding + i; - ref var texture = ref _currentState.TextureRefs[index]; - var (gpuAddress, nativePtr) = AddressForTexture(ref texture); + ref TextureRef texture = ref _currentState.TextureRefs[index]; + (ulong gpuAddress, IntPtr nativePtr) = AddressForTexture(ref texture); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1640,17 +1641,17 @@ namespace Ryujinx.Graphics.Metal } else { - var textureArray = _currentState.TextureArrayRefs[binding].Array; + TextureArray textureArray = _currentState.TextureArrayRefs[binding].Array; if (segment.Type != ResourceType.BufferTexture) { - var textures = textureArray.GetTextureRefs(); - var samplers = new Auto[textures.Length]; + TextureRef[] textures = textureArray.GetTextureRefs(); + Auto[] samplers = new Auto[textures.Length]; for (int i = 0; i < textures.Length; i++) { TextureRef texture = textures[i]; - var (gpuAddress, nativePtr) = AddressForTexture(ref texture); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTexture(ref texture); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1662,7 +1663,7 @@ namespace Ryujinx.Graphics.Metal } } - foreach (var sampler in samplers) + foreach (Auto sampler in samplers) { if (sampler != null) { @@ -1673,12 +1674,12 @@ namespace Ryujinx.Graphics.Metal } else { - var bufferTextures = textureArray.GetBufferTextureRefs(); + TextureBuffer[] bufferTextures = textureArray.GetBufferTextureRefs(); for (int i = 0; i < bufferTextures.Length; i++) { TextureBuffer bufferTexture = bufferTextures[i]; - var (gpuAddress, nativePtr) = AddressForTextureBuffer(ref bufferTexture); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTextureBuffer(ref bufferTexture); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1697,8 +1698,8 @@ namespace Ryujinx.Graphics.Metal { int index = binding + i; - ref var image = ref _currentState.ImageRefs[index]; - var (gpuAddress, nativePtr) = AddressForImage(ref image); + ref ImageRef image = ref _currentState.ImageRefs[index]; + (ulong gpuAddress, IntPtr nativePtr) = AddressForImage(ref image); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1710,16 +1711,16 @@ namespace Ryujinx.Graphics.Metal } else { - var imageArray = _currentState.ImageArrayRefs[binding].Array; + ImageArray imageArray = _currentState.ImageArrayRefs[binding].Array; if (segment.Type != ResourceType.BufferImage) { - var images = imageArray.GetTextureRefs(); + TextureRef[] images = imageArray.GetTextureRefs(); for (int i = 0; i < images.Length; i++) { TextureRef image = images[i]; - var (gpuAddress, nativePtr) = AddressForTexture(ref image); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTexture(ref image); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1731,12 +1732,12 @@ namespace Ryujinx.Graphics.Metal } else { - var bufferImages = imageArray.GetBufferTextureRefs(); + TextureBuffer[] bufferImages = imageArray.GetBufferTextureRefs(); for (int i = 0; i < bufferImages.Length; i++) { TextureBuffer image = bufferImages[i]; - var (gpuAddress, nativePtr) = AddressForTextureBuffer(ref image); + (ulong gpuAddress, IntPtr nativePtr) = AddressForTextureBuffer(ref image); if ((segment.Stages & ResourceStages.Compute) != 0) { @@ -1754,7 +1755,7 @@ namespace Ryujinx.Graphics.Metal if (program.ArgumentBufferSizes[setIndex] > 0) { argBuffer.Holder.SetDataUnchecked(argBuffer.Offset, MemoryMarshal.AsBytes(resourceIds)); - var mtlArgBuffer = _bufferManager.GetBuffer(argBuffer.Handle, false).Get(_pipeline.Cbs).Value; + MTLBuffer mtlArgBuffer = _bufferManager.GetBuffer(argBuffer.Handle, false).Get(_pipeline.Cbs).Value; bindings.Buffers.Add(new BufferResource(mtlArgBuffer, (uint)argBuffer.Range.Offset, SetIndexToBindingIndex(setIndex))); } } diff --git a/src/Ryujinx.Graphics.Metal/FormatTable.cs b/src/Ryujinx.Graphics.Metal/FormatTable.cs index c1f8923f9..10c8b435c 100644 --- a/src/Ryujinx.Graphics.Metal/FormatTable.cs +++ b/src/Ryujinx.Graphics.Metal/FormatTable.cs @@ -170,7 +170,7 @@ namespace Ryujinx.Graphics.Metal public static MTLPixelFormat GetFormat(Format format) { - var mtlFormat = _table[(int)format]; + MTLPixelFormat mtlFormat = _table[(int)format]; if (IsD24S8(format)) { diff --git a/src/Ryujinx.Graphics.Metal/HardwareInfo.cs b/src/Ryujinx.Graphics.Metal/HardwareInfo.cs index 4b3b710f8..413fabf09 100644 --- a/src/Ryujinx.Graphics.Metal/HardwareInfo.cs +++ b/src/Ryujinx.Graphics.Metal/HardwareInfo.cs @@ -45,33 +45,33 @@ namespace Ryujinx.Graphics.Metal public static string GetVendor() { - var serviceDict = IOServiceMatching("IOGPU"); - var service = IOServiceGetMatchingService(IntPtr.Zero, serviceDict); - var cfString = CFStringCreateWithCString(_kCFAllocatorDefault, "vendor-id", _kCFStringEncodingASCII); - var cfProperty = IORegistryEntryCreateCFProperty(service, cfString, _kCFAllocatorDefault, 0); + IntPtr serviceDict = IOServiceMatching("IOGPU"); + IntPtr service = IOServiceGetMatchingService(IntPtr.Zero, serviceDict); + IntPtr cfString = CFStringCreateWithCString(_kCFAllocatorDefault, "vendor-id", _kCFStringEncodingASCII); + IntPtr cfProperty = IORegistryEntryCreateCFProperty(service, cfString, _kCFAllocatorDefault, 0); byte[] buffer = new byte[4]; - var bufferPtr = CFDataGetBytePtr(cfProperty); + IntPtr bufferPtr = CFDataGetBytePtr(cfProperty); Marshal.Copy(bufferPtr, buffer, 0, buffer.Length); - var vendorId = BitConverter.ToUInt32(buffer); + uint vendorId = BitConverter.ToUInt32(buffer); return GetNameFromId(vendorId); } public static string GetModel() { - var serviceDict = IOServiceMatching("IOGPU"); - var service = IOServiceGetMatchingService(IntPtr.Zero, serviceDict); - var cfString = CFStringCreateWithCString(_kCFAllocatorDefault, "model", _kCFStringEncodingASCII); - var cfProperty = IORegistryEntryCreateCFProperty(service, cfString, _kCFAllocatorDefault, 0); + IntPtr serviceDict = IOServiceMatching("IOGPU"); + IntPtr service = IOServiceGetMatchingService(IntPtr.Zero, serviceDict); + IntPtr cfString = CFStringCreateWithCString(_kCFAllocatorDefault, "model", _kCFStringEncodingASCII); + IntPtr cfProperty = IORegistryEntryCreateCFProperty(service, cfString, _kCFAllocatorDefault, 0); char[] buffer = new char[64]; IntPtr bufferPtr = Marshal.AllocHGlobal(buffer.Length); if (CFStringGetCString(cfProperty, bufferPtr, buffer.Length, _kCFStringEncodingASCII)) { - var model = Marshal.PtrToStringUTF8(bufferPtr); + string model = Marshal.PtrToStringUTF8(bufferPtr); Marshal.FreeHGlobal(bufferPtr); return model; } diff --git a/src/Ryujinx.Graphics.Metal/HashTableSlim.cs b/src/Ryujinx.Graphics.Metal/HashTableSlim.cs index a27a53d47..34f38ee24 100644 --- a/src/Ryujinx.Graphics.Metal/HashTableSlim.cs +++ b/src/Ryujinx.Graphics.Metal/HashTableSlim.cs @@ -65,7 +65,7 @@ namespace Ryujinx.Graphics.Metal public void Add(ref TKey key, TValue value) { - var entry = new Entry + Entry entry = new() { Hash = key.GetHashCode(), Key = key, @@ -75,7 +75,7 @@ namespace Ryujinx.Graphics.Metal int hashCode = key.GetHashCode(); int bucketIndex = hashCode & TotalBucketsMask; - ref var bucket = ref _hashTable[bucketIndex]; + ref Bucket bucket = ref _hashTable[bucketIndex]; if (bucket.Entries != null) { int index = bucket.Length; @@ -102,11 +102,11 @@ namespace Ryujinx.Graphics.Metal { int hashCode = key.GetHashCode(); - ref var bucket = ref _hashTable[hashCode & TotalBucketsMask]; - var entries = bucket.AsSpan(); + ref Bucket bucket = ref _hashTable[hashCode & TotalBucketsMask]; + Span entries = bucket.AsSpan(); for (int i = 0; i < entries.Length; i++) { - ref var entry = ref entries[i]; + ref Entry entry = ref entries[i]; if (entry.Hash == hashCode && entry.Key.Equals(ref key)) { @@ -124,10 +124,10 @@ namespace Ryujinx.Graphics.Metal { int hashCode = key.GetHashCode(); - var entries = _hashTable[hashCode & TotalBucketsMask].AsSpan(); + Span entries = _hashTable[hashCode & TotalBucketsMask].AsSpan(); for (int i = 0; i < entries.Length; i++) { - ref var entry = ref entries[i]; + ref Entry entry = ref entries[i]; if (entry.Hash == hashCode && entry.Key.Equals(ref key)) { diff --git a/src/Ryujinx.Graphics.Metal/HelperShader.cs b/src/Ryujinx.Graphics.Metal/HelperShader.cs index 53f503207..e72ab6991 100644 --- a/src/Ryujinx.Graphics.Metal/HelperShader.cs +++ b/src/Ryujinx.Graphics.Metal/HelperShader.cs @@ -50,58 +50,58 @@ namespace Ryujinx.Graphics.Metal _samplerNearest = new SamplerHolder(renderer, _device, SamplerCreateInfo.Create(MinFilter.Nearest, MagFilter.Nearest)); _samplerLinear = new SamplerHolder(renderer, _device, SamplerCreateInfo.Create(MinFilter.Linear, MagFilter.Linear)); - var blitResourceLayout = new ResourceLayoutBuilder() + ResourceLayout blitResourceLayout = new ResourceLayoutBuilder() .Add(ResourceStages.Vertex, ResourceType.UniformBuffer, 0) .Add(ResourceStages.Fragment, ResourceType.TextureAndSampler, 0).Build(); - var blitSource = ReadMsl("Blit.metal"); + string blitSource = ReadMsl("Blit.metal"); - var blitSourceF = blitSource.Replace("FORMAT", "float", StringComparison.Ordinal); + string blitSourceF = blitSource.Replace("FORMAT", "float", StringComparison.Ordinal); _programColorBlitF = new Program(renderer, device, [ new ShaderSource(blitSourceF, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitSourceF, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var blitSourceI = blitSource.Replace("FORMAT", "int"); + string blitSourceI = blitSource.Replace("FORMAT", "int"); _programColorBlitI = new Program(renderer, device, [ new ShaderSource(blitSourceI, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitSourceI, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var blitSourceU = blitSource.Replace("FORMAT", "uint"); + string blitSourceU = blitSource.Replace("FORMAT", "uint"); _programColorBlitU = new Program(renderer, device, [ new ShaderSource(blitSourceU, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitSourceU, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var blitMsSource = ReadMsl("BlitMs.metal"); + string blitMsSource = ReadMsl("BlitMs.metal"); - var blitMsSourceF = blitMsSource.Replace("FORMAT", "float"); + string blitMsSourceF = blitMsSource.Replace("FORMAT", "float"); _programColorBlitMsF = new Program(renderer, device, [ new ShaderSource(blitMsSourceF, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitMsSourceF, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var blitMsSourceI = blitMsSource.Replace("FORMAT", "int"); + string blitMsSourceI = blitMsSource.Replace("FORMAT", "int"); _programColorBlitMsI = new Program(renderer, device, [ new ShaderSource(blitMsSourceI, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitMsSourceI, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var blitMsSourceU = blitMsSource.Replace("FORMAT", "uint"); + string blitMsSourceU = blitMsSource.Replace("FORMAT", "uint"); _programColorBlitMsU = new Program(renderer, device, [ new ShaderSource(blitMsSourceU, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitMsSourceU, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var colorClearResourceLayout = new ResourceLayoutBuilder() + ResourceLayout colorClearResourceLayout = new ResourceLayoutBuilder() .Add(ResourceStages.Fragment, ResourceType.UniformBuffer, 0).Build(); - var colorClearSource = ReadMsl("ColorClear.metal"); + string colorClearSource = ReadMsl("ColorClear.metal"); for (int i = 0; i < Constants.MaxColorAttachments; i++) { - var crntSource = colorClearSource.Replace("COLOR_ATTACHMENT_INDEX", i.ToString()).Replace("FORMAT", "float"); + string crntSource = colorClearSource.Replace("COLOR_ATTACHMENT_INDEX", i.ToString()).Replace("FORMAT", "float"); _programsColorClearF.Add(new Program(renderer, device, [ new ShaderSource(crntSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(crntSource, ShaderStage.Vertex, TargetLanguage.Msl) @@ -110,7 +110,7 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < Constants.MaxColorAttachments; i++) { - var crntSource = colorClearSource.Replace("COLOR_ATTACHMENT_INDEX", i.ToString()).Replace("FORMAT", "int"); + string crntSource = colorClearSource.Replace("COLOR_ATTACHMENT_INDEX", i.ToString()).Replace("FORMAT", "int"); _programsColorClearI.Add(new Program(renderer, device, [ new ShaderSource(crntSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(crntSource, ShaderStage.Vertex, TargetLanguage.Msl) @@ -119,68 +119,68 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < Constants.MaxColorAttachments; i++) { - var crntSource = colorClearSource.Replace("COLOR_ATTACHMENT_INDEX", i.ToString()).Replace("FORMAT", "uint"); + string crntSource = colorClearSource.Replace("COLOR_ATTACHMENT_INDEX", i.ToString()).Replace("FORMAT", "uint"); _programsColorClearU.Add(new Program(renderer, device, [ new ShaderSource(crntSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(crntSource, ShaderStage.Vertex, TargetLanguage.Msl) ], colorClearResourceLayout)); } - var depthStencilClearSource = ReadMsl("DepthStencilClear.metal"); + string depthStencilClearSource = ReadMsl("DepthStencilClear.metal"); _programDepthStencilClear = new Program(renderer, device, [ new ShaderSource(depthStencilClearSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(depthStencilClearSource, ShaderStage.Vertex, TargetLanguage.Msl) ], colorClearResourceLayout); - var strideChangeResourceLayout = new ResourceLayoutBuilder() + ResourceLayout strideChangeResourceLayout = new ResourceLayoutBuilder() .Add(ResourceStages.Compute, ResourceType.UniformBuffer, 0) .Add(ResourceStages.Compute, ResourceType.StorageBuffer, 1) .Add(ResourceStages.Compute, ResourceType.StorageBuffer, 2, true).Build(); - var strideChangeSource = ReadMsl("ChangeBufferStride.metal"); + string strideChangeSource = ReadMsl("ChangeBufferStride.metal"); _programStrideChange = new Program(renderer, device, [ new ShaderSource(strideChangeSource, ShaderStage.Compute, TargetLanguage.Msl) ], strideChangeResourceLayout, new ComputeSize(64, 1, 1)); - var convertD32S8ToD24S8ResourceLayout = new ResourceLayoutBuilder() + ResourceLayout convertD32S8ToD24S8ResourceLayout = new ResourceLayoutBuilder() .Add(ResourceStages.Compute, ResourceType.UniformBuffer, 0) .Add(ResourceStages.Compute, ResourceType.StorageBuffer, 1) .Add(ResourceStages.Compute, ResourceType.StorageBuffer, 2, true).Build(); - var convertD32S8ToD24S8Source = ReadMsl("ConvertD32S8ToD24S8.metal"); + string convertD32S8ToD24S8Source = ReadMsl("ConvertD32S8ToD24S8.metal"); _programConvertD32S8ToD24S8 = new Program(renderer, device, [ new ShaderSource(convertD32S8ToD24S8Source, ShaderStage.Compute, TargetLanguage.Msl) ], convertD32S8ToD24S8ResourceLayout, new ComputeSize(64, 1, 1)); - var convertIndexBufferLayout = new ResourceLayoutBuilder() + ResourceLayout convertIndexBufferLayout = new ResourceLayoutBuilder() .Add(ResourceStages.Compute, ResourceType.StorageBuffer, 1) .Add(ResourceStages.Compute, ResourceType.StorageBuffer, 2, true) .Add(ResourceStages.Compute, ResourceType.StorageBuffer, 3).Build(); - var convertIndexBufferSource = ReadMsl("ConvertIndexBuffer.metal"); + string convertIndexBufferSource = ReadMsl("ConvertIndexBuffer.metal"); _programConvertIndexBuffer = new Program(renderer, device, [ new ShaderSource(convertIndexBufferSource, ShaderStage.Compute, TargetLanguage.Msl) ], convertIndexBufferLayout, new ComputeSize(16, 1, 1)); - var depthBlitSource = ReadMsl("DepthBlit.metal"); + string depthBlitSource = ReadMsl("DepthBlit.metal"); _programDepthBlit = new Program(renderer, device, [ new ShaderSource(depthBlitSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitSourceF, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var depthBlitMsSource = ReadMsl("DepthBlitMs.metal"); + string depthBlitMsSource = ReadMsl("DepthBlitMs.metal"); _programDepthBlitMs = new Program(renderer, device, [ new ShaderSource(depthBlitMsSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitSourceF, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var stencilBlitSource = ReadMsl("StencilBlit.metal"); + string stencilBlitSource = ReadMsl("StencilBlit.metal"); _programStencilBlit = new Program(renderer, device, [ new ShaderSource(stencilBlitSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitSourceF, ShaderStage.Vertex, TargetLanguage.Msl) ], blitResourceLayout); - var stencilBlitMsSource = ReadMsl("StencilBlitMs.metal"); + string stencilBlitMsSource = ReadMsl("StencilBlitMs.metal"); _programStencilBlitMs = new Program(renderer, device, [ new ShaderSource(stencilBlitMsSource, ShaderStage.Fragment, TargetLanguage.Msl), new ShaderSource(blitSourceF, ShaderStage.Vertex, TargetLanguage.Msl) @@ -189,7 +189,7 @@ namespace Ryujinx.Graphics.Metal private static string ReadMsl(string fileName) { - var msl = EmbeddedResources.ReadAllText(string.Join('/', ShadersSourcePath, fileName)); + string msl = EmbeddedResources.ReadAllText(string.Join('/', ShadersSourcePath, fileName)); #pragma warning disable IDE0055 // Disable formatting msl = msl.Replace("CONSTANT_BUFFERS_INDEX", $"{Constants.ConstantBuffersIndex}") @@ -214,7 +214,7 @@ namespace Ryujinx.Graphics.Metal const int RegionBufferSize = 16; - var sampler = linearFilter ? _samplerLinear : _samplerNearest; + ISampler sampler = linearFilter ? _samplerLinear : _samplerNearest; _pipeline.SetTextureAndSampler(ShaderStage.Fragment, 0, src, sampler); @@ -235,11 +235,11 @@ namespace Ryujinx.Graphics.Metal (region[2], region[3]) = (region[3], region[2]); } - using var buffer = _renderer.BufferManager.ReserveOrCreate(cbs, RegionBufferSize); + using ScopedTemporaryBuffer buffer = _renderer.BufferManager.ReserveOrCreate(cbs, RegionBufferSize); buffer.Holder.SetDataUnchecked(buffer.Offset, region); _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]); - var rect = new Rectangle( + Rectangle rect = new Rectangle( MathF.Min(dstRegion.X1, dstRegion.X2), MathF.Min(dstRegion.Y1, dstRegion.Y2), MathF.Abs(dstRegion.X2 - dstRegion.X1), @@ -266,7 +266,7 @@ namespace Ryujinx.Graphics.Metal return; } - var debugGroupName = "Blit Color "; + string debugGroupName = "Blit Color "; if (src.Info.Target.IsMultisample()) { @@ -359,13 +359,13 @@ namespace Ryujinx.Graphics.Metal (region[2], region[3]) = (region[3], region[2]); } - using var buffer = _renderer.BufferManager.ReserveOrCreate(cbs, RegionBufferSize); + using ScopedTemporaryBuffer buffer = _renderer.BufferManager.ReserveOrCreate(cbs, RegionBufferSize); buffer.Holder.SetDataUnchecked(buffer.Offset, region); _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]); Span viewports = stackalloc Viewport[16]; - var rect = new Rectangle( + Rectangle rect = new Rectangle( MathF.Min(dstRegion.X1, dstRegion.X2), MathF.Min(dstRegion.Y1, dstRegion.Y2), MathF.Abs(dstRegion.X2 - dstRegion.X1), @@ -400,7 +400,7 @@ namespace Ryujinx.Graphics.Metal Format.D32FloatS8Uint or Format.S8UintD24Unorm) { - var depthTexture = CreateDepthOrStencilView(src, DepthStencilMode.Depth); + Texture depthTexture = CreateDepthOrStencilView(src, DepthStencilMode.Depth); BlitDepthStencilDraw(depthTexture, isDepth: true); @@ -416,7 +416,7 @@ namespace Ryujinx.Graphics.Metal Format.D32FloatS8Uint or Format.S8UintD24Unorm) { - var stencilTexture = CreateDepthOrStencilView(src, DepthStencilMode.Stencil); + Texture stencilTexture = CreateDepthOrStencilView(src, DepthStencilMode.Stencil); BlitDepthStencilDraw(stencilTexture, isDepth: false); @@ -494,7 +494,7 @@ namespace Ryujinx.Graphics.Metal Extents2DF dstRegion) { // Save current state - var state = _pipeline.SavePredrawState(); + PredrawState state = _pipeline.SavePredrawState(); _pipeline.SetFaceCulling(false, Face.Front); _pipeline.SetStencilTest(new StencilTestDescriptor()); @@ -521,13 +521,13 @@ namespace Ryujinx.Graphics.Metal (region[2], region[3]) = (region[3], region[2]); } - var bufferHandle = _renderer.BufferManager.CreateWithHandle(RegionBufferSize); + BufferHandle bufferHandle = _renderer.BufferManager.CreateWithHandle(RegionBufferSize); _renderer.BufferManager.SetData(bufferHandle, 0, region); _pipeline.SetUniformBuffers([new BufferAssignment(0, new BufferRange(bufferHandle, 0, RegionBufferSize))]); Span viewports = stackalloc Viewport[16]; - var rect = new Rectangle( + Rectangle rect = new Rectangle( MathF.Min(dstRegion.X1, dstRegion.X2), MathF.Min(dstRegion.Y1, dstRegion.Y2), MathF.Abs(dstRegion.X2 - dstRegion.X1), @@ -569,8 +569,8 @@ namespace Ryujinx.Graphics.Metal { int elems = size / stride; - var srcBuffer = src.GetBuffer(); - var dstBuffer = dst.GetBuffer(); + Auto srcBuffer = src.GetBuffer(); + Auto dstBuffer = dst.GetBuffer(); const int ParamsBufferSize = 4 * sizeof(int); @@ -584,7 +584,7 @@ namespace Ryujinx.Graphics.Metal shaderParams[2] = size; shaderParams[3] = srcOffset; - using var buffer = _renderer.BufferManager.ReserveOrCreate(cbs, ParamsBufferSize); + using ScopedTemporaryBuffer buffer = _renderer.BufferManager.ReserveOrCreate(cbs, ParamsBufferSize); buffer.Holder.SetDataUnchecked(buffer.Offset, shaderParams); _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]); @@ -605,7 +605,7 @@ namespace Ryujinx.Graphics.Metal { int inSize = pixelCount * 2 * sizeof(int); - var srcBuffer = src.GetBuffer(); + Auto srcBuffer = src.GetBuffer(); const int ParamsBufferSize = sizeof(int) * 2; @@ -617,7 +617,7 @@ namespace Ryujinx.Graphics.Metal shaderParams[0] = pixelCount; shaderParams[1] = dstOffset; - using var buffer = _renderer.BufferManager.ReserveOrCreate(cbs, ParamsBufferSize); + using ScopedTemporaryBuffer buffer = _renderer.BufferManager.ReserveOrCreate(cbs, ParamsBufferSize); buffer.Holder.SetDataUnchecked(buffer.Offset, shaderParams); _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]); @@ -648,8 +648,8 @@ namespace Ryujinx.Graphics.Metal int primitiveCount = pattern.GetPrimitiveCount(indexCount); int outputIndexSize = 4; - var srcBuffer = src.GetBuffer(); - var dstBuffer = dst.GetBuffer(); + Auto srcBuffer = src.GetBuffer(); + Auto dstBuffer = dst.GetBuffer(); const int ParamsBufferSize = 16 * sizeof(int); @@ -669,7 +669,7 @@ namespace Ryujinx.Graphics.Metal pattern.OffsetIndex.CopyTo(shaderParams[..pattern.OffsetIndex.Length]); - using var patternScoped = _renderer.BufferManager.ReserveOrCreate(cbs, ParamsBufferSize); + using ScopedTemporaryBuffer patternScoped = _renderer.BufferManager.ReserveOrCreate(cbs, ParamsBufferSize); patternScoped.Holder.SetDataUnchecked(patternScoped.Offset, shaderParams); Span> sbRanges = new Auto[2]; @@ -707,7 +707,7 @@ namespace Ryujinx.Graphics.Metal // TODO: Flush - using var buffer = _renderer.BufferManager.ReserveOrCreate(_pipeline.Cbs, ClearColorBufferSize); + using ScopedTemporaryBuffer buffer = _renderer.BufferManager.ReserveOrCreate(_pipeline.Cbs, ClearColorBufferSize); buffer.Holder.SetDataUnchecked(buffer.Offset, clearColor); _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]); @@ -726,7 +726,7 @@ namespace Ryujinx.Graphics.Metal Span componentMasks = stackalloc uint[index + 1]; componentMasks[index] = componentMask; - var debugGroupName = "Clear Color "; + string debugGroupName = "Clear Color "; if (format.IsSint()) { @@ -768,7 +768,7 @@ namespace Ryujinx.Graphics.Metal { // Keep original scissor DirtyFlags clearFlags = DirtyFlags.All & (~DirtyFlags.Scissors); - var helperScissors = _helperShaderState.Scissors; + MTLScissorRect[] helperScissors = _helperShaderState.Scissors; // Save current state EncoderState originalState = _pipeline.SwapState(_helperShaderState, clearFlags, false); @@ -778,7 +778,7 @@ namespace Ryujinx.Graphics.Metal const int ClearDepthBufferSize = 16; - using var buffer = _renderer.BufferManager.ReserveOrCreate(_pipeline.Cbs, ClearDepthBufferSize); + using ScopedTemporaryBuffer buffer = _renderer.BufferManager.ReserveOrCreate(_pipeline.Cbs, ClearDepthBufferSize); buffer.Holder.SetDataUnchecked(buffer.Offset, new ReadOnlySpan(ref depthValue)); _pipeline.SetUniformBuffers([new BufferAssignment(0, buffer.Range)]); @@ -844,17 +844,17 @@ namespace Ryujinx.Graphics.Metal _programColorBlitMsI.Dispose(); _programColorBlitMsU.Dispose(); - foreach (var programColorClear in _programsColorClearF) + foreach (IProgram programColorClear in _programsColorClearF) { programColorClear.Dispose(); } - foreach (var programColorClear in _programsColorClearU) + foreach (IProgram programColorClear in _programsColorClearU) { programColorClear.Dispose(); } - foreach (var programColorClear in _programsColorClearI) + foreach (IProgram programColorClear in _programsColorClearI) { programColorClear.Dispose(); } diff --git a/src/Ryujinx.Graphics.Metal/IndexBufferState.cs b/src/Ryujinx.Graphics.Metal/IndexBufferState.cs index 411df9685..02c9ff9ef 100644 --- a/src/Ryujinx.Graphics.Metal/IndexBufferState.cs +++ b/src/Ryujinx.Graphics.Metal/IndexBufferState.cs @@ -76,7 +76,7 @@ namespace Ryujinx.Graphics.Metal int firstIndexOffset = firstIndex * indexSize; - var autoBuffer = renderer.BufferManager.GetBufferTopologyConversion(cbs, _handle, _offset + firstIndexOffset, indexCount * indexSize, pattern, indexSize); + Auto autoBuffer = renderer.BufferManager.GetBufferTopologyConversion(cbs, _handle, _offset + firstIndexOffset, indexCount * indexSize, pattern, indexSize); int size = convertedCount * 4; diff --git a/src/Ryujinx.Graphics.Metal/MetalRenderer.cs b/src/Ryujinx.Graphics.Metal/MetalRenderer.cs index 7afd30886..cfda31e66 100644 --- a/src/Ryujinx.Graphics.Metal/MetalRenderer.cs +++ b/src/Ryujinx.Graphics.Metal/MetalRenderer.cs @@ -61,7 +61,7 @@ namespace Ryujinx.Graphics.Metal public void Initialize(GraphicsDebugLevel logLevel) { - var layer = _getMetalLayer(); + CAMetalLayer layer = _getMetalLayer(); layer.Device = _device; layer.FramebufferOnly = false; @@ -253,7 +253,7 @@ namespace Ryujinx.Graphics.Metal public ICounterEvent ReportCounter(CounterType type, EventHandler resultHandler, float divisor, bool hostReserved) { // https://developer.apple.com/documentation/metal/gpu_counters_and_counter_sample_buffers/creating_a_counter_sample_buffer_to_store_a_gpu_s_counter_data_during_a_pass?language=objc - var counterEvent = new CounterEvent(); + CounterEvent counterEvent = new CounterEvent(); resultHandler?.Invoke(counterEvent, type == CounterType.SamplesPassed ? (ulong)1 : 0); return counterEvent; } @@ -295,12 +295,12 @@ namespace Ryujinx.Graphics.Metal { BackgroundResources.Dispose(); - foreach (var program in Programs) + foreach (Program program in Programs) { program.Dispose(); } - foreach (var sampler in Samplers) + foreach (SamplerHolder sampler in Samplers) { sampler.Dispose(); } diff --git a/src/Ryujinx.Graphics.Metal/MultiFenceHolder.cs b/src/Ryujinx.Graphics.Metal/MultiFenceHolder.cs index cd5ad08ba..89ae1fa77 100644 --- a/src/Ryujinx.Graphics.Metal/MultiFenceHolder.cs +++ b/src/Ryujinx.Graphics.Metal/MultiFenceHolder.cs @@ -189,14 +189,14 @@ namespace Ryujinx.Graphics.Metal if (indefinite) { - foreach (var fence in fences) + foreach (MTLCommandBuffer fence in fences) { fence.WaitUntilCompleted(); } } else { - foreach (var fence in fences) + foreach (MTLCommandBuffer fence in fences) { if (fence.Status != MTLCommandBufferStatus.Completed) { @@ -224,7 +224,7 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < _fences.Length; i++) { - var fence = _fences[i]; + FenceHolder fence = _fences[i]; if (fence != null) { @@ -248,7 +248,7 @@ namespace Ryujinx.Graphics.Metal for (int i = 0; i < _fences.Length; i++) { - var fence = _fences[i]; + FenceHolder fence = _fences[i]; if (fence != null && _bufferUsageBitmap.OverlapsWith(i, offset, size)) { diff --git a/src/Ryujinx.Graphics.Metal/PersistentFlushBuffer.cs b/src/Ryujinx.Graphics.Metal/PersistentFlushBuffer.cs index fa3df47db..fc79a40a9 100644 --- a/src/Ryujinx.Graphics.Metal/PersistentFlushBuffer.cs +++ b/src/Ryujinx.Graphics.Metal/PersistentFlushBuffer.cs @@ -1,4 +1,5 @@ using Ryujinx.Graphics.GAL; +using SharpMetal.Metal; using System; using System.Runtime.Versioning; @@ -18,7 +19,7 @@ namespace Ryujinx.Graphics.Metal private BufferHolder ResizeIfNeeded(int size) { - var flushStorage = _flushStorage; + BufferHolder flushStorage = _flushStorage; if (flushStorage == null || size > _flushStorage.Size) { @@ -33,13 +34,13 @@ namespace Ryujinx.Graphics.Metal public Span GetBufferData(CommandBufferPool cbp, BufferHolder buffer, int offset, int size) { - var flushStorage = ResizeIfNeeded(size); + BufferHolder flushStorage = ResizeIfNeeded(size); Auto srcBuffer; - using (var cbs = cbp.Rent()) + using (CommandBufferScoped cbs = cbp.Rent()) { srcBuffer = buffer.GetBuffer(); - var dstBuffer = flushStorage.GetBuffer(); + Auto dstBuffer = flushStorage.GetBuffer(); if (srcBuffer.TryIncrementReferenceCount()) { @@ -61,12 +62,12 @@ namespace Ryujinx.Graphics.Metal { TextureCreateInfo info = view.Info; - var flushStorage = ResizeIfNeeded(size); + BufferHolder flushStorage = ResizeIfNeeded(size); - using (var cbs = cbp.Rent()) + using (CommandBufferScoped cbs = cbp.Rent()) { - var buffer = flushStorage.GetBuffer().Get(cbs).Value; - var image = view.GetHandle(); + MTLBuffer buffer = flushStorage.GetBuffer().Get(cbs).Value; + MTLTexture image = view.GetHandle(); view.CopyFromOrToBuffer(cbs, buffer, image, size, true, 0, 0, info.GetLayers(), info.Levels, singleSlice: false); } @@ -77,12 +78,12 @@ namespace Ryujinx.Graphics.Metal public Span GetTextureData(CommandBufferPool cbp, Texture view, int size, int layer, int level) { - var flushStorage = ResizeIfNeeded(size); + BufferHolder flushStorage = ResizeIfNeeded(size); - using (var cbs = cbp.Rent()) + using (CommandBufferScoped cbs = cbp.Rent()) { - var buffer = flushStorage.GetBuffer().Get(cbs).Value; - var image = view.GetHandle(); + MTLBuffer buffer = flushStorage.GetBuffer().Get(cbs).Value; + MTLTexture image = view.GetHandle(); view.CopyFromOrToBuffer(cbs, buffer, image, size, true, layer, level, 1, 1, singleSlice: true); } diff --git a/src/Ryujinx.Graphics.Metal/Pipeline.cs b/src/Ryujinx.Graphics.Metal/Pipeline.cs index 113974061..d7fbebada 100644 --- a/src/Ryujinx.Graphics.Metal/Pipeline.cs +++ b/src/Ryujinx.Graphics.Metal/Pipeline.cs @@ -149,8 +149,8 @@ namespace Ryujinx.Graphics.Metal public void Present(CAMetalDrawable drawable, Texture src, Extents2D srcRegion, Extents2D dstRegion, bool isLinear) { // TODO: Clean this up - var textureInfo = new TextureCreateInfo((int)drawable.Texture.Width, (int)drawable.Texture.Height, (int)drawable.Texture.Depth, (int)drawable.Texture.MipmapLevelCount, (int)drawable.Texture.SampleCount, 0, 0, 0, Format.B8G8R8A8Unorm, 0, Target.Texture2D, SwizzleComponent.Red, SwizzleComponent.Green, SwizzleComponent.Blue, SwizzleComponent.Alpha); - var dst = new Texture(_device, _renderer, this, textureInfo, drawable.Texture, 0, 0); + TextureCreateInfo textureInfo = new TextureCreateInfo((int)drawable.Texture.Width, (int)drawable.Texture.Height, (int)drawable.Texture.Depth, (int)drawable.Texture.MipmapLevelCount, (int)drawable.Texture.SampleCount, 0, 0, 0, Format.B8G8R8A8Unorm, 0, Target.Texture2D, SwizzleComponent.Red, SwizzleComponent.Green, SwizzleComponent.Blue, SwizzleComponent.Alpha); + Texture dst = new Texture(_device, _renderer, this, textureInfo, drawable.Texture, 0, 0); _renderer.HelperShader.BlitColor(Cbs, src, dst, srcRegion, dstRegion, isLinear, true); @@ -248,14 +248,14 @@ namespace Ryujinx.Graphics.Metal { case EncoderType.Render: { - var scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures | MTLBarrierScope.RenderTargets; + MTLBarrierScope scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures | MTLBarrierScope.RenderTargets; MTLRenderStages stages = MTLRenderStages.RenderStageVertex | MTLRenderStages.RenderStageFragment; Encoders.RenderEncoder.MemoryBarrier(scope, stages, stages); break; } case EncoderType.Compute: { - var scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures | MTLBarrierScope.RenderTargets; + MTLBarrierScope scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures | MTLBarrierScope.RenderTargets; Encoders.ComputeEncoder.MemoryBarrier(scope); break; } @@ -264,9 +264,9 @@ namespace Ryujinx.Graphics.Metal public void ClearBuffer(BufferHandle destination, int offset, int size, uint value) { - var blitCommandEncoder = GetOrCreateBlitEncoder(); + MTLBlitCommandEncoder blitCommandEncoder = GetOrCreateBlitEncoder(); - var mtlBuffer = _renderer.BufferManager.GetBuffer(destination, offset, size, true).Get(Cbs, offset, size, true).Value; + MTLBuffer mtlBuffer = _renderer.BufferManager.GetBuffer(destination, offset, size, true).Get(Cbs, offset, size, true).Value; // Might need a closer look, range's count, lower, and upper bound // must be a multiple of 4 @@ -282,7 +282,7 @@ namespace Ryujinx.Graphics.Metal public void ClearRenderTargetColor(int index, int layer, int layerCount, uint componentMask, ColorF color) { float[] colors = [color.Red, color.Green, color.Blue, color.Alpha]; - var dst = _encoderStateManager.RenderTargets[index]; + Texture dst = _encoderStateManager.RenderTargets[index]; // TODO: Remove workaround for Wonder which has an invalid texture due to unsupported format if (dst == null) @@ -296,7 +296,7 @@ namespace Ryujinx.Graphics.Metal public void ClearRenderTargetDepthStencil(int layer, int layerCount, float depthValue, bool depthMask, int stencilValue, int stencilMask) { - var depthStencil = _encoderStateManager.DepthStencil; + Texture depthStencil = _encoderStateManager.DepthStencil; if (depthStencil == null) { @@ -313,16 +313,16 @@ namespace Ryujinx.Graphics.Metal public void CopyBuffer(BufferHandle src, BufferHandle dst, int srcOffset, int dstOffset, int size) { - var srcBuffer = _renderer.BufferManager.GetBuffer(src, srcOffset, size, false); - var dstBuffer = _renderer.BufferManager.GetBuffer(dst, dstOffset, size, true); + Auto srcBuffer = _renderer.BufferManager.GetBuffer(src, srcOffset, size, false); + Auto dstBuffer = _renderer.BufferManager.GetBuffer(dst, dstOffset, size, true); BufferHolder.Copy(Cbs, srcBuffer, dstBuffer, srcOffset, dstOffset, size); } public void PushDebugGroup(string name) { - var encoder = Encoders.CurrentEncoder; - var debugGroupName = StringHelper.NSString(name); + MTLCommandEncoder? encoder = Encoders.CurrentEncoder; + NSString debugGroupName = StringHelper.NSString(name); if (encoder == null) { @@ -345,7 +345,7 @@ namespace Ryujinx.Graphics.Metal public void PopDebugGroup() { - var encoder = Encoders.CurrentEncoder; + MTLCommandEncoder? encoder = Encoders.CurrentEncoder; if (encoder == null) { @@ -373,7 +373,7 @@ namespace Ryujinx.Graphics.Metal public void DispatchCompute(int groupsX, int groupsY, int groupsZ, string debugGroupName) { - var computeCommandEncoder = GetOrCreateComputeEncoder(true); + MTLComputeCommandEncoder computeCommandEncoder = GetOrCreateComputeEncoder(true); ComputeSize localSize = _encoderStateManager.ComputeLocalSize; @@ -404,17 +404,17 @@ namespace Ryujinx.Graphics.Metal return; } - var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); + MTLPrimitiveType primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); if (TopologyUnsupported(_encoderStateManager.Topology)) { - var pattern = GetIndexBufferPattern(); + IndexBufferPattern pattern = GetIndexBufferPattern(); BufferHandle handle = pattern.GetRepeatingBuffer(vertexCount, out int indexCount); - var buffer = _renderer.BufferManager.GetBuffer(handle, false); - var mtlBuffer = buffer.Get(Cbs, 0, indexCount * sizeof(int)).Value; + Auto buffer = _renderer.BufferManager.GetBuffer(handle, false); + MTLBuffer mtlBuffer = buffer.Get(Cbs, 0, indexCount * sizeof(int)).Value; - var renderCommandEncoder = GetOrCreateRenderEncoder(true); + MTLRenderCommandEncoder renderCommandEncoder = GetOrCreateRenderEncoder(true); renderCommandEncoder.DrawIndexedPrimitives( primitiveType, @@ -425,7 +425,7 @@ namespace Ryujinx.Graphics.Metal } else { - var renderCommandEncoder = GetOrCreateRenderEncoder(true); + MTLRenderCommandEncoder renderCommandEncoder = GetOrCreateRenderEncoder(true); if (debugGroupName != String.Empty) { @@ -488,11 +488,11 @@ namespace Ryujinx.Graphics.Metal MTLIndexType type; int finalIndexCount = indexCount; - var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); + MTLPrimitiveType primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); if (TopologyUnsupported(_encoderStateManager.Topology)) { - var pattern = GetIndexBufferPattern(); + IndexBufferPattern pattern = GetIndexBufferPattern(); int convertedCount = pattern.GetConvertedCount(indexCount); finalIndexCount = convertedCount; @@ -506,7 +506,7 @@ namespace Ryujinx.Graphics.Metal if (mtlBuffer.NativePtr != IntPtr.Zero) { - var renderCommandEncoder = GetOrCreateRenderEncoder(true); + MTLRenderCommandEncoder renderCommandEncoder = GetOrCreateRenderEncoder(true); renderCommandEncoder.DrawIndexedPrimitives( primitiveType, @@ -533,17 +533,17 @@ namespace Ryujinx.Graphics.Metal Logger.Warning?.Print(LogClass.Gpu, $"Drawing indexed with unsupported topology: {_encoderStateManager.Topology}"); } - var buffer = _renderer.BufferManager + MTLBuffer buffer = _renderer.BufferManager .GetBuffer(indirectBuffer.Handle, indirectBuffer.Offset, indirectBuffer.Size, false) .Get(Cbs, indirectBuffer.Offset, indirectBuffer.Size).Value; - var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); + MTLPrimitiveType primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); (MTLBuffer indexBuffer, int indexOffset, MTLIndexType type) = _encoderStateManager.IndexBuffer.GetIndexBuffer(_renderer, Cbs); if (indexBuffer.NativePtr != IntPtr.Zero && buffer.NativePtr != IntPtr.Zero) { - var renderCommandEncoder = GetOrCreateRenderEncoder(true); + MTLRenderCommandEncoder renderCommandEncoder = GetOrCreateRenderEncoder(true); renderCommandEncoder.DrawIndexedPrimitives( primitiveType, @@ -576,12 +576,12 @@ namespace Ryujinx.Graphics.Metal Logger.Warning?.Print(LogClass.Gpu, $"Drawing indirect with unsupported topology: {_encoderStateManager.Topology}"); } - var buffer = _renderer.BufferManager + MTLBuffer buffer = _renderer.BufferManager .GetBuffer(indirectBuffer.Handle, indirectBuffer.Offset, indirectBuffer.Size, false) .Get(Cbs, indirectBuffer.Offset, indirectBuffer.Size).Value; - var primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); - var renderCommandEncoder = GetOrCreateRenderEncoder(true); + MTLPrimitiveType primitiveType = TopologyRemap(_encoderStateManager.Topology).Convert(); + MTLRenderCommandEncoder renderCommandEncoder = GetOrCreateRenderEncoder(true); renderCommandEncoder.DrawPrimitives( primitiveType, diff --git a/src/Ryujinx.Graphics.Metal/Program.cs b/src/Ryujinx.Graphics.Metal/Program.cs index 37bae5817..780725400 100644 --- a/src/Ryujinx.Graphics.Metal/Program.cs +++ b/src/Ryujinx.Graphics.Metal/Program.cs @@ -56,12 +56,12 @@ namespace Ryujinx.Graphics.Metal { ShaderSource shader = _shaders[i]; - using var compileOptions = new MTLCompileOptions + using MTLCompileOptions compileOptions = new MTLCompileOptions { PreserveInvariance = true, LanguageVersion = MTLLanguageVersion.Version31, }; - var index = i; + int index = i; _handles[i] = device.NewLibrary(StringHelper.NSString(shader.Code), compileOptions, (library, error) => CompilationResultHandler(library, error, index)); } @@ -71,7 +71,7 @@ namespace Ryujinx.Graphics.Metal public void CompilationResultHandler(MTLLibrary library, NSError error, int index) { - var shader = _shaders[index]; + ShaderSource shader = _shaders[index]; if (_handles[index].IsAllocated) { @@ -142,7 +142,7 @@ namespace Ryujinx.Graphics.Metal currentUsage.Stages, currentUsage.ArrayLength > 1)); - var size = currentCount * ResourcePointerSize(currentUsage.Type); + int size = currentCount * ResourcePointerSize(currentUsage.Type); if (currentUsage.Stages.HasFlag(ResourceStages.Fragment)) { fragArgBufferSizes[setIndex] += size; @@ -173,7 +173,7 @@ namespace Ryujinx.Graphics.Metal currentUsage.Stages, currentUsage.ArrayLength > 1)); - var size = currentCount * ResourcePointerSize(currentUsage.Type); + int size = currentCount * ResourcePointerSize(currentUsage.Type); if (currentUsage.Stages.HasFlag(ResourceStages.Fragment)) { fragArgBufferSizes[setIndex] += size; diff --git a/src/Ryujinx.Graphics.Metal/ResourceLayoutBuilder.cs b/src/Ryujinx.Graphics.Metal/ResourceLayoutBuilder.cs index 36ae9bac6..6f6000f69 100644 --- a/src/Ryujinx.Graphics.Metal/ResourceLayoutBuilder.cs +++ b/src/Ryujinx.Graphics.Metal/ResourceLayoutBuilder.cs @@ -44,8 +44,8 @@ namespace Ryujinx.Graphics.Metal public ResourceLayout Build() { - var descriptors = new ResourceDescriptorCollection[TotalSets]; - var usages = new ResourceUsageCollection[TotalSets]; + ResourceDescriptorCollection[] descriptors = new ResourceDescriptorCollection[TotalSets]; + ResourceUsageCollection[] usages = new ResourceUsageCollection[TotalSets]; for (int index = 0; index < TotalSets; index++) { diff --git a/src/Ryujinx.Graphics.Metal/SamplerHolder.cs b/src/Ryujinx.Graphics.Metal/SamplerHolder.cs index 3241efa6d..f1270443b 100644 --- a/src/Ryujinx.Graphics.Metal/SamplerHolder.cs +++ b/src/Ryujinx.Graphics.Metal/SamplerHolder.cs @@ -21,7 +21,7 @@ namespace Ryujinx.Graphics.Metal MTLSamplerBorderColor borderColor = GetConstrainedBorderColor(info.BorderColor, out _); - using var descriptor = new MTLSamplerDescriptor + using MTLSamplerDescriptor descriptor = new MTLSamplerDescriptor { BorderColor = borderColor, MinFilter = minFilter, @@ -38,7 +38,7 @@ namespace Ryujinx.Graphics.Metal SupportArgumentBuffers = true }; - var sampler = device.NewSamplerState(descriptor); + MTLSamplerState sampler = device.NewSamplerState(descriptor); _sampler = new Auto(new DisposableSampler(sampler)); } diff --git a/src/Ryujinx.Graphics.Metal/StagingBuffer.cs b/src/Ryujinx.Graphics.Metal/StagingBuffer.cs index b250b87f2..b4838ee33 100644 --- a/src/Ryujinx.Graphics.Metal/StagingBuffer.cs +++ b/src/Ryujinx.Graphics.Metal/StagingBuffer.cs @@ -108,8 +108,8 @@ namespace Ryujinx.Graphics.Metal private void PushDataImpl(CommandBufferScoped cbs, BufferHolder dst, int dstOffset, ReadOnlySpan data) { - var srcBuffer = _buffer.GetBuffer(); - var dstBuffer = dst.GetBuffer(dstOffset, data.Length, true); + Auto srcBuffer = _buffer.GetBuffer(); + Auto dstBuffer = dst.GetBuffer(dstOffset, data.Length, true); int offset = _freeOffset; int capacity = BufferSize - offset; @@ -241,7 +241,7 @@ namespace Ryujinx.Graphics.Metal private bool WaitFreeCompleted(CommandBufferPool cbp) { - if (_pendingCopies.TryPeek(out var pc)) + if (_pendingCopies.TryPeek(out PendingCopy pc)) { if (!pc.Fence.IsSignaled()) { @@ -253,7 +253,7 @@ namespace Ryujinx.Graphics.Metal pc.Fence.Wait(); } - var dequeued = _pendingCopies.Dequeue(); + PendingCopy dequeued = _pendingCopies.Dequeue(); Debug.Assert(dequeued.Fence == pc.Fence); _freeSize += pc.Size; pc.Fence.Put(); @@ -265,10 +265,10 @@ namespace Ryujinx.Graphics.Metal public void FreeCompleted() { FenceHolder signalledFence = null; - while (_pendingCopies.TryPeek(out var pc) && (pc.Fence == signalledFence || pc.Fence.IsSignaled())) + while (_pendingCopies.TryPeek(out PendingCopy pc) && (pc.Fence == signalledFence || pc.Fence.IsSignaled())) { signalledFence = pc.Fence; // Already checked - don't need to do it again. - var dequeued = _pendingCopies.Dequeue(); + PendingCopy dequeued = _pendingCopies.Dequeue(); Debug.Assert(dequeued.Fence == pc.Fence); _freeSize += pc.Size; pc.Fence.Put(); @@ -279,7 +279,7 @@ namespace Ryujinx.Graphics.Metal { _renderer.BufferManager.Delete(Handle); - while (_pendingCopies.TryDequeue(out var pc)) + while (_pendingCopies.TryDequeue(out PendingCopy pc)) { pc.Fence.Put(); } diff --git a/src/Ryujinx.Graphics.Metal/State/PipelineState.cs b/src/Ryujinx.Graphics.Metal/State/PipelineState.cs index 9f88f3061..1fa83e8d7 100644 --- a/src/Ryujinx.Graphics.Metal/State/PipelineState.cs +++ b/src/Ryujinx.Graphics.Metal/State/PipelineState.cs @@ -118,13 +118,13 @@ namespace Ryujinx.Graphics.Metal private readonly MTLVertexDescriptor BuildVertexDescriptor() { - var vertexDescriptor = new MTLVertexDescriptor(); + MTLVertexDescriptor vertexDescriptor = new MTLVertexDescriptor(); for (int i = 0; i < VertexAttributeDescriptionsCount; i++) { VertexInputAttributeUid uid = Internal.VertexAttributes[i]; - var attrib = vertexDescriptor.Attributes.Object((ulong)i); + MTLVertexAttributeDescriptor attrib = vertexDescriptor.Attributes.Object((ulong)i); attrib.Format = uid.Format; attrib.Offset = uid.Offset; attrib.BufferIndex = uid.BufferIndex; @@ -134,7 +134,7 @@ namespace Ryujinx.Graphics.Metal { VertexInputLayoutUid uid = Internal.VertexBindings[i]; - var layout = vertexDescriptor.Layouts.Object((ulong)i); + MTLVertexBufferLayoutDescriptor layout = vertexDescriptor.Layouts.Object((ulong)i); layout.StepFunction = uid.StepFunction; layout.StepRate = uid.StepRate; @@ -146,15 +146,15 @@ namespace Ryujinx.Graphics.Metal private MTLRenderPipelineDescriptor CreateRenderDescriptor(Program program) { - var renderPipelineDescriptor = new MTLRenderPipelineDescriptor(); + MTLRenderPipelineDescriptor renderPipelineDescriptor = new MTLRenderPipelineDescriptor(); for (int i = 0; i < Constants.MaxColorAttachments; i++) { - var blendState = Internal.ColorBlendState[i]; + ColorBlendStateUid blendState = Internal.ColorBlendState[i]; if (blendState.PixelFormat != MTLPixelFormat.Invalid) { - var pipelineAttachment = renderPipelineDescriptor.ColorAttachments.Object((ulong)i); + MTLRenderPipelineColorAttachmentDescriptor pipelineAttachment = renderPipelineDescriptor.ColorAttachments.Object((ulong)i); BuildColorAttachment(pipelineAttachment, blendState); } @@ -195,7 +195,7 @@ namespace Ryujinx.Graphics.Metal renderPipelineDescriptor.RasterizationEnabled = !RasterizerDiscardEnable; renderPipelineDescriptor.SampleCount = Math.Max(1, SamplesCount); - var vertexDescriptor = BuildVertexDescriptor(); + MTLVertexDescriptor vertexDescriptor = BuildVertexDescriptor(); renderPipelineDescriptor.VertexDescriptor = vertexDescriptor; renderPipelineDescriptor.VertexFunction = program.VertexFunction; @@ -210,14 +210,14 @@ namespace Ryujinx.Graphics.Metal public MTLRenderPipelineState CreateRenderPipeline(MTLDevice device, Program program) { - if (program.TryGetGraphicsPipeline(ref Internal, out var pipelineState)) + if (program.TryGetGraphicsPipeline(ref Internal, out MTLRenderPipelineState pipelineState)) { return pipelineState; } - using var descriptor = CreateRenderDescriptor(program); + using MTLRenderPipelineDescriptor descriptor = CreateRenderDescriptor(program); - var error = new NSError(IntPtr.Zero); + NSError error = new NSError(IntPtr.Zero); pipelineState = device.NewRenderPipelineState(descriptor, ref error); if (error != IntPtr.Zero) { @@ -240,7 +240,7 @@ namespace Ryujinx.Graphics.Metal throw new InvalidOperationException($"Local thread size for compute cannot be 0 in any dimension."); } - var descriptor = new MTLComputePipelineDescriptor + MTLComputePipelineDescriptor descriptor = new MTLComputePipelineDescriptor { ComputeFunction = program.ComputeFunction, MaxTotalThreadsPerThreadgroup = maxThreads, @@ -252,14 +252,14 @@ namespace Ryujinx.Graphics.Metal public static MTLComputePipelineState CreateComputePipeline(MTLDevice device, Program program) { - if (program.TryGetComputePipeline(out var pipelineState)) + if (program.TryGetComputePipeline(out MTLComputePipelineState pipelineState)) { return pipelineState; } using MTLComputePipelineDescriptor descriptor = CreateComputeDescriptor(program); - var error = new NSError(IntPtr.Zero); + NSError error = new NSError(IntPtr.Zero); pipelineState = device.NewComputePipelineState(descriptor, MTLPipelineOption.None, 0, ref error); if (error != IntPtr.Zero) { diff --git a/src/Ryujinx.Graphics.Metal/State/PipelineUid.cs b/src/Ryujinx.Graphics.Metal/State/PipelineUid.cs index c986a7e23..5b514c2c9 100644 --- a/src/Ryujinx.Graphics.Metal/State/PipelineUid.cs +++ b/src/Ryujinx.Graphics.Metal/State/PipelineUid.cs @@ -114,7 +114,7 @@ namespace Ryujinx.Graphics.Metal public void Swap(ColorBlendStateUid uid) { - var format = PixelFormat; + MTLPixelFormat format = PixelFormat; this = uid; PixelFormat = format; diff --git a/src/Ryujinx.Graphics.Metal/StateCache.cs b/src/Ryujinx.Graphics.Metal/StateCache.cs index 9b8391ffc..8a9d175f1 100644 --- a/src/Ryujinx.Graphics.Metal/StateCache.cs +++ b/src/Ryujinx.Graphics.Metal/StateCache.cs @@ -25,14 +25,14 @@ namespace Ryujinx.Graphics.Metal public T GetOrCreate(TDescriptor descriptor) { - var hash = GetHash(descriptor); + THash hash = GetHash(descriptor); if (_cache.TryGetValue(hash, out T value)) { return value; } else { - var newValue = CreateValue(descriptor); + T newValue = CreateValue(descriptor); _cache.Add(hash, newValue); return newValue; diff --git a/src/Ryujinx.Graphics.Metal/Texture.cs b/src/Ryujinx.Graphics.Metal/Texture.cs index 4566d65d8..749da7d48 100644 --- a/src/Ryujinx.Graphics.Metal/Texture.cs +++ b/src/Ryujinx.Graphics.Metal/Texture.cs @@ -18,7 +18,7 @@ namespace Ryujinx.Graphics.Metal { MTLPixelFormat pixelFormat = FormatTable.GetFormat(Info.Format); - var descriptor = new MTLTextureDescriptor + MTLTextureDescriptor descriptor = new MTLTextureDescriptor { PixelFormat = pixelFormat, Usage = MTLTextureUsage.Unknown, @@ -65,7 +65,7 @@ namespace Ryujinx.Graphics.Metal public Texture(MTLDevice device, MetalRenderer renderer, Pipeline pipeline, TextureCreateInfo info, MTLTexture sourceTexture, int firstLayer, int firstLevel) : base(device, renderer, pipeline, info) { - var pixelFormat = FormatTable.GetFormat(Info.Format); + MTLPixelFormat pixelFormat = FormatTable.GetFormat(Info.Format); if (info.DepthStencilMode == DepthStencilMode.Stencil) { @@ -77,7 +77,7 @@ namespace Ryujinx.Graphics.Metal }; } - var textureType = Info.Target.Convert(); + MTLTextureType textureType = Info.Target.Convert(); NSRange levels; levels.location = (ulong)firstLevel; levels.length = (ulong)Info.Levels; @@ -85,7 +85,7 @@ namespace Ryujinx.Graphics.Metal slices.location = (ulong)firstLayer; slices.length = textureType == MTLTextureType.Type3D ? 1 : (ulong)info.GetDepthOrLayers(); - var swizzle = GetSwizzle(info, pixelFormat); + MTLTextureSwizzleChannels swizzle = GetSwizzle(info, pixelFormat); _identitySwizzleHandle = sourceTexture.NewTextureView(pixelFormat, textureType, levels, slices); @@ -131,10 +131,10 @@ namespace Ryujinx.Graphics.Metal private MTLTextureSwizzleChannels GetSwizzle(TextureCreateInfo info, MTLPixelFormat pixelFormat) { - var swizzleR = Info.SwizzleR.Convert(); - var swizzleG = Info.SwizzleG.Convert(); - var swizzleB = Info.SwizzleB.Convert(); - var swizzleA = Info.SwizzleA.Convert(); + MTLTextureSwizzle swizzleR = Info.SwizzleR.Convert(); + MTLTextureSwizzle swizzleG = Info.SwizzleG.Convert(); + MTLTextureSwizzle swizzleB = Info.SwizzleB.Convert(); + MTLTextureSwizzle swizzleA = Info.SwizzleA.Convert(); if (info.Format == Format.R5G5B5A1Unorm || info.Format == Format.R5G5B5X1Unorm || @@ -144,8 +144,8 @@ namespace Ryujinx.Graphics.Metal } else if (pixelFormat == MTLPixelFormat.ABGR4Unorm || info.Format == Format.A1B5G5R5Unorm) { - var tempB = swizzleB; - var tempA = swizzleA; + MTLTextureSwizzle tempB = swizzleB; + MTLTextureSwizzle tempA = swizzleA; swizzleB = swizzleG; swizzleA = swizzleR; @@ -174,8 +174,8 @@ namespace Ryujinx.Graphics.Metal return; } - var srcImage = GetHandle(); - var dstImage = dst.GetHandle(); + MTLTexture srcImage = GetHandle(); + MTLTexture dstImage = dst.GetHandle(); if (!dst.Info.Target.IsMultisample() && Info.Target.IsMultisample()) { @@ -231,8 +231,8 @@ namespace Ryujinx.Graphics.Metal return; } - var srcImage = GetHandle(); - var dstImage = dst.GetHandle(); + MTLTexture srcImage = GetHandle(); + MTLTexture dstImage = dst.GetHandle(); if (!dst.Info.Target.IsMultisample() && Info.Target.IsMultisample()) { @@ -276,7 +276,7 @@ namespace Ryujinx.Graphics.Metal return; } - var dst = (Texture)destination; + Texture dst = (Texture)destination; bool isDepthOrStencil = dst.Info.Format.IsDepthOrStencil(); @@ -285,15 +285,15 @@ namespace Ryujinx.Graphics.Metal public void CopyTo(BufferRange range, int layer, int level, int stride) { - var cbs = Pipeline.Cbs; + CommandBufferScoped cbs = Pipeline.Cbs; int outSize = Info.GetMipSize(level); int hostSize = GetBufferDataLength(outSize); int offset = range.Offset; - var autoBuffer = Renderer.BufferManager.GetBuffer(range.Handle, true); - var mtlBuffer = autoBuffer.Get(cbs, range.Offset, outSize).Value; + Auto autoBuffer = Renderer.BufferManager.GetBuffer(range.Handle, true); + MTLBuffer mtlBuffer = autoBuffer.Get(cbs, range.Offset, outSize).Value; if (PrepareOutputBuffer(cbs, hostSize, mtlBuffer, out MTLBuffer copyToBuffer, out BufferHolder tempCopyHolder)) { @@ -511,13 +511,13 @@ namespace Ryujinx.Graphics.Metal public void SetData(MemoryOwner data) { - var blitCommandEncoder = Pipeline.GetOrCreateBlitEncoder(); + MTLBlitCommandEncoder blitCommandEncoder = Pipeline.GetOrCreateBlitEncoder(); - var dataSpan = data.Memory.Span; + Span dataSpan = data.Memory.Span; - var buffer = Renderer.BufferManager.Create(dataSpan.Length); + BufferHolder buffer = Renderer.BufferManager.Create(dataSpan.Length); buffer.SetDataUnchecked(0, dataSpan); - var mtlBuffer = buffer.GetBuffer(false).Get(Pipeline.Cbs).Value; + MTLBuffer mtlBuffer = buffer.GetBuffer(false).Get(Pipeline.Cbs).Value; int width = Info.Width; int height = Info.Height; @@ -572,16 +572,16 @@ namespace Ryujinx.Graphics.Metal { int bufferDataLength = GetBufferDataLength(data.Length); - using var bufferHolder = Renderer.BufferManager.Create(bufferDataLength); + using BufferHolder bufferHolder = Renderer.BufferManager.Create(bufferDataLength); // TODO: loadInline logic - var cbs = Pipeline.Cbs; + CommandBufferScoped cbs = Pipeline.Cbs; CopyDataToBuffer(bufferHolder.GetDataStorage(0, bufferDataLength), data); - var buffer = bufferHolder.GetBuffer().Get(cbs).Value; - var image = GetHandle(); + MTLBuffer buffer = bufferHolder.GetBuffer().Get(cbs).Value; + MTLTexture image = GetHandle(); CopyFromOrToBuffer(cbs, buffer, image, bufferDataLength, false, layer, level, layers, levels, singleSlice); } @@ -595,7 +595,7 @@ namespace Ryujinx.Graphics.Metal public void SetData(MemoryOwner data, int layer, int level, Rectangle region) { - var blitCommandEncoder = Pipeline.GetOrCreateBlitEncoder(); + MTLBlitCommandEncoder blitCommandEncoder = Pipeline.GetOrCreateBlitEncoder(); ulong bytesPerRow = (ulong)Info.GetMipStride(level); ulong bytesPerImage = 0; @@ -604,11 +604,11 @@ namespace Ryujinx.Graphics.Metal bytesPerImage = bytesPerRow * (ulong)Info.Height; } - var dataSpan = data.Memory.Span; + Span dataSpan = data.Memory.Span; - var buffer = Renderer.BufferManager.Create(dataSpan.Length); + BufferHolder buffer = Renderer.BufferManager.Create(dataSpan.Length); buffer.SetDataUnchecked(0, dataSpan); - var mtlBuffer = buffer.GetBuffer(false).Get(Pipeline.Cbs).Value; + MTLBuffer mtlBuffer = buffer.GetBuffer(false).Get(Pipeline.Cbs).Value; blitCommandEncoder.CopyFromBuffer( mtlBuffer, diff --git a/src/Ryujinx.Graphics.Metal/VertexBufferState.cs b/src/Ryujinx.Graphics.Metal/VertexBufferState.cs index 6591fe6d6..8fb48ef79 100644 --- a/src/Ryujinx.Graphics.Metal/VertexBufferState.cs +++ b/src/Ryujinx.Graphics.Metal/VertexBufferState.cs @@ -49,7 +49,7 @@ namespace Ryujinx.Graphics.Metal if (autoBuffer != null) { int offset = _offset; - var buffer = autoBuffer.Get(cbs, offset, _size).Value; + MTLBuffer buffer = autoBuffer.Get(cbs, offset, _size).Value; return (buffer, offset); } diff --git a/src/Ryujinx.Graphics.Metal/Window.cs b/src/Ryujinx.Graphics.Metal/Window.cs index 1823c0b9a..f3c9133ab 100644 --- a/src/Ryujinx.Graphics.Metal/Window.cs +++ b/src/Ryujinx.Graphics.Metal/Window.cs @@ -47,7 +47,7 @@ namespace Ryujinx.Graphics.Metal if (_requestedWidth != 0 && _requestedHeight != 0) { // TODO: This is actually a CGSize, but there is no overload for that, so fill the first two fields of rect with the size. - var rect = new NSRect(_requestedWidth, _requestedHeight, 0, 0); + NSRect rect = new NSRect(_requestedWidth, _requestedHeight, 0, 0); ObjectiveC.objc_msgSend(_metalLayer, "setDrawableSize:", rect); @@ -62,7 +62,7 @@ namespace Ryujinx.Graphics.Metal { ResizeIfNeeded(); - var drawable = new CAMetalDrawable(ObjectiveC.IntPtr_objc_msgSend(_metalLayer, "nextDrawable")); + CAMetalDrawable drawable = new CAMetalDrawable(ObjectiveC.IntPtr_objc_msgSend(_metalLayer, "nextDrawable")); _width = (int)drawable.Texture.Width; _height = (int)drawable.Texture.Height;