IMTLCommandBuffer Interface
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Protocol for commands that are run on a GPU
[Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V220) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V220) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")]
public interface IMTLCommandBuffer : IDisposable, ObjCRuntime.INativeObject
[Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V205) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V205) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")]
public interface IMTLCommandBuffer : IDisposable, ObjCRuntime.INativeObject
[Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V83) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V83) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")]
public interface IMTLCommandBuffer : IDisposable, ObjCRuntime.INativeObject
[Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")]
[Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V62) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")]
[Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V62) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")]
public interface IMTLCommandBuffer : IDisposable, ObjCRuntime.INativeObject
[<Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V220) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V220) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")>]
type IMTLCommandBuffer = interface
interface INativeObject
interface IDisposable
[<Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V205) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V205) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")>]
type IMTLCommandBuffer = interface
interface INativeObject
interface IDisposable
[<Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V83) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V83) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")>]
type IMTLCommandBuffer = interface
interface INativeObject
interface IDisposable
[<Foundation.Protocol(Name="MTLCommandBuffer", WrapperType=typeof(Metal.MTLCommandBufferWrapper))>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Enqueue", Selector="enqueue")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="Commit", Selector="commit")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilScheduled", Selector="waitUntilScheduled")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="WaitUntilCompleted", Selector="waitUntilCompleted")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoderDispatch", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLDispatchType) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDispatchType:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeWait", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeWaitForEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="EncodeSignal", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLEvent), typeof(System.UInt64) }, Selector="encodeSignalEvent:value:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateParallelRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLParallelRenderCommandEncoder), Selector="parallelRenderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable) }, Selector="presentDrawable:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawable", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:atTime:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PresentDrawableAfter", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(Metal.IMTLDrawable), typeof(System.Double) }, Selector="presentDrawable:afterMinimumDuration:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateRenderCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLRenderPassDescriptor) }, ReturnType=typeof(Metal.IMTLRenderCommandEncoder), Selector="renderCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PushDebugGroup", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.String) }, Selector="pushDebugGroup:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="PopDebugGroup", Selector="popDebugGroup")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateComputeCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLComputePassDescriptor) }, ReturnType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateBlitCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLBlitPassDescriptor) }, ReturnType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateResourceStateCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLResourceStatePassDescriptor) }, ReturnType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoder")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="CreateAccelerationStructureCommandEncoder", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.MTLAccelerationStructurePassDescriptor) }, ReturnType=typeof(Metal.IMTLAccelerationStructureCommandEncoder), Selector="accelerationStructureCommandEncoderWithDescriptor:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySet", ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(Metal.IMTLResidencySet) }, Selector="useResidencySet:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="UseResidencySets", ParameterByRef=new System.Boolean[] { false, false }, ParameterType=new System.Type[] { typeof(System.IntPtr), typeof(System.UIntPtr) }, Selector="useResidencySets:count:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="device", IsProperty=true, IsRequired=true, IsStatic=false, Name="Device", PropertyType=typeof(Metal.IMTLDevice), Selector="device")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="commandQueue", IsProperty=true, IsRequired=true, IsStatic=false, Name="CommandQueue", PropertyType=typeof(Metal.IMTLCommandQueue), Selector="commandQueue")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="retainedReferences", IsProperty=true, IsRequired=true, IsStatic=false, Name="RetainedReferences", PropertyType=typeof(System.Boolean), Selector="retainedReferences")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="label", IsProperty=true, IsRequired=true, IsStatic=false, Name="Label", PropertyType=typeof(System.String), Selector="label", SetterSelector="setLabel:")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="status", IsProperty=true, IsRequired=true, IsStatic=false, Name="Status", PropertyType=typeof(Metal.MTLCommandBufferStatus), Selector="status")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="error", IsProperty=true, IsRequired=true, IsStatic=false, Name="Error", PropertyType=typeof(Foundation.NSError), Selector="error")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="blitCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="BlitCommandEncoder", PropertyType=typeof(Metal.IMTLBlitCommandEncoder), Selector="blitCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="computeCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ComputeCommandEncoder", PropertyType=typeof(Metal.IMTLComputeCommandEncoder), Selector="computeCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelStartTime", PropertyType=typeof(System.Double), Selector="kernelStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="kernelEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="KernelEndTime", PropertyType=typeof(System.Double), Selector="kernelEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUStartTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuStartTime", PropertyType=typeof(System.Double), Selector="GPUStartTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="GPUEndTime", IsProperty=true, IsRequired=true, IsStatic=false, Name="GpuEndTime", PropertyType=typeof(System.Double), Selector="GPUEndTime")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="resourceStateCommandEncoder", IsProperty=true, IsRequired=true, IsStatic=false, Name="ResourceStateCommandEncoder", PropertyType=typeof(Metal.IMTLResourceStateCommandEncoder), Selector="resourceStateCommandEncoder")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="errorOptions", IsProperty=true, IsRequired=true, IsStatic=false, Name="ErrorOptions", PropertyType=typeof(Metal.MTLCommandBufferErrorOption), Selector="errorOptions")>]
[<Foundation.ProtocolMember(ArgumentSemantic=ObjCRuntime.ArgumentSemantic.None, GetterSelector="logs", IsProperty=true, IsRequired=true, IsStatic=false, Name="Logs", PropertyType=typeof(Metal.IMTLLogContainer), Selector="logs")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddScheduledHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V62) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addScheduledHandler:")>]
[<Foundation.ProtocolMember(IsProperty=false, IsRequired=true, IsStatic=false, Name="AddCompletedHandler", ParameterBlockProxy=new System.Type[] { typeof(ObjCRuntime.Trampolines+NIDActionArity1V62) }, ParameterByRef=new System.Boolean[] { false }, ParameterType=new System.Type[] { typeof(System.Action<Metal.IMTLCommandBuffer>) }, Selector="addCompletedHandler:")>]
type IMTLCommandBuffer = interface
interface INativeObject
interface IDisposable
- Derived
- Attributes
- Implements
Properties
| Name | Description |
|---|---|
| BlitCommandEncoder | |
| CommandQueue | |
| ComputeCommandEncoder | |
| Device | |
| Error | |
| ErrorOptions | |
| GpuEndTime |
Returns the time, in seconds, when the GPU stopped running the command buffer. |
| GpuStartTime |
Returns the time, in seconds, when the GPU started running the command buffer. |
| Handle |
Handle (pointer) to the unmanaged object representation. (Inherited from INativeObject) |
| KernelEndTime |
Returns the time, in seconds, when the GPU finished scheduling the command buffer. |
| KernelStartTime |
Returns the time, in seconds, when the GPU started scheduling the command buffer. |
| Label | |
| Logs | |
| ResourceStateCommandEncoder | |
| RetainedReferences | |
| Status | |