<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -",
    "macCatalyst: 26.0.0 -",
    "macOS: 26.0.0 -",
    "tvOS: 26.0.0 -",
    "visionOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/MTL4RenderEncoderOptions",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Metal"
    ],
    "preciseIdentifier" : "c:@E@MTL4RenderEncoderOptions"
  },
  "title" : "MTL4RenderEncoderOptions"
}
-->

# MTL4RenderEncoderOptions

Custom render pass options you specify at encoder creation time.

```
struct MTL4RenderEncoderOptions
```

## Overview

Use these options to implement parallel encoding of render passes across multiple CPU threads by providing these
values to the `options` parameter of [`makeRenderCommandEncoder(descriptor:options:)`](/documentation/Metal/MTL4CommandBuffer/makeRenderCommandEncoder(descriptor:options:)) and
observing these requirements:

1. Commit all command encoders together in an array you provide to [`commit:count:`](/documentation/Metal/MTL4CommandQueue/commit:count:) or [`commit:count:options:`](/documentation/Metal/MTL4CommandQueue/commit:count:options:)
2. The first command buffer in the array contains a render pass that you start with option [`suspending`](/documentation/Metal/MTL4RenderEncoderOptions/suspending)
3. The last command buffer in the array contains the same render pass that you start with option [`resuming`](/documentation/Metal/MTL4RenderEncoderOptions/resuming)
4. All intermediate command buffers between the first and last in the array contain the same render pass that you
   start with both [`resuming`](/documentation/Metal/MTL4RenderEncoderOptions/resuming) and [`suspending`](/documentation/Metal/MTL4RenderEncoderOptions/suspending) options.
5. The sequence of render passes, in submission order, doesn’t intermix with compute, blit, acceleration structure
   or machine learning encoding.
6. A command buffer shouldn’t contain a render pass that you start with option [`suspending`](/documentation/Metal/MTL4RenderEncoderOptions/suspending) if
   it already contains a render pass that you start with option [`resuming`](/documentation/Metal/MTL4RenderEncoderOptions/resuming).

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)