Metal: Argument Buffer Pre-Pass (#38)

* Init

* Fix missing flags

* Cleanup
This commit is contained in:
Isaac Marovitz
2024-08-05 23:31:24 +01:00
committed by Evan Husted
parent e8de1156eb
commit 782299c123
5 changed files with 187 additions and 61 deletions

View File

@@ -0,0 +1,63 @@
using SharpMetal.Metal;
using System.Collections.Generic;
namespace Ryujinx.Graphics.Metal
{
public struct RenderEncoderResources
{
public List<Resource> Resources = new();
public List<BufferResource> VertexBuffers = new();
public List<BufferResource> FragmentBuffers = new();
public RenderEncoderResources() { }
public void Clear()
{
Resources.Clear();
VertexBuffers.Clear();
FragmentBuffers.Clear();
}
}
public struct ComputeEncoderResources
{
public List<Resource> Resources = new();
public List<BufferResource> Buffers = new();
public ComputeEncoderResources() { }
public void Clear()
{
Resources.Clear();
Buffers.Clear();
}
}
public struct BufferResource
{
public MTLBuffer Buffer;
public ulong Offset;
public ulong Binding;
public BufferResource(MTLBuffer buffer, ulong offset, ulong binding)
{
Buffer = buffer;
Offset = offset;
Binding = binding;
}
}
public struct Resource
{
public MTLResource MtlResource;
public MTLResourceUsage ResourceUsage;
public MTLRenderStages Stages;
public Resource(MTLResource resource, MTLResourceUsage resourceUsage, MTLRenderStages stages)
{
MtlResource = resource;
ResourceUsage = resourceUsage;
Stages = stages;
}
}
}