C Specification
The xrEndFrame function is defined as:
// Provided by XR_VERSION_1_0
XrResult xrEndFrame(
XrSession session,
const XrFrameEndInfo* frameEndInfo);
Parameters
Description
xrEndFrame may return immediately to the application.
XrFrameEndInfo::displayTime
should be computed using values
returned by xrWaitFrame.
The runtime should be robust against variations in the timing of calls to
xrWaitFrame, since a pipelined system may call xrWaitFrame on a
separate thread from xrBeginFrame and xrEndFrame without any
synchronization guarantees.
Note
An accurate predicted display time is very important to avoid black pull-in by reprojection and to reduce motion judder in case the runtime does not implement a translational reprojection. Reprojection should never display images before the display refresh period they were predicted for, even if they are completed early, because this will cause motion judder just the same. In other words, the better the predicted display time, the less latency experienced by the user. |
Every call to xrEndFrame must be preceded by a successful call to
xrBeginFrame.
Failure to do so must result in XR_ERROR_CALL_ORDER_INVALID
being
returned by xrEndFrame.
Refer to xrBeginSession for details on how a transition to
session running resets the frame function call order.
XrFrameEndInfo may reference swapchains into which the application
has rendered for this frame.
From each XrSwapchain only one image index is implicitly referenced
per frame, the one corresponding to the last call to
xrReleaseSwapchainImage.
However, a specific swapchain (and by extension a specific swapchain image
index) may be referenced in XrFrameEndInfo multiple times.
This can be used for example to render a side by side image into a single
swapchain image and referencing it twice with differing image rectangles in
different layers.
If no layers are provided then the display must be cleared.
XR_ERROR_LAYER_INVALID
must be returned if an unknown, unsupported
layer type, or NULL
pointer is passed as one of the
XrFrameEndInfo::layers.
XR_ERROR_LAYER_INVALID
must be returned if a layer references a
swapchain that has no released swapchain image.
XR_ERROR_LAYER_LIMIT_EXCEEDED
must be returned if
XrFrameEndInfo::layerCount exceeds
XrSystemGraphicsProperties::maxLayerCount or if the runtime is unable
to composite the specified layers due to resource constraints.
XR_ERROR_SWAPCHAIN_RECT_INVALID
must be returned if
XrFrameEndInfo::layers contains a composition layer which references
pixels outside of the associated swapchain image or if negatively sized.
XR_ERROR_ENVIRONMENT_BLEND_MODE_UNSUPPORTED
must be returned if
XrFrameEndInfo::environmentBlendMode is not supported.
XR_ERROR_SESSION_NOT_RUNNING
must be returned if the session
is not running.
Note
Applications should discard frames for which xrEndFrame returns a recoverable error over attempting to resubmit the frame with different frame parameters to provide a more consistent experience across different runtime implementations. |
See Also
Document Notes
For more information, see the OpenXR Specification
This page is extracted from the OpenXR Specification. Fixes and changes should be made to the Specification, not directly.
Copyright
Copyright 2014-2024, The Khronos Group Inc.
This work is licensed under a Creative Commons Attribution 4.0 International License.