The Metal Framework provides extremely low-overhead access to the GPU, enabling incredibly high performance for your sophisticated graphics rendering and computational tasks. Metal eliminates many performance bottlenecks—such as costly state validation—that are found in traditional graphics APIs. Metal moves all expensive state translation and compilation operations out of the critical path of your most performance sensitive rendering code. It provides precompiled shaders, state objects, and explicit command scheduling to ensure that your application achieves the highest possible performance and efficiency.
Graphics, compute, and blit commands can be used together seamlessly and efficiently. Metal is specifically designed to exploit modern architectural considerations, such as multiprocessing and shared memory, to make it easy to parallelize the creation of GPU commands.
A MTLRenderPassStencilAttachmentDescriptor object is used to configure an individual render target that has a texture with a stencil-renderable pixel format.
The MTLRenderPipelineDescriptor object specifies the rendering configuration state used during a graphics rendering pass, including rasterization (such as multisampling), visibility, blending, and graphics shader function state.
MTLStructMember is part of the reflection API that allows Metal framework code to query details about an argument of a Metal shading language function.
MTLStructType is part of the reflection API that allows Metal framework code to query details of a struct that is passed as an argument of a Metal shading language function.
A MTLVertexAttributeDescriptorArray object is an array of objects that defines how vertex attribute data is formatted and assigned to an index in the attribute argument table.
The MTLBuffer protocol defines the interface for objects that represent an allocation of unformatted, device-accessible memory that can contain any type of data.
The MTLCommandBuffer protocol defines the interface for a transient, single-use object that stores encoded commands that are eventually committed for execution by the GPU.
The MTLComputeCommandEncoder protocol defines the interface for encoding commands that specify the data-parallel compute processing state and execute the compute function.
The MTLDepthStencilState protocol defines the interface for a lightweight object used to encode how a graphics rendering pass should perform depth and stencil operations.
The MTLDrawable protocol defines the interface for an object that represents a displayable resource that can be used as a destination for rendering commands.
The MTLFunction protocol defines the interface for an object that represents a single Metal shader function that can be executed by the device as part of a graphics shader or compute function.
The MTLParallelRenderCommandEncoder protocol is used to define the interface for objects that can break up a single graphics rendering pass so that it can be encoded from multiple threads simultaneously.
The MTLRenderCommandEncoder protocol is used to define the interface for objects that encode graphics rendering state and commands into a command buffer.
The MTLRenderPipelineState protocol defines the interface for a lightweight object used to encode the state for a configured graphics rendering pipeline.