---
title: Choosing a resource storage mode for Apple GPUs
framework: metal
role: article
role_heading: Article
path: metal/choosing-a-resource-storage-mode-for-apple-gpus
---

# Choosing a resource storage mode for Apple GPUs

Select an appropriate storage mode for your textures and buffers on Apple GPUs.

## Overview

Overview Apple GPUs have a unified memory model in which the CPU and the GPU share system memory. However, CPU and GPU access to that memory depends on the storage mode you choose for your resources. The MTLStorageMode.shared mode defines system memory that both the CPU and the GPU can access. The MTLStorageMode.private mode defines system memory that only the GPU can access. The MTLStorageMode.memoryless mode defines tile memory within the GPU that only the GPU can access. Tile memory has higher bandwidth, lower latency, and consumes less power than system memory.

Choose a resource storage mode for buffers or textures The storage mode you choose depends on how you plan to use Metal resources: For information on setting storage modes in your app, see Setting resource storage modes. Create a memoryless render target To create a memoryless render target, set the storageMode property of an MTLTextureDescriptor to MTLStorageMode.memoryless and use this descriptor to create a new MTLTexture. Then set this new texture as the texture property of an MTLRenderPassAttachmentDescriptor. See Rendering a scene with deferred lighting in Objective-C for an example of an app that uses a memoryless render target. note: You can create only textures, not buffers, using MTLStorageMode.memoryless mode. You can’t use buffers as memoryless render targets.

## See Also

### Resource management

- [Setting resource storage modes](metal/setting-resource-storage-modes.md)
- [Choosing a resource storage mode for Intel and AMD GPUs](metal/choosing-a-resource-storage-mode-for-intel-and-amd-gpus.md)
- [Copying data to a private resource](metal/copying-data-to-a-private-resource.md)
- [Synchronizing a managed resource in macOS](metal/synchronizing-a-managed-resource-in-macos.md)
- [Transferring data between connected GPUs](metal/transferring-data-between-connected-gpus.md)
- [Reducing the memory footprint of Metal apps](metal/reducing-the-memory-footprint-of-metal-apps.md)
