---
title: MTLResourceUsage
framework: metal
role: symbol
role_heading: Structure
path: metal/mtlresourceusage
---

# MTLResourceUsage

Options that describe how a graphics or compute function uses an argument buffer’s resource.

## Declaration

```swift
struct MTLResourceUsage
```

## Mentioned in

Tracking the resource residency of argument buffers

## Overview

Overview You can combine multiple MTLResourceUsage values with a bitwise OR (|) if the resource serves multiple purposes over its lifetime. You can enable options for certain resources that indicate whether the Metal driver needs to convert the resource to another format, such as whether it needs to decompress a color render target.

## Topics

### Initializers

- [init(rawValue:)](metal/mtlresourceusage/init(rawvalue:).md)

### Type Properties

- [read](metal/mtlresourceusage/read.md)
- [sample](metal/mtlresourceusage/sample.md)
- [write](metal/mtlresourceusage/write.md)

## Relationships

### Conforms To

- [BitwiseCopyable](swift/bitwisecopyable.md)
- [Equatable](swift/equatable.md)
- [ExpressibleByArrayLiteral](swift/expressiblebyarrayliteral.md)
- [OptionSet](swift/optionset.md)
- [RawRepresentable](swift/rawrepresentable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [SetAlgebra](swift/setalgebra.md)

## See Also

### Common resource functionality

- [MTLGPUAddress](metal/mtlgpuaddress.md)
- [MTLAllocation](metal/mtlallocation.md)
- [MTLResource](metal/mtlresource.md)
- [MTLResourceOptions](metal/mtlresourceoptions.md)
- [MTLResourceID](metal/mtlresourceid.md)
