IMTL4ComputeCommandEncoder Schnittstelle

Definition

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 MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
Handle

Handle (Zeiger) auf die nicht verwaltete Objektdarstellung.

(Geerbt von INativeObject)
Label

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
Stages

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

Methoden

Name Beschreibung
BarrierAfterEncoderStages(MTLStages, MTLStages, MTL4VisibilityOptions)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
BarrierAfterQueueStages(MTLStages, MTLStages, MTL4VisibilityOptions)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
BarrierAfterStages(MTLStages, MTLStages, MTL4VisibilityOptions)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
BuildAccelerationStructure(IMTLAccelerationStructure, MTL4AccelerationStructureDescriptor, MTL4BufferRange)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyAccelerationStructure(IMTLAccelerationStructure, IMTLAccelerationStructure)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyAndCompactAccelerationStructure(IMTLAccelerationStructure, IMTLAccelerationStructure)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromBuffer(IMTLBuffer, UIntPtr, IMTLBuffer, UIntPtr, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromBuffer(IMTLBuffer, UIntPtr, UIntPtr, UIntPtr, MTLSize, IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLBlitOption)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromBuffer(IMTLBuffer, UIntPtr, UIntPtr, UIntPtr, MTLSize, IMTLTexture, UIntPtr, UIntPtr, MTLOrigin)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromTensor(IMTLTensor, MTLTensorExtents, MTLTensorExtents, IMTLTensor, MTLTensorExtents, MTLTensorExtents)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromTexture(IMTLTexture, IMTLTexture)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, IMTLTexture, UIntPtr, UIntPtr, UIntPtr, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLSize, IMTLBuffer, UIntPtr, UIntPtr, UIntPtr, MTLBlitOption)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLSize, IMTLBuffer, UIntPtr, UIntPtr, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyFromTexture(IMTLTexture, UIntPtr, UIntPtr, MTLOrigin, MTLSize, IMTLTexture, UIntPtr, UIntPtr, MTLOrigin)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

CopyIndirectCommandBuffer(IMTLIndirectCommandBuffer, NSRange, IMTLIndirectCommandBuffer, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

DispatchThreadgroups(MTLSize, MTLSize)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

DispatchThreadgroups(UInt64, MTLSize)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

DispatchThreads(MTLSize, MTLSize)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

DispatchThreads(UInt64)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

EndEncoding()

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
ExecuteCommandsInBuffer(IMTLIndirectCommandBuffer, NSRange)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

ExecuteCommandsInBuffer(IMTLIndirectCommandBuffer, UInt64)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

FillBuffer(IMTLBuffer, NSRange, Byte)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

GenerateMipmaps(IMTLTexture)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

InsertDebugSignpost(String)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
OptimizeContentsForCpuAccess(IMTLTexture, UIntPtr, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

OptimizeContentsForCpuAccess(IMTLTexture)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

OptimizeContentsForGpuAccess(IMTLTexture, UIntPtr, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

OptimizeContentsForGpuAccess(IMTLTexture)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

OptimizeIndirectCommandBuffer(IMTLIndirectCommandBuffer, NSRange)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

PopDebugGroup()

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
PushDebugGroup(String)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
RefitAccelerationStructure(IMTLAccelerationStructure, MTL4AccelerationStructureDescriptor, IMTLAccelerationStructure, MTL4BufferRange, MTLAccelerationStructureRefitOptions)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

RefitAccelerationStructure(IMTLAccelerationStructure, MTL4AccelerationStructureDescriptor, IMTLAccelerationStructure, MTL4BufferRange)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

ResetCommandsInBuffer(IMTLIndirectCommandBuffer, NSRange)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

SetArgumentTable(IMTL4ArgumentTable)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

SetComputePipelineState(IMTLComputePipelineState)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

SetImageblock(UIntPtr, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

SetThreadgroupMemoryLength(UIntPtr, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

UpdateFence(IMTLFence, MTLStages)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
WaitForFence(IMTLFence, MTLStages)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

(Geerbt von IMTL4CommandEncoder)
WriteCompactedAccelerationStructureSize(IMTLAccelerationStructure, MTL4BufferRange)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

WriteTimestamp(MTL4TimestampGranularity, IMTL4CounterHeap, UIntPtr)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

Erweiterungsmethoden

Name Beschreibung
GetHandle(INativeObject)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

GetNonNullHandle(INativeObject, String)

Diese Schnittstelle stellt das Objective-C-Protokoll MTL4ComputeCommandEncoderdar.

Gilt für: