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("useResources:count:usage:stages:")]
        [Preserve(Conditional = true)]
        [SupportedOSPlatform("tvos13.0")]
        [SupportedOSPlatform("ios13.0")]
        [SupportedOSPlatform("maccatalyst")]
        [SupportedOSPlatform("macos")]
        void UseResources(IMTLResource![]! resources, UIntPtr count, MTLResourceUsage usage, MTLRenderStages stages);
    }
}
.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:

  • iOS >= 13
  • Mac Catalyst
  • macOS
  • tvOS >= 13
  • Built-in API
  • Package-provided API

12/26/2024
An error has occurred. This application may no longer respond until reloaded. Reload 🗙