<!--
{
  "availability" : [
    "macOS: 26.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CompositorServices",
  "identifier" : "/documentation/CompositorServices/LayerRenderer/Frame/startSubmission()",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Compositor Services",
      "CompositorServices"
    ],
    "preciseIdentifier" : "c:@F@cp_frame_start_submission"
  },
  "title" : "startSubmission()"
}
-->

# startSubmission()

Notifies Compositor Services that you’re ready to generate the
Metal commands to render the specified frame.

```
func startSubmission()
```

## Discussion

This function helps you optimize your app’s rendering efficiency.
Call it before you start any of the GPU work that depends on the device pose.
Call [`endSubmission()`](/documentation/CompositorServices/LayerRenderer/Frame/endSubmission()) after you build your Metal
command buffers and are ready to commit the frame to the GPU.
Compositor Services uses the time difference to improve its predictions for when
to start the frame submission process.
Those predictions help you schedule the encoding process at a more optimal time for the system.

---

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)