---
title: Work submission
framework: metal
role: collectionGroup
role_heading: API Collection
path: metal/work-submission
---

# Work submission

Create queues that submit work to the GPU or load assets into GPU resources, and indirect command buffers that group your frequent commands together.

## Topics

### Creating command queues

- [makeCommandQueue()](metal/mtldevice/makecommandqueue().md)
- [makeCommandQueue(maxCommandBufferCount:)](metal/mtldevice/makecommandqueue(maxcommandbuffercount:).md)

### Creating residency sets

- [makeResidencySet(descriptor:)](metal/mtldevice/makeresidencyset(descriptor:).md)

### Creating I/O command queues

- [makeIOCommandQueue(descriptor:)](metal/mtldevice/makeiocommandqueue(descriptor:).md)

### Creating I/O file handles

- [makeIOFileHandle(url:)](metal/mtldevice/makeiofilehandle(url:).md)
- [makeIOFileHandle(url:compressionMethod:)](metal/mtldevice/makeiofilehandle(url:compressionmethod:).md)
- [makeIOHandle(url:)](metal/mtldevice/makeiohandle(url:).md)
- [makeIOHandle(url:compressionMethod:)](metal/mtldevice/makeiohandle(url:compressionmethod:).md)

### Creating indirect command buffers

- [makeIndirectCommandBuffer(descriptor:maxCommandCount:options:)](metal/mtldevice/makeindirectcommandbuffer(descriptor:maxcommandcount:options:).md)

## See Also

### Working with GPU devices

- [Device inspection](metal/device-inspection.md)
- [Pipeline state creation](metal/pipeline-state-creation.md)
- [Resource creation](metal/resource-creation.md)
- [Shader library and archive creation](metal/shader-library-and-archive-creation.md)
