Metal Namespace

GPU-accelerated 3D rendering and data-parallel computation.


The Metal framework, introduced in iOS 8, provides low-level control of Graphical Processing Unit (GPU) accelerated rendering and data-parallel computation (GPGPU).

The Metal framework provides low-level access to the A7 GPU. Metal provides precompiled shaders, state objects, and explicit command scheduling. Its facilities can be used for either 3D rendering or General-Purpose GPU computation.


IMTLBlitCommandEncoderProtocol for writing data into frame buffers.
IMTLBufferSystem protocol for raw data that is accessible in strides.
IMTLCommandBufferProtocol for commands that are run on a GPU
IMTLCommandEncoderSystem protocol for enqueuing and writing commands into a buffer.
IMTLCommandQueueSystem protocol for objects that can queue command buffers for running on a GPU.
IMTLComputeCommandEncoderProtocol for encoding and running parallel commands on a GPU.
IMTLComputePipelineStateSystem protocol that represents a compiled compute program.
IMTLDepthStencilStateSystem protocol for describing how the depth stencil should interact with the depth buffer during rendering.
IMTLDeviceSystem protocol for interacting with a single graphics device.
IMTLDrawableInterface representing the required methods (if any) of the protocol Metal.MTLDrawable.
IMTLFunctionSystem protocol for shader functions that are suitable for use on a GPU in a shader or compute function.
IMTLLibrarySystem protocol for libraries of shaders.
IMTLParallelRenderCommandEncoderSystem protocol for breaking a single rendering pass into parallel command sets.
IMTLRenderCommandEncoderSystem protocol for encoding render commands and state into a buffer.
IMTLRenderPipelineStateSystem protocol for encoding the state of a rendering pipeline.
IMTLResourceSystem protocol for for allocated segments of GPU memory.
IMTLSamplerStateSystem protocol the way that shaders or compute kernels will sample textures.
IMTLTextureSystem protocol for image data that is used by vertex shaders, fragment shaders, and compute kernels.
MTLArgumentEncapsulates a single parameter to a Metal function.
MTLArgumentAccessFunction access restrictions of argument data in the shader code.
MTLArgumentTypeThe resource type of an argument of a function.
MTLArrayTypeEncapsulates the details of an array argument to a Metal function.
MTLBlendFactorArgument values for use with Metal.MTLBlendOperation.
MTLBlendOperationHow the source and destination values are combined.
MTLClearColorAn RGBA color representing a clear pixel.
MTLClearValueStruct that contains values that are used to clear various buffers and stencils.
MTLColorWriteMaskPermits or restricts writing to specific color channels.
MTLCommandBufferErrorEnumeration of error codes describing why a command buffer has failed.
MTLCommandBufferStatusThe state of the command-buffer state-machine. Enqueued->Committed->Scheduled->Completed.
MTLCompareFunctionHolds a comparison test. When the comparison test passes, the incoming fragment is compared to the stored data at the specified location.
MTLCompileOptionsConfigures the compilation of a Metal shader library.
MTLComputePipelineReflectionEncapsulates the details of the arguments of the compute function used to create an Metal.MTLComputePipelineState object.
MTLCpuCacheModeEnumerates what cache mode is used for CPU mapping of a resource.
MTLCullModeEnumerates modes for culling and which types of primitives are culled.
MTLDataTypeThe data type of a function argument, as used in the shader language code.
MTLDeallocatorCompletion handler for deallocating a buffer.
MTLDepthStencilDescriptorConfigures a depth stencil test operation.
MTLDeviceRepresents a single GPU.
MTLDevice_ExtensionsExtension methods to the Metal.IMTLDevice interface to support all the methods from the Metal.MTLDevice protocol.
MTLDrawableInterface definition for objects that can receive rendering commands.
MTLFeatureSetThe hardware feature set available on the device.
MTLFunctionTypeThe type of a Metal function.
MTLIndexTypeThe index type for an index buffer.
MTLLibraryErrorEnumerates errors possible in the creation of an MTLLibrary or MTLFunction object.
MTLLoadActionAn action performed at the start of a rendering pass.
MTLOriginThe location of a pixel in an image or texture.
MTLPipelineOptionOptions relating to argument information in the creation of a pipeline.
MTLPixelFormatThe format used by pixels, including color, depth, compression technigue, and data type for components.
MTLPrimitiveTypeEnumerates the primitive geometry used for drawing commands.
MTLPurgeableStateThe purgeable state of the resource.
MTLRegionA rectangle of pixels in an image or texture.
MTLRenderPassAttachmentDescriptorConfigures a render target of a framebuffer.
MTLRenderPassColorAttachmentDescriptorA Metal.MTLRenderPassAttachmentDescriptor that holds the clear color for the rendering pass.
MTLRenderPassColorAttachmentDescriptorArrayHolds an array of Metal.MTLRenderPassColorAttachmentDescriptor objects.
MTLRenderPassDepthAttachmentDescriptorA Metal.MTLRenderPassAttachmentDescriptor that holds the clear depth for a rendering pass.
MTLRenderPassDescriptorDefines the rendering target for pixels generated by a rendering pass.
MTLRenderPassStencilAttachmentDescriptorA Metal.MTLRenderPassAttachmentDescriptor that holds the clear stencil for a rendering pass.
MTLRenderPipelineColorAttachmentDescriptorConfigures a color attachment associated with a rendering pipeline.
MTLRenderPipelineColorAttachmentDescriptorArrayAn array of Metal.MTLRenderPipelineColorAttachmentDescriptor objects.
MTLRenderPipelineDescriptorConfigures a rendering pipeline with rasterization properties, visibility, blending, and shader functions.
MTLRenderPipelineErrorEnumerates errors possible in the creation of a MTLRenderPipelineState.
MTLRenderPipelineReflectionThe arguments (see Metal.MTLArgument) of a vertex or fragment function within a Metal.MTLRenderPipelineState.
MTLResourceOptionsHolds options used by buffer and texture objects.
MTLSamplerAddressModeThe wrapping mode. Used when a fetch falls outside the bounds of a texture.
MTLSamplerDescriptorConfigures a sampler (see Metal.MTLSamplerState).
MTLSamplerMinMagFilterOptions for calculating the pixel value returned within a mipmap level.
MTLSamplerMipFilterOptions for calculating the pixel value returned with multiple mipmap levels.
MTLScissorRectThe retangle used for the scissor fragment test.
MTLSizeThe dimensions of a grid, image, texture, or threadgroup.
MTLStencilDescriptorConfigures a stencil test operation.
MTLStencilOperationWhat to do if a stencil value passes or fails a comparison test.
MTLStoreActionThe action to be performed at the end of a rendering pass.
MTLStructMemberDescribes a single field within a Metal.MTLStructType struct.
MTLStructTypeDefines a type representing a struct, which can be passed as an argument to Metal functions.
MTLTextureDescriptorConfiguration for Metal.MTLTexture objects.
MTLTextureTypeThe dimensionality of each texture and how multiple images are arranged.
MTLTriangleFillModeHow to rasterize triangle and triangle-strip primitives.
MTLVertexAttributeAn attribute for per-vertex input to a vertex shader function.
MTLVertexAttributeDescriptorAn attribute for per-vertex input for a vertex shader function.
MTLVertexAttributeDescriptorArrayHolds an array of Metal.MTLVertexAttributeDescriptor objects.
MTLVertexBufferLayoutDescriptorConfigures how vertex and attribute data are fetched by a vertex shader function.
MTLVertexBufferLayoutDescriptorArrayHolds an array of Metal.MTLVertexBufferLayoutDescriptor objects.
MTLVertexDescriptorMaps vertex data in memory to attributes in a vertex shader.
MTLVertexFormatEnumerates vertex data formats (type and number).
MTLVertexStepFunctionThe frequency at which the vertex shader function should fetch attribute data.
MTLViewportDefines the clipping viewport.
MTLVisibilityResultModeWhether to monitor samples that pass depth and stencil tests.
MTLWindingVertex winding rule for front-facing primitives.