- IMTLRenderCommandEncoder - TileHeight 
- TileWidth 
- DispatchThreadsPerTile(MTLSize) 
- DrawIndexedPatches(nuint, IMTLBuffer, nuint, IMTLBuffer, nuint, IMTLBuffer, nuint) 
- DrawIndexedPatches(nuint, nuint, nuint, IMTLBuffer, nuint, IMTLBuffer, nuint, nuint, nuint) 
- DrawIndexedPrimitives(MTLPrimitiveType, nuint, MTLIndexType, IMTLBuffer, nuint) 
- DrawIndexedPrimitives(MTLPrimitiveType, nuint, MTLIndexType, IMTLBuffer, nuint) 
- DrawIndexedPrimitives(MTLPrimitiveType, MTLIndexType, IMTLBuffer, nuint, IMTLBuffer, nuint) 
- DrawIndexedPrimitives(MTLPrimitiveType, nuint, MTLIndexType, IMTLBuffer, nuint, nuint) 
- DrawIndexedPrimitives(MTLPrimitiveType, nuint, MTLIndexType, IMTLBuffer, nuint, nuint) 
- DrawIndexedPrimitives(MTLPrimitiveType, nuint, MTLIndexType, IMTLBuffer, nuint, nuint, nint, nuint) 
- DrawPatches(nuint, IMTLBuffer, nuint, IMTLBuffer, nuint) 
- DrawPatches(nuint, nuint, nuint, IMTLBuffer, nuint, nuint, nuint) 
- DrawPrimitives(MTLPrimitiveType, IMTLBuffer, nuint) 
- DrawPrimitives(MTLPrimitiveType, nuint, nuint) 
- DrawPrimitives(MTLPrimitiveType, nuint, nuint) 
- DrawPrimitives(MTLPrimitiveType, nuint, nuint, nuint) 
- DrawPrimitives(MTLPrimitiveType, nuint, nuint, nuint) 
- DrawPrimitives(MTLPrimitiveType, nuint, nuint, nuint, nuint) 
- ExecuteCommands(IMTLIndirectCommandBuffer, NSRange) 
- ExecuteCommands(IMTLIndirectCommandBuffer, IMTLBuffer, nuint) 
- MemoryBarrier(MTLBarrierScope, MTLRenderStages, MTLRenderStages) 
- MemoryBarrier(IMTLResource[], nuint, MTLRenderStages, MTLRenderStages) 
- SampleCounters(IMTLCounterSampleBuffer, nuint, Boolean) 
- SetBlendColor(Single, Single, Single, Single) 
- SetColorStoreAction(MTLStoreAction, nuint) 
- SetColorStoreActionOptions(MTLStoreActionOptions, nuint) 
- SetCullMode(MTLCullMode) 
- SetDepthBias(Single, Single, Single) 
- SetDepthClipMode(MTLDepthClipMode) 
- SetDepthStencilState(IMTLDepthStencilState) 
- SetDepthStoreAction(MTLStoreAction) 
- SetDepthStoreActionOptions(MTLStoreActionOptions) 
- SetFragmentAccelerationStructure(IMTLAccelerationStructure, nuint) 
- SetFragmentBuffer(IMTLBuffer, nuint, nuint) 
- SetFragmentBuffer(IMTLBuffer, nuint, nuint) 
- SetFragmentBufferOffset(nuint, nuint) 
- SetFragmentBufferOffset(nuint, nuint) 
- SetFragmentBuffers(IMTLBuffer, nint, NSRange) 
- SetFragmentBytes(IntPtr, nuint, nuint) 
- SetFragmentBytes(nint, nuint, nuint) 
- SetFragmentIntersectionFunctionTable(IMTLIntersectionFunctionTable, nuint) 
- SetFragmentIntersectionFunctionTables(IMTLIntersectionFunctionTable[], NSRange) 
- SetFragmentSamplerState(IMTLSamplerState, nuint) 
- SetFragmentSamplerState(IMTLSamplerState, nuint) 
- SetFragmentSamplerState(IMTLSamplerState, Single, Single, nuint) 
- SetFragmentSamplerState(IMTLSamplerState, Single, Single, nuint) 
- SetFragmentSamplerStates(IMTLSamplerState[], NSRange) 
- SetFragmentSamplerStates(IMTLSamplerState[], nint, nint, NSRange) 
- SetFragmentTexture(IMTLTexture, nuint) 
- SetFragmentTexture(IMTLTexture, nuint) 
- SetFragmentTextures(IMTLTexture[], NSRange) 
- SetFragmentVisibleFunctionTable(IMTLVisibleFunctionTable, nuint) 
- SetFragmentVisibleFunctionTables(IMTLVisibleFunctionTable[], NSRange) 
- SetFrontFacingWinding(MTLWinding) 
- SetRenderPipelineState(IMTLRenderPipelineState) 
- SetScissorRect(MTLScissorRect) 
- SetScissorRects(nint, nuint) 
- SetStencilFrontReferenceValue(UInt32, UInt32) 
- SetStencilReferenceValue(UInt32) 
- SetStencilStoreAction(MTLStoreAction) 
- SetStencilStoreActionOptions(MTLStoreActionOptions) 
- SetTessellationFactorBuffer(IMTLBuffer, nuint, nuint) 
- SetTessellationFactorScale(Single) 
- SetThreadgroupMemoryLength(nuint, nuint, nuint) 
- SetTileAccelerationStructure(IMTLAccelerationStructure, nuint) 
- SetTileBuffer(IMTLBuffer, nuint, nuint) 
- SetTileBufferOffset(nuint, nuint) 
- SetTileBuffers(IMTLBuffer[], nint, NSRange) 
- SetTileBytes(nint, nuint, nuint) 
- SetTileIntersectionFunctionTable(IMTLIntersectionFunctionTable, nuint) 
- SetTileIntersectionFunctionTables(IMTLIntersectionFunctionTable[], NSRange) 
- SetTileSamplerState(IMTLSamplerState, nuint) 
- SetTileSamplerState(IMTLSamplerState, Single, Single, nuint) 
- SetTileSamplerStates(IMTLSamplerState[], NSRange) 
- SetTileSamplerStates(IMTLSamplerState[], nint, nint, NSRange) 
- SetTileTexture(IMTLTexture, nuint) 
- SetTileTextures(IMTLTexture[], NSRange) 
- SetTileVisibleFunctionTable(IMTLVisibleFunctionTable, nuint) 
- SetTileVisibleFunctionTables(IMTLVisibleFunctionTable[], NSRange) 
- SetTriangleFillMode(MTLTriangleFillMode) 
- SetVertexAccelerationStructure(IMTLAccelerationStructure, nuint) 
- SetVertexAmplificationCount(nuint, MTLVertexAmplificationViewMapping) 
- SetVertexBuffer(IMTLBuffer, nuint, nuint) 
- SetVertexBuffer(IMTLBuffer, nuint, nuint) 
- SetVertexBufferOffset(nuint, nuint) 
- SetVertexBufferOffset(nuint, nuint) 
- SetVertexBuffers(IMTLBuffer[], nint, NSRange) 
- SetVertexBytes(IntPtr, nuint, nuint) 
- SetVertexBytes(nint, nuint, nuint) 
- SetVertexIntersectionFunctionTable(IMTLIntersectionFunctionTable, nuint) 
- SetVertexIntersectionFunctionTables(IMTLIntersectionFunctionTable[], NSRange) 
- SetVertexSamplerState(IMTLSamplerState, nuint) 
- SetVertexSamplerState(IMTLSamplerState, nuint) 
- SetVertexSamplerState(IMTLSamplerState, Single, Single, nuint) 
- SetVertexSamplerState(IMTLSamplerState, Single, Single, nuint) 
- SetVertexSamplerStates(IMTLSamplerState[], NSRange) 
- SetVertexSamplerStates(IMTLSamplerState[], nint, nint, NSRange) 
- SetVertexTexture(IMTLTexture, nuint) 
- SetVertexTexture(IMTLTexture, nuint) 
- SetVertexTextures(IMTLTexture[], NSRange) 
- SetVertexVisibleFunctionTable(IMTLVisibleFunctionTable, nuint) 
- SetVertexVisibleFunctionTables(IMTLVisibleFunctionTable[], NSRange) 
- SetViewport(MTLViewport) 
- SetViewports(nint, nuint) 
- SetVisibilityResultMode(MTLVisibilityResultMode, nuint) 
- SetVisibilityResultMode(MTLVisibilityResultMode, nuint) 
- TextureBarrier() 
- Update(IMTLFence, MTLRenderStages) 
- UseHeap(IMTLHeap) 
- UseHeap(IMTLHeap, MTLRenderStages) 
- UseHeaps(IMTLHeap[], nuint) 
- UseHeaps(IMTLHeap[], nuint, MTLRenderStages) 
- UseResource(IMTLResource, MTLResourceUsage) 
- UseResource(IMTLResource, MTLResourceUsage, MTLRenderStages) 
- UseResources(IMTLResource[], nuint, MTLResourceUsage) 
- UseResources(IMTLResource[], nuint, MTLResourceUsage, MTLRenderStages) 
- Wait(IMTLFence, MTLRenderStages) 
- DispatchThreadsPerTile(IMTLRenderCommandEncoder, MTLSize) 
- DrawIndexedPatches(IMTLRenderCommandEncoder, nuint, IMTLBuffer, nuint, IMTLBuffer, nuint, IMTLBuffer, nuint) 
- DrawIndexedPatches(IMTLRenderCommandEncoder, nuint, nuint, nuint, IMTLBuffer, nuint, IMTLBuffer, nuint, nuint, nuint) 
- DrawIndexedPrimitives(IMTLRenderCommandEncoder, MTLPrimitiveType, MTLIndexType, IMTLBuffer, nuint, IMTLBuffer, nuint) 
- DrawIndexedPrimitives(IMTLRenderCommandEncoder, MTLPrimitiveType, nuint, MTLIndexType, IMTLBuffer, nuint, nuint, nint, nuint) 
- DrawMeshThreadgroups(IMTLRenderCommandEncoder, MTLSize, MTLSize, MTLSize) 
- DrawMeshThreadgroups(IMTLRenderCommandEncoder, IMTLBuffer, nuint, MTLSize, MTLSize) 
- DrawMeshThreads(IMTLRenderCommandEncoder, MTLSize, MTLSize, MTLSize) 
- DrawPatches(IMTLRenderCommandEncoder, nuint, IMTLBuffer, nuint, IMTLBuffer, nuint) 
- DrawPatches(IMTLRenderCommandEncoder, nuint, nuint, nuint, IMTLBuffer, nuint, nuint, nuint) 
- DrawPrimitives(IMTLRenderCommandEncoder, MTLPrimitiveType, IMTLBuffer, nuint) 
- DrawPrimitives(IMTLRenderCommandEncoder, MTLPrimitiveType, nuint, nuint, nuint, nuint) 
- ExecuteCommands(IMTLRenderCommandEncoder, IMTLIndirectCommandBuffer, NSRange) 
- ExecuteCommands(IMTLRenderCommandEncoder, IMTLIndirectCommandBuffer, IMTLBuffer, nuint) 
- GetTileHeight(IMTLRenderCommandEncoder) 
- GetTileWidth(IMTLRenderCommandEncoder) 
- MemoryBarrier(IMTLRenderCommandEncoder, MTLBarrierScope, MTLRenderStages, MTLRenderStages) 
- MemoryBarrier(IMTLRenderCommandEncoder, IMTLResource[], nuint, MTLRenderStages, MTLRenderStages) 
- MemoryBarrier(IMTLRenderCommandEncoder, IMTLResource[], nuint, MTLRenderStages, MTLRenderStages) 
- SampleCounters(IMTLRenderCommandEncoder, MTLCounterSampleBuffer, nuint, Boolean) 
- SetColorStoreAction(IMTLRenderCommandEncoder, MTLStoreAction, nuint) 
- SetColorStoreActionOptions(IMTLRenderCommandEncoder, MTLStoreActionOptions, nuint) 
- SetDepthClipMode(IMTLRenderCommandEncoder, MTLDepthClipMode) 
- SetDepthStoreAction(IMTLRenderCommandEncoder, MTLStoreAction) 
- SetDepthStoreActionOptions(IMTLRenderCommandEncoder, MTLStoreActionOptions) 
- SetFragmentAccelerationStructure(IMTLRenderCommandEncoder, IMTLAccelerationStructure, nuint) 
- SetFragmentIntersectionFunctionTable(IMTLRenderCommandEncoder, IMTLIntersectionFunctionTable, nuint) 
- SetFragmentIntersectionFunctionTables(IMTLRenderCommandEncoder, IMTLIntersectionFunctionTable[], NSRange) 
- SetFragmentVisibleFunctionTable(IMTLRenderCommandEncoder, IMTLVisibleFunctionTable, nuint) 
- SetFragmentVisibleFunctionTables(IMTLRenderCommandEncoder, IMTLVisibleFunctionTable[], NSRange) 
- SetMeshBuffer(IMTLRenderCommandEncoder, IMTLBuffer, nuint, nuint) 
- SetMeshBufferOffset(IMTLRenderCommandEncoder, nuint, nuint) 
- SetMeshBuffers(IMTLRenderCommandEncoder, nint, nint, NSRange) 
- SetMeshBytes(IMTLRenderCommandEncoder, nint, nuint, nuint) 
- SetMeshSamplerState(IMTLRenderCommandEncoder, IMTLSamplerState, nuint) 
- SetMeshSamplerState(IMTLRenderCommandEncoder, IMTLSamplerState, Single, Single, nuint) 
- SetMeshSamplerStates(IMTLRenderCommandEncoder, nint, NSRange) 
- SetMeshSamplerStates(IMTLRenderCommandEncoder, nint, nint, nint, NSRange) 
- SetMeshTexture(IMTLRenderCommandEncoder, IMTLTexture, nuint) 
- SetMeshTextures(IMTLRenderCommandEncoder, nint, NSRange) 
- SetObjectBuffer(IMTLRenderCommandEncoder, IMTLBuffer, nuint, nuint) 
- SetObjectBufferOffset(IMTLRenderCommandEncoder, nuint, nuint) 
- SetObjectBuffers(IMTLRenderCommandEncoder, nint, nint, NSRange) 
- SetObjectBytes(IMTLRenderCommandEncoder, nint, nuint, nuint) 
- SetObjectSamplerState(IMTLRenderCommandEncoder, IMTLSamplerState, nuint) 
- SetObjectSamplerState(IMTLRenderCommandEncoder, IMTLSamplerState, Single, Single, nuint) 
- SetObjectSamplerStates(IMTLRenderCommandEncoder, nint, NSRange) 
- SetObjectSamplerStates(IMTLRenderCommandEncoder, nint, nint, nint, NSRange) 
- SetObjectTexture(IMTLRenderCommandEncoder, IMTLTexture, nuint) 
- SetObjectTextures(IMTLRenderCommandEncoder, nint, NSRange) 
- SetObjectThreadgroupMemoryLength(IMTLRenderCommandEncoder, nuint, nuint) 
- SetScissorRects(IMTLRenderCommandEncoder, MTLScissorRect[]) 
- SetScissorRects(IMTLRenderCommandEncoder, IntPtr, nuint) 
- SetStencilFrontReferenceValue(IMTLRenderCommandEncoder, UInt32, UInt32) 
- SetStencilStoreAction(IMTLRenderCommandEncoder, MTLStoreAction) 
- SetStencilStoreActionOptions(IMTLRenderCommandEncoder, MTLStoreActionOptions) 
- SetTessellationFactorBuffer(IMTLRenderCommandEncoder, IMTLBuffer, nuint, nuint) 
- SetTessellationFactorScale(IMTLRenderCommandEncoder, Single) 
- SetThreadgroupMemoryLength(IMTLRenderCommandEncoder, nuint, nuint, nuint) 
- SetTileAccelerationStructure(IMTLRenderCommandEncoder, IMTLAccelerationStructure, nuint) 
- SetTileBuffer(IMTLRenderCommandEncoder, IMTLBuffer, nuint, nuint) 
- SetTileBufferOffset(IMTLRenderCommandEncoder, nuint, nuint) 
- SetTileBuffers(IMTLRenderCommandEncoder, IMTLBuffer[], IntPtr, NSRange) 
- SetTileBuffers(IMTLRenderCommandEncoder, IMTLBuffer[], nuint[], NSRange) 
- SetTileBytes(IMTLRenderCommandEncoder, IntPtr, nuint, nuint) 
- SetTileIntersectionFunctionTable(IMTLRenderCommandEncoder, IMTLIntersectionFunctionTable, nuint) 
- SetTileIntersectionFunctionTables(IMTLRenderCommandEncoder, IMTLIntersectionFunctionTable[], NSRange) 
- SetTileSamplerState(IMTLRenderCommandEncoder, IMTLSamplerState, nuint) 
- SetTileSamplerState(IMTLRenderCommandEncoder, IMTLSamplerState, Single, Single, nuint) 
- SetTileSamplerStates(IMTLRenderCommandEncoder, IMTLSamplerState[], NSRange) 
- SetTileSamplerStates(IMTLRenderCommandEncoder, IMTLSamplerState[], IntPtr, IntPtr, NSRange) 
- SetTileSamplerStates(IMTLRenderCommandEncoder, IMTLSamplerState[], Single[], Single[], NSRange) 
- SetTileTexture(IMTLRenderCommandEncoder, IMTLTexture, nuint) 
- SetTileTextures(IMTLRenderCommandEncoder, IMTLTexture[], NSRange) 
- SetTileVisibleFunctionTable(IMTLRenderCommandEncoder, IMTLVisibleFunctionTable, nuint) 
- SetTileVisibleFunctionTables(IMTLRenderCommandEncoder, IMTLVisibleFunctionTable[], NSRange) 
- SetVertexAccelerationStructure(IMTLRenderCommandEncoder, IMTLAccelerationStructure, nuint) 
- SetVertexAmplificationCount(IMTLRenderCommandEncoder, nuint, MTLVertexAmplificationViewMapping) 
- SetVertexAmplificationCount(IMTLRenderCommandEncoder, nuint, MTLVertexAmplificationViewMapping) 
- SetVertexBuffer(IMTLRenderCommandEncoder, IMTLBuffer, nuint, nuint, nuint) 
- SetVertexBufferOffset(IMTLRenderCommandEncoder, nuint, nuint, nuint) 
- SetVertexBuffers(IMTLRenderCommandEncoder, nint, nint, nint, NSRange) 
- SetVertexBytes(IMTLRenderCommandEncoder, nint, nuint, nuint, nuint) 
- SetVertexIntersectionFunctionTable(IMTLRenderCommandEncoder, IMTLIntersectionFunctionTable, nuint) 
- SetVertexIntersectionFunctionTables(IMTLRenderCommandEncoder, IMTLIntersectionFunctionTable[], NSRange) 
- SetVertexVisibleFunctionTable(IMTLRenderCommandEncoder, IMTLVisibleFunctionTable, nuint) 
- SetVertexVisibleFunctionTables(IMTLRenderCommandEncoder, IMTLVisibleFunctionTable[], NSRange) 
- SetViewports(IMTLRenderCommandEncoder, MTLViewport[]) 
- SetViewports(IMTLRenderCommandEncoder, IntPtr, nuint) 
- TextureBarrier(IMTLRenderCommandEncoder) 
- Update(IMTLRenderCommandEncoder, IMTLFence, MTLRenderStages) 
- UseHeap(IMTLRenderCommandEncoder, IMTLHeap) 
- UseHeap(IMTLRenderCommandEncoder, IMTLHeap, MTLRenderStages) 
- UseHeaps(IMTLRenderCommandEncoder, IMTLHeap[], nuint) 
- UseHeaps(IMTLRenderCommandEncoder, IMTLHeap[], nuint, MTLRenderStages) 
- UseResource(IMTLRenderCommandEncoder, IMTLResource, MTLResourceUsage) 
- UseResource(IMTLRenderCommandEncoder, IMTLResource, MTLResourceUsage, MTLRenderStages) 
- UseResources(IMTLRenderCommandEncoder, IMTLResource[], nuint, MTLResourceUsage) 
- UseResources(IMTLRenderCommandEncoder, IMTLResource[], nuint, MTLResourceUsage, MTLRenderStages) 
- Wait(IMTLRenderCommandEncoder, IMTLFence, MTLRenderStages) 
 
net9.0-ios17.2
    namespace Metal
{
    [Protocol(Name = "MTLRenderCommandEncoder", WrapperType = typeof(MTLRenderCommandEncoderWrapper))]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetRenderPipelineState", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(IMTLRenderPipelineState) }, Selector = "setRenderPipelineState:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexBuffer", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setVertexBuffer:offset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexTexture", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture), typeof(UIntPtr) }, Selector = "setVertexTexture:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexSamplerState", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(UIntPtr) }, Selector = "setVertexSamplerState:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexSamplerState", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(float), typeof(float), typeof(UIntPtr) }, Selector = "setVertexSamplerState:lodMinClamp:lodMaxClamp:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetViewport", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLViewport) }, Selector = "setViewport:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFrontFacingWinding", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLWinding) }, Selector = "setFrontFacingWinding:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetCullMode", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLCullMode) }, Selector = "setCullMode:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetDepthClipMode", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLDepthClipMode) }, Selector = "setDepthClipMode:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetDepthBias", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(float), typeof(float), typeof(float) }, Selector = "setDepthBias:slopeScale:clamp:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetScissorRect", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLScissorRect) }, Selector = "setScissorRect:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTriangleFillMode", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLTriangleFillMode) }, Selector = "setTriangleFillMode:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentBuffer", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setFragmentBuffer:offset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentBufferOffset", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setFragmentBufferOffset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentBytes", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setFragmentBytes:length:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentTexture", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture), typeof(UIntPtr) }, Selector = "setFragmentTexture:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentSamplerState", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(UIntPtr) }, Selector = "setFragmentSamplerState:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentSamplerState", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(float), typeof(float), typeof(UIntPtr) }, Selector = "setFragmentSamplerState:lodMinClamp:lodMaxClamp:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetBlendColor", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(float), typeof(float), typeof(float), typeof(float) }, Selector = "setBlendColorRed:green:blue:alpha:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetDepthStencilState", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(IMTLDepthStencilState) }, Selector = "setDepthStencilState:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetStencilReferenceValue", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(uint) }, Selector = "setStencilReferenceValue:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetStencilFrontReferenceValue", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(uint), typeof(uint) }, Selector = "setStencilFrontReferenceValue:backReferenceValue:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVisibilityResultMode", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(MTLVisibilityResultMode), typeof(UIntPtr) }, Selector = "setVisibilityResultMode:offset:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetColorStoreAction", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(MTLStoreAction), typeof(UIntPtr) }, Selector = "setColorStoreAction:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetDepthStoreAction", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLStoreAction) }, Selector = "setDepthStoreAction:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetStencilStoreAction", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLStoreAction) }, Selector = "setStencilStoreAction:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawPrimitives", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "drawPrimitives:vertexStart:vertexCount:instanceCount:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawPrimitives", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "drawPrimitives:vertexStart:vertexCount:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawIndexedPrimitives", ParameterByRef = new[] { false, false, false, false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(UIntPtr), typeof(MTLIndexType), typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawIndexedPrimitives", ParameterByRef = new[] { false, false, false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(UIntPtr), typeof(MTLIndexType), typeof(IMTLBuffer), typeof(UIntPtr) }, Selector = "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawPrimitives", ParameterByRef = new[] { false, false, false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "drawPrimitives:vertexStart:vertexCount:instanceCount:baseInstance:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawIndexedPrimitives", ParameterByRef = new[] { false, false, false, false, false, false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(UIntPtr), typeof(MTLIndexType), typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr), typeof(IntPtr), typeof(UIntPtr) }, Selector = "drawIndexedPrimitives:indexCount:indexType:indexBuffer:indexBufferOffset:instanceCount:baseVertex:baseInstance:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawPrimitives", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(IMTLBuffer), typeof(UIntPtr) }, Selector = "drawPrimitives:indirectBuffer:indirectBufferOffset:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawIndexedPrimitives", ParameterByRef = new[] { false, false, false, false, false, false }, ParameterType = new[] { typeof(MTLPrimitiveType), typeof(MTLIndexType), typeof(IMTLBuffer), typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr) }, Selector = "drawIndexedPrimitives:indexType:indexBuffer:indexBufferOffset:indirectBuffer:indirectBufferOffset:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentBuffers", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(IntPtr), typeof(NSRange) }, Selector = "setFragmentBuffers:offsets:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentSamplerStates", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState[]), typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setFragmentSamplerStates:lodMinClamps:lodMaxClamps:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentSamplerStates", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState[]), typeof(NSRange) }, Selector = "setFragmentSamplerStates:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentTextures", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture[]), typeof(NSRange) }, Selector = "setFragmentTextures:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexBuffers", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer[]), typeof(IntPtr), typeof(NSRange) }, Selector = "setVertexBuffers:offsets:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexBufferOffset", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setVertexBufferOffset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexBytes", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setVertexBytes:length:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexSamplerStates", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState[]), typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setVertexSamplerStates:lodMinClamps:lodMaxClamps:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexSamplerStates", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState[]), typeof(NSRange) }, Selector = "setVertexSamplerStates:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexTextures", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture[]), typeof(NSRange) }, Selector = "setVertexTextures:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "Update", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLFence), typeof(MTLRenderStages) }, Selector = "updateFence:afterStages:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "Wait", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLFence), typeof(MTLRenderStages) }, Selector = "waitForFence:beforeStages:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTessellationFactorBuffer", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setTessellationFactorBuffer:offset:instanceStride:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTessellationFactorScale", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(float) }, Selector = "setTessellationFactorScale:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawPatches", ParameterByRef = new[] { false, false, false, false, false, false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "drawPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:instanceCount:baseInstance:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawPatches", ParameterByRef = new[] { false, false, false, false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr) }, Selector = "drawPatches:patchIndexBuffer:patchIndexBufferOffset:indirectBuffer:indirectBufferOffset:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawIndexedPatches", ParameterByRef = new[] { false, false, false, false, false, false, false, false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "drawIndexedPatches:patchStart:patchCount:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:instanceCount:baseInstance:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DrawIndexedPatches", ParameterByRef = new[] { false, false, false, false, false, false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr), typeof(IMTLBuffer), typeof(UIntPtr) }, Selector = "drawIndexedPatches:patchIndexBuffer:patchIndexBufferOffset:controlPointIndexBuffer:controlPointIndexBufferOffset:indirectBuffer:indirectBufferOffset:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetViewports", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr) }, Selector = "setViewports:count:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetScissorRects", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr) }, Selector = "setScissorRects:count:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetColorStoreActionOptions", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(MTLStoreActionOptions), typeof(UIntPtr) }, Selector = "setColorStoreActionOptions:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetDepthStoreActionOptions", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLStoreActionOptions) }, Selector = "setDepthStoreActionOptions:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetStencilStoreActionOptions", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLStoreActionOptions) }, Selector = "setStencilStoreActionOptions:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseResource", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLResource), typeof(MTLResourceUsage) }, Selector = "useResource:usage:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseResources", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLResource[]), typeof(UIntPtr), typeof(MTLResourceUsage) }, Selector = "useResources:count:usage:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseHeap", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(IMTLHeap) }, Selector = "useHeap:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseHeaps", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLHeap[]), typeof(UIntPtr) }, Selector = "useHeaps:count:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "ExecuteCommands", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLIndirectCommandBuffer), typeof(NSRange) }, Selector = "executeCommandsInBuffer:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "ExecuteCommands", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLIndirectCommandBuffer), typeof(IMTLBuffer), typeof(UIntPtr) }, Selector = "executeCommandsInBuffer:indirectBuffer:indirectBufferOffset:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "MemoryBarrier", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(MTLBarrierScope), typeof(MTLRenderStages), typeof(MTLRenderStages) }, Selector = "memoryBarrierWithScope:afterStages:beforeStages:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "MemoryBarrier", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLResource[]), typeof(UIntPtr), typeof(MTLRenderStages), typeof(MTLRenderStages) }, Selector = "memoryBarrierWithResources:count:afterStages:beforeStages:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileBytes", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setTileBytes:length:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileBuffer", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setTileBuffer:offset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileBufferOffset", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setTileBufferOffset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileBuffers", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer[]), typeof(IntPtr), typeof(NSRange) }, Selector = "setTileBuffers:offsets:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileTexture", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture), typeof(UIntPtr) }, Selector = "setTileTexture:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileTextures", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture[]), typeof(NSRange) }, Selector = "setTileTextures:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileSamplerState", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(UIntPtr) }, Selector = "setTileSamplerState:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileSamplerStates", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState[]), typeof(NSRange) }, Selector = "setTileSamplerStates:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileSamplerState", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(float), typeof(float), typeof(UIntPtr) }, Selector = "setTileSamplerState:lodMinClamp:lodMaxClamp:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileSamplerStates", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState[]), typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setTileSamplerStates:lodMinClamps:lodMaxClamps:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "DispatchThreadsPerTile", ParameterByRef = new[] { false }, ParameterType = new[] { typeof(MTLSize) }, Selector = "dispatchThreadsPerTile:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetThreadgroupMemoryLength", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setThreadgroupMemoryLength:offset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexAmplificationCount", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(MTLVertexAmplificationViewMapping) }, Selector = "setVertexAmplificationCount:viewMappings:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseResource", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLResource), typeof(MTLResourceUsage), typeof(MTLRenderStages) }, Selector = "useResource:usage:stages:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseResources", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLResource[]), typeof(UIntPtr), typeof(MTLResourceUsage), typeof(MTLRenderStages) }, Selector = "useResources:count:usage:stages:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseHeap", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLHeap), typeof(MTLRenderStages) }, Selector = "useHeap:stages:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "UseHeaps", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLHeap[]), typeof(UIntPtr), typeof(MTLRenderStages) }, Selector = "useHeaps:count:stages:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SampleCounters", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLCounterSampleBuffer), typeof(UIntPtr), typeof(bool) }, Selector = "sampleCountersInBuffer:atSampleIndex:withBarrier:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexVisibleFunctionTable", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLVisibleFunctionTable), typeof(UIntPtr) }, Selector = "setVertexVisibleFunctionTable:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexVisibleFunctionTables", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLVisibleFunctionTable[]), typeof(NSRange) }, Selector = "setVertexVisibleFunctionTables:withBufferRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexIntersectionFunctionTable", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLIntersectionFunctionTable), typeof(UIntPtr) }, Selector = "setVertexIntersectionFunctionTable:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexIntersectionFunctionTables", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLIntersectionFunctionTable[]), typeof(NSRange) }, Selector = "setVertexIntersectionFunctionTables:withBufferRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetVertexAccelerationStructure", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLAccelerationStructure), typeof(UIntPtr) }, Selector = "setVertexAccelerationStructure:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentAccelerationStructure", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLAccelerationStructure), typeof(UIntPtr) }, Selector = "setFragmentAccelerationStructure:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentIntersectionFunctionTable", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLIntersectionFunctionTable), typeof(UIntPtr) }, Selector = "setFragmentIntersectionFunctionTable:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentIntersectionFunctionTables", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLIntersectionFunctionTable[]), typeof(NSRange) }, Selector = "setFragmentIntersectionFunctionTables:withBufferRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentVisibleFunctionTable", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLVisibleFunctionTable), typeof(UIntPtr) }, Selector = "setFragmentVisibleFunctionTable:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetFragmentVisibleFunctionTables", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLVisibleFunctionTable[]), typeof(NSRange) }, Selector = "setFragmentVisibleFunctionTables:withBufferRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileAccelerationStructure", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLAccelerationStructure), typeof(UIntPtr) }, Selector = "setTileAccelerationStructure:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileIntersectionFunctionTable", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLIntersectionFunctionTable), typeof(UIntPtr) }, Selector = "setTileIntersectionFunctionTable:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileIntersectionFunctionTables", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLIntersectionFunctionTable[]), typeof(NSRange) }, Selector = "setTileIntersectionFunctionTables:withBufferRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileVisibleFunctionTable", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLVisibleFunctionTable), typeof(UIntPtr) }, Selector = "setTileVisibleFunctionTable:atBufferIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = true, IsStatic = false, Name = "SetTileVisibleFunctionTables", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLVisibleFunctionTable[]), typeof(NSRange) }, Selector = "setTileVisibleFunctionTables:withBufferRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetVertexBuffer", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setVertexBuffer:offset:attributeStride:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetVertexBuffers", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setVertexBuffers:offsets:attributeStrides:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetVertexBufferOffset", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setVertexBufferOffset:attributeStride:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetVertexBytes", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setVertexBytes:length:attributeStride:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "DrawMeshThreadgroups", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(MTLSize), typeof(MTLSize), typeof(MTLSize) }, Selector = "drawMeshThreadgroups:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "DrawMeshThreadgroups", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(MTLSize), typeof(MTLSize) }, Selector = "drawMeshThreadgroupsWithIndirectBuffer:indirectBufferOffset:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "DrawMeshThreads", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(MTLSize), typeof(MTLSize), typeof(MTLSize) }, Selector = "drawMeshThreads:threadsPerObjectThreadgroup:threadsPerMeshThreadgroup:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshBufferOffset", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setMeshBufferOffset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshBuffers", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setMeshBuffers:offsets:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshTexture", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture), typeof(UIntPtr) }, Selector = "setMeshTexture:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshTextures", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IntPtr), typeof(NSRange) }, Selector = "setMeshTextures:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshSamplerState", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(UIntPtr) }, Selector = "setMeshSamplerState:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshSamplerStates", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IntPtr), typeof(NSRange) }, Selector = "setMeshSamplerStates:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshSamplerState", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(float), typeof(float), typeof(UIntPtr) }, Selector = "setMeshSamplerState:lodMinClamp:lodMaxClamp:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshSamplerStates", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setMeshSamplerStates:lodMinClamps:lodMaxClamps:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectBuffer", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setObjectBuffer:offset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectBufferOffset", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setObjectBufferOffset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectBuffers", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setObjectBuffers:offsets:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectBytes", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setObjectBytes:length:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshBuffer", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IMTLBuffer), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setMeshBuffer:offset:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetMeshBytes", ParameterByRef = new[] { false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setMeshBytes:length:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectSamplerState", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(UIntPtr) }, Selector = "setObjectSamplerState:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectSamplerState", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IMTLSamplerState), typeof(float), typeof(float), typeof(UIntPtr) }, Selector = "setObjectSamplerState:lodMinClamp:lodMaxClamp:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectSamplerStates", ParameterByRef = new[] { false, false, false, false }, ParameterType = new[] { typeof(IntPtr), typeof(IntPtr), typeof(IntPtr), typeof(NSRange) }, Selector = "setObjectSamplerStates:lodMinClamps:lodMaxClamps:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectSamplerStates", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IntPtr), typeof(NSRange) }, Selector = "setObjectSamplerStates:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectTexture", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IMTLTexture), typeof(UIntPtr) }, Selector = "setObjectTexture:atIndex:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectTextures", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(IntPtr), typeof(NSRange) }, Selector = "setObjectTextures:withRange:")]
    [ProtocolMember(IsProperty = false, IsRequired = false, IsStatic = false, Name = "SetObjectThreadgroupMemoryLength", ParameterByRef = new[] { false, false }, ParameterType = new[] { typeof(UIntPtr), typeof(UIntPtr) }, Selector = "setObjectThreadgroupMemoryLength:atIndex:")]
    [ProtocolMember(ArgumentSemantic = ArgumentSemantic.None, GetterSelector = "tileWidth", IsProperty = true, IsRequired = true, IsStatic = false, Name = "TileWidth", PropertyType = typeof(UIntPtr), Selector = "tileWidth")]
    [ProtocolMember(ArgumentSemantic = ArgumentSemantic.None, GetterSelector = "tileHeight", IsProperty = true, IsRequired = true, IsStatic = false, Name = "TileHeight", PropertyType = typeof(UIntPtr), Selector = "tileHeight")]
    [SupportedOSPlatform("maccatalyst")]
    [SupportedOSPlatform("ios")]
    [SupportedOSPlatform("macos")]
    [SupportedOSPlatform("tvos")]
    public interface IMTLRenderCommandEncoder : IMTLCommandEncoder, INativeObject, IDisposable
    {
        [BindingImpl(BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
        [Export("setVisibilityResultMode:offset:")]
        [Preserve(Conditional = true)]
        void SetVisibilityResultMode(MTLVisibilityResultMode mode, UIntPtr offset);
    }
}
            | .NET | 6.07.08.09.0 | 
|---|---|
| Information specific to net9.0 | |
| Platforms | This API is only available when you target a specific platform: | 
| iOS | 10.010.110.210.311.011.111.211.311.412.012.112.212.312.413.013.113.213.313.413.513.614.014.114.214.314.414.515.015.215.416.016.116.216.417.017.2 | 
| Mac Catalyst | 13.113.213.313.413.514.214.314.414.515.015.215.416.116.216.417.017.2 | 
| macOS | 10.1410.1510.1611.011.111.211.312.012.112.313.013.113.314.014.2 | 
| tvOS | 10.010.110.211.011.111.211.311.412.012.112.212.312.413.013.213.313.414.014.214.314.414.515.015.215.416.016.116.417.017.2 | 
| Information specific to net9.0-ios17.2 | |
| Assembly | Microsoft.iOS , Version=17.2.0.0, PublicKeyToken=84e04ff9cfb79065 | 
| Referencing | The API is automatically referenced. | 
| Platform Restrictions | This API is only supported on the following platforms: 
 | 
- Built-in API
- Package-provided API