Enumeration Case


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


MTLResourceStorageModeManaged = MTLStorageModeManaged    << MTLResourceStorageModeShift


In macOS, this is the default storage mode for MTLTexture objects. In iOS and tvOS, the managed storage mode is not available.

You explicitly decide when to synchronize changes between the CPU and GPU.

If you use the CPU to change the contents of a resource, you must use one or more of the methods provided by the MTLBuffer or MTLTexture protocols to copy the changes to the GPU.

If you use the GPU to change the contents of a resource, you must encode a blit pass to copy the changes to the CPU. See MTLBlitCommandEncoder.

For more guidance on how to choose storage modes, see SSetting Resource Storage Modes.

See Also

Specifying Storage Modes


The resource is stored in system memory and is accessible to both the CPU and the GPU.


The resource can be accessed only by the GPU.


The resource’s contents can be accessed only by the GPU and only exist temporarily during a render pass.

Beta Software

This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.

Learn more about using Apple's beta software