---
title: "makeRenderPipelineState(descriptor:completionHandler:)"
framework: metal
role: symbol
role_heading: Instance Method
path: "metal/mtldevice/makerenderpipelinestate(descriptor:completionhandler:)"
---

# makeRenderPipelineState(descriptor:completionHandler:)

Asynchronously creates a render pipeline state.

## Declaration

```swift
func makeRenderPipelineState(descriptor: MTLRenderPipelineDescriptor, completionHandler: @escaping @Sendable ((any MTLRenderPipelineState)?, (any Error)?) -> Void)
```

```swift
func makeRenderPipelineState(descriptor: MTLRenderPipelineDescriptor) async throws -> any MTLRenderPipelineState
```

## Parameters

- `descriptor`: An doc://com.apple.metal/documentation/Metal/MTLRenderPipelineDescriptor instance.
- `completionHandler`: A Swift closure or an Objective-C block the method calls when it finishes creating the render pipeline state.

## Discussion

Discussion Use the graphics-rendering pipeline state to configure a render pass by calling the setRenderPipelineState(_:) method of an MTLRenderCommandEncoder instance.

## See Also

### Creating render pipeline states with vertex shaders

- [makeRenderPipelineState(descriptor:)](metal/mtldevice/makerenderpipelinestate(descriptor:).md)
- [makeRenderPipelineState(descriptor:options:)](metal/mtldevice/makerenderpipelinestate(descriptor:options:)-89vxc.md)
- [makeRenderPipelineState(descriptor:options:reflection:)](metal/mtldevice/makerenderpipelinestate(descriptor:options:reflection:).md)
- [makeRenderPipelineState(descriptor:options:completionHandler:)](metal/mtldevice/makerenderpipelinestate(descriptor:options:completionhandler:)-5gdww.md)
