<!--
{
  "documentType" : "article",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/blit-passes",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Blit passes"
}
-->

# Blit passes

Encode a block information transfer pass to adjust and copy data to and from GPU resources, such as buffers and textures.

## Discussion

Your app can use a block information transfer (blit) pass to manage data within, and copy data between, buffers, textures, and other Metal resources. Start by creating a blit command encoder by calling an [`MTLCommandBuffer`](/documentation/Metal/MTLCommandBuffer) instance’s [`makeBlitCommandEncoder()`](/documentation/Metal/MTLCommandBuffer/makeBlitCommandEncoder()) method. Then use the [`MTLBlitCommandEncoder`](/documentation/Metal/MTLBlitCommandEncoder) instance’s methods to encode individual commands of your blit pass.

You also have the option to customize a blit pass’s runtime behavior, such as sampling GPU hardware data. To enable these options, configure an [`MTLBlitPassDescriptor`](/documentation/Metal/MTLBlitPassDescriptor) instance and pass it to the command buffer’s [`makeBlitCommandEncoder(descriptor:)`](/documentation/Metal/MTLCommandBuffer/makeBlitCommandEncoder(descriptor:)) method. For more information about sampling GPU hardware data in a blit pass, see the articles in [GPU counters and counter sample buffers](/documentation/Metal/gpu-counters-and-counter-sample-buffers), including:

- [Sampling GPU data into counter sample buffers](/documentation/Metal/sampling-gpu-data-into-counter-sample-buffers)
- [Converting a GPU’s counter data into a readable format](/documentation/Metal/converting-a-gpus-counter-data-into-a-readable-format)

## Topics

### Encoding a blit pass

[`MTLBlitCommandEncoder`](/documentation/Metal/MTLBlitCommandEncoder)

Encodes commands that copy and modify resources for a single blit pass.

[`MTLBlitOption`](/documentation/Metal/MTLBlitOption)

The options that enable behavior for some blit operations.

### Configuring a blit command encoder

[`MTLBlitPassDescriptor`](/documentation/Metal/MTLBlitPassDescriptor)

A configuration you create to customize a blit command encoder, which affects the runtime behavior of the blit pass you encode with it.

[`MTLBlitPassSampleBufferAttachmentDescriptor`](/documentation/Metal/MTLBlitPassSampleBufferAttachmentDescriptor)

A configuration that instructs the GPU where to store counter data from the beginning and end of a blit pass.

[`MTLBlitPassSampleBufferAttachmentDescriptorArray`](/documentation/Metal/MTLBlitPassSampleBufferAttachmentDescriptorArray)

A container that stores an array of sample buffer attachments for a blit pass.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)