---
title: MTLIOCommandQueueDescriptor
framework: metal
role: symbol
role_heading: Class
path: metal/mtliocommandqueuedescriptor
---

# MTLIOCommandQueueDescriptor

A configuration template you use to create a new input/output command queue.

## Declaration

```swift
class MTLIOCommandQueueDescriptor
```

## Overview

Overview Use this descriptor type to configure the settings of each input/output command queue that you create using makeIOCommandQueue(descriptor:). To create additional input/output command queues, you can reuse a descriptor instance and optionally reconfigure its properties. note: Changing a descriptor’s properties doesn’t affect command queues you’ve already created with the descriptor. Create each input/output queue to meet your apps needs by setting the descriptor’s properties. Select a queue’s relative level of importance with the priority property. Create a queue that runs multiple input/output command buffers in parallel by setting the type property to MTLIOCommandQueueType.concurrent. Decide how many individual commands a queue can run simultaneously with the maxCommandsInFlight property. Choose how many command buffers a queue can have waiting to run with maxCommandBufferCount property. Take control of the queue’s scratch memory allocation by implementing MTLIOScratchBufferAllocator and assign an instance of it to the scratchBufferAllocator property.

## Topics

### Configuring the input/output command queue

- [priority](metal/mtliocommandqueuedescriptor/priority.md)
- [type](metal/mtliocommandqueuedescriptor/type.md)
- [maxCommandsInFlight](metal/mtliocommandqueuedescriptor/maxcommandsinflight.md)
- [maxCommandBufferCount](metal/mtliocommandqueuedescriptor/maxcommandbuffercount.md)

### Providing your own a scratch buffer

- [scratchBufferAllocator](metal/mtliocommandqueuedescriptor/scratchbufferallocator.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)

## See Also

### I/O command queues

- [MTLIOCommandQueue](metal/mtliocommandqueue.md)
- [MTLIOPriority](metal/mtliopriority.md)
- [MTLIOCommandQueueType](metal/mtliocommandqueuetype.md)
- [MTLIOScratchBufferAllocator](metal/mtlioscratchbufferallocator.md)
- [MTLIOScratchBuffer](metal/mtlioscratchbuffer.md)
