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

# storageModeShared

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

```
static var storageModeShared: MTLResourceOptions { get }
```

## Discussion

This is the default storage mode for [`MTLBuffer`](/documentation/Metal/MTLBuffer) instances on integrated GPUs and both [`MTLBuffer`](/documentation/Metal/MTLBuffer) and [`MTLTexture`](/documentation/Metal/MTLTexture) instances on Apple silicon GPUs. On non-Apple family GPUs, the shared storage mode isn’t available for [`MTLTexture`](/documentation/Metal/MTLTexture) instances.

When either the CPU or GPU changes the contents of the resource, you’re responsible for synchronizing access to the texture from the other participant. Ensure that all changes you schedule on either the CPU or GPU for a resource that uses shared memory complete before accessing that resource on the other processor.

For more guidance on how to choose storage modes, see [Setting resource storage modes](/documentation/Metal/setting-resource-storage-modes).

---

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)