---
title: MTLComputePipelineDescriptor
framework: metal
role: symbol
role_heading: Class
path: metal/mtlcomputepipelinedescriptor
---

# MTLComputePipelineDescriptor

An instance describing the desired GPU state for a kernel call in a compute pass.

## Declaration

```swift
class MTLComputePipelineDescriptor
```

## Mentioned in

Compiling and linking Metal dynamic libraries

## Overview

Overview important: Before creating a pipeline state, set the computeFunction property on your descriptor instance. This property tells the GPU which kernel to run. A pipeline descriptor provides information necessary for creating an MTLComputePipelineState instance.

## Topics

### Configuring the compute execution environment

- [computeFunction](metal/mtlcomputepipelinedescriptor/computefunction.md)
- [threadGroupSizeIsMultipleOfThreadExecutionWidth](metal/mtlcomputepipelinedescriptor/threadgroupsizeismultipleofthreadexecutionwidth.md)
- [maxTotalThreadsPerThreadgroup](metal/mtlcomputepipelinedescriptor/maxtotalthreadsperthreadgroup.md)
- [maxCallStackDepth](metal/mtlcomputepipelinedescriptor/maxcallstackdepth.md)

### Configuring compute pass inputs

- [stageInputDescriptor](metal/mtlcomputepipelinedescriptor/stageinputdescriptor.md)
- [MTLAttributeDescriptor](metal/mtlattributedescriptor.md)
- [MTLAttributeDescriptorArray](metal/mtlattributedescriptorarray.md)
- [MTLBufferLayoutDescriptor](metal/mtlbufferlayoutdescriptor.md)
- [MTLBufferLayoutDescriptorArray](metal/mtlbufferlayoutdescriptorarray.md)

### Configuring buffer mutability

- [buffers](metal/mtlcomputepipelinedescriptor/buffers.md)

### Identifying the pipeline state object

- [label](metal/mtlcomputepipelinedescriptor/label.md)

### Configuring indirect command buffers

- [supportIndirectCommandBuffers](metal/mtlcomputepipelinedescriptor/supportindirectcommandbuffers.md)

### Configuring shader validation

- [shaderValidation](metal/mtlcomputepipelinedescriptor/shadervalidation.md)

### Reset to defaults

- [reset()](metal/mtlcomputepipelinedescriptor/reset().md)

### Loading dynamic libraries to link at runtime

- [preloadedLibraries](metal/mtlcomputepipelinedescriptor/preloadedlibraries.md)
- [insertLibraries](metal/mtlcomputepipelinedescriptor/insertlibraries.md)

### Setting callable functions

- [linkedFunctions](metal/mtlcomputepipelinedescriptor/linkedfunctions.md)

### Loading binary archives

- [supportAddingBinaryFunctions](metal/mtlcomputepipelinedescriptor/supportaddingbinaryfunctions.md)
- [binaryArchives](metal/mtlcomputepipelinedescriptor/binaryarchives.md)

### Instance Properties

- [requiredThreadsPerThreadgroup](metal/mtlcomputepipelinedescriptor/requiredthreadsperthreadgroup.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

### Configuring a compute pipeline state

- [MTL4ComputePipelineDescriptor](metal/mtl4computepipelinedescriptor.md)
- [MTLComputePipelineState](metal/mtlcomputepipelinestate.md)
- [MTLStageInputOutputDescriptor](metal/mtlstageinputoutputdescriptor.md)
- [MTLPipelineBufferDescriptor](metal/mtlpipelinebufferdescriptor.md)
- [MTLPipelineBufferDescriptorArray](metal/mtlpipelinebufferdescriptorarray.md)
- [MTLPipelineOption](metal/mtlpipelineoption.md)
