About Metal and This Guide
The Metal framework supports GPU-accelerated advanced 3D graphics rendering and data-parallel computation workloads. Metal provides a modern and streamlined API for fine-grained, low-level control of the organization, processing, and submission of graphics and computation commands, as well as the management of the associated data and resources for these commands. A primary goal of Metal is to minimize the CPU overhead incurred by executing GPU workloads.
At a Glance
This document describes the fundamental concepts of Metal: the command submission model, the memory management model, and the use of independently compiled code for graphics shader and data-parallel computation functions. The document then details how to use the Metal API to write an app.
You can find more details in the following chapters:
Fundamental Metal Concepts briefly describes the main features of Metal.
Command Organization and Execution Model explains how to create, commit, and submit commands to the GPU for execution.
Resource Objects: Buffers and Textures discusses the management of device memory, including buffer and texture objects that represent GPU memory allocations.
Functions and Libraries describes how Metal shading language code can be represented in a Metal app, and how Metal shading language code is loaded onto and executed by the GPU.
Graphics Rendering: Render Command Encoder describes how to render 3D graphics, including how to distribute graphics operations across multiple threads.
Data-Parallel Compute Processing: Compute Command Encoder explains how to perform data-parallel processing.
Buffer and Texture Operations: Blit Command Encoder describes how to copy data between textures and buffers.
Metal Tips and Techniques lists development tips, such as how to build libraries offline with compiled code.
You should be familiar with the Objective-C language and experienced in programming with OpenGL, OpenCL, or similar APIs.
The Metal Framework Reference is a collection of documents that describes the interfaces in the Metal framework.
The Metal Shading Language Guide is a document that specifies the Metal shading language, which is used to write a graphics shader or a compute function that is used by a Metal app.
In addition, several sample code projects using Metal are available in the Apple Developer Library.