Instance Property


The buffer mutability options for a compute pipeline's kernel function.


@property(readonly) MTLPipelineBufferDescriptorArray *buffers;


This property holds an array of MTLPipelineBufferDescriptor objects, with each array index corresponding to the same index in the buffer argument table for the compute pipeline's kernel function.

Metal can perform additional optimizations if you guarantee that neither the CPU nor the GPU will modify a buffer's contents between the time the buffer is set in a function's argument table and the time its associated command buffer completes execution. Use immutable buffers as much as possible, for either regular buffers or argument buffers.

Listing 1

Setting the mutability for a buffer at a specific index of a kernel function

// Compute setup
// Set mutability for buffer at index 9
MTLComputePipelineDescriptor *computeDescriptor = [MTLComputePipelineDescriptor new];
computeDescriptor.buffers[9].mutability = MTLMutabilityImmutable;
// Compute pass
// Set immutable buffer at index 9
id <MTLComputeCommandEncoder> computeEncoder = [_commandBuffer computeCommandEncoder];
[computeEncoder setBuffer:_buffer offset:0 atIndex:9];

See Also

Specifying Buffer Mutability


An object that contains the mutability options for buffers used in a render or compute pass.