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

# endSubmission()

Notifies Compositor Services that you finished generating the GPU commands to render the specified frame.

```
func endSubmission()
```

## Discussion

This function helps you optimize your app’s rendering efficiency. Call [`startSubmission()`](/documentation/CompositorServices/LayerRenderer/Frame/startSubmission()) function before you start any of the GPU work that depends on the device pose. Call this function 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)