IMTL4ComputeCommandEncoder Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.
[Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4ComputeCommandEncoder", WrapperType=typeof(Metal.MTL4ComputeCommandEncoderWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetComputePipelineState", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLComputePipelineState) }, Selector="setComputePipelineState:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetThreadgroupMemoryLength", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setThreadgroupMemoryLength:atIndex:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetImageblock", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setImageblockWidth:height:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreads:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroups:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UInt64), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroupsWithIndirectBuffer:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UInt64) }, Selector="dispatchThreadsWithIndirectBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="executeCommandsInBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UInt64) }, Selector="executeCommandsInBuffer:indirectBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(Metal.IMTLTexture) }, Selector="copyFromTexture:toTexture:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLBlitOption) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLBlitOption) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTensor", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents), typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents) }, Selector="copyFromTensor:sourceOrigin:sourceDimensions:toTensor:destinationOrigin:destinationDimensions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="GenerateMipmaps", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="generateMipmapsForTexture:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="FillBuffer", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(Foundation.NSRange), typeof(System.Byte) }, Selector="fillBuffer:range:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForGPUAccess:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForGPUAccess:slice:level:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForCPUAccess:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForCPUAccess:slice:level:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ResetCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="resetCommandsInBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange), typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UIntPtr) }, Selector="copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="optimizeIndirectCommandBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetArgumentTable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTL4ArgumentTable) }, Selector="setArgumentTable:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BuildAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.MTL4BufferRange) }, Selector="buildAccelerationStructure:descriptor:scratchBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange), typeof(Metal.MTLAccelerationStructureRefitOptions) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAccelerationStructure:toAccelerationStructure:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteCompactedAccelerationStructureSize", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="writeCompactedAccelerationStructureSize:toBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAndCompactAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAndCompactAccelerationStructure:toAccelerationStructure:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteTimestamp", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTL4TimestampGranularity), typeof(Metal.IMTL4CounterHeap), typeof(System.UIntPtr) }, Selector="writeTimestampWithGranularity:intoHeap:atIndex:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stages", IsProperty=true, IsRequired=true, IsStatic=false, Name="Stages", PropertyType=typeof(Metal.MTLStages), Selector="stages")]
public interface IMTL4ComputeCommandEncoder : IDisposable, Metal.IMTL4CommandEncoder
[Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4ComputeCommandEncoder", WrapperType=typeof(Metal.MTL4ComputeCommandEncoderWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetComputePipelineState", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLComputePipelineState) }, Selector="setComputePipelineState:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetThreadgroupMemoryLength", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setThreadgroupMemoryLength:atIndex:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetImageblock", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setImageblockWidth:height:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreads:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroups:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UInt64), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroupsWithIndirectBuffer:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UInt64) }, Selector="dispatchThreadsWithIndirectBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="executeCommandsInBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UInt64) }, Selector="executeCommandsInBuffer:indirectBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(Metal.IMTLTexture) }, Selector="copyFromTexture:toTexture:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLBlitOption) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLBlitOption) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTensor", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents), typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents) }, Selector="copyFromTensor:sourceOrigin:sourceDimensions:toTensor:destinationOrigin:destinationDimensions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="GenerateMipmaps", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="generateMipmapsForTexture:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="FillBuffer", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(Foundation.NSRange), typeof(System.Byte) }, Selector="fillBuffer:range:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForGPUAccess:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForGPUAccess:slice:level:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForCPUAccess:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForCPUAccess:slice:level:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ResetCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="resetCommandsInBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange), typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UIntPtr) }, Selector="copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="optimizeIndirectCommandBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetArgumentTable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTL4ArgumentTable) }, Selector="setArgumentTable:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BuildAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.MTL4BufferRange) }, Selector="buildAccelerationStructure:descriptor:scratchBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange), typeof(Metal.MTLAccelerationStructureRefitOptions) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAccelerationStructure:toAccelerationStructure:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteCompactedAccelerationStructureSize", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="writeCompactedAccelerationStructureSize:toBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAndCompactAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAndCompactAccelerationStructure:toAccelerationStructure:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteTimestamp", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTL4TimestampGranularity), typeof(Metal.IMTL4CounterHeap), typeof(System.UIntPtr) }, Selector="writeTimestampWithGranularity:intoHeap:atIndex:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stages", IsProperty=true, IsRequired=true, IsStatic=false, Name="Stages", PropertyType=typeof(Metal.MTLStages), Selector="stages")]
[ObjCRuntime.UnsupportedSimulator("ios")]
public interface IMTL4ComputeCommandEncoder : IDisposable, Metal.IMTL4CommandEncoder
[Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4ComputeCommandEncoder", WrapperType=typeof(Metal.MTL4ComputeCommandEncoderWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetComputePipelineState", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLComputePipelineState) }, Selector="setComputePipelineState:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetThreadgroupMemoryLength", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setThreadgroupMemoryLength:atIndex:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetImageblock", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setImageblockWidth:height:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreads:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroups:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UInt64), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroupsWithIndirectBuffer:threadsPerThreadgroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UInt64) }, Selector="dispatchThreadsWithIndirectBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="executeCommandsInBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UInt64) }, Selector="executeCommandsInBuffer:indirectBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(Metal.IMTLTexture) }, Selector="copyFromTexture:toTexture:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLBlitOption) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLBlitOption) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTensor", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents), typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents) }, Selector="copyFromTensor:sourceOrigin:sourceDimensions:toTensor:destinationOrigin:destinationDimensions:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="GenerateMipmaps", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="generateMipmapsForTexture:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="FillBuffer", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(Foundation.NSRange), typeof(System.Byte) }, Selector="fillBuffer:range:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForGPUAccess:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForGPUAccess:slice:level:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForCPUAccess:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForCPUAccess:slice:level:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ResetCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="resetCommandsInBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange), typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UIntPtr) }, Selector="copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="optimizeIndirectCommandBuffer:withRange:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetArgumentTable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTL4ArgumentTable) }, Selector="setArgumentTable:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BuildAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.MTL4BufferRange) }, Selector="buildAccelerationStructure:descriptor:scratchBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange), typeof(Metal.MTLAccelerationStructureRefitOptions) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:options:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAccelerationStructure:toAccelerationStructure:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteCompactedAccelerationStructureSize", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="writeCompactedAccelerationStructureSize:toBuffer:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAndCompactAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAndCompactAccelerationStructure:toAccelerationStructure:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteTimestamp", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTL4TimestampGranularity), typeof(Metal.IMTL4CounterHeap), typeof(System.UIntPtr) }, Selector="writeTimestampWithGranularity:intoHeap:atIndex:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stages", IsProperty=true, IsRequired=true, IsStatic=false, Name="Stages", PropertyType=typeof(Metal.MTLStages), Selector="stages")]
[ObjCRuntime.UnsupportedSimulator("tvos")]
public interface IMTL4ComputeCommandEncoder : IDisposable, Metal.IMTL4CommandEncoder
[<Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4ComputeCommandEncoder", WrapperType=typeof(Metal.MTL4ComputeCommandEncoderWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetComputePipelineState", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLComputePipelineState) }, Selector="setComputePipelineState:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetThreadgroupMemoryLength", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setThreadgroupMemoryLength:atIndex:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetImageblock", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setImageblockWidth:height:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreads:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroups:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UInt64), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroupsWithIndirectBuffer:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UInt64) }, Selector="dispatchThreadsWithIndirectBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="executeCommandsInBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UInt64) }, Selector="executeCommandsInBuffer:indirectBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(Metal.IMTLTexture) }, Selector="copyFromTexture:toTexture:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLBlitOption) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLBlitOption) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTensor", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents), typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents) }, Selector="copyFromTensor:sourceOrigin:sourceDimensions:toTensor:destinationOrigin:destinationDimensions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="GenerateMipmaps", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="generateMipmapsForTexture:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="FillBuffer", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(Foundation.NSRange), typeof(System.Byte) }, Selector="fillBuffer:range:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForGPUAccess:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForGPUAccess:slice:level:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForCPUAccess:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForCPUAccess:slice:level:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ResetCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="resetCommandsInBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange), typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UIntPtr) }, Selector="copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="optimizeIndirectCommandBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetArgumentTable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTL4ArgumentTable) }, Selector="setArgumentTable:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BuildAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.MTL4BufferRange) }, Selector="buildAccelerationStructure:descriptor:scratchBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange), typeof(Metal.MTLAccelerationStructureRefitOptions) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAccelerationStructure:toAccelerationStructure:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteCompactedAccelerationStructureSize", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="writeCompactedAccelerationStructureSize:toBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAndCompactAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAndCompactAccelerationStructure:toAccelerationStructure:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteTimestamp", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTL4TimestampGranularity), typeof(Metal.IMTL4CounterHeap), typeof(System.UIntPtr) }, Selector="writeTimestampWithGranularity:intoHeap:atIndex:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stages", IsProperty=true, IsRequired=true, IsStatic=false, Name="Stages", PropertyType=typeof(Metal.MTLStages), Selector="stages")>]
type IMTL4ComputeCommandEncoder = interface
interface INativeObject
interface IDisposable
interface IMTL4CommandEncoder
[<Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4ComputeCommandEncoder", WrapperType=typeof(Metal.MTL4ComputeCommandEncoderWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetComputePipelineState", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLComputePipelineState) }, Selector="setComputePipelineState:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetThreadgroupMemoryLength", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setThreadgroupMemoryLength:atIndex:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetImageblock", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setImageblockWidth:height:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreads:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroups:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UInt64), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroupsWithIndirectBuffer:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UInt64) }, Selector="dispatchThreadsWithIndirectBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="executeCommandsInBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UInt64) }, Selector="executeCommandsInBuffer:indirectBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(Metal.IMTLTexture) }, Selector="copyFromTexture:toTexture:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLBlitOption) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLBlitOption) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTensor", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents), typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents) }, Selector="copyFromTensor:sourceOrigin:sourceDimensions:toTensor:destinationOrigin:destinationDimensions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="GenerateMipmaps", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="generateMipmapsForTexture:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="FillBuffer", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(Foundation.NSRange), typeof(System.Byte) }, Selector="fillBuffer:range:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForGPUAccess:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForGPUAccess:slice:level:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForCPUAccess:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForCPUAccess:slice:level:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ResetCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="resetCommandsInBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange), typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UIntPtr) }, Selector="copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="optimizeIndirectCommandBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetArgumentTable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTL4ArgumentTable) }, Selector="setArgumentTable:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BuildAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.MTL4BufferRange) }, Selector="buildAccelerationStructure:descriptor:scratchBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange), typeof(Metal.MTLAccelerationStructureRefitOptions) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAccelerationStructure:toAccelerationStructure:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteCompactedAccelerationStructureSize", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="writeCompactedAccelerationStructureSize:toBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAndCompactAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAndCompactAccelerationStructure:toAccelerationStructure:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteTimestamp", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTL4TimestampGranularity), typeof(Metal.IMTL4CounterHeap), typeof(System.UIntPtr) }, Selector="writeTimestampWithGranularity:intoHeap:atIndex:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stages", IsProperty=true, IsRequired=true, IsStatic=false, Name="Stages", PropertyType=typeof(Metal.MTLStages), Selector="stages")>]
[<ObjCRuntime.UnsupportedSimulator("ios")>]
type IMTL4ComputeCommandEncoder = interface
interface INativeObject
interface IDisposable
interface IMTL4CommandEncoder
[<Foundation.Protocol(BackwardsCompatibleCodeGeneration=false, Name="MTL4ComputeCommandEncoder", WrapperType=typeof(Metal.MTL4ComputeCommandEncoderWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetComputePipelineState", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLComputePipelineState) }, Selector="setComputePipelineState:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetThreadgroupMemoryLength", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setThreadgroupMemoryLength:atIndex:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetImageblock", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="setImageblockWidth:height:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreads:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.MTLSize), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroups:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreadgroups", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.UInt64), typeof(Metal.MTLSize) }, Selector="dispatchThreadgroupsWithIndirectBuffer:threadsPerThreadgroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="DispatchThreads", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.UInt64) }, Selector="dispatchThreadsWithIndirectBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="executeCommandsInBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ExecuteCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UInt64) }, Selector="executeCommandsInBuffer:indirectBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(Metal.IMTLTexture) }, Selector="copyFromTexture:toTexture:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:toTexture:destinationSlice:destinationLevel:sliceCount:levelCount:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTexture", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLSize), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLBlitOption) }, Selector="copyFromTexture:sourceSlice:sourceLevel:sourceOrigin:sourceSize:toBuffer:destinationOffset:destinationBytesPerRow:destinationBytesPerImage:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="copyFromBuffer:sourceOffset:toBuffer:destinationOffset:size:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLSize), typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr), typeof(Metal.MTLOrigin), typeof(Metal.MTLBlitOption) }, Selector="copyFromBuffer:sourceOffset:sourceBytesPerRow:sourceBytesPerImage:sourceSize:toTexture:destinationSlice:destinationLevel:destinationOrigin:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyFromTensor", ParameterByRef=new System.Boolean[] { false, false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents), typeof(Metal.IMTLTensor), typeof(Metal.MTLTensorExtents), typeof(Metal.MTLTensorExtents) }, Selector="copyFromTensor:sourceOrigin:sourceDimensions:toTensor:destinationOrigin:destinationDimensions:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="GenerateMipmaps", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="generateMipmapsForTexture:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="FillBuffer", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLBuffer), typeof(Foundation.NSRange), typeof(System.Byte) }, Selector="fillBuffer:range:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForGPUAccess:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForGpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForGPUAccess:slice:level:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture) }, Selector="optimizeContentsForCPUAccess:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeContentsForCpuAccess", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLTexture), typeof(System.UIntPtr), typeof(System.UIntPtr) }, Selector="optimizeContentsForCPUAccess:slice:level:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ResetCommandsInBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="resetCommandsInBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange), typeof(Metal.IMTLIndirectCommandBuffer), typeof(System.UIntPtr) }, Selector="copyIndirectCommandBuffer:sourceRange:destination:destinationIndex:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="OptimizeIndirectCommandBuffer", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLIndirectCommandBuffer), typeof(Foundation.NSRange) }, Selector="optimizeIndirectCommandBuffer:withRange:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="SetArgumentTable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTL4ArgumentTable) }, Selector="setArgumentTable:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="BuildAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.MTL4BufferRange) }, Selector="buildAccelerationStructure:descriptor:scratchBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="RefitAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false, false, false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4AccelerationStructureDescriptor), typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange), typeof(Metal.MTLAccelerationStructureRefitOptions) }, Selector="refitAccelerationStructure:descriptor:destination:scratchBuffer:options:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAccelerationStructure:toAccelerationStructure:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteCompactedAccelerationStructureSize", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.MTL4BufferRange) }, Selector="writeCompactedAccelerationStructureSize:toBuffer:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CopyAndCompactAccelerationStructure", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLAccelerationStructure), typeof(Metal.IMTLAccelerationStructure) }, Selector="copyAndCompactAccelerationStructure:toAccelerationStructure:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WriteTimestamp", ParameterByRef=new System.Boolean[] { false, false, false }, ParameterType=new System.Type[] { typeof(Metal.MTL4TimestampGranularity), typeof(Metal.IMTL4CounterHeap), typeof(System.UIntPtr) }, Selector="writeTimestampWithGranularity:intoHeap:atIndex:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="stages", IsProperty=true, IsRequired=true, IsStatic=false, Name="Stages", PropertyType=typeof(Metal.MTLStages), Selector="stages")>]
[<ObjCRuntime.UnsupportedSimulator("tvos")>]
type IMTL4ComputeCommandEncoder = interface
interface INativeObject
interface IDisposable
interface IMTL4CommandEncoder
- Attribute
- Implementiert
Hinweise
Eine Klasse, die diese Schnittstelle (und Unterklassen NSObject) implementiert, wird in Objective-C exportiert, da das Objective-C Protokoll implementiert wird, das diese Schnittstelle darstellt.
Eine Klasse kann auch Member aus dieser Schnittstelle implementieren, um Member aus dem Protokoll zu implementieren.
Eigenschaften
| Name | Beschreibung |
|---|---|
| CommandBuffer |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| Handle |
Handle (Zeiger) auf die nicht verwaltete Objektdarstellung. (Geerbt von INativeObject) |
| Label |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| Stages |
Diese Schnittstelle stellt das Objective-C-Protokoll |
Methoden
| Name | Beschreibung |
|---|---|
| BarrierAfterEncoderStages(MTLStages, MTLStages, MTL4VisibilityOptions) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| BarrierAfterQueueStages(MTLStages, MTLStages, MTL4VisibilityOptions) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| BarrierAfterStages(MTLStages, MTLStages, MTL4VisibilityOptions) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| BuildAccelerationStructure(IMTLAccelerationStructure, MTL4AccelerationStructureDescriptor, MTL4BufferRange) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyAccelerationStructure(IMTLAccelerationStructure, IMTLAccelerationStructure) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyAndCompactAccelerationStructure(IMTLAccelerationStructure, IMTLAccelerationStructure) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromBuffer(IMTLBuffer, UIntPtr, IMTLBuffer, UIntPtr, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromBuffer(IMTLBuffer, UIntPtr, UIntPtr, UIntPtr, MTLSize, IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLBlitOption) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromBuffer(IMTLBuffer, UIntPtr, UIntPtr, UIntPtr, MTLSize, IMTLTexture, UIntPtr, UIntPtr, MTLOrigin) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromTensor(IMTLTensor, MTLTensorExtents, MTLTensorExtents, IMTLTensor, MTLTensorExtents, MTLTensorExtents) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromTexture(IMTLTexture, IMTLTexture) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, IMTLTexture, UIntPtr, UIntPtr, UIntPtr, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLSize, IMTLBuffer, UIntPtr, UIntPtr, UIntPtr, MTLBlitOption) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLSize, IMTLBuffer, UIntPtr, UIntPtr, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLSize, IMTLTexture, UIntPtr, UIntPtr, MTLOrigin) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| CopyIndirectCommandBuffer(IMTLIndirectCommandBuffer, NSRange, IMTLIndirectCommandBuffer, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| DispatchThreadgroups(MTLSize, MTLSize) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| DispatchThreadgroups(UInt64, MTLSize) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| DispatchThreads(MTLSize, MTLSize) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| DispatchThreads(UInt64) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| EndEncoding() |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| ExecuteCommandsInBuffer(IMTLIndirectCommandBuffer, NSRange) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| ExecuteCommandsInBuffer(IMTLIndirectCommandBuffer, UInt64) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| FillBuffer(IMTLBuffer, NSRange, Byte) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| GenerateMipmaps(IMTLTexture) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| InsertDebugSignpost(String) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| OptimizeContentsForCpuAccess(IMTLTexture, UIntPtr, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| OptimizeContentsForCpuAccess(IMTLTexture) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| OptimizeContentsForGpuAccess(IMTLTexture, UIntPtr, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| OptimizeContentsForGpuAccess(IMTLTexture) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| OptimizeIndirectCommandBuffer(IMTLIndirectCommandBuffer, NSRange) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| PopDebugGroup() |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| PushDebugGroup(String) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| RefitAccelerationStructure(IMTLAccelerationStructure, MTL4AccelerationStructureDescriptor, IMTLAccelerationStructure, MTL4BufferRange, MTLAccelerationStructureRefitOptions) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| RefitAccelerationStructure(IMTLAccelerationStructure, MTL4AccelerationStructureDescriptor, IMTLAccelerationStructure, MTL4BufferRange) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| ResetCommandsInBuffer(IMTLIndirectCommandBuffer, NSRange) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| SetArgumentTable(IMTL4ArgumentTable) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| SetComputePipelineState(IMTLComputePipelineState) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| SetImageblock(UIntPtr, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| SetThreadgroupMemoryLength(UIntPtr, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| UpdateFence(IMTLFence, MTLStages) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| WaitForFence(IMTLFence, MTLStages) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| WriteCompactedAccelerationStructureSize(IMTLAccelerationStructure, MTL4BufferRange) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| WriteTimestamp(MTL4TimestampGranularity, IMTL4CounterHeap, UIntPtr) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| GetHandle(INativeObject) |
Diese Schnittstelle stellt das Objective-C-Protokoll |
| GetNonNullHandle(INativeObject, String) |
Diese Schnittstelle stellt das Objective-C-Protokoll |