<!--
{
  "availability" : [
    "iOS: 11.0.0 -",
    "iPadOS: 11.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.13.0 -",
    "tvOS: 11.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/MTLPipelineBufferDescriptor",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Metal"
    ],
    "preciseIdentifier" : "c:objc(cs)MTLPipelineBufferDescriptor"
  },
  "title" : "MTLPipelineBufferDescriptor"
}
-->

# MTLPipelineBufferDescriptor

The mutability options for a buffer that a render or compute pipeline uses.

```
class MTLPipelineBufferDescriptor
```

## Overview

Metal can perform additional optimizations if you guarantee that neither the CPU nor the GPU modify a buffer’s contents before starting a pass. Use immutable buffers as much as possible to take advantage of Metal optimizations.

To declare that a buffer is immutable, set the [`mutability`](/documentation/Metal/MTLPipelineBufferDescriptor/mutability) property of their associated [`MTLPipelineBufferDescriptor`](/documentation/Metal/MTLPipelineBufferDescriptor) object to [`MTLMutability.immutable`](/documentation/Metal/MTLMutability/immutable).

## Topics

### Setting buffer mutability

[`mutability`](/documentation/Metal/MTLPipelineBufferDescriptor/mutability)

A mutability option that determines whether you can update a buffer’s contents before related commands use the buffer.

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

The options that determine the mutability of a buffer’s contents.



---

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)