---
title: "setBufferOffset(offset:attributeStride:index:)"
framework: metal
role: symbol
role_heading: Instance Method
path: "metal/mtlcomputecommandencoder/setbufferoffset(offset:attributestride:index:)"
---

# setBufferOffset(offset:attributeStride:index:)

Changes where the data begins and the distance between adjacent elements in a buffer already bound to the buffer argument table.

## Declaration

```swift
func setBufferOffset(offset: Int, attributeStride stride: Int, index: Int)
```

## Parameters

- `offset`: Where the data to bind begins, in bytes, from the start of the bound buffer.
- `stride`: The number of bytes between the start of one element and the start of the next.
- `index`: The index of the buffer to change in the argument table.

## Discussion

Discussion important: Only call this method when the buffer is part of stageInputDescriptor and has its stride set to MTLBufferLayoutStrideDynamic. _ _Prefer calling this method to unbinding and then rebinding data. For buffers binding to an argument using the device address space, align the offset to the data type’s size. The maximum size for an offset is 16 bytes. For buffers in the constant address space, the minimum alignment depends on the hardware running your app. See the Metal feature set tables (PDF) for information on each Apple GPU family.

## See Also

### Binding buffers

- [setBuffer(_:offset:index:)](metal/mtlcomputecommandencoder/setbuffer(_:offset:index:).md)
- [setBuffer(_:offset:attributeStride:index:)](metal/mtlcomputecommandencoder/setbuffer(_:offset:attributestride:index:).md)
- [setBuffers(_:offsets:range:)](metal/mtlcomputecommandencoder/setbuffers(_:offsets:range:).md)
- [setBuffers(_:offsets:attributeStrides:range:)](metal/mtlcomputecommandencoder/setbuffers(_:offsets:attributestrides:range:).md)
- [setBufferOffset(_:index:)](metal/mtlcomputecommandencoder/setbufferoffset(_:index:).md)
