---
title: MTLIndirectCommandType
framework: metal
role: symbol
role_heading: Structure
path: metal/mtlindirectcommandtype
---

# MTLIndirectCommandType

The types of commands that you can encode into the indirect command buffer.

## Declaration

```swift
struct MTLIndirectCommandType
```

## Topics

### Creating a set of command types

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

### Specifying command types

- [draw](metal/mtlindirectcommandtype/draw.md)
- [drawIndexed](metal/mtlindirectcommandtype/drawindexed.md)
- [drawPatches](metal/mtlindirectcommandtype/drawpatches.md)
- [drawIndexedPatches](metal/mtlindirectcommandtype/drawindexedpatches.md)
- [concurrentDispatch](metal/mtlindirectcommandtype/concurrentdispatch.md)
- [concurrentDispatchThreads](metal/mtlindirectcommandtype/concurrentdispatchthreads.md)

### Type Properties

- [drawMeshThreadgroups](metal/mtlindirectcommandtype/drawmeshthreadgroups.md)
- [drawMeshThreads](metal/mtlindirectcommandtype/drawmeshthreads.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

### Indirect command buffers

- [Creating an indirect command buffer](metal/creating-an-indirect-command-buffer.md)
- [Specifying drawing and dispatch arguments indirectly](metal/specifying-drawing-and-dispatch-arguments-indirectly.md)
- [Encoding indirect command buffers on the CPU](metal/encoding-indirect-command-buffers-on-the-cpu.md)
- [Encoding indirect command buffers on the GPU](metal/encoding-indirect-command-buffers-on-the-gpu.md)
- [MTLIndirectCommandBuffer](metal/mtlindirectcommandbuffer.md)
- [MTLIndirectCommandBufferDescriptor](metal/mtlindirectcommandbufferdescriptor.md)
- [MTLIndirectCommandBufferExecutionRange](metal/mtlindirectcommandbufferexecutionrange.md)
- [MTLIndirectCommandBufferExecutionRangeMake(_:_:)](metal/mtlindirectcommandbufferexecutionrangemake(_:_:).md)
