Monado OpenXR Runtime
|
The objects representing OpenXR handles, and prototypes for internal functions used in the state tracker. More...
#include "xrt/xrt_space.h"
#include "xrt/xrt_limits.h"
#include "xrt/xrt_system.h"
#include "xrt/xrt_device.h"
#include "xrt/xrt_tracking.h"
#include "xrt/xrt_compositor.h"
#include "xrt/xrt_vulkan_includes.h"
#include "xrt/xrt_openxr_includes.h"
#include "xrt/xrt_config_os.h"
#include "xrt/xrt_config_have.h"
#include "os/os_threading.h"
#include "util/u_index_fifo.h"
#include "util/u_hashset.h"
#include "util/u_hashmap.h"
#include "util/u_device.h"
#include "oxr_extension_support.h"
#include "oxr_subaction.h"
#include "oxr_defines.h"
#include "oxr_frame_sync.h"
Go to the source code of this file.
Data Structures | |
struct | oxr_handle_base |
Used to hold diverse child handles and ensure orderly destruction. More... | |
struct | oxr_system |
Single or multiple devices grouped together to form a system that sessions can be created from. More... | |
struct | oxr_extension_status |
Structure tracking which extensions are enabled for a given instance. More... | |
struct | oxr_instance |
Main object that ties everything together. More... | |
struct | oxr_session |
Object that client program interact with. More... | |
struct | oxr_dpad_settings |
dpad settings we need extracted from XrInteractionProfileDpadBindingEXT More... | |
struct | oxr_dpad_binding_modification |
dpad binding extracted from XrInteractionProfileDpadBindingEXT More... | |
struct | oxr_dpad_entry |
A entry in the dpad state for one action set. More... | |
struct | oxr_dpad_state |
Holds dpad binding state for a single interaction profile. More... | |
struct | oxr_dpad_emulation |
dpad emulation settings from oxr_interaction_profile More... | |
struct | oxr_interaction_profile |
A single interaction profile. More... | |
struct | oxr_binding |
Interaction profile binding state. More... | |
struct | oxr_subaction_paths |
A parsed equivalent of a list of sub-action paths. More... | |
struct | oxr_action_set_attachment |
The data associated with the attachment of an Action Set (oxr_action_set) to as Session (oxr_session). More... | |
struct | oxr_action_state |
The state of a action input. More... | |
struct | oxr_action_input |
A input action pair of a xrt_input and a xrt_device, along with the required transform. More... | |
struct | oxr_action_output |
A output action pair of a xrt_output_name and a xrt_device. More... | |
struct | oxr_action_cache |
The set of inputs/outputs for a single sub-action path for an action. More... | |
struct | oxr_action_attachment |
Data associated with an Action that has been attached to a Session. More... | |
struct | oxr_space |
Can be one of several reference space types, or a space that is bound to an action. More... | |
struct | oxr_swapchain |
A set of images used for rendering. More... | |
struct | oxr_refcounted |
struct | oxr_action_set_ref |
The reference-counted data of an action set. More... | |
struct | oxr_action_set |
A group of actions. More... | |
struct | oxr_action_ref |
The reference-counted data of an action. More... | |
struct | oxr_action |
A single action. More... | |
struct | oxr_debug_messenger |
Debug object created by the client program. More... | |
struct | oxr_hand_tracker |
A hand tracker. More... | |
Macros | |
#define | XRT_CAST_PTR_TO_OXR_HANDLE(HANDLE_TYPE, PTR) ((HANDLE_TYPE)(uint64_t)(uintptr_t)(PTR)) |
Cast a pointer to an OpenXR handle in such a way as to avoid warnings. More... | |
#define | XRT_CAST_OXR_HANDLE_TO_PTR(PTR_TYPE, HANDLE) ((PTR_TYPE)(uintptr_t)(uint64_t)(HANDLE)) |
Cast an OpenXR handle to a pointer in such a way as to avoid warnings. More... | |
#define | XRT_MAX_HANDLE_CHILDREN 256 |
#define | OXR_MAX_BINDINGS_PER_ACTION 32 |
#define | OXR_XRT_POSE_TO_XRPOSEF(FROM, TO) |
Safely copy an xrt_pose to an XrPosef. More... | |
#define | OXR_XRT_FOV_TO_XRFOVF(FROM, TO) |
Safely copy an xrt_fov to an XrFovf. More... | |
#define | SUBACTION_PATH_MEMBER(X) XrPath X; |
#define | OXR_SUBPATH_MEMBER(X) bool X; |
#define | OXR_CHECK_SUBACTION_PATHS(X) |
#define | OXR_CACHE_MEMBER(X) struct oxr_action_cache X; |
#define | OXR_PATH_MEMBER(X) XrPath X; |
Currently bound interaction profile. More... | |
Functions | |
static bool | oxr_space_type_is_reference (enum oxr_space_type space_type) |
static void | oxr_refcounted_ref (struct oxr_refcounted *orc) |
Increase the reference count of orc . More... | |
static void | oxr_refcounted_unref (struct oxr_refcounted *orc) |
Decrease the reference count of orc , destroying it if it reaches 0. More... | |
oxr_input.c | |
XrResult | oxr_session_update_action_bindings (struct oxr_logger *log, struct oxr_session *sess) |
oxr_binding.c | |
void | oxr_get_profile_for_device_name (struct oxr_logger *log, struct oxr_session *sess, enum xrt_device_name name, struct oxr_interaction_profile **out_p) |
struct oxr_interaction_profile * | oxr_clone_profile (const struct oxr_interaction_profile *src_profile) |
oxr_session.c | |
#define | MAKE_GET_DYN_ROLES_FN(ROLE) |
#define | GET_XDEV_BY_ROLE(SYS, ROLE) (get_role_##ROLE((SYS))) |
#define | MAKE_GET_DYN_ROLE_PROFILE_FN(ROLE) |
#define | GET_PROFILE_NAME_BY_ROLE(SYS, ROLE) (get_role_profile_##ROLE((SYS))) |
#define | MAKE_EXT_STATUS(mixed_case, all_caps) bool mixed_case; |
XrResult | oxr_session_create (struct oxr_logger *log, struct oxr_system *sys, const XrSessionCreateInfo *createInfo, struct oxr_session **out_session) |
XrResult | oxr_session_enumerate_formats (struct oxr_logger *log, struct oxr_session *sess, uint32_t formatCapacityInput, uint32_t *formatCountOutput, int64_t *formats) |
void | oxr_session_change_state (struct oxr_logger *log, struct oxr_session *sess, XrSessionState state, XrTime time) |
Change the state of the session, queues a event. More... | |
XrResult | oxr_session_begin (struct oxr_logger *log, struct oxr_session *sess, const XrSessionBeginInfo *beginInfo) |
XrResult | oxr_session_end (struct oxr_logger *log, struct oxr_session *sess) |
XrResult | oxr_session_request_exit (struct oxr_logger *log, struct oxr_session *sess) |
XRT_CHECK_RESULT XrResult | oxr_session_poll (struct oxr_logger *log, struct oxr_session *sess) |
XrResult | oxr_session_locate_views (struct oxr_logger *log, struct oxr_session *sess, const XrViewLocateInfo *viewLocateInfo, XrViewState *viewState, uint32_t viewCapacityInput, uint32_t *viewCountOutput, XrView *views) |
XrResult | oxr_session_frame_wait (struct oxr_logger *log, struct oxr_session *sess, XrFrameState *frameState) |
XrResult | oxr_session_frame_begin (struct oxr_logger *log, struct oxr_session *sess) |
XrResult | oxr_session_frame_end (struct oxr_logger *log, struct oxr_session *sess, const XrFrameEndInfo *frameEndInfo) |
XrResult | oxr_session_hand_joints (struct oxr_logger *log, struct oxr_hand_tracker *hand_tracker, const XrHandJointsLocateInfoEXT *locateInfo, XrHandJointLocationsEXT *locations) |
XrResult | oxr_get_base_body_pose (struct oxr_logger *log, const struct xrt_body_joint_set *body_joint_set, struct oxr_space *base_spc, struct xrt_device *body_xdev, XrTime at_time, struct xrt_space_relation *out_base_body) |
XrResult | oxr_session_apply_force_feedback (struct oxr_logger *log, struct oxr_hand_tracker *hand_tracker, const XrForceFeedbackCurlApplyLocationsMNDX *locations) |
static XrSpace | oxr_space_to_openxr (struct oxr_space *spc) |
To go back to a OpenXR object. More... | |
XrResult | oxr_space_action_create (struct oxr_logger *log, struct oxr_session *sess, uint32_t key, const XrActionSpaceCreateInfo *createInfo, struct oxr_space **out_space) |
XrResult | oxr_space_get_reference_bounds_rect (struct oxr_logger *log, struct oxr_session *sess, XrReferenceSpaceType referenceSpaceType, XrExtent2Df *bounds) |
XrResult | oxr_space_reference_create (struct oxr_logger *log, struct oxr_session *sess, const XrReferenceSpaceCreateInfo *createInfo, struct oxr_space **out_space) |
XrResult | oxr_space_xdev_pose_create (struct oxr_logger *log, struct oxr_session *sess, struct xrt_device *xdev, enum xrt_input_name name, const struct xrt_pose *pose, struct oxr_space **out_space) |
Monado special space that always points to a specific xrt_device and pose, useful when you want to bypass the action binding system for instance. More... | |
XrResult | oxr_space_locate (struct oxr_logger *log, struct oxr_space *spc, struct oxr_space *baseSpc, XrTime time, XrSpaceLocation *location) |
XrResult | oxr_spaces_locate (struct oxr_logger *log, struct oxr_space **spcs, uint32_t spc_count, struct oxr_space *baseSpc, XrTime time, XrSpaceLocations *locations) |
XRT_CHECK_RESULT XrResult | oxr_space_locate_device (struct oxr_logger *log, struct xrt_device *xdev, struct oxr_space *baseSpc, XrTime time, struct xrt_space_relation *out_relation) |
Locate the xrt_device in the given base space, useful for implementing hand tracking location look ups and the like. More... | |
static XrSwapchain | oxr_swapchain_to_openxr (struct oxr_swapchain *sc) |
To go back to a OpenXR object. More... | |
static XrDebugUtilsMessengerEXT | oxr_messenger_to_openxr (struct oxr_debug_messenger *mssngr) |
To go back to a OpenXR object. More... | |
XrResult | oxr_create_messenger (struct oxr_logger *, struct oxr_instance *inst, const XrDebugUtilsMessengerCreateInfoEXT *, struct oxr_debug_messenger **out_mssngr) |
XrResult | oxr_destroy_messenger (struct oxr_logger *log, struct oxr_debug_messenger *mssngr) |
XrResult | oxr_system_select (struct oxr_logger *log, struct oxr_system **systems, uint32_t system_count, XrFormFactor form_factor, struct oxr_system **out_selected) |
XrResult | oxr_system_fill_in (struct oxr_logger *log, struct oxr_instance *inst, XrSystemId systemId, uint32_t view_count, struct oxr_system *sys) |
XrResult | oxr_system_verify_id (struct oxr_logger *log, const struct oxr_instance *inst, XrSystemId systemId) |
XrResult | oxr_system_get_by_id (struct oxr_logger *log, struct oxr_instance *inst, XrSystemId systemId, struct oxr_system **system) |
XrResult | oxr_system_get_properties (struct oxr_logger *log, struct oxr_system *sys, XrSystemProperties *properties) |
XrResult | oxr_system_enumerate_view_confs (struct oxr_logger *log, struct oxr_system *sys, uint32_t viewConfigurationTypeCapacityInput, uint32_t *viewConfigurationTypeCountOutput, XrViewConfigurationType *viewConfigurationTypes) |
XrResult | oxr_system_enumerate_blend_modes (struct oxr_logger *log, struct oxr_system *sys, XrViewConfigurationType viewConfigurationType, uint32_t environmentBlendModeCapacityInput, uint32_t *environmentBlendModeCountOutput, XrEnvironmentBlendMode *environmentBlendModes) |
XrResult | oxr_system_get_view_conf_properties (struct oxr_logger *log, struct oxr_system *sys, XrViewConfigurationType viewConfigurationType, XrViewConfigurationProperties *configurationProperties) |
XrResult | oxr_system_enumerate_view_conf_views (struct oxr_logger *log, struct oxr_system *sys, XrViewConfigurationType viewConfigurationType, uint32_t viewCapacityInput, uint32_t *viewCountOutput, XrViewConfigurationView *views) |
bool | oxr_system_get_hand_tracking_support (struct oxr_logger *log, struct oxr_instance *inst) |
bool | oxr_system_get_eye_gaze_support (struct oxr_logger *log, struct oxr_instance *inst) |
bool | oxr_system_get_force_feedback_support (struct oxr_logger *log, struct oxr_instance *inst) |
void | oxr_system_get_face_tracking_htc_support (struct oxr_logger *log, struct oxr_instance *inst, bool *supports_eye, bool *supports_lip) |
void | oxr_system_get_face_tracking2_fb_support (struct oxr_logger *log, struct oxr_instance *inst, bool *supports_audio, bool *supports_visual) |
bool | oxr_system_get_body_tracking_fb_support (struct oxr_logger *log, struct oxr_instance *inst) |
XrResult | oxr_event_push_XrEventDataSessionStateChanged (struct oxr_logger *log, struct oxr_session *sess, XrSessionState state, XrTime time) |
XrResult | oxr_event_push_XrEventDataInteractionProfileChanged (struct oxr_logger *log, struct oxr_session *sess) |
XrResult | oxr_event_push_XrEventDataReferenceSpaceChangePending (struct oxr_logger *log, struct oxr_session *sess, XrReferenceSpaceType referenceSpaceType, XrTime changeTime, XrBool32 poseValid, const XrPosef *poseInPreviousSpace) |
XrResult | oxr_event_remove_session_events (struct oxr_logger *log, struct oxr_session *sess) |
This clears all pending events refers to the given session. More... | |
XrResult | oxr_poll_event (struct oxr_logger *log, struct oxr_instance *inst, XrEventDataBuffer *eventData) |
Will return one event if available, also drain the sessions event queues. More... | |
void | oxr_xdev_destroy (struct xrt_device **xdev_ptr) |
bool | oxr_xdev_find_input (struct xrt_device *xdev, enum xrt_input_name name, struct xrt_input **out_input) |
Return true if it finds an input of that name on this device. More... | |
bool | oxr_xdev_find_output (struct xrt_device *xdev, enum xrt_output_name name, struct xrt_output **out_output) |
Return true if it finds an output of that name on this device. More... | |
void | oxr_xdev_get_hand_tracking_at (struct oxr_logger *log, struct oxr_instance *inst, struct xrt_device *xdev, enum xrt_input_name name, XrTime at_time, struct xrt_hand_joint_set *out_value) |
Returns the hand tracking value of the named input from the device. More... | |
XrResult | oxr_session_populate_gl_xlib (struct oxr_logger *log, struct oxr_system *sys, XrGraphicsBindingOpenGLXlibKHR const *next, struct oxr_session *sess) |
XrResult | oxr_swapchain_gl_create (struct oxr_logger *, struct oxr_session *sess, const XrSwapchainCreateInfo *, struct oxr_swapchain **out_swapchain) |
XrResult | oxr_vk_get_instance_exts (struct oxr_logger *log, struct oxr_system *sys, uint32_t namesCapacityInput, uint32_t *namesCountOutput, char *namesString) |
XrResult | oxr_vk_get_device_exts (struct oxr_logger *log, struct oxr_system *sys, uint32_t namesCapacityInput, uint32_t *namesCountOutput, char *namesString) |
XrResult | oxr_vk_get_requirements (struct oxr_logger *log, struct oxr_system *sys, XrGraphicsRequirementsVulkanKHR *graphicsRequirements) |
XrResult | oxr_vk_create_vulkan_instance (struct oxr_logger *log, struct oxr_system *sys, const XrVulkanInstanceCreateInfoKHR *createInfo, VkInstance *vulkanInstance, VkResult *vulkanResult) |
XrResult | oxr_vk_create_vulkan_device (struct oxr_logger *log, struct oxr_system *sys, const XrVulkanDeviceCreateInfoKHR *createInfo, VkDevice *vulkanDevice, VkResult *vulkanResult) |
XrResult | oxr_vk_get_physical_device (struct oxr_logger *log, struct oxr_instance *inst, struct oxr_system *sys, VkInstance vkInstance, PFN_vkGetInstanceProcAddr getProc, VkPhysicalDevice *vkPhysicalDevice) |
XrResult | oxr_session_populate_vk (struct oxr_logger *log, struct oxr_system *sys, XrGraphicsBindingVulkanKHR const *next, struct oxr_session *sess) |
XrResult | oxr_swapchain_vk_create (struct oxr_logger *, struct oxr_session *sess, const XrSwapchainCreateInfo *, struct oxr_swapchain **out_swapchain) |
XrResult | oxr_d3d_get_requirements (struct oxr_logger *log, struct oxr_system *sys, LUID *adapter_luid, D3D_FEATURE_LEVEL *min_feature_level) |
Common GetRequirements call for D3D11 and D3D12. More... | |
XrResult | oxr_d3d_check_luid (struct oxr_logger *log, struct oxr_system *sys, LUID *adapter_luid) |
Verify the provided LUID matches the expected one in sys . More... | |
static struct xrt_device * | get_role_head (struct oxr_system *sys) |
static struct xrt_device * | get_role_eyes (struct oxr_system *sys) |
static struct xrt_device * | get_role_face (struct oxr_system *sys) |
static struct xrt_device * | get_role_body (struct oxr_system *sys) |
static struct xrt_device * | get_role_hand_tracking_left (struct oxr_system *sys) |
static struct xrt_device * | get_role_hand_tracking_right (struct oxr_system *sys) |
static struct xrt_device * | get_role_left (struct oxr_system *sys) |
static struct xrt_device * | get_role_right (struct oxr_system *sys) |
static struct xrt_device * | get_role_gamepad (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_head (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_eyes (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_face (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_body (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_hand_tracking_left (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_hand_tracking_right (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_left (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_right (struct oxr_system *sys) |
static enum xrt_device_name | get_role_profile_gamepad (struct oxr_system *sys) |
The objects representing OpenXR handles, and prototypes for internal functions used in the state tracker.
#define OXR_CHECK_SUBACTION_PATHS | ( | X | ) |
#define OXR_PATH_MEMBER | ( | X | ) | XrPath X; |
Currently bound interaction profile.