---
title: cp_frame_timing_get_optimal_input_time
framework: compositorservices
role: symbol
role_heading: Function
path: compositorservices/cp_frame_timing_get_optimal_input_time
---

# cp_frame_timing_get_optimal_input_time

Returns the optimal time to start the frame submission process.

## Declaration

```occ
cp_time_t cp_frame_timing_get_optimal_input_time(cp_frame_timing_t frame_timing);
```

## Parameters

- `frame_timing`: The frame’s timing information. Fetch this information using the doc://com.apple.compositorservices/documentation/CompositorServices/cp_frame_predict_timing function. After you retrieve the frame’s drawable type, get the information using doc://com.apple.compositorservices/documentation/CompositorServices/LayerRenderer/Drawable/frameTiming instead.

## Return Value

Return Value The Mach absolute time at which to query the input for your frame.

## Discussion

Discussion The optimal input time is the time at which to call the startSubmission() function. Use the time before the input time to update your app’s data structures and prepare for rendering. Call cp_time_wait_until to suspend your app until the optimal time arrives. When it does, fetch the current device pose and finish rendering and the frame and commit your Metal command buffers.

## See Also

### Getting timing information

- [cp_frame_predict_timing](compositorservices/cp_frame_predict_timing.md)
- [cp_frame_timing_get_rendering_deadline](compositorservices/cp_frame_timing_get_rendering_deadline.md)
- [cp_frame_timing_get_presentation_time](compositorservices/cp_frame_timing_get_presentation_time.md)
- [cp_frame_timing_t](compositorservices/cp_frame_timing_t.md)
