TechnologiesGraphics, Imaging & Compositing

Metal

iOSmacOStvOSwatchOSvisionOS

Metal is a low-level GPU API for rendering and compute on iOS, macOS, tvOS, and visionOS. You build command buffers, encode work through encoders such as MTL4ComputeCommandEncoder, and submit it on a MTL4CommandQueue using allocators and argument tables like MTL4CommandAllocator and MTL4ArgumentTable. For ray tracing and spatial queries, you describe geometry with acceleration-structure descriptors including MTL4PrimitiveAccelerationStructureDescriptor and MTL4AccelerationStructureTriangleGeometryDescriptor. Compilation types such as MTL4Compiler, MTL4BinaryFunction, and MTL4ComputePipelineDescriptor let you prepare functions and pipeline state for execution on the GPU.

Devices and Architecture 3

The GPU abstraction your app queries for capabilities and uses to create every other Metal object.

  • Pr
    MTLDeviceiOS 8.0+
    @protocol MTLDevice
  • Cl
    MTLArchitectureiOS 17.0+
    @class MTLArchitecture
  • Pr
    MTLAllocationiOS 18.0+
    Base class for Metal allocations.

Metal 4 Command Submission 8

The Metal 4 queue, buffers, allocators, and feedback types that record and submit GPU work.

  • Pr
    MTL4CommandQueueiOS 26.0+
    An abstraction representing a command queue that you use commit and synchronize command buffers and to
  • Cl
    MTL4CommandQueueDescriptoriOS 26.0+
    Groups together parameters for the creation of a new command queue.
  • Pr
    MTL4CommandBufferiOS 26.0+
    Records a sequence of GPU commands.
  • Cl
    MTL4CommandBufferOptionsiOS 26.0+
    Options to configure a command buffer before encoding work into it.
  • Pr
    MTL4CommandAllocatoriOS 26.0+
    Manages the memory backing the encoding of GPU commands into command buffers.
  • Cl
    MTL4CommandAllocatorDescriptoriOS 26.0+
    Groups together parameters for creating a command allocator.
  • Cl
    MTL4CommitOptionsiOS 26.0+
    Represents options to configure a commit operation on a command queue.
  • Pr
    MTL4CommitFeedbackiOS 26.0+
    Describes an object containing debug information from Metal to your app after completing a workload.

Metal 4 Command Encoders 4

Encoders that translate render, compute, and machine-learning commands into Metal 4 command buffers.

  • Pr
    MTL4CommandEncoderiOS 26.0+
    An encoder that writes GPU commands into a command buffer.
  • Pr
    MTL4RenderCommandEncoderiOS 26.0+
    Encodes a render pass into a command buffer, including all its draw calls and configuration.
  • Pr
    MTL4ComputeCommandEncoderiOS 26.0+
    Encodes a compute pass and other memory operations into a command buffer.
  • Pr
    MTL4MachineLearningCommandEncoderiOS 26.0+
    Encodes commands for dispatching machine learning networks on Apple silicon.

Metal 4 Argument Tables 2

Tables and descriptors that bind resources to functions in the Metal 4 encoding model.

  • Pr
    MTL4ArgumentTableiOS 26.0+
    Provides a mechanism to manage and provide resource bindings for buffers, textures, sampler states and other Metal resources.
  • Cl
    MTL4ArgumentTableDescriptoriOS 26.0+
    Groups parameters for the creation of a Metal argument table.

Metal 4 Compilation and Functions 16

Compiler, archive, and function types that prepare Metal 4 shaders and pipeline state for execution.

  • Pr
    MTL4CompileriOS 26.0+
    A abstraction for a pipeline state and shader function compiler.
  • Cl
    MTL4CompilerDescriptoriOS 26.0+
    Groups together properties for creating a compiler context.
  • Cl
    MTL4CompilerTaskOptionsiOS 26.0+
    The configuration options that control the behavior of a compilation task for a Metal 4 compiler instance.
  • Pr
    MTL4ArchiveiOS 26.0+
    A read-only container that stores pipeline states from a shader compiler.
  • Pr
    MTL4BinaryFunctioniOS 26.0+
    Represents a binary function.
  • Cl
    MTL4BinaryFunctionDescriptoriOS 26.0+
    Base interface for other function-derived interfaces.
  • Cl
    MTL4FunctionDescriptoriOS 26.0+
    Base interface for describing a Metal 4 shader function.
  • Cl
    MTL4LibraryDescriptoriOS 26.0+
    Serves as the base descriptor for creating a Metal library.
  • Cl
    MTL4LibraryFunctionDescriptoriOS 26.0+
    Describes a shader function from a Metal library.
  • Cl
    MTL4SpecializedFunctionDescriptoriOS 26.0+
    Groups together properties to configure and create a specialized function by passing it to a factory method.
  • Cl
    MTL4StitchedFunctionDescriptoriOS 26.0+
    Groups together properties that describe a shader function suitable for stitching.
  • Cl
    MTL4StaticLinkingDescriptoriOS 26.0+
    Groups together properties to drive a static linking process.
  • Cl
    MTL4PipelineStageDynamicLinkingDescriptoriOS 26.0+
    Groups together properties to drive the dynamic linking process of a pipeline stage.
  • Cl
    MTL4RenderPipelineDynamicLinkingDescriptoriOS 26.0+
    Groups together properties that provide linking properties for render pipelines.
  • Pr
    MTL4PipelineDataSetSerializeriOS 26.0+
    A fast-addition container for collecting data during pipeline state creation.
  • Cl
    MTL4PipelineDataSetSerializerDescriptoriOS 26.0+
    Groups together properties to create a pipeline data set serializer.

Metal 4 Pipeline State 13

Descriptors that configure Metal 4 compute, render, mesh, tile, and machine-learning pipeline state.

  • Cl
    MTL4PipelineDescriptoriOS 26.0+
    Base type for descriptors you use for building pipeline state objects.
  • Cl
    MTL4PipelineOptionsiOS 26.0+
    Provides options controlling how to compile a pipeline state.
  • Cl
    MTL4ComputePipelineDescriptoriOS 26.0+
    Describes a compute pipeline state.
  • Cl
    MTL4RenderPipelineDescriptoriOS 26.0+
    Groups together properties to create a render pipeline state object.
  • Cl
    MTL4RenderPipelineColorAttachmentDescriptoriOS 26.0+
    An object that configures a single color attachment of a Metal 4 render pipeline.
  • Cl
    MTL4RenderPipelineColorAttachmentDescriptorArrayiOS 26.0+
    An array of color attachment descriptions for a render pipeline.
  • Cl
    MTL4RenderPipelineBinaryFunctionsDescriptoriOS 26.0+
    Allows you to specify additional binary functions to link to each stage of a render pipeline.
  • Cl
    MTL4MeshRenderPipelineDescriptoriOS 26.0+
    Groups together properties you use to create a mesh render pipeline state object.
  • Cl
    MTL4TileRenderPipelineDescriptoriOS 26.0+
    Groups together properties you use to create a tile render pipeline state object.
  • Cl
    MTL4MachineLearningPipelineDescriptoriOS 26.0+
    Description for a machine learning pipeline state.
  • Cl
    MTL4MachineLearningPipelineReflectioniOS 26.0+
    Represents reflection information for a machine learning pipeline state.
  • Pr
    MTL4MachineLearningPipelineStateiOS 26.0+
    A pipeline state that you can use with machine-learning encoder instances.
  • Cl
    MTL4RenderPassDescriptoriOS 26.0+
    Describes a render pass.

Metal 4 Acceleration Structures 11

Descriptors that describe ray-tracing geometry and instances for Metal 4 acceleration structures.

  • Cl
    MTL4AccelerationStructureDescriptoriOS 26.0+
    Base class for Metal 4 acceleration structure descriptors.
  • Cl
    MTL4AccelerationStructureGeometryDescriptoriOS 26.0+
    Base class for all Metal 4 acceleration structure geometry descriptors.
  • Cl
    MTL4PrimitiveAccelerationStructureDescriptoriOS 26.0+
    Descriptor for a primitive acceleration structure that directly references geometric shapes, such as triangles and
  • Cl
    MTL4AccelerationStructureTriangleGeometryDescriptoriOS 26.0+
    Describes triangle geometry suitable for ray tracing.
  • Cl
    MTL4AccelerationStructureBoundingBoxGeometryDescriptoriOS 26.0+
    Describes bounding-box geometry suitable for ray tracing.
  • Cl
    MTL4AccelerationStructureMotionTriangleGeometryDescriptoriOS 26.0+
    Describes motion triangle geometry, suitable for motion ray tracing.
  • Cl
    MTL4AccelerationStructureMotionBoundingBoxGeometryDescriptoriOS 26.0+
    Describes motion bounding box geometry, suitable for motion ray tracing.
  • Cl
    MTL4AccelerationStructureCurveGeometryDescriptoriOS 26.0+
    Describes curve geometry suitable for ray tracing.
  • Cl
    MTL4AccelerationStructureMotionCurveGeometryDescriptoriOS 26.0+
    Describes motion curve geometry, suitable for motion ray tracing.
  • Cl
    MTL4InstanceAccelerationStructureDescriptoriOS 26.0+
    Descriptor for an instance acceleration structure.
  • Cl
    MTL4IndirectInstanceAccelerationStructureDescriptoriOS 26.0+
    Descriptor for an "indirect" instance acceleration structure that allows providing the instance count and

Command Queues and Buffers 8

The queues, command buffers, and encoder protocols that record and submit GPU work in Metal.

  • Pr
    MTLCommandQueueiOS 8.0+
    @protocol MTLCommandQueue
  • Cl
    MTLCommandQueueDescriptoriOS 18.0+
    An object that configures the properties of a command queue before you create it.
  • Pr
    MTLCommandBufferiOS 8.0+
    @protocol MTLCommandBuffer
  • Cl
    MTLCommandBufferDescriptoriOS 14.0+
    @class MTLCommandBufferDescriptor
  • Pr
    MTLCommandBufferEncoderInfoiOS 14.0+
    @abstract Provides execution status information for a Metal command encoder.
  • Pr
    MTLCommandEncoderiOS 8.0+
    @protocol MTLCommandEncoder
  • Cl
    MTLIOCommandQueueDescriptoriOS 16.0+
    @interface MTLIOCommandQueueDescriptor
  • Cl
    MTLIndirectCommandBufferDescriptoriOS 12.0+
    @abstract

Render Command Encoding 9

Render pass descriptors and attachment types that configure how Metal draws into render targets.

  • Cl
    MTLRenderPassDescriptoriOS 8.0+
    @class MTLRenderPassDescriptor
  • Cl
    MTLRenderPassAttachmentDescriptoriOS 8.0+
    A base object that describes a single attachment of a render pass.
  • Cl
    MTLRenderPassColorAttachmentDescriptoriOS 8.0+
    An object that describes a color attachment and its load and store actions for a render pass.
  • Cl
    MTLRenderPassColorAttachmentDescriptorArrayiOS 8.0+
    An indexed collection of color attachment descriptors for a render pass.
  • Cl
    MTLRenderPassDepthAttachmentDescriptoriOS 8.0+
    An object that describes the depth attachment and its actions for a render pass.
  • Cl
    MTLRenderPassStencilAttachmentDescriptoriOS 8.0+
    An object that describes the stencil attachment and its actions for a render pass.
  • Cl
    MTLRenderPassSampleBufferAttachmentDescriptoriOS 14.0+
    An object that describes a sample buffer attachment for capturing counters during a render pass.
  • Cl
    MTLRenderPassSampleBufferAttachmentDescriptorArrayiOS 14.0+
    An indexed collection of sample buffer attachment descriptors for a render pass.
  • Cl
    MTLLogicalToPhysicalColorAttachmentMapiOS 26.0+
    Allows you to easily specify color attachment remapping from logical to physical indices.

Compute, Blit, and Resource-State Passes 11

Encoder protocols and pass descriptors for compute, blit, and resource-state work outside of rendering.

  • Pr
    MTLComputeCommandEncoderiOS 8.0+
    @protocol MTLComputeCommandEncoder
  • Cl
    MTLComputePassDescriptoriOS 14.0+
    @class MTLComputePassDescriptor
  • Cl
    MTLComputePassSampleBufferAttachmentDescriptoriOS 14.0+
    An object that describes a sample buffer attachment for capturing counters during a compute pass.
  • Cl
    MTLComputePassSampleBufferAttachmentDescriptorArrayiOS 14.0+
    An indexed collection of sample buffer attachment descriptors for a compute pass.
  • Pr
    MTLBlitCommandEncoderiOS 8.0+
    @protocol MTLBlitCommandEncoder
  • Cl
    MTLBlitPassDescriptoriOS 14.0+
    @class MTLBlitPassDescriptor
  • Cl
    MTLBlitPassSampleBufferAttachmentDescriptoriOS 14.0+
    An object that describes a sample buffer attachment for capturing counters during a blit pass.
  • Cl
    MTLBlitPassSampleBufferAttachmentDescriptorArrayiOS 14.0+
    An indexed collection of sample buffer attachment descriptors for a blit pass.
  • Cl
    MTLResourceStatePassDescriptoriOS 14.0+
    @class MTLResourceStatePassDescriptor
  • Cl
    MTLResourceStatePassSampleBufferAttachmentDescriptoriOS 14.0+
    An object that describes a sample buffer attachment for capturing counters during a resource-state pass.
  • Cl
    MTLResourceStatePassSampleBufferAttachmentDescriptorArrayiOS 14.0+
    An indexed collection of sample buffer attachment descriptors for a resource-state pass.

Render Pipeline State 9

Descriptors and reflection types that configure and inspect Metal render, mesh, and tile pipelines.

  • Cl
    MTLRenderPipelineDescriptoriOS 8.0+
    An object that configures a graphics render pipeline state before you create it.
  • Cl
    MTLRenderPipelineReflectioniOS 8.0+
    An object that describes the buffers, textures, and arguments of a render pipeline.
  • Cl
    MTLRenderPipelineFunctionsDescriptoriOS 15.0+
    An object that lists additional functions to link into a render pipeline.
  • Cl
    MTLRenderPipelineColorAttachmentDescriptoriOS 8.0+
    An object that configures a single color attachment, including blending, of a render pipeline.
  • Cl
    MTLRenderPipelineColorAttachmentDescriptorArrayiOS 8.0+
    An indexed collection of color attachment descriptors for a render pipeline.
  • Cl
    MTLMeshRenderPipelineDescriptoriOS 16.0+
    @class MTLMeshRenderPipelineDescriptor
  • Cl
    MTLTileRenderPipelineDescriptoriOS 11.0+
    An object that configures a tile render pipeline state for tile shading.
  • Cl
    MTLTileRenderPipelineColorAttachmentDescriptoriOS 11.0+
    An object that configures a single color attachment of a tile render pipeline.
  • Cl
    MTLTileRenderPipelineColorAttachmentDescriptorArrayiOS 11.0+
    An indexed collection of color attachment descriptors for a tile render pipeline.

Compute Pipeline State 3

Descriptors and reflection types that configure and inspect Metal compute pipeline state.

  • Cl
    MTLComputePipelineDescriptoriOS 9.0+
    An object that configures a compute pipeline state before you create it.
  • Cl
    MTLComputePipelineReflectioniOS 8.0+
    An object that describes the buffers, textures, and arguments of a compute pipeline.
  • Pr
    MTLComputePipelineStateiOS 8.0+
    @protocol MTLComputePipelineState

Depth, Stencil, and Sampler State 4

Descriptors and state objects that configure depth testing, stencil operations, and texture sampling.

  • Cl
    MTLDepthStencilDescriptoriOS 8.0+
    An object that configures depth and stencil testing before you create a depth-stencil state.
  • Cl
    MTLStencilDescriptoriOS 8.0+
    An object that configures the stencil test operations for one face of geometry.
  • Pr
    MTLDepthStencilStateiOS 8.0+
    A protocol for a compiled depth and stencil state you set on a render encoder.
  • Cl
    MTLSamplerDescriptoriOS 8.0+
    @class MTLSamplerDescriptor

Shader Compilation and Functions 14

Compile options, function descriptors, and stitching types that build and link Metal shader functions.

  • Cl
    MTLCompileOptionsiOS 8.0+
    An object that configures how Metal compiles shader source into a library.
  • Cl
    MTLFunctionDescriptoriOS 14.0+
    An object that identifies a function and its specialization within a shader library.
  • Cl
    MTLIntersectionFunctionDescriptoriOS 14.0+
    An object that identifies a custom intersection function for ray tracing.
  • Pr
    MTLFunctionHandleiOS 14.0+
    A protocol for a reference to a function usable from a function table during ray tracing.
  • Cl
    MTLFunctionReflectioniOS 26.0+
    Represents a reflection object containing information about a function in a Metal library.
  • Cl
    MTLFunctionConstantiOS 10.0+
    @interface MTLFunctionConstant
  • Cl
    MTLFunctionConstantValuesiOS 10.0+
    An object that holds the constant values used to specialize a shader function at build time.
  • Cl
    MTLLinkedFunctionsiOS 14.0+
    @class MTLLinkedFunctions
  • Pr
    MTLDynamicLibraryiOS 14.0+
    @protocol MTLDynamicLibrary
  • Cl
    MTLFunctionStitchingGraphiOS 15.0+
    @interface MTLFunctionStitchingGraph
  • Cl
    MTLFunctionStitchingInputNodeiOS 15.0+
    @interface MTLFunctionStitchingInputNode
  • Cl
    MTLFunctionStitchingFunctionNodeiOS 15.0+
    @interface MTLFunctionStitchingFunctionNode
  • Cl
    MTLFunctionStitchingAttributeAlwaysInlineiOS 15.0+
    @interface MTLFunctionStitchingAttributeAlwaysInline
  • Cl
    MTLStitchedLibraryDescriptoriOS 15.0+
    @interface MTLStitchedLibraryDescriptor

Binary Archives and Logging 4

Archives that cache compiled pipelines plus descriptors and containers for GPU shader logging.

  • Pr
    MTLBinaryArchiveiOS 14.0+
    @protocol MTLBinaryArchive
  • Cl
    MTLBinaryArchiveDescriptoriOS 14.0+
    @class MTLBinaryArchiveDescriptor
  • Cl
    MTLLogStateDescriptoriOS 18.0+
    An object that configures a log state for capturing GPU shader log messages.
  • Pr
    __MTLLogContaineriOS 14.0+
    A protocol for a container that delivers log messages produced by GPU shaders.

Resources and Memory 6

Buffers, heaps, residency sets, and resource views that allocate and manage GPU memory.

  • Pr
    MTLBufferiOS 8.0+
    @protocol MTLBuffer
  • Cl
    MTLHeapDescriptoriOS 10.0+
    @class MTLHeapDescriptor
  • Cl
    MTLResidencySetDescriptoriOS 18.0+
    @interface MTLResidencySetDescriptor
  • Cl
    MTLResourceViewPoolDescriptoriOS 26.0+
    Provides parameters for creating a resource view pool.
  • Cl
    MTLPipelineBufferDescriptoriOS 11.0+
    An object that configures the mutability and behavior of a buffer bound to a pipeline.
  • Cl
    MTLPipelineBufferDescriptorArrayiOS 11.0+
    An indexed collection of pipeline buffer descriptors.

Textures and Drawables 4

Texture descriptors, drawables, and shared handles that create and present image resources.

  • Cl
    MTLTextureDescriptoriOS 8.0+
    An object that configures the dimensions, format, and usage of a texture before you create it.
  • Cl
    MTLTextureViewDescriptoriOS 26.0+
    An object that configures a reinterpreted view of an existing texture.
  • Cl
    MTLSharedTextureHandleiOS 13.0+
    An object that references a texture shared across processes or devices.
  • Pr
    MTLDrawableiOS 8.0+
    @protocol MTLDrawable

Tensors 5

Descriptors and extents that define multidimensional tensor resources for machine-learning workloads.

  • Cl
    MTLTensorDescriptoriOS 26.0+
    A configuration type for creating new tensor instances.
  • Cl
    MTLTensorExtentsiOS 26.0+
    An array of length matching the rank, holding the dimensions of a tensor.
  • Cl
    MTLTensorAuxiliaryPlaneDescriptoriOS 27.0+
    A configuration for an auxiliary plane in a multi-plane tensor.
  • Cl
    MTLTensorAuxiliaryPlaneDescriptorMapiOS 27.0+
    A map of auxiliary plane descriptors keyed by plane type.
  • Cl
    MTLTensorBufferAttachmentsiOS 27.0+
    Per-plane buffer backing storage for multi-plane tensor creation.

Vertex and Stage Layout 12

Descriptors that lay out vertex attributes and stage input and output for the graphics pipeline.

  • Cl
    MTLVertexDescriptoriOS 8.0+
    An object that describes the layout of vertex data fed into a render pipeline.
  • Cl
    MTLVertexAttributeiOS 8.0+
    An object that describes a single vertex attribute declared in a shader.
  • Cl
    MTLVertexAttributeDescriptoriOS 8.0+
    An object that maps a vertex attribute to its format and buffer offset.
  • Cl
    MTLVertexAttributeDescriptorArrayiOS 8.0+
    An indexed collection of vertex attribute descriptors.
  • Cl
    MTLVertexBufferLayoutDescriptoriOS 8.0+
    An object that describes the stride and step behavior of a vertex buffer.
  • Cl
    MTLVertexBufferLayoutDescriptorArrayiOS 8.0+
    An indexed collection of vertex buffer layout descriptors.
  • Cl
    MTLAttributeiOS 10.0+
    An object that describes a per-patch or stage input or output attribute of a shader.
  • Cl
    MTLAttributeDescriptoriOS 10.0+
    An object that maps a stage input attribute to its format and buffer offset.
  • Cl
    MTLAttributeDescriptorArrayiOS 10.0+
    An indexed collection of stage input attribute descriptors.
  • Cl
    MTLBufferLayoutDescriptoriOS 10.0+
    An object that describes the stride and step behavior of a stage input buffer.
  • Cl
    MTLBufferLayoutDescriptorArrayiOS 10.0+
    An indexed collection of stage input buffer layout descriptors.
  • Cl
    MTLStageInputOutputDescriptoriOS 10.0+
    An object that describes the input and output layout of a compute or tessellation stage.

Argument Binding and Reflection 17

Encoders, bindings, and shader type descriptions that bind resources and reflect on shader arguments.

  • Pr
    MTLArgumentEncoderiOS 11.0+
    @protocol MTLArgumentEncoder
  • Cl
    MTLArgumentDescriptoriOS 11.0+
    @class MTLArgumentDescriptor
  • Cl
    MTLArgument
    MTLArgument
  • Pr
    MTLBindingiOS 16.0+
    A protocol that describes a resource binding of a shader function.
  • Pr
    MTLBufferBindingiOS 16.0+
    A protocol that describes a buffer binding of a shader function.
  • Pr
    MTLTextureBindingiOS 16.0+
    A protocol that describes a texture binding of a shader function.
  • Pr
    MTLThreadgroupBindingiOS 16.0+
    A protocol that describes a threadgroup memory binding of a shader function.
  • Pr
    MTLObjectPayloadBindingiOS 16.0+
    A protocol that describes an object-payload binding in a mesh shader pipeline.
  • Pr
    MTLTensorBindingiOS 26.0+
    An object that represents a tensor bound to a graphics or compute function or a machine learning function.
  • Cl
    MTLTypeiOS 11.0+
    A base object that describes the type of a shader argument or struct member.
  • Cl
    MTLStructTypeiOS 8.0+
    An object that describes a structure type and its members in a shader.
  • Cl
    MTLStructMemberiOS 8.0+
    An object that describes a single member of a shader structure type.
  • Cl
    MTLArrayTypeiOS 8.0+
    An object that describes an array type within a shader argument.
  • Cl
    MTLPointerTypeiOS 11.0+
    An object that describes a pointer type within a shader argument.
  • Cl
    MTLTextureReferenceTypeiOS 11.0+
    An object that describes a texture reference type within a shader argument.
  • Cl
    MTLTensorReferenceTypeiOS 26.0+
    An object that represents a tensor in the shading language in a struct or array.
  • Cl
    MTLTensorAuxiliaryPlaneTypeiOS 27.0+
    An auxiliary plane that a shader's tensor argument requires.

Acceleration Structures and Ray Tracing 19

Acceleration structures, encoders, and geometry descriptors that build ray-tracing data on the GPU.

  • Pr
    MTLAccelerationStructureiOS 14.0+
    A protocol for a GPU resource holding geometry data the hardware uses to accelerate ray tracing.
  • Pr
    MTLAccelerationStructureCommandEncoderiOS 14.0+
    A protocol for encoding commands that build, refit, and copy acceleration structures.
  • Cl
    MTLAccelerationStructureDescriptoriOS 14.0+
    @brief Base class for acceleration structure descriptors. Do not use this class directly. Use
  • Cl
    MTLAccelerationStructureGeometryDescriptoriOS 14.0+
    @brief Base class for all geometry descriptors. Do not use this class directly. Use one of the derived
  • Cl
    MTLPrimitiveAccelerationStructureDescriptoriOS 14.0+
    @brief Descriptor for a primitive acceleration structure
  • Cl
    MTLAccelerationStructureTriangleGeometryDescriptoriOS 14.0+
    @brief Descriptor for triangle geometry
  • Cl
    MTLAccelerationStructureBoundingBoxGeometryDescriptoriOS 14.0+
    @brief Descriptor for bounding box geometry
  • Cl
    MTLAccelerationStructureMotionTriangleGeometryDescriptoriOS 15.0+
    @brief Descriptor for motion triangle geometry
  • Cl
    MTLAccelerationStructureMotionBoundingBoxGeometryDescriptoriOS 15.0+
    @brief Descriptor for motion bounding box geometry
  • Cl
    MTLAccelerationStructureCurveGeometryDescriptoriOS 17.0+
    @brief Acceleration structure geometry descriptor describing geometry
  • Cl
    MTLAccelerationStructureMotionCurveGeometryDescriptoriOS 17.0+
    @brief Acceleration structure motion geometry descriptor describing
  • Cl
    MTLInstanceAccelerationStructureDescriptoriOS 14.0+
    @brief Descriptor for an instance acceleration structure
  • Cl
    MTLIndirectInstanceAccelerationStructureDescriptoriOS 17.0+
    @brief Descriptor for an instance acceleration structure built with an indirected buffer of instances.
  • Cl
    MTLMotionKeyframeDataiOS 15.0+
    @brief MTLbuffer and description how the data is stored in it.
  • Cl
    MTLAccelerationStructurePassDescriptoriOS 16.0+
    @class MTLAccelerationStructurePassDescriptor
  • Cl
    MTLAccelerationStructurePassSampleBufferAttachmentDescriptoriOS 16.0+
    An object that describes a sample buffer attachment for an acceleration-structure pass.
  • Cl
    MTLAccelerationStructurePassSampleBufferAttachmentDescriptorArrayiOS 16.0+
    An indexed collection of sample buffer attachment descriptors for an acceleration-structure pass.
  • Cl
    MTLIntersectionFunctionTableDescriptoriOS 14.0+
    An object that configures a table of intersection functions for ray tracing.
  • Cl
    MTLVisibleFunctionTableDescriptoriOS 14.0+
    An object that configures a table of visible functions callable from shaders.

Synchronization 5

Events, fences, and listeners that coordinate ordering between GPU and CPU work.

  • Pr
    MTLEventiOS 12.0+
    A protocol for an object that synchronizes execution between command buffers on the GPU.
  • Pr
    MTLSharedEventiOS 12.0+
    A protocol for an event that synchronizes work across processes, devices, or the CPU.
  • Cl
    MTLSharedEventHandleiOS 12.0+
    An object that references a shared event for use across process boundaries.
  • Cl
    MTLSharedEventListeneriOS 12.0+
    @class MTLSharedEventListener
  • Pr
    MTLFenceiOS 10.0+
    A protocol for a lightweight object that tracks resource dependencies within a command buffer.

GPU Counters and Profiling 6

Counter sets, sample buffers, and heaps that capture GPU performance and timing data.

  • Pr
    MTLCounteriOS 14.0+
    @protocol MTLCounter
  • Pr
    MTLCounterSetiOS 14.0+
    @protocol MTLCounterSet
  • Pr
    MTLCounterSampleBufferiOS 14.0+
    @protocol MTLCounterSampleBuffer
  • Cl
    MTLCounterSampleBufferDescriptoriOS 14.0+
    @interface MTLCounterSampleBufferDescriptor
  • Pr
    MTL4CounterHeapiOS 26.0+
    Represents an opaque, driver-controlled section of memory that can store GPU counter data.
  • Cl
    MTL4CounterHeapDescriptoriOS 26.0+
    Groups together parameters for configuring a counter heap object at creation time.

GPU Capture and Debugging 3

Managers and scopes that capture GPU command streams for inspection in debugging tools.

  • Cl
    MTLCaptureManageriOS 11.0+
    An object that starts and stops GPU command capture for inspection in debugging tools.
  • Cl
    MTLCaptureDescriptoriOS 13.0+
    An object that configures a GPU capture, including its scope and destination.
  • Pr
    MTLCaptureScopeiOS 11.0+
    A protocol that defines the boundaries of a GPU capture region.

Variable Rasterization Rate 4

Descriptors and arrays that map screen regions to reduced rasterization rates for foveated rendering.

  • Cl
    MTLRasterizationRateMapDescriptoriOS 13.0+
    @interface MTLRasterizationRateMapDescriptor
  • Cl
    MTLRasterizationRateLayerDescriptoriOS 13.0+
    @interface MTLRasterizationRateLayerDescriptor
  • Cl
    MTLRasterizationRateLayerArrayiOS 13.0+
    @interface MTLRasterizationRateLayerArray
  • Cl
    MTLRasterizationRateSampleArrayiOS 13.0+
    @interface MTLRasterizationRateSampleArray

Structures 80

  • St
    MTL4BinaryFunctionOptionsiOS 26.0+
    Options for configuring the creation of binary functions.
  • St
    MTL4BufferRange
    @brief A struct representing a range of a Metal buffer. The offset into the buffer is included in the address.
  • St
    MTL4VisibilityOptionsiOS 26.0+
    Memory consistency options for synchronization commands.
  • St
    MTL4CommandQueueErroriOS 26.0+
  • St
    MTL4UpdateSparseTextureMappingOperationiOS 26.0+
    Groups together arguments for an operation to update a sparse texture mapping.
  • St
    MTL4CopySparseTextureMappingOperationiOS 26.0+
    Groups together arguments for an operation to copy a sparse texture mapping.
  • St
    MTL4UpdateSparseBufferMappingOperationiOS 26.0+
    Groups together arguments for an operation to update a sparse buffer mapping.
  • St
    MTL4CopySparseBufferMappingOperationiOS 26.0+
    Groups together arguments for an operation to copy a sparse buffer mapping.
  • St
    MTL4TimestampHeapEntryiOS 26.0+
    Represents a timestamp data entry in a counter heap of type `MTL4CounterHeapTypeTimestamp`.
  • St
    MTL4PipelineDataSetSerializerConfigurationiOS 26.0+
    Configuration options for pipeline dataset serializer objects.
  • St
    MTL4ShaderReflectioniOS 26.0+
    Option mask for requesting reflection information at pipeline build time.
  • St
    MTL4RenderEncoderOptionsiOS 26.0+
    Custom render pass options you specify at encoder creation time.
  • St
    MTLAccelerationStructureRefitOptionsiOS 16.0+
    @enum MTLAccelerationStructureRefitOptions
  • St
    MTLAccelerationStructureUsageiOS 14.0+
  • St
    MTLAccelerationStructureInstanceOptionsiOS 14.0+
  • St
    MTLAccelerationStructureInstanceDescriptoriOS 14.0+
Show 64 more
  • St
    MTLAccelerationStructureUserIDInstanceDescriptoriOS 15.0+
  • St
    MTLAccelerationStructureMotionInstanceDescriptoriOS 15.0+
  • St
    MTLIndirectAccelerationStructureInstanceDescriptoriOS 17.0+
  • St
    MTLIndirectAccelerationStructureMotionInstanceDescriptoriOS 17.0+
  • St
    _MTLPackedFloat3
  • St
    MTLPackedFloatQuaternion
  • St
    _MTLPackedFloat4x3
  • St
    _MTLAxisAlignedBoundingBox
    @brief An axis aligned bounding box with a min and max point
  • St
    MTLComponentTransform
    @brief A transformation represented by individual components such as translation and
  • St
    MTLBinaryArchiveErroriOS 14.0+
  • St
    MTLBlitOptioniOS 9.0+
    @enum MTLBlitOption
  • St
    MTLCommandBufferErroriOS 8.0+
  • St
    MTLCommandBufferErrorOptioniOS 14.0+
    @abstract Options for controlling the error reporting for Metal command buffer objects.
  • St
    MTLResourceUsageiOS 11.0+
    @brief Describes how a resource will be used by a shader through an argument buffer
  • St
    MTLBarrierScopeiOS 12.0+
    @brief Describes the types of resources that the a barrier operates on
  • St
    MTLStagesiOS 26.0+
    Describes stages of GPU work.
  • St
    MTLDispatchThreadgroupsIndirectArguments
  • St
    MTLDispatchThreadsIndirectArguments
  • St
    MTLStageInRegionIndirectArgumentsiOS 12.0+
  • St
    MTLCommonCounteriOS 14.0+
    @enum MTLCommonCounter
  • St
    MTLCommonCounterSetiOS 14.0+
    @enum MTLCommonCounterSet
  • St
    MTLCounterResultTimestampiOS 14.0+
  • St
    MTLCounterResultStageUtilizationiOS 14.0+
  • St
    MTLCounterResultStatisticiOS 14.0+
  • St
    MTLCounterSampleBufferErroriOS 14.0+
  • St
    MTLPipelineOptioniOS 8.0+
    @enum MTLPipelineOption
  • St
    MTLAccelerationStructureSizes
    @brief Describes the memory requirements for an acceleration structure
  • St
    MTLDeviceErroriOS 26.4+
  • St
    MTLSizeAndAlign
    @abstract Represent a memory size and alignment in bytes.
  • St
    NSDeviceCertificationiOS 18.0+
  • St
    NSProcessPerformanceProfileiOS 18.0+
  • St
    MTLDynamicLibraryErroriOS 14.0+
  • St
    MTLFunctionOptionsiOS 14.0+
  • St
    MTLStitchedLibraryOptionsiOS 18.0+
    @abstract
  • St
    MTLIOErroriOS 16.0+
  • St
    MTLIndirectCommandTypeiOS 12.0+
    @abstract
  • St
    MTLIndirectCommandBufferExecutionRangeiOS 13.0+
    @abstract The data layout required for specifying an indirect command buffer execution range.
  • St
    MTLIntersectionFunctionBufferArguments
    @brief struct containing arguments for intersection function buffers.
  • St
    MTLIntersectionFunctionSignatureiOS 14.0+
    @brief Signature defining what data is provided to an intersection function. The signature
  • St
    MTLLibraryErroriOS 8.0+
  • St
    MTLScissorRect
  • St
    MTLViewport
  • St
    MTLDrawPrimitivesIndirectArguments
  • St
    MTLDrawIndexedPrimitivesIndirectArguments
  • St
    MTLVertexAmplificationViewMappingiOS 13.0+
  • St
    MTLDrawPatchIndirectArguments
  • St
    MTLQuadTessellationFactorsHalf
  • St
    MTLTriangleTessellationFactorsHalf
  • St
    MTLRenderStagesiOS 10.0+
    @abstract Generic render stage enum
  • St
    MTLClearColor
  • St
    MTLStoreActionOptionsiOS 11.0+
  • St
    MTLColorWriteMaskiOS 8.0+
  • St
    MTLResourceOptionsiOS 8.0+
  • St
    MTLMapIndirectArguments
    @enum MTLMapIndirectArguments
  • St
    MTLTensorErroriOS 26.0+
  • St
    MTLTensorUsageiOS 26.0+
    The type that represents the different contexts for a tensor.
  • St
    MTLTextureSwizzleChannelsiOS 13.0+
  • St
    MTLTextureUsageiOS 9.0+
    @enum MTLTextureUsage
  • St
    MTLOrigin
    @struct MTLOrigin
  • St
    MTLSize
    @typedef MTLSize
  • St
    MTLRegion
    @struct MTLRegion
  • St
    MTLSamplePosition
    @struct MTLSamplePosition
  • St
    MTLResourceIDiOS 16.0+
    @typedef MTLResourceID
  • St
    MTLLogContaineriOS 14.0+

Enumerations 93

  • En
    MTL4CompilerTaskStatusiOS 26.0+
    Represents the status of a compiler task.
  • En
    MTL4CounterHeapTypeiOS 26.0+
    Defines the type of a ``MTL4CounterHeap`` and the contents of its entries.
  • En
    MTL4TimestampGranularityiOS 26.0+
    Provides a hint to the system about the desired accuracy when writing GPU counter timestamps.
  • En
    MTL4AlphaToOneStateiOS 26.0+
    Enumeration for controlling alpha-to-one state of a pipeline state object.
  • En
    MTL4AlphaToCoverageStateiOS 26.0+
    Enumeration for controlling alpha-to-coverage state of a pipeline state object.
  • En
    MTL4BlendStateiOS 26.0+
    Enumeration for controlling the blend state of a pipeline state object.
  • En
    MTL4IndirectCommandBufferSupportStateiOS 26.0+
    Enumeration for controlling support for ``MTLIndirectCommandBuffer``.
  • En
    MTL4LogicalToPhysicalColorAttachmentMappingStateiOS 26.0+
    Enumerates possible behaviors of how a pipeline maps its logical outputs to its color attachments.
  • En
    MTLMatrixLayoutiOS 18.0+
  • En
    MTLMotionBorderModeiOS 15.0+
    @brief Describes what happens to the object before the first motion key and after the last
  • En
    MTLCurveTypeiOS 17.0+
    @brief Curve types
  • En
    MTLCurveBasisiOS 17.0+
    @brief Basis function to use to interpolate curve control points
  • En
    MTLCurveEndCapsiOS 17.0+
    @brief Type of end cap to insert at the beginning and end of each connected
  • En
    MTLAccelerationStructureInstanceDescriptorTypeiOS 15.0+
  • En
    MTLTransformTypeiOS 18.0+
  • En
    MTLIndexTypeiOS 8.0+
Show 77 more
  • En
    MTLBindingTypeiOS 14.0+
    @enum MTLBindingsType
  • En
    MTLArgumentType
    @enum MTLArgumentType
  • En
    MTLBindingAccess
  • En
    MTLCaptureErroriOS 13.0+
  • En
    MTLCaptureDestinationiOS 13.0+
    The destination where you want the GPU trace to be captured to.
  • En
    MTLCommandBufferStatusiOS 8.0+
    @enum MTLCommandBufferStatus
  • En
    MTLCommandEncoderErrorStateiOS 14.0+
    @abstract The error states for a Metal command encoder after command buffer execution.
  • En
    MTLDispatchTypeiOS 12.0+
    @enum MTLDispatchType
  • En
    MTLDataTypeiOS 8.0+
    An enumeration of the different data types in Metal.
  • En
    MTLCompareFunctioniOS 8.0+
  • En
    MTLStencilOperationiOS 8.0+
  • En
    MTLIOCompressionMethod
  • En
    MTLFeatureSet
  • En
    MTLGPUFamilyiOS 13.0+
  • En
    MTLReadWriteTextureTieriOS 11.0+
    @enum MTLReadWriteTextureTier
  • En
    MTLArgumentBuffersTieriOS 11.0+
    @enum MTLArgumentBuffersTier
  • En
    MTLSparseTextureRegionAlignmentModeiOS 13.0+
    @enum MTLSparseTextureRegionAlignmentMode
  • En
    MTLCounterSamplingPointiOS 14.0+
    @enum MTLCounterSamplingPoint
  • En
    MTLFunctionLogTypeiOS 14.0+
  • En
    MTLHeapTypeiOS 13.0+
    @enum MTLHeapType
  • En
    MTLIOStatusiOS 16.0+
  • En
    MTLIOPriorityiOS 16.0+
  • En
    MTLIOCommandQueueTypeiOS 16.0+
  • En
    MTLIOCompressionStatusiOS 16.0+
  • En
    MTLPatchTypeiOS 10.0+
  • En
    MTLFunctionTypeiOS 8.0+
    @enum MTLFunctionType
  • En
    MTLLanguageVersioniOS 9.0+
  • En
    MTLLibraryTypeiOS 14.0+
  • En
    MTLLibraryOptimizationLeveliOS 16.0+
    @enum MTLLibraryOptimizationLevel
  • En
    MTLCompileSymbolVisibilityiOS 16.4+
  • En
    MTLMathMode
    @enum MTLMathMode
  • En
    MTLMathFloatingPointFunctions
    @enum MTLMathFloatingPointFunctions
  • En
    MTLLogLeveliOS 18.0+
    @enum MTLLogLevel
  • En
    MTLLogStateErroriOS 18.0+
    @enum
  • En
    MTLMutabilityiOS 11.0+
    @enum MTLMutability
  • En
    MTLShaderValidationiOS 18.0+
  • En
    MTLPixelFormatiOS 8.0+
  • En
    MTLPrimitiveTypeiOS 8.0+
  • En
    MTLVisibilityResultModeiOS 8.0+
  • En
    MTLCullModeiOS 8.0+
  • En
    MTLWindingiOS 8.0+
  • En
    MTLDepthClipModeiOS 9.0+
  • En
    MTLTriangleFillModeiOS 8.0+
  • En
    MTLLoadActioniOS 8.0+
  • En
    MTLStoreActioniOS 8.0+
  • En
    MTLVisibilityResultTypeiOS 26.0+
    This enumeration controls if Metal accumulates visibility results between render encoders or resets them.
  • En
    MTLMultisampleDepthResolveFilteriOS 9.0+
    @enum MTLMultisampleDepthResolveFilter
  • En
    MTLMultisampleStencilResolveFilteriOS 12.0+
    @enum MTLMultisampleStencilResolveFilter
  • En
    MTLBlendFactoriOS 8.0+
  • En
    MTLBlendOperationiOS 8.0+
  • En
    MTLPrimitiveTopologyClassiOS 12.0+
  • En
    MTLTessellationPartitionModeiOS 10.0+
  • En
    MTLTessellationFactorStepFunctioniOS 10.0+
  • En
    MTLTessellationFactorFormatiOS 10.0+
  • En
    MTLTessellationControlPointIndexTypeiOS 10.0+
  • En
    MTLPurgeableStateiOS 8.0+
    @enum MTLPurgeableOption
  • En
    MTLCPUCacheModeiOS 8.0+
    @enum MTLCPUCacheMode
  • En
    MTLStorageModeiOS 9.0+
    @enum MTLStorageMode
  • En
    MTLHazardTrackingModeiOS 13.0+
    @enum MTLHazardTrackingMode
  • En
    MTLSparsePageSizeiOS 16.0+
    @enum MTLSparsePageSize
  • En
    MTLBufferSparseTieriOS 26.0+
    Enumerates the different support levels for sparse buffers.
  • En
    MTLTextureSparseTieriOS 26.0+
    Enumerates the different support levels for sparse textures.
  • En
    MTLSparseTextureMappingModeiOS 13.0+
    @enum MTLSparseTextureMappingMode
  • En
    MTLSamplerMinMagFilteriOS 8.0+
    @enum MTLSamplerMinMagFilter
  • En
    MTLSamplerMipFilteriOS 8.0+
    @enum MTLSamplerMipFilter
  • En
    MTLSamplerAddressModeiOS 8.0+
    @enum MTLSamplerAddressMode
  • En
    MTLSamplerBorderColoriOS 14.0+
    @enum MTLSamplerBorderColor
  • En
    MTLSamplerReductionModeiOS 26.0+
    Configures how the sampler aggregates contributing samples to a final value.
  • En
    MTLAttributeFormatiOS 10.0+
  • En
    MTLStepFunctioniOS 10.0+
  • En
    MTLTensorDataTypeiOS 26.0+
    The possible data types for the elements of a tensor.
  • En
    MTLTensorPlaneTypeiOS 27.0+
    The possible tensor plane types.
  • En
    MTLTextureTypeiOS 8.0+
    @enum MTLTextureType
  • En
    MTLTextureSwizzleiOS 13.0+
  • En
    MTLTextureCompressionTypeiOS 15.0+
  • En
    MTLVertexFormatiOS 8.0+
    @enum MTLVertexFormat
  • En
    MTLVertexStepFunctioniOS 8.0+

Protocols 31

  • Pr
    MTLFunctionLogDebugLocationiOS 14.0+
  • Pr
    MTLFunctionLogiOS 14.0+
  • Pr
    MTLFunctionStitchingAttributeiOS 15.0+
    @protocol MTLFunctionStitchingAttribute
  • Pr
    MTLFunctionStitchingNodeiOS 15.0+
    @protocol MTLFunctionStitchingNode
  • Pr
    MTLHeapiOS 10.0+
    @protocol MTLHeap
  • Pr
    MTLIOCommandBufferiOS 16.0+
    @protocol MTLIOCommandBuffer
  • Pr
    MTLIOCommandQueueiOS 16.0+
    @protocol MTLIOCommandQueue
  • Pr
    MTLIOScratchBufferiOS 16.0+
    @protocol MTLIOScratchBuffer
  • Pr
    MTLIOScratchBufferAllocatoriOS 16.0+
    @protocol MTLIOScratchBufferAllocator
  • Pr
    MTLIOFileHandleiOS 16.0+
    @protocol MTLIOFileHandle
  • Pr
    MTLIndirectCommandBufferiOS 12.0+
  • Pr
    MTLIndirectRenderCommandiOS 12.0+
  • Pr
    MTLIndirectComputeCommandiOS 13.0+
  • Pr
    MTLIntersectionFunctionTableiOS 14.0+
  • Pr
    MTLFunctioniOS 8.0+
    @protocol MTLFunction
  • Pr
    MTLLibraryiOS 8.0+
Show 15 more
  • Pr
    MTLLogStateiOS 18.0+
  • Pr
    MTLParallelRenderCommandEncoderiOS 8.0+
    @protocol MTLParallelRenderCommandEncoder
  • Pr
    MTLRasterizationRateMapiOS 13.0+
    @protocol MTLRasterizationRateMap
  • Pr
    MTLRenderCommandEncoderiOS 8.0+
    @protocol MTLRenderCommandEncoder
  • Pr
    MTLRenderPipelineStateiOS 8.0+
    @protocol MTLRenderPipelineState
  • Pr
    MTLResidencySetiOS 18.0+
    @protocol MTLResidencySet
  • Pr
    MTLResourceiOS 8.0+
    @protocol MTLResource
  • Pr
    MTLResourceStateCommandEncoderiOS 13.0+
  • Pr
    MTLResourceViewPooliOS 26.0+
    Contains views over resources of a specific type, and allows you to manage those views.
  • Pr
    MTLSamplerStateiOS 8.0+
    @protocol MTLSamplerState
  • Pr
    MTLTensorAuxiliaryPlaneiOS 27.0+
    A type that represents the configuration and storage of an auxiliary plane in a multi-plane tensor.
  • Pr
    MTLTensoriOS 26.0+
    A resource representing a multi-dimensional array that you can use with machine learning workloads.
  • Pr
    MTLTextureiOS 8.0+
    @protocol MTLTexture
  • Pr
    MTLTextureViewPooliOS 26.0+
    A pool of lightweight texture views.
  • Pr
    MTLVisibleFunctionTableiOS 14.0+

Type Aliases 24

  • Ty
    MTL4CommitFeedbackHandler
    Defines the block signature for a callback Metal invokes to provide your app feedback after completing a workload.
  • Ty
    MTL4NewBinaryFunctionCompletionHandler
    Provides a signature for a callback block that Metal calls when the compiler finishes a build task for a binary function.
  • Ty
    MTL4NewMachineLearningPipelineStateCompletionHandler
    Provides a signature for a callback block that Metal calls when the compiler finishes a build task for a machine learning pipeline state.
  • Ty
    MTLPackedFloat3
  • Ty
    MTLPackedFloat4x3
  • Ty
    MTLAxisAlignedBoundingBox
    @brief An axis aligned bounding box with a min and max point
  • Ty
    MTLArgumentAccess
  • Ty
    MTLCommandBufferHandler
  • Ty
    MTLTimestamp
  • Ty
    MTLDrawablePresentedHandler
    @typedef MTLDrawablePresentedHandler
  • Ty
    MTLSharedEventNotificationBlock
  • Ty
    MTLGPUAddress
    A 64-bit unsigned integer type appropriate for storing GPU addresses.
  • Ty
    MTLIOCommandBufferHandler
  • Ty
    MTLIOCompressionContext
  • Ty
    MTLAutoreleasedRenderPipelineReflection
  • Ty
    MTLAutoreleasedComputePipelineReflection
Show 8 more
  • Ty
    MTLNewLibraryCompletionHandler
  • Ty
    MTLNewRenderPipelineStateCompletionHandler
  • Ty
    MTLNewRenderPipelineStateWithReflectionCompletionHandler
  • Ty
    MTLNewComputePipelineStateCompletionHandler
  • Ty
    MTLNewComputePipelineStateWithReflectionCompletionHandler
  • Ty
    MTLNewDynamicLibraryCompletionHandler
  • Ty
    MTLAutoreleasedArgument
  • Ty
    MTLCoordinate2D
    @typedef MTLCoordinate2D

Extends 2

NSNotificationProcessInfo
← Graphics, Imaging & Compositing