C Specification
The XrFutureStateEXT enumerates the possible future lifecycle states:
// Provided by XR_EXT_future
typedef enum XrFutureStateEXT {
    XR_FUTURE_STATE_PENDING_EXT = 1,
    XR_FUTURE_STATE_READY_EXT = 2,
    XR_FUTURE_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
} XrFutureStateEXT;Description
A future that is not invalidated (or completed) may be in one of two
states, Pending and Ready, represented by
XR_FUTURE_STATE_PENDING_EXT and XR_FUTURE_STATE_READY_EXT
respectively.
- 
When successfully returned from an async function the future starts out as Pending. In this state the future may be polled, but must not be passed to a completion function. Applications should wait for the future to become ready and keep polling the state of the future. If a pending future is passed to the associated completion function, it must returnXR_ERROR_FUTURE_PENDING_EXT.
- 
Once the asynchronous operation succeeds or fails, the state of the future moves to Ready. In the ready state the future may be "Completed" with theCompletefunction. See https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#ext_future-completing.
- 
After being successfully completed, the future becomes invalidated if the completion function returns a success code, and in the case of two-call idioms, the array was not NULL.
- 
After a call to xrCancelFutureEXT, the future becomes invalidated immediately and any resources associated with it may be freed (including handles) 
- 
When the associated handle is destroyed, the futures become invalidated. See https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html#ext_future-scope. 
A future returned from an async function must be in either the state
XR_FUTURE_STATE_PENDING_EXT or XR_FUTURE_STATE_READY_EXT.
A runtime may skip the Pending state and go directly to Ready if the
result is immediately available.
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-2025 The Khronos Group Inc.
This work is licensed under a Creative Commons Attribution 4.0 International License.