---
title: "memoryBarrier(resources:after:before:)"
framework: metal
role: symbol
role_heading: Instance Method
path: "metal/mtlrendercommandencoder/memorybarrier(resources:after:before:)"
---

# memoryBarrier(resources:after:before:)

Creates a memory barrier that enforces the order of write and read operations for specific resources.

## Declaration

```swift
func memoryBarrier(resources: [any MTLResource], after: MTLRenderStages, before: MTLRenderStages)
```

## Parameters

- `resources`: An array of doc://com.apple.metal/documentation/Metal/MTLResource instances the barrier applies to.
- `after`: The render stages of previous draw commands that modify resources.
- `before`: The render stages of subsequent draw commands that read or modify resources.

## Discussion

Discussion Memory barriers ensure the relevant stages of prior draw commands finish modifying resources before starting the stages of subsequent commands that depend on those resources. To determine whether a GPU supports memory barriers, see the Metal feature set tables (PDF).

## See Also

### Preventing resource access conflicts

- [waitForFence(_:before:)](metal/mtlrendercommandencoder/waitforfence(_:before:).md)
- [updateFence(_:after:)](metal/mtlrendercommandencoder/updatefence(_:after:).md)
- [memoryBarrier(scope:after:before:)](metal/mtlrendercommandencoder/memorybarrier(scope:after:before:).md)
