<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.11.0 -",
    "tvOS: -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/MTLResourceOptions",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Metal"
    ],
    "preciseIdentifier" : "c:@E@MTLResourceOptions"
  },
  "title" : "MTLResourceOptions"
}
-->

# MTLResourceOptions

Optional arguments used to set the behavior of a resource.

```
struct MTLResourceOptions
```

## Topics

### Initializing resource options

[`init(rawValue:)`](/documentation/Metal/MTLResourceOptions/init(rawValue:))

### Specifying CPU cache modes

[`MTLResourceCPUCacheModeDefaultCache`](/documentation/Metal/MTLResourceOptions/MTLResourceCPUCacheModeDefaultCache)

The default CPU cache mode for the resource, which guarantees that read and write operations are executed in the expected order.

[`cpuCacheModeWriteCombined`](/documentation/Metal/MTLResourceOptions/cpuCacheModeWriteCombined)

A write-combined CPU cache mode that is optimized for resources that the CPU writes into, but never reads.

### Specifying storage modes

[`storageModeShared`](/documentation/Metal/MTLResourceOptions/storageModeShared)

The CPU and GPU share access to the resource, allocated in system memory.

[`storageModeManaged`](/documentation/Metal/MTLResourceOptions/storageModeManaged)

The CPU and GPU may maintain separate copies of the resource, and any changes need to be explicitly synchronized.

[`storageModePrivate`](/documentation/Metal/MTLResourceOptions/storageModePrivate)

The resource is only available to the GPU.

[`storageModeMemoryless`](/documentation/Metal/MTLResourceOptions/storageModeMemoryless)

The resource’s contents are only available to the GPU, and only exist temporarily during a render pass.

### Specifying hazard tracking

[`MTLResourceHazardTrackingModeDefault`](/documentation/Metal/MTLResourceOptions/MTLResourceHazardTrackingModeDefault)

An option specifying that the default tracking mode should be used.

[`hazardTrackingModeTracked`](/documentation/Metal/MTLResourceOptions/hazardTrackingModeTracked)

An option that instructs Metal to apply safeguards for a resource at runtime
to avoid memory hazards for the applicable commands.

[`hazardTrackingModeUntracked`](/documentation/Metal/MTLResourceOptions/hazardTrackingModeUntracked)

A resource option that instructs Metal to ignore memory hazards for a resource at runtime.

### Deprecated options

[`MTLResourceOptionCPUCacheModeDefault`](/documentation/Metal/MTLResourceOptions/MTLResourceOptionCPUCacheModeDefault)

This constant was deprecated in iOS 9.0 and macOS 10.11.

[`optionCPUCacheModeWriteCombined`](/documentation/Metal/MTLResourceOptions/optionCPUCacheModeWriteCombined)

This constant was deprecated in iOS 9.0 and macOS 10.11.



---

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)