Monado OpenXR Runtime
|
Smaller pieces of auxiliary utilities code. More...
Modules | |
Distortion utilities | |
Logging functions | |
Frame and Render timing/pacing | |
Pretty printing functions and helpers | |
This is common functionality used directly and shared by additional pretty printing functions implemented in multiple modules, such as OpenXR entrypoints. | |
Files | |
file | gst_internal.h |
Semi internal structs for gstreamer code. | |
file | gst_pipeline.c |
An xrt_frame_sink that does gst things. | |
file | gst_pipeline.h |
Functions for creating gstreamer_pipeline objects. | |
file | gst_sink.c |
An xrt_frame_sink that does gst things. | |
file | gst_sink.h |
xrt_frame_sink that does gst things. | |
file | m_relation_history.h |
Small utility for keeping track of the history of an xrt_space_relation, ie. | |
file | u_autoexpgain.c |
Automatically compute exposure and gain values from an image stream. | |
file | u_autoexpgain.h |
Automatically compute exposure and gain values from an image stream. | |
file | u_bitwise.c |
Functions for manipulating tightly packed data as bits. | |
file | u_bitwise.h |
Functions for manipulating tightly packed data as bits. | |
file | u_box_iou.hpp |
Code to deal with bounding boxes for camera-based hand-tracking. | |
file | u_builders.c |
Helpers for xrt_builder implementations. | |
file | u_builders.h |
Helpers for xrt_builder implementations. | |
file | u_config_json.h |
Code to manage the settings file. | |
file | u_debug.c |
Small debug helpers. | |
file | u_debug.h |
Small debug helpers. | |
file | u_deque.cpp |
Expose std::deque to C. | |
file | u_deque.h |
Expose std::deque to C. | |
file | u_device.c |
Misc helpers for device drivers. | |
file | u_device.h |
Misc helpers for device drivers. | |
file | u_documentation.h |
Header with only documentation. | |
file | u_file.c |
Very simple file opening functions. | |
file | u_file.cpp |
Very simple file opening functions, mostly using std::filesystem for portability. | |
file | u_file.h |
Very simple file opening functions. | |
file | u_format.c |
Format helpers and block code. | |
file | u_format.h |
Format helpers and block code. | |
file | u_frame.c |
xrt_frame helpers. | |
file | u_frame.h |
xrt_frame helpers. | |
file | u_frame_times_widget.h |
Shared code for visualizing frametimes. | |
file | u_generic_callbacks.hpp |
Implementation of a generic callback collection, intended to be wrapped for a specific event type. | |
file | u_git_tag.h |
Holds the git hash of Monado. | |
file | u_hand_simulation.c |
Wrapper around Mercury's parametric hand code, used by Index and OpenGloves to simulate hand tracking. | |
file | u_hand_simulation.h |
Wrapper around Mercury's parametric hand code, used by Index and OpenGloves to simulate hand tracking. | |
file | u_hand_tracking.h |
Hand Tracking API interface. | |
file | u_handles.c |
Implementations of handle functions. | |
file | u_handles.h |
Functions for dealing generically with various handle types defined in xrt_handles.h. | |
file | u_hashmap.cpp |
Hashmap for integer values header. | |
file | u_hashmap.h |
Hashmap for integer values header. | |
file | u_hashset.cpp |
Hashset struct header. | |
file | u_hashset.h |
Hashset struct header. | |
file | u_id_ringbuffer.cpp |
Wrap some ring buffer internals for somewhat generic C usage. | |
file | u_id_ringbuffer.h |
Ring buffer for things keyed on an ID but otherwise maintained externally, for C usage. | |
file | u_imu_sink_force_monotonic.c |
A xrt_imu_sink that forces the samples to be monotonically increasing. | |
file | u_imu_sink_split.c |
An xrt_imu_sink splitter. | |
file | u_index_fifo.h |
A FIFO for indices. | |
file | u_iterator_base.hpp |
A template class to serve as the base of iterator and const_iterator types for things with "random access". | |
file | u_json.c |
Tiny JSON wrapper around cJSON. | |
file | u_json.h |
Tiny JSON wrapper around cJSON header. | |
file | u_json.hpp |
C++ wrapper for cJSON. | |
file | u_limited_unique_id.cpp |
A very simple generator to create process unique ids. | |
file | u_limited_unique_id.h |
A very simple generator to create process unique ids. | |
file | u_linux.c |
Various helpers for doing Linux specific things. | |
file | u_linux.h |
Various helpers for doing Linux specific things. | |
file | u_live_stats.cpp |
Live stats tracking and printing. | |
file | u_live_stats.h |
Live stats tracking and printing. | |
file | u_logging.c |
Logging functions. | |
file | u_metrics.c |
Metrics saving functions. | |
file | u_metrics.h |
Metrics saving functions. | |
file | u_misc.c |
Very small misc utils. | |
file | u_misc.h |
Very small misc utils. | |
file | u_native_images_debug.h |
Special code for managing a variable tracked swapchain. | |
file | u_pacing.h |
Shared pacing code. | |
file | u_pacing_app.c |
Shared frame timing code. | |
file | u_pacing_compositor.c |
Shared frame timing code. | |
file | u_pacing_compositor_fake.c |
For generating a fake timing. | |
file | u_prober.c |
Helpers for prober related code. | |
file | u_prober.h |
Helpers for prober related code. | |
file | u_process.c |
Simple process handling. | |
file | u_process.h |
Simple process handling. | |
file | u_session.c |
Helper to implement xrt_session. | |
file | u_session.h |
Helper to implement xrt_session. | |
file | u_sink.h |
xrt_frame_sink converters and other helpers. | |
file | u_sink_combiner.c |
An xrt_frame_sink that combines two frames into a stereo frame. | |
file | u_sink_converter.c |
xrt_frame_sink converters and other helpers. | |
file | u_sink_deinterleaver.c |
An xrt_frame_sink that deinterleaves stereo frames. | |
file | u_sink_force_genlock.c |
An xrt_frame_sink that takes two frames, enforces gen-lock and pushes downstream in left-right order. | |
file | u_sink_queue.c |
An xrt_frame_sink queue. | |
file | u_sink_quirk.c |
An xrt_frame_sink that quirks frames. | |
file | u_sink_simple_queue.c |
An xrt_frame_sink queue. | |
file | u_sink_split.c |
An xrt_frame_sink splitter. | |
file | u_sink_stereo_sbs_to_slam_sbs.c |
An xrt_frame_sink splitter. | |
file | u_space_overseer.c |
A implementation of the xrt_space_overseer interface. | |
file | u_space_overseer.h |
A implementation of the xrt_space_overseer interface. | |
file | u_string_list.cpp |
A collection of strings, like a list of extensions to enable. | |
file | u_string_list.h |
A collection of strings, like a list of extensions to enable. | |
file | u_string_list.hpp |
A collection of strings, like a list of extensions to enable. | |
file | u_system.c |
Helper to implement xrt_system. | |
file | u_system.h |
Helper to implement xrt_system. | |
file | u_system_helpers.c |
Helpers for system objects like xrt_system_devices. | |
file | u_system_helpers.h |
Helpers for system objects like xrt_system_devices. | |
file | u_template_historybuf.hpp |
Ringbuffer implementation for keeping track of the past state of things. | |
file | u_template_historybuf_const_iterator.inl |
const_iterator details for ring buffer | |
file | u_template_historybuf_impl_helpers.hpp |
All the "element-type-independent" code (helper objects, base classes) for a ringbuffer implementation on top of a fixed size array. | |
file | u_template_historybuf_iterator.inl |
iterator details for ring buffer | |
file | u_threading.h |
Slightly higher level thread safe helpers. | |
file | u_time.cpp |
Implementation of a steady, convertible clock. | |
file | u_time.h |
Time-keeping: a clock that is steady, convertible to system time, and ideally high-resolution. | |
file | u_trace_marker.c |
Tracing support code, see Tracing support. | |
file | u_trace_marker.h |
Tracing support code, see Tracing support. | |
file | u_tracked_imu_3dof.c |
Wrapper for m_imu_3dof that can be placed inside (and freed along with!) an xrt_imu_sink pipeline. | |
file | u_tracked_imu_3dof.h |
Wrapper for m_imu_3dof that can be placed inside (and freed along with!) an xrt_imu_sink pipeline. | |
file | u_truncate_printf.h |
Truncating versions of string printing functions. | |
file | u_var.cpp |
Variable tracking code. | |
file | u_var.h |
Variable tracking code. | |
file | u_vector.cpp |
Expose std::vector to C. | |
file | u_vector.h |
Expose std::vector to C. | |
file | u_verify.h |
Tiny file to verify things. | |
file | u_visibility_mask.c |
Visibility mask utilitary. | |
file | u_visibility_mask.h |
Visibility mask utilitary header. | |
file | u_wait.h |
Tiny file to implement precise waiting functions. | |
file | u_win32_com_guard.cpp |
An object that serves to keep the reference count of COM initialization greater than 0. | |
file | u_win32_com_guard.hpp |
An object that serves to keep the reference count of COM initialization greater than 0. | |
file | u_worker.c |
Simple worker pool. | |
file | u_worker.cpp |
C++ wrappers for workers. | |
file | u_worker.h |
Worker and threading pool. | |
file | u_worker.hpp |
C++ wrappers for workers. | |
Data Structures | |
struct | u_builder_search_filter |
A filter to match the against. More... | |
struct | u_builder_search_results |
Results of a search of devices. More... | |
struct | u_builder_roles_helper |
This small helper struct is for u_builder_roles_helper_open_system, lets a builder focus on opening devices rather then dealing with Monado structs like xrt_system_devices and the like. More... | |
struct | u_builder |
This helper struct makes it easier to implement the builder interface, but it also comes with a set of integration that may not be what all builders want. More... | |
struct | u_hand_tracking_curl_values |
Values used for the XRT_HAND_TRACKING_MODEL_FINGERL_CURL model. More... | |
struct | u_joint_space_relation |
A space relation of a single joint. More... | |
struct | u_finger_joint_set |
A set of joints in a single finger. More... | |
struct | u_hand_joint_default_set |
The set of joints in the XR_HAND_JOINT_SET_DEFAULT_EXT. More... | |
struct | u_hand_tracking |
Main struct drivers can use to implement hand and finger tracking. More... | |
struct | u_hashset_item |
A embeddable hashset item, note that the string directly follows the u_hashset_item. More... | |
struct | u_live_stats_ns |
Struct to do live statistic tracking and printing of nano-seconds values, used by amongst other the compositor pacing code. More... | |
struct | u_native_images_debug |
A struct for debugging one or more native images. More... | |
struct | u_swapchain_debug |
Allows to debug image that is in GPU memory. More... | |
struct | u_session_event |
Struct used by u_session to queue up events. More... | |
struct | u_session |
This is a helper struct that fully implements xrt_session object. More... | |
struct | u_system_session_pair |
A pair of xrt_session and xrt_session_event_sink that has been registered to this system, used to multiplex events to all sessions. More... | |
struct | u_system |
A helper to implement a xrt_system, takes care of multiplexing events to sessions. More... | |
struct | u_system_devices |
Helper struct to manage devices by implementing the xrt_system_devices. More... | |
struct | u_system_devices_static |
Helper struct to manage devices by implementing the xrt_system_devices, this has only static device roles. More... | |
struct | u_var_f32_arr |
Used to plot an array for values. More... | |
struct | u_var_timing |
Used to plot a graph of timing information. More... | |
struct | u_var_button |
Simple pushable button. More... | |
struct | u_var_combo |
Combo box information. More... | |
struct | u_var_draggable_f32 |
Draggable single precision float information. More... | |
struct | u_var_draggable_u16 |
Draggable usingned 16-bit integer information. More... | |
struct | u_var_histogram_f32 |
Histogram based on single precision bars. More... | |
struct | u_var_curve_point |
A point on the curve, uses doubles like ImPlotPoint. More... | |
struct | u_var_curve |
A single curve on a plot. More... | |
struct | u_var_curves |
A collection of curves to be plotted. More... | |
struct | u_var_info |
Struct that keeps all of the information about the variable, some of the UI state is kept on it. More... | |
struct | u_var_root_info |
Struct containing the information about a root object. More... | |
struct | u_worker_thread_pool |
A worker pool, can shared between multiple groups worker pool. More... | |
struct | u_worker_group |
A worker group where you submit tasks to. More... | |
class | xrt::auxiliary::util::SharedThreadPool |
Wrapper around u_worker_thread_pool. More... | |
class | xrt::auxiliary::util::SharedThreadGroup |
Wrapper around u_worker_group, use TaskCollection to dispatch work. More... | |
class | xrt::auxiliary::util::TaskCollection |
Class to let users fall into a pit of success by being designed as a one shot dispatcher instance. More... | |
struct | u_hashmap_int |
A simple uint64_t key to a void pointer hashmap. More... | |
struct | u_hashset |
Kind of bespoke hashset implementation, where the user is responsible for allocating and freeing the items themselves. More... | |
struct | time_state |
Time-keeping state structure. More... | |
Macros | |
#define | U_BUILDER_SEARCH_MAX (16) |
Max return of the number xrt_prober_device. More... | |
#define | U_LIVE_STATS_NAME_COUNT (16) |
Number of chars for the name of the live stats. More... | |
#define | U_LIVE_STATS_VALUE_COUNT (1024) |
Max number of values that can be put into the trackers. More... | |
#define | U_CALLOC_WITH_CAST(TYPE, SIZE) ((TYPE *)calloc(1, SIZE)) |
Allocate and zero the give size and casts the memory into a pointer of the given type. More... | |
#define | U_TYPED_CALLOC(TYPE) ((TYPE *)calloc(1, sizeof(TYPE))) |
Allocate and zero the space required for some type, and cast the return type appropriately. More... | |
#define | U_TYPED_ARRAY_CALLOC(TYPE, COUNT) ((TYPE *)calloc((COUNT), sizeof(TYPE))) |
Allocate and zero the space required for some type, and cast the return type appropriately. More... | |
#define | U_ZERO(PTR) memset((PTR), 0, sizeof(*(PTR))) |
Zeroes the correct amount of memory based on the type pointed-to by the argument. More... | |
#define | U_ZERO_ARRAY(ARRAY) memset((ARRAY), 0, sizeof(ARRAY)) |
Zeroes the correct amount of memory based on the type and size of the static array named in the argument. More... | |
#define | U_ARRAY_REALLOC_OR_FREE(VAR, TYPE, COUNT) (VAR) = ((TYPE *)u_realloc_or_free((VAR), sizeof(TYPE) * (COUNT))) |
Re-allocate the space required for some type, and update the pointer - freeing the allocation instead if it can't be resized. More... | |
#define | U_TRACE_TARGET_SETUP(WHICH) |
Add to target c file to enable tracing, see Tracing support. More... | |
#define | U_VAR_NAME_STRING_SIZE 256 |
Maximum string length for a tracked variable. More... | |
#define | U_WAIT_MEASURED_SCHEDULER_LATENCY_NS (uint64_t)(0) |
OS specific tweak to wait time. More... | |
Typedefs | |
typedef xrt_result_t(* | u_builder_open_system_fn) (struct xrt_builder *xb, cJSON *config, struct xrt_prober *xp, struct xrt_tracking_origin *origin, struct xrt_system_devices *xsysd, struct xrt_frame_context *xfctx, struct u_builder_roles_helper *ubrh) |
Argument to u_builder_roles_helper_open_system and implemented by u_builder::open_system_static_roles function. More... | |
typedef int64_t | timepoint_ns |
Integer timestamp type. More... | |
typedef int64_t | time_duration_ns |
Integer duration type in nanoseconds. More... | |
typedef void(* | u_var_button_cb) (void *) |
Callback for a button action. More... | |
typedef struct u_var_curve_point(* | u_var_curve_getter) (void *data, int i) |
Callback for getting points on a curve. More... | |
typedef void(* | u_var_root_cb) (struct u_var_root_info *info, void *) |
Callback for entering and leaving root nodes. More... | |
typedef void(* | u_var_elm_cb) (struct u_var_info *info, void *) |
Callback on each variable a root node has. More... | |
typedef void(* | u_worker_group_func_t) (void *) |
Function typedef for tasks. More... | |
Enumerations | |
enum | u_trace_which { U_TRACE_WHICH_SERVICE , U_TRACE_WHICH_OPENXR } |
Should the extra tracks be enabled, see Tracing support. More... | |
enum | u_var_kind { U_VAR_KIND_BOOL , U_VAR_KIND_RGB_U8 , U_VAR_KIND_RGB_F32 , U_VAR_KIND_U8 , U_VAR_KIND_U16 , U_VAR_KIND_U64 , U_VAR_KIND_I32 , U_VAR_KIND_I64 , U_VAR_KIND_F32 , U_VAR_KIND_DRAGGABLE_F32 , U_VAR_KIND_F64 , U_VAR_KIND_F32_ARR , U_VAR_KIND_TIMING , U_VAR_KIND_VEC3_I32 , U_VAR_KIND_VEC3_F32 , U_VAR_KIND_POSE , U_VAR_KIND_SINK_DEBUG , U_VAR_KIND_NATIVE_IMAGES_DEBUG , U_VAR_KIND_LOG_LEVEL , U_VAR_KIND_RO_TEXT , U_VAR_KIND_RO_FTEXT , U_VAR_KIND_RO_I32 , U_VAR_KIND_RO_U32 , U_VAR_KIND_RO_F32 , U_VAR_KIND_RO_I64 , U_VAR_KIND_RO_U64 , U_VAR_KIND_RO_F64 , U_VAR_KIND_RO_VEC3_I32 , U_VAR_KIND_RO_VEC3_F32 , U_VAR_KIND_RO_QUAT_F32 , U_VAR_KIND_RO_FF_F64 , U_VAR_KIND_RO_FF_VEC3_F32 , U_VAR_KIND_GUI_HEADER , U_VAR_KIND_GUI_HEADER_BEGIN , U_VAR_KIND_GUI_HEADER_END , U_VAR_KIND_BUTTON , U_VAR_KIND_COMBO , U_VAR_KIND_HISTOGRAM_F32 , U_VAR_KIND_DRAGGABLE_U16 , U_VAR_KIND_CURVE , U_VAR_KIND_CURVES } |
What kind of variable is this tracking. More... | |
Functions | |
struct xrt_prober_device * | u_builder_find_prober_device (struct xrt_prober_device *const *xpdevs, size_t xpdev_count, uint16_t vendor_id, uint16_t product_id, enum xrt_bus_type bus_type) |
Find the first xrt_prober_device in the prober list. More... | |
void | u_builder_search (struct xrt_prober *xp, struct xrt_prober_device *const *xpdevs, size_t xpdev_count, const struct u_builder_search_filter *filters, size_t filter_count, struct u_builder_search_results *results) |
Find all of the xrt_prober_device that matches any in the given list of u_builder_search_filter filters. More... | |
void | u_builder_setup_tracking_origins (struct xrt_device *head, struct xrt_device *left, struct xrt_device *right, struct xrt_vec3 *global_tracking_origin_offset) |
Helper function for setting up tracking origins. More... | |
void | u_builder_create_space_overseer_legacy (struct xrt_session_event_sink *broadcast, struct xrt_device *head, struct xrt_device *left, struct xrt_device *right, struct xrt_device **xdevs, uint32_t xdev_count, bool root_is_unbounded, bool per_app_local_spaces, struct xrt_space_overseer **out_xso) |
Create a legacy space overseer, most builders probably want to have a more advanced setup then this, especially stand alone ones. More... | |
xrt_result_t | u_builder_roles_helper_open_system (struct xrt_builder *xb, cJSON *config, struct xrt_prober *xp, struct xrt_session_event_sink *broadcast, struct xrt_system_devices **out_xsysd, struct xrt_space_overseer **out_xso, u_builder_open_system_fn fn) |
Helper to create a system devices that has static roles and a appropriate space overseer. More... | |
xrt_result_t | u_builder_open_system_static_roles (struct xrt_builder *xb, cJSON *config, struct xrt_prober *xp, struct xrt_session_event_sink *broadcast, struct xrt_system_devices **out_xsysd, struct xrt_space_overseer **out_xso) |
Implementation for xrt_builder::open_system to be used with u_builder. More... | |
void | u_config_json_open_or_create_main_file (struct u_config_json *json) |
Load the JSON config file. More... | |
void | u_config_json_save_calibration (struct u_config_json *json, struct xrt_settings_tracking *settings) |
Writes back calibration settings to the main config file. More... | |
void | u_config_json_save_overrides (struct u_config_json *json, struct xrt_tracking_override *overrides, size_t override_count) |
Writes back tracking override settings to the main config file. More... | |
void | u_config_json_get_active (struct u_config_json *json, enum u_config_json_active_config *out_active) |
Read from the JSON loaded json config file and returns the active config, can be overridden by P_OVERRIDE_ACTIVE_CONFIG envirmental variable. More... | |
bool | u_config_json_get_tracking_settings (struct u_config_json *json, struct xrt_settings_tracking *s) |
Extract tracking settings from the JSON. More... | |
bool | u_config_json_get_tracking_overrides (struct u_config_json *json, struct xrt_tracking_override *out_overrides, size_t *out_override_count) |
Extract tracking override settings from the JSON. More... | |
bool | u_config_json_get_remote_settings (struct u_config_json *json, int *out_port, uint32_t *out_view_count) |
Extract remote settings from the JSON. More... | |
bool | u_device_setup_one_eye (struct xrt_device *xdev, const struct u_device_simple_info *info) |
Setup the device information given a very simple info struct. More... | |
bool | u_device_setup_split_side_by_side (struct xrt_device *xdev, const struct u_device_simple_info *info) |
Setup the device information given a very simple info struct. More... | |
bool | u_extents_2d_split_side_by_side (struct xrt_device *xdev, const struct u_extents_2d *extents) |
Setup the device's display's 2D extents. More... | |
void | u_device_dump_config (struct xrt_device *xdev, const char *prefix, const char *prod) |
Dump the device config to stderr. More... | |
void * | u_device_allocate (enum u_device_alloc_flags flags, size_t size, size_t input_count, size_t output_count) |
Helper function to allocate a device plus inputs in the same allocation placed after the device in memory. More... | |
void | u_device_free (struct xrt_device *xdev) |
Helper function to free a device and any data hanging of it. More... | |
void | u_device_assign_xdev_roles (struct xrt_device **xdevs, size_t xdev_count, int *head, int *left, int *right) |
Helper function to assign head, left hand and right hand roles. More... | |
xrt_result_t | u_device_noop_update_inputs (struct xrt_device *xdev) |
Noop function for xrt_device::update_inputs, should only be used from a device with any inputs. More... | |
void | u_device_ni_get_hand_tracking (struct xrt_device *xdev, enum xrt_input_name name, uint64_t desired_timestamp_ns, struct xrt_hand_joint_set *out_value, uint64_t *out_timestamp_ns) |
Not implemented function for xrt_device::get_hand_tracking. More... | |
void | u_device_ni_set_output (struct xrt_device *xdev, enum xrt_output_name name, const union xrt_output_value *value) |
Not implemented function for xrt_device::set_output. More... | |
void | u_device_ni_get_view_poses (struct xrt_device *xdev, const struct xrt_vec3 *default_eye_relation, int64_t at_timestamp_ns, uint32_t view_count, struct xrt_space_relation *out_head_relation, struct xrt_fov *out_fovs, struct xrt_pose *out_poses) |
Not implemented function for xrt_device::get_view_poses. More... | |
bool | u_device_ni_compute_distortion (struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *out_result) |
Not implemented function for xrt_device::compute_distortion. More... | |
xrt_result_t | u_device_ni_get_visibility_mask (struct xrt_device *xdev, enum xrt_visibility_mask_type type, uint32_t view_index, struct xrt_visibility_mask **out_mask) |
Not implemented function for xrt_device::get_visibility_mask. More... | |
bool | u_device_ni_is_form_factor_available (struct xrt_device *xdev, enum xrt_form_factor form_factor) |
Not implemented function for xrt_device::is_form_factor_available. More... | |
xrt_result_t | u_device_ni_get_battery_status (struct xrt_device *xdev, bool *out_present, bool *out_charging, float *out_charge) |
Not implemented function for xrt_device::get_battery_status. More... | |
const char * | u_format_str (enum xrt_format f) |
Return string for this format. More... | |
bool | u_format_is_blocks (enum xrt_format f) |
Is this format block based, also returns true for formats that 1x1 blocks. More... | |
uint32_t | u_format_block_width (enum xrt_format f) |
Returns the width of the block for the given format. More... | |
uint32_t | u_format_block_height (enum xrt_format f) |
Returns the height of the block for the given format. More... | |
size_t | u_format_block_size (enum xrt_format f) |
Returns the size of the block for the given format. More... | |
void | u_format_size_for_dimensions (enum xrt_format f, uint32_t width, uint32_t height, size_t *out_stride, size_t *out_size) |
Calculate stride and size for the format and given width and height. More... | |
void | u_hand_joints_apply_joint_width (struct xrt_hand_joint_set *set) |
Applies joint width to set. More... | |
bool | u_hand_joint_is_tip (enum xrt_hand_joint joint) |
bool | u_hand_joint_is_metacarpal (enum xrt_hand_joint joint) |
bool | u_hand_joint_is_proximal (enum xrt_hand_joint joint) |
bool | u_hand_joint_is_intermediate (enum xrt_hand_joint joint) |
bool | u_hand_joint_is_distal (enum xrt_hand_joint joint) |
bool | u_hand_joint_is_thumb (enum xrt_hand_joint joint) |
void | u_hashmap_int_for_each (const struct u_hashmap_int *hmi, u_hashmap_int_foreach_callback cb, void *priv_ctx) |
iterators through each [key,item] pairs of hash map More... | |
void | u_hashmap_int_clear_and_call_for_each (struct u_hashmap_int *hmi, u_hashmap_int_callback cb, void *priv) |
First clear the hashmap and then call the given callback with each item that was in the hashmap. More... | |
void | u_hashset_clear_and_call_for_each (struct u_hashset *hs, u_hashset_callback cb, void *priv) |
First clear the hashset and then call the given callback with each item that was in the hashset. More... | |
xrt_limited_unique_id_t | u_limited_unique_id_get (void) |
This function returns a unsigned 64 bit value that is guaranteed to be unique within the current running process, and not zero. More... | |
void | u_linux_try_to_set_realtime_priority_on_thread (enum u_logging_level log_level, const char *name) |
Try to set realtime priority on this thread. More... | |
static void * | u_realloc_or_free (void *ptr, size_t new_size) |
Reallocates or frees dynamically-allocated memory. More... | |
static void | u_native_images_debug_init (struct u_native_images_debug *unid) |
Must be called before variable is tracked. More... | |
static void | u_native_images_debug_destroy (struct u_native_images_debug *unid) |
Must not be called while variable longer tracked, after u_var_remove_root . More... | |
static void | u_native_images_debug_lock (struct u_native_images_debug *unid) |
Simple lock helper. More... | |
static void | u_native_images_debug_unlock (struct u_native_images_debug *unid) |
Simple lock helper. More... | |
static void | u_native_images_debug_set_locked (struct u_native_images_debug *unid, xrt_limited_unique_id_t limited_unique_id, struct xrt_image_native *native_images, uint32_t native_image_count, const struct xrt_swapchain_create_info *xscci, uint32_t active_index, bool flip_y) |
Helper function to update all variables, must be called with the lock held. More... | |
static void | u_native_images_debug_set (struct u_native_images_debug *unid, xrt_limited_unique_id_t limited_unique_id, struct xrt_image_native *native_images, uint32_t native_image_count, const struct xrt_swapchain_create_info *xscci, uint32_t active_index, bool flip_y) |
Updates all variables atomically by holding the lock. More... | |
static void | u_native_images_debug_clear_locked (struct u_native_images_debug *unid) |
Clear all variables, must be called with the lock held. More... | |
static void | u_native_images_debug_clear (struct u_native_images_debug *unid) |
Clear all variables atomically by holding the lock, still valid to use. More... | |
static void | u_swapchain_debug_init (struct u_swapchain_debug *uscd) |
Must be called before variable is tracked. More... | |
static void | u_swapchain_debug_set (struct u_swapchain_debug *uscd, struct xrt_swapchain_native *xscn, const struct xrt_swapchain_create_info *xscci, uint32_t active_index, bool flip_y) |
Updates all variables atomically by holding the lock. More... | |
static void | u_swapchain_debug_clear (struct u_swapchain_debug *uscd) |
Clear all variables atomically by holding the lock, still valid to use. More... | |
static void | u_swapchain_debug_destroy (struct u_swapchain_debug *uscd) |
Must not be called while variable longer tracked, after u_var_remove_root . More... | |
static void | u_swapchain_debug_lock (struct u_swapchain_debug *uscd) |
Simple lock helper. More... | |
static void | u_swapchain_debug_unlock (struct u_swapchain_debug *uscd) |
Simple lock helper. More... | |
struct u_process * | u_process_create_if_not_running (void) |
Creates a handle for this process that is unique to the operating system user. More... | |
void | u_process_destroy (struct u_process *proc) |
Releases the unique handle of the operating system user. More... | |
struct u_space_overseer * | u_space_overseer_create (struct xrt_session_event_sink *broadcast) |
Create a default implementation of a space overseer. More... | |
void | u_space_overseer_legacy_setup (struct u_space_overseer *uso, struct xrt_device **xdevs, uint32_t xdev_count, struct xrt_device *head, const struct xrt_pose *local_offset, bool root_is_unbounded, bool per_app_local_spaces) |
Sets up the space overseer and all semantic spaces in a way that works with the old xrt_tracking_origin information. More... | |
void | u_space_overseer_create_null_space (struct u_space_overseer *uso, struct xrt_space *parent, struct xrt_space **out_space) |
Creates a space without any offset, this is just for optimisation over a regular offset space. More... | |
void | u_space_overseer_link_space_to_device (struct u_space_overseer *uso, struct xrt_space *xs, struct xrt_device *xdev) |
The space overseer internally keeps track the space that xrt_device is in, and then uses that mapping when creating pose spaces. More... | |
static struct u_system_devices * | u_system_devices (struct xrt_system_devices *xsysd) |
Small inline helper to cast from xrt_system_devices. More... | |
struct u_system_devices * | u_system_devices_allocate (void) |
Allocates a empty u_system_devices to be filled in by the caller, only the destroy function is filled in. More... | |
void | u_system_devices_close (struct xrt_system_devices *xsysd) |
Destroys all devices and clears out the frame context, doesn't free the struct itself, useful for code embedding the system devices struct into other objects where it's not the first member or C++ classes. More... | |
static struct u_system_devices_static * | u_system_devices_static (struct xrt_system_devices *xsysd) |
Small inline helper to cast from xrt_system_devices. More... | |
struct u_system_devices_static * | u_system_devices_static_allocate (void) |
Allocates a empty u_system_devices to be filled in by the caller, only the destroy function is filled in. More... | |
void | u_system_devices_static_finalize (struct u_system_devices_static *usysds, struct xrt_device *left, struct xrt_device *right) |
Finalizes the static struct with the given input devices, the system devices will always return these devices for the left and right role. More... | |
xrt_result_t | u_system_devices_create_from_prober (struct xrt_instance *xinst, struct xrt_session_event_sink *broadcast, struct xrt_system_devices **out_xsysd, struct xrt_space_overseer **out_xso) |
Takes a xrt_instance, gets the prober from it and then uses the prober to allocate a filled in u_system_devices. More... | |
struct xrt_device * | u_system_devices_get_ht_device (struct xrt_system_devices *xsysd, enum xrt_input_name name) |
Helper function. More... | |
static struct xrt_device * | u_system_devices_get_ht_device_left (struct xrt_system_devices *xsysd) |
Helper to get the first left hand-tracking device, uses u_system_devices_get_ht_device. More... | |
static struct xrt_device * | u_system_devices_get_ht_device_right (struct xrt_system_devices *xsysd) |
Helper to get the first right hand-tracking device, uses u_system_devices_get_ht_device. More... | |
static double | time_ns_to_s (time_duration_ns ns) |
Convert nanoseconds duration to double seconds. More... | |
static time_duration_ns | time_s_to_ns (double duration) |
Convert float seconds to nanoseconds. More... | |
static double | time_ns_to_ms_f (time_duration_ns ns) |
Convert nanoseconds to double float milliseconds, useful for printing. More... | |
static timepoint_ns | time_ms_f_to_ns (double ms_f) |
Convert double float milliseconds to nanoseconds, human comprehensible config inputs. More... | |
static bool | time_is_within_range_of_each_other (timepoint_ns a, timepoint_ns b, int64_t range) |
Checks if two timepoints are with a certain range of each other. More... | |
static bool | time_is_within_half_ms (timepoint_ns a, timepoint_ns b) |
Checks if two timepoints are with half a millisecond of each other. More... | |
static bool | time_is_less_then_or_within_range (timepoint_ns a, timepoint_ns b, int64_t range) |
Fuzzy comparisons. More... | |
static bool | time_is_less_then_or_within_half_ms (timepoint_ns a, timepoint_ns b) |
Fuzzy comparisons. More... | |
static bool | time_is_greater_then_or_within_range (timepoint_ns a, timepoint_ns b, int64_t range) |
Fuzzy comparisons. More... | |
static bool | time_is_greater_then_or_within_half_ms (timepoint_ns a, timepoint_ns b) |
Fuzzy comparisons. More... | |
void | u_trace_marker_setup (enum u_trace_which which) |
Internal setup function, use U_TRACE_TARGET_SETUP, see Tracing support. More... | |
void | u_trace_marker_init (void) |
Must be called from a non-static/global constructor context. More... | |
static int | u_truncate_vsnprintf (char *chars, size_t char_count, const char *fmt, va_list args) |
We want to truncate the value, not get the possible written. More... | |
static int | u_truncate_snprintf (char *chars, size_t char_count, const char *fmt,...) |
We want to truncate the value, not get the possible written, and error when we can not write out anything. More... | |
void | u_var_add_root (void *root, const char *c_name, bool suffix_with_number) |
Add a named root object, the u_var subsystem is completely none-invasive to the object it's tracking. More... | |
void | u_var_remove_root (void *root) |
Remove the root node. More... | |
void | u_var_visit (u_var_root_cb enter_cb, u_var_root_cb exit_cb, u_var_elm_cb elem_cb, void *priv) |
Visit all root nodes and their variables. More... | |
void | u_var_force_on (void) |
This forces the variable tracking code to on, it is disabled by default. More... | |
void | u_visibility_mask_get_default (enum xrt_visibility_mask_type type, const struct xrt_fov *fov, struct xrt_visibility_mask **out_mask) |
Default visibility mask, only returns a very simple mask with four small triangles in each corner, scaled to the given FoV so it matches the OpenXR conventions. More... | |
static void | u_wait_until (struct os_precise_sleeper *sleeper, uint64_t until_ns) |
Waits until the given time using the os_precise_sleeper. More... | |
struct u_worker_thread_pool * | u_worker_thread_pool_create (uint32_t starting_worker_count, uint32_t thread_count, const char *prefix) |
Creates a new thread pool to be used by a worker group. More... | |
void | u_worker_thread_pool_destroy (struct u_worker_thread_pool *uwtp) |
Internal function, only called by reference. More... | |
static void | u_worker_thread_pool_reference (struct u_worker_thread_pool **dst, struct u_worker_thread_pool *src) |
Standard Monado reference function. More... | |
struct u_worker_group * | u_worker_group_create (struct u_worker_thread_pool *uwtp) |
Create a new worker group. More... | |
void | u_worker_group_push (struct u_worker_group *uwg, u_worker_group_func_t f, void *data) |
Push a new task to worker group. More... | |
void | u_worker_group_wait_all (struct u_worker_group *uwg) |
Wait for all pushed tasks to be completed, "donates" this thread to the shared thread pool. More... | |
void | u_worker_group_destroy (struct u_worker_group *uwg) |
Destroy a worker pool. More... | |
static void | u_worker_group_reference (struct u_worker_group **dst, struct u_worker_group *src) |
Standard Monado reference function. More... | |
bool | u_config_json_get_tracking_settings (struct u_config_json *json, struct xrt_settings_tracking *s) |
Extract tracking settings from the JSON. More... | |
bool | u_config_json_get_tracking_overrides (struct u_config_json *json, struct xrt_tracking_override *out_overrides, size_t *out_override_count) |
Extract tracking override settings from the JSON. More... | |
static bool | u_live_stats_ns::u_ls_ns_add (struct u_live_stats_ns *uls, uint64_t value) |
Add a value to the live stats struct, returns true if the struct is full either before or after adding the value. More... | |
struct u_session * | u_session::u_session_create (struct u_system *usys) |
Create a session, optionally pass in a u_system. More... | |
void | u_session::u_session_event_push (struct u_session *us, const union xrt_session_event *xse) |
Push an event to this session. More... | |
void | u_session::u_session_event_pop (struct u_session *us, union xrt_session_event *out_xse) |
Pop a single event from this session, if no event is available then the type of the event will be XRT_SESSION_EVENT_NONE. More... | |
struct u_system * | u_system::u_system_create (void) |
Create a u_system. More... | |
void | u_system::u_system_add_session (struct u_system *usys, struct xrt_session *xs, struct xrt_session_event_sink *xses) |
Add a xrt_session to be tracked and to receive multiplexed events. More... | |
void | u_system::u_system_remove_session (struct u_system *usys, struct xrt_session *xs, struct xrt_session_event_sink *xses) |
Remove a xrt_session from tracking, it will no longer receive events, the given xses needs to match when it was added. More... | |
void | u_system::u_system_broadcast_event (struct u_system *usys, const union xrt_session_event *xse) |
Broadcast event to all sessions under this system. More... | |
void | u_system::u_system_set_system_compositor (struct u_system *usys, struct xrt_system_compositor *xsysc) |
Set the system compositor, used in the xrt_system_create_session call. More... | |
void | u_system::u_system_fill_properties (struct u_system *usys, const char *name) |
Fill system properties. More... | |
struct time_state * | time_state::time_state_create (int64_t offset) |
Create a struct time_state. More... | |
void | time_state::time_state_destroy (struct time_state **state) |
Destroy a struct time_state. More... | |
timepoint_ns | time_state::time_state_get_now (struct time_state const *state) |
Get the current time as an integer timestamp. More... | |
timepoint_ns | time_state::time_state_get_now_and_update (struct time_state *state) |
Get the current time as an integer timestamp and update internal state. More... | |
void | time_state::time_state_to_timespec (struct time_state const *state, timepoint_ns timestamp, struct timespec *out) |
Convert an integer timestamp to a struct timespec (system time). More... | |
timepoint_ns | time_state::time_state_from_timespec (struct time_state const *state, const struct timespec *timespecTime) |
Convert a struct timespec (system time) to an integer timestamp. More... | |
timepoint_ns | time_state::time_state_monotonic_to_ts_ns (struct time_state const *state, int64_t monotonic_ns) |
Convert a monotonic system time (such as from Portable Timekeeping) to an adjusted integer timestamp. More... | |
int64_t | time_state::time_state_ts_to_monotonic_ns (struct time_state const *state, timepoint_ns timestamp) |
Convert a adjusted integer timestamp to an monotonic system time (such as from Portable Timekeeping). More... | |
void | time_state::time_state_to_win32perfcounter (struct time_state const *state, timepoint_ns timestamp, LARGE_INTEGER *out_qpc_ticks) |
Converts a timestamp to Win32 "QPC" ticks. More... | |
timepoint_ns | time_state::time_state_from_win32perfcounter (struct time_state const *state, const LARGE_INTEGER *qpc_ticks) |
Converts from Win32 "QPC" ticks to timestamp. More... | |
Smaller pieces of auxiliary utilities code.
#define U_ARRAY_REALLOC_OR_FREE | ( | VAR, | |
TYPE, | |||
COUNT | |||
) | (VAR) = ((TYPE *)u_realloc_or_free((VAR), sizeof(TYPE) * (COUNT))) |
#include <auxiliary/util/u_misc.h>
Re-allocate the space required for some type, and update the pointer - freeing the allocation instead if it can't be resized.
Use instead of a bare realloc when allocating an array of a type. This includes reallocating C strings: pass char as the type.
Be sure not to parenthesize the type! It will cause an error like "expression expected".
On the other hand, if you get an incompatible types error in assignment, that's a type mismatch, a real bug.
#define U_BUILDER_SEARCH_MAX (16) |
#include <auxiliary/util/u_builders.h>
Max return of the number xrt_prober_device.
#define U_CALLOC_WITH_CAST | ( | TYPE, | |
SIZE | |||
) | ((TYPE *)calloc(1, SIZE)) |
#include <auxiliary/util/u_misc.h>
Allocate and zero the give size and casts the memory into a pointer of the given type.
Use instead of a bare calloc, but only when U_TYPED_CALLOC and U_TYPED_ARRAY_CALLOC do not meet your needs.
U_CALLOC_WITH_CAST(struct MyStruct, sizeof(MyStruct))
to allocate a single structure of fixed size, you should actually use U_TYPED_CALLOC(struct MyStruct)
.U_CALLOC_WITH_CAST(struct MyStruct, sizeof(MyStruct) *
n)
to allocate an array, you should actually use U_TYPED_ARRAY_CALLOC(struct MyStruct, n)
. #define U_LIVE_STATS_NAME_COUNT (16) |
#include <auxiliary/util/u_live_stats.h>
Number of chars for the name of the live stats.
#define U_LIVE_STATS_VALUE_COUNT (1024) |
#include <auxiliary/util/u_live_stats.h>
Max number of values that can be put into the trackers.
#define U_TRACE_TARGET_SETUP | ( | WHICH | ) |
#include <auxiliary/util/u_trace_marker.h>
Add to target c file to enable tracing, see Tracing support.
#define U_TYPED_ARRAY_CALLOC | ( | TYPE, | |
COUNT | |||
) | ((TYPE *)calloc((COUNT), sizeof(TYPE))) |
#include <auxiliary/util/u_misc.h>
Allocate and zero the space required for some type, and cast the return type appropriately.
Use instead of a bare calloc when allocating an array of a type. This includes allocating C strings: pass char as the type.
#define U_TYPED_CALLOC | ( | TYPE | ) | ((TYPE *)calloc(1, sizeof(TYPE))) |
#include <auxiliary/util/u_misc.h>
Allocate and zero the space required for some type, and cast the return type appropriately.
Use instead of a bare calloc when allocating a single structure.
#define U_VAR_NAME_STRING_SIZE 256 |
#include <auxiliary/util/u_var.h>
Maximum string length for a tracked variable.
#define U_WAIT_MEASURED_SCHEDULER_LATENCY_NS (uint64_t)(0) |
#define U_ZERO | ( | PTR | ) | memset((PTR), 0, sizeof(*(PTR))) |
#include <auxiliary/util/u_misc.h>
Zeroes the correct amount of memory based on the type pointed-to by the argument.
Use instead of memset(..., 0, ...) on a structure or pointer to structure.
#define U_ZERO_ARRAY | ( | ARRAY | ) | memset((ARRAY), 0, sizeof(ARRAY)) |
#include <auxiliary/util/u_misc.h>
Zeroes the correct amount of memory based on the type and size of the static array named in the argument.
Use instead of memset(..., 0, ...) on an array.
typedef int64_t time_duration_ns |
#include <auxiliary/util/u_time.h>
Integer duration type in nanoseconds.
Logical type of timepoint differences.
typedef int64_t timepoint_ns |
typedef xrt_result_t(* u_builder_open_system_fn) (struct xrt_builder *xb, cJSON *config, struct xrt_prober *xp, struct xrt_tracking_origin *origin, struct xrt_system_devices *xsysd, struct xrt_frame_context *xfctx, struct u_builder_roles_helper *ubrh) |
#include <auxiliary/util/u_builders.h>
Argument to u_builder_roles_helper_open_system and implemented by u_builder::open_system_static_roles function.
A builder implement this function is free to focus on only creating the devices and assigning them initial roles. With this implementation details of the xrt_system_devices and xrt_space_overseer is taken care of by the caller of this function.
typedef void(* u_var_button_cb) (void *) |
#include <auxiliary/util/u_var.h>
Callback for a button action.
typedef struct u_var_curve_point(* u_var_curve_getter) (void *data, int i) |
#include <auxiliary/util/u_var.h>
Callback for getting points on a curve.
typedef void(* u_var_elm_cb) (struct u_var_info *info, void *) |
#include <auxiliary/util/u_var.h>
Callback on each variable a root node has.
typedef void(* u_var_root_cb) (struct u_var_root_info *info, void *) |
#include <auxiliary/util/u_var.h>
Callback for entering and leaving root nodes.
typedef void(* u_worker_group_func_t) (void *) |
#include <auxiliary/util/u_worker.h>
Function typedef for tasks.
enum u_trace_which |
#include <auxiliary/util/u_trace_marker.h>
Should the extra tracks be enabled, see Tracing support.
enum u_var_kind |
#include <auxiliary/util/u_var.h>
What kind of variable is this tracking.
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Fuzzy comparisons.
References time_is_greater_then_or_within_range(), and U_TIME_HALF_MS_IN_NS.
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Fuzzy comparisons.
References time_is_within_range_of_each_other().
Referenced by time_is_greater_then_or_within_half_ms().
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Fuzzy comparisons.
References time_is_less_then_or_within_range(), and U_TIME_HALF_MS_IN_NS.
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Fuzzy comparisons.
References time_is_within_range_of_each_other().
Referenced by time_is_less_then_or_within_half_ms(), and u_wait_until().
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Checks if two timepoints are with half a millisecond of each other.
References time_is_within_range_of_each_other(), and U_TIME_HALF_MS_IN_NS.
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Checks if two timepoints are with a certain range of each other.
Referenced by time_is_greater_then_or_within_range(), time_is_less_then_or_within_range(), and time_is_within_half_ms().
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Convert double float milliseconds to nanoseconds, human comprehensible config inputs.
Recommended to keep the absolute value of the input relitively small.
References U_TIME_1MS_IN_NS.
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Convert nanoseconds to double float milliseconds, useful for printing.
References U_TIME_1MS_IN_NS.
Referenced by comp_mirror_to_debug_gui::comp_mirror_fixup_ui_state().
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Convert nanoseconds duration to double seconds.
References U_TIME_1S_IN_NS.
|
inlinestatic |
#include <auxiliary/util/u_time.h>
Convert float seconds to nanoseconds.
Referenced by get_info().
struct time_state * time_state_create | ( | int64_t | offset | ) |
Create a struct time_state.
void time_state_destroy | ( | struct time_state ** | state | ) |
Destroy a struct time_state.
Should not be called simultaneously with any other time_state function.
timepoint_ns time_state_from_timespec | ( | struct time_state const * | state, |
const struct timespec * | timespecTime | ||
) |
Convert a struct timespec (system time) to an integer timestamp.
Should not be called simultaneously with time_state_get_now_and_update.
References time_state::time_state_monotonic_to_ts_ns(), and U_1_000_000_000.
timepoint_ns time_state_from_win32perfcounter | ( | struct time_state const * | state, |
const LARGE_INTEGER * | qpc_ticks | ||
) |
Converts from Win32 "QPC" ticks to timestamp.
Should not be called simultaneously with time_state_get_now_and_update.
timepoint_ns time_state_get_now | ( | struct time_state const * | state | ) |
Get the current time as an integer timestamp.
Does not update internal state for timekeeping. Should not be called simultaneously with time_state_get_now_and_update.
References os_monotonic_get_ns(), and time_state::time_state_monotonic_to_ts_ns().
Referenced by time_state::time_state_get_now_and_update().
timepoint_ns time_state_get_now_and_update | ( | struct time_state * | state | ) |
Get the current time as an integer timestamp and update internal state.
This should be called regularly, but only from one thread. It updates the association between the timing sources.
Should not be called simultaneously with any other time_state function.
References time_state::time_state_get_now().
timepoint_ns time_state_monotonic_to_ts_ns | ( | struct time_state const * | state, |
int64_t | monotonic_ns | ||
) |
Convert a monotonic system time (such as from Portable Timekeeping) to an adjusted integer timestamp.
Adjustments may need to be applied to achieve the other guarantees that e.g. CLOCK_MONOTONIC does not provide: this function performs those adjustments.
Should not be called simultaneously with time_state_get_now_and_update.
Referenced by time_state::time_state_from_timespec(), and time_state::time_state_get_now().
void time_state_to_timespec | ( | struct time_state const * | state, |
timepoint_ns | timestamp, | ||
struct timespec * | out | ||
) |
Convert an integer timestamp to a struct timespec (system time).
Should not be called simultaneously with time_state_get_now_and_update.
void time_state_to_win32perfcounter | ( | struct time_state const * | state, |
timepoint_ns | timestamp, | ||
LARGE_INTEGER * | out_qpc_ticks | ||
) |
Converts a timestamp to Win32 "QPC" ticks.
Should not be called simultaneously with time_state_get_now_and_update.
int64_t time_state_ts_to_monotonic_ns | ( | struct time_state const * | state, |
timepoint_ns | timestamp | ||
) |
Convert a adjusted integer timestamp to an monotonic system time (such as from Portable Timekeeping).
Should not be called simultaneously with time_state_get_now_and_update.
Referenced by oxr_session_frame_end(), and oxr_xdev_get_hand_tracking_at().
void u_builder_create_space_overseer_legacy | ( | struct xrt_session_event_sink * | broadcast, |
struct xrt_device * | head, | ||
struct xrt_device * | left, | ||
struct xrt_device * | right, | ||
struct xrt_device ** | xdevs, | ||
uint32_t | xdev_count, | ||
bool | root_is_unbounded, | ||
bool | per_app_local_spaces, | ||
struct xrt_space_overseer ** | out_xso | ||
) |
#include <auxiliary/util/u_builders.h>
Create a legacy space overseer, most builders probably want to have a more advanced setup then this, especially stand alone ones.
Uses u_builder_setup_tracking_origins internally and u_space_overseer_legacy_setup.
References u_space_overseer::broadcast, u_builder_setup_tracking_origins(), u_space_overseer_create(), u_space_overseer_legacy_setup(), and xrt_pose::XRT_POSE_IDENTITY.
Referenced by u_builder_roles_helper_open_system().
struct xrt_prober_device * u_builder_find_prober_device | ( | struct xrt_prober_device *const * | xpdevs, |
size_t | xpdev_count, | ||
uint16_t | vendor_id, | ||
uint16_t | product_id, | ||
enum xrt_bus_type | bus_type | ||
) |
#include <auxiliary/util/u_builders.h>
Find the first xrt_prober_device in the prober list.
References xrt_prober_device::bus, xrt_prober_device::product_id, and xrt_prober_device::vendor_id.
xrt_result_t u_builder_open_system_static_roles | ( | struct xrt_builder * | xb, |
cJSON * | config, | ||
struct xrt_prober * | xp, | ||
struct xrt_session_event_sink * | broadcast, | ||
struct xrt_system_devices ** | out_xsysd, | ||
struct xrt_space_overseer ** | out_xso | ||
) |
#include <auxiliary/util/u_builders.h>
Implementation for xrt_builder::open_system to be used with u_builder.
Uses u_builder_roles_helper_open_system internally, a builder that uses the u_builder should use this function for xrt_builder::open_system.
When using this function the builder must have u_builder and implement the u_builder::open_system_static_roles function, see documentation for u_builder_open_system_fn about requirements.
References u_builder::open_system_static_roles, and u_builder_roles_helper_open_system().
xrt_result_t u_builder_roles_helper_open_system | ( | struct xrt_builder * | xb, |
cJSON * | config, | ||
struct xrt_prober * | xp, | ||
struct xrt_session_event_sink * | broadcast, | ||
struct xrt_system_devices ** | out_xsysd, | ||
struct xrt_space_overseer ** | out_xso, | ||
u_builder_open_system_fn | fn | ||
) |
#include <auxiliary/util/u_builders.h>
Helper to create a system devices that has static roles and a appropriate space overseer.
Currently uses the functions below to create a full system with the help of fn
argument. But this might change in the future.
References xrt_system_devices::hand_tracking, xrt_system_devices::head, xrt_system_devices::left, u_system_devices::origin, xrt_system_devices::right, xrt_system_devices::static_roles, u_builder_create_space_overseer_legacy(), u_system_devices_static_allocate(), u_system_devices_static_finalize(), xrt_system_devices::xdev_count, xrt_system_devices::xdevs, u_system_devices::xfctx, XRT_STRUCT_INIT, XRT_SUCCESS, and xrt_system_devices::xrt_system_devices_destroy().
Referenced by u_builder_open_system_static_roles().
void u_builder_search | ( | struct xrt_prober * | xp, |
struct xrt_prober_device *const * | xpdevs, | ||
size_t | xpdev_count, | ||
const struct u_builder_search_filter * | filters, | ||
size_t | filter_count, | ||
struct u_builder_search_results * | results | ||
) |
#include <auxiliary/util/u_builders.h>
Find all of the xrt_prober_device that matches any in the given list of u_builder_search_filter filters.
References ARRAY_SIZE, xrt_prober_device::bus, xrt_prober_device::product_id, xrt_prober_device::vendor_id, u_builder_search_results::xpdev_count, and u_builder_search_results::xpdevs.
void u_builder_setup_tracking_origins | ( | struct xrt_device * | head, |
struct xrt_device * | left, | ||
struct xrt_device * | right, | ||
struct xrt_vec3 * | global_tracking_origin_offset | ||
) |
#include <auxiliary/util/u_builders.h>
Helper function for setting up tracking origins.
Applies 3dof offsets for devices with XRT_TRACKING_TYPE_NONE.
References xrt_device::tracking_origin, and xrt_tracking_origin::type.
Referenced by u_builder_create_space_overseer_legacy().
void u_config_json_get_active | ( | struct u_config_json * | json, |
enum u_config_json_active_config * | out_active | ||
) |
#include <auxiliary/util/u_config_json.h>
Read from the JSON loaded json config file and returns the active config, can be overridden by P_OVERRIDE_ACTIVE_CONFIG
envirmental variable.
bool u_config_json_get_remote_settings | ( | struct u_config_json * | json, |
int * | out_port, | ||
uint32_t * | out_view_count | ||
) |
#include <auxiliary/util/u_config_json.h>
Extract remote settings from the JSON.
References U_LOG_E.
bool u_config_json_get_tracking_overrides | ( | struct u_config_json * | json, |
struct xrt_tracking_override * | out_overrides, | ||
size_t * | out_override_count | ||
) |
#include <auxiliary/util/u_config_json.h>
Extract tracking override settings from the JSON.
Caller allocates an array of XRT_MAX_TRACKING_OVERRIDES tracking_override.
|
related |
Extract tracking override settings from the JSON.
Caller allocates an array of XRT_MAX_TRACKING_OVERRIDES tracking_override.
bool u_config_json_get_tracking_settings | ( | struct u_config_json * | json, |
struct xrt_settings_tracking * | s | ||
) |
#include <auxiliary/util/u_config_json.h>
Extract tracking settings from the JSON.
|
related |
Extract tracking settings from the JSON.
void u_config_json_open_or_create_main_file | ( | struct u_config_json * | json | ) |
#include <auxiliary/util/u_config_json.h>
Load the JSON config file.
void u_config_json_save_calibration | ( | struct u_config_json * | json, |
struct xrt_settings_tracking * | settings | ||
) |
#include <auxiliary/util/u_config_json.h>
Writes back calibration settings to the main config file.
References u_config_json::file_loaded.
void u_config_json_save_overrides | ( | struct u_config_json * | json, |
struct xrt_tracking_override * | overrides, | ||
size_t | override_count | ||
) |
#include <auxiliary/util/u_config_json.h>
Writes back tracking override settings to the main config file.
References u_config_json::file_loaded.
void * u_device_allocate | ( | enum u_device_alloc_flags | flags, |
size_t | size, | ||
size_t | input_count, | ||
size_t | output_count | ||
) |
#include <auxiliary/util/u_device.h>
Helper function to allocate a device plus inputs in the same allocation placed after the device in memory.
Will setup any pointers and num values.
void u_device_assign_xdev_roles | ( | struct xrt_device ** | xdevs, |
size_t | xdev_count, | ||
int * | head, | ||
int * | left, | ||
int * | right | ||
) |
#include <auxiliary/util/u_device.h>
Helper function to assign head, left hand and right hand roles.
void u_device_dump_config | ( | struct xrt_device * | xdev, |
const char * | prefix, | ||
const char * | prod | ||
) |
void u_device_free | ( | struct xrt_device * | xdev | ) |
#include <auxiliary/util/u_device.h>
Helper function to free a device and any data hanging of it.
References xrt_hmd_parts::distortion, xrt_device::hmd, xrt_hmd_parts::indices, and xrt_hmd_parts::vertices.
bool u_device_ni_compute_distortion | ( | struct xrt_device * | xdev, |
uint32_t | view, | ||
float | u, | ||
float | v, | ||
struct xrt_uv_triplet * | out_result | ||
) |
#include <auxiliary/util/u_device.h>
Not implemented function for xrt_device::compute_distortion.
xrt_result_t u_device_ni_get_battery_status | ( | struct xrt_device * | xdev, |
bool * | out_present, | ||
bool * | out_charging, | ||
float * | out_charge | ||
) |
#include <auxiliary/util/u_device.h>
Not implemented function for xrt_device::get_battery_status.
void u_device_ni_get_hand_tracking | ( | struct xrt_device * | xdev, |
enum xrt_input_name | name, | ||
uint64_t | desired_timestamp_ns, | ||
struct xrt_hand_joint_set * | out_value, | ||
uint64_t * | out_timestamp_ns | ||
) |
#include <auxiliary/util/u_device.h>
Not implemented function for xrt_device::get_hand_tracking.
void u_device_ni_get_view_poses | ( | struct xrt_device * | xdev, |
const struct xrt_vec3 * | default_eye_relation, | ||
int64_t | at_timestamp_ns, | ||
uint32_t | view_count, | ||
struct xrt_space_relation * | out_head_relation, | ||
struct xrt_fov * | out_fovs, | ||
struct xrt_pose * | out_poses | ||
) |
#include <auxiliary/util/u_device.h>
Not implemented function for xrt_device::get_view_poses.
xrt_result_t u_device_ni_get_visibility_mask | ( | struct xrt_device * | xdev, |
enum xrt_visibility_mask_type | type, | ||
uint32_t | view_index, | ||
struct xrt_visibility_mask ** | out_mask | ||
) |
#include <auxiliary/util/u_device.h>
Not implemented function for xrt_device::get_visibility_mask.
bool u_device_ni_is_form_factor_available | ( | struct xrt_device * | xdev, |
enum xrt_form_factor | form_factor | ||
) |
#include <auxiliary/util/u_device.h>
Not implemented function for xrt_device::is_form_factor_available.
void u_device_ni_set_output | ( | struct xrt_device * | xdev, |
enum xrt_output_name | name, | ||
const union xrt_output_value * | value | ||
) |
#include <auxiliary/util/u_device.h>
Not implemented function for xrt_device::set_output.
xrt_result_t u_device_noop_update_inputs | ( | struct xrt_device * | xdev | ) |
#include <auxiliary/util/u_device.h>
Noop function for xrt_device::update_inputs, should only be used from a device with any inputs.
References XRT_SUCCESS.
bool u_device_setup_one_eye | ( | struct xrt_device * | xdev, |
const struct u_device_simple_info * | info | ||
) |
#include <auxiliary/util/u_device.h>
Setup the device information given a very simple info struct.
References xrt_hmd_parts::blend_modes, and xrt_device::hmd.
bool u_device_setup_split_side_by_side | ( | struct xrt_device * | xdev, |
const struct u_device_simple_info * | info | ||
) |
#include <auxiliary/util/u_device.h>
Setup the device information given a very simple info struct.
References xrt_device::hmd.
bool u_extents_2d_split_side_by_side | ( | struct xrt_device * | xdev, |
const struct u_extents_2d * | extents | ||
) |
#include <auxiliary/util/u_device.h>
Setup the device's display's 2D extents.
Good for headsets without traditional VR optics.
References xrt_view::display, xrt_device::hmd, xrt_view::rot, xrt_hmd_parts::screens, xrt_view::viewport, and xrt_hmd_parts::views.
uint32_t u_format_block_height | ( | enum xrt_format | f | ) |
#include <auxiliary/util/u_format.h>
Returns the height of the block for the given format.
Referenced by u_format_size_for_dimensions(), and u_frame_create_roi().
size_t u_format_block_size | ( | enum xrt_format | f | ) |
#include <auxiliary/util/u_format.h>
Returns the size of the block for the given format.
Referenced by get_score(), u_format_size_for_dimensions(), and u_frame_create_roi().
uint32_t u_format_block_width | ( | enum xrt_format | f | ) |
#include <auxiliary/util/u_format.h>
Returns the width of the block for the given format.
Referenced by u_format_size_for_dimensions(), and u_frame_create_roi().
bool u_format_is_blocks | ( | enum xrt_format | f | ) |
#include <auxiliary/util/u_format.h>
Is this format block based, also returns true for formats that 1x1 blocks.
Referenced by u_frame_create_one_off().
void u_format_size_for_dimensions | ( | enum xrt_format | f, |
uint32_t | width, | ||
uint32_t | height, | ||
size_t * | out_stride, | ||
size_t * | out_size | ||
) |
#include <auxiliary/util/u_format.h>
Calculate stride and size for the format and given width and height.
References u_format_block_height(), u_format_block_size(), and u_format_block_width().
const char * u_format_str | ( | enum xrt_format | f | ) |
#include <auxiliary/util/u_format.h>
Return string for this format.
void u_hand_joints_apply_joint_width | ( | struct xrt_hand_joint_set * | set | ) |
#include <auxiliary/util/u_hand_tracking.h>
Applies joint width to set.
void u_hashmap_int_clear_and_call_for_each | ( | struct u_hashmap_int * | hmi, |
u_hashmap_int_callback | cb, | ||
void * | priv | ||
) |
#include <auxiliary/util/u_hashmap.h>
First clear the hashmap and then call the given callback with each item that was in the hashmap.
void u_hashmap_int_for_each | ( | const struct u_hashmap_int * | hmi, |
u_hashmap_int_foreach_callback | cb, | ||
void * | priv_ctx | ||
) |
#include <auxiliary/util/u_hashmap.h>
iterators through each [key,item] pairs of hash map
hmi | hash map to iterate |
cb | callback invoked for each [key,item] pair + a user context. |
priv_ctx | user provided context, passed into cb |
void u_hashset_clear_and_call_for_each | ( | struct u_hashset * | hs, |
u_hashset_callback | cb, | ||
void * | priv | ||
) |
#include <auxiliary/util/u_hashset.h>
First clear the hashset and then call the given callback with each item that was in the hashset.
xrt_limited_unique_id_t u_limited_unique_id_get | ( | void | ) |
#include <auxiliary/util/u_limited_unique_id.h>
This function returns a unsigned 64 bit value that is guaranteed to be unique within the current running process, and not zero.
There is of course the limit of running out of those ID once all values has been returned, but the value is 64 bit so that should not be a practical limit. The value is useful when needing to implement caching of a complex object, this lets us not use memory addresses as keys which may be reused by underlying alloc implementation and could lead to false hits.
The current implementation is naive and is a simple monotonic counter.
void u_linux_try_to_set_realtime_priority_on_thread | ( | enum u_logging_level | log_level, |
const char * | name | ||
) |
#include <auxiliary/util/u_linux.h>
Try to set realtime priority on this thread.
Passing in log_level to control how chatty this function is, the name is to make the logging pretty, can be NULL and the code will try to figure out the name itself.
name | Thread name to be used in logging. |
log_level | Logging level to control chattiness. |
|
inlinestatic |
Add a value to the live stats struct, returns true if the struct is full either before or after adding the value.
References ARRAY_SIZE, u_live_stats_ns::value_count, and u_live_stats_ns::values.
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Clear all variables atomically by holding the lock, still valid to use.
References u_native_images_debug_clear_locked(), u_native_images_debug_lock(), and u_native_images_debug_unlock().
Referenced by comp_scratch_single_images::comp_scratch_single_images_clear_debug(), and comp_scratch_single_images::comp_scratch_single_images_free().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Clear all variables, must be called with the lock held.
References u_native_images_debug::active_index, u_native_images_debug::limited_unique_id, u_native_images_debug::native_image_count, u_native_images_debug::native_images, and u_native_images_debug::xscci.
Referenced by u_native_images_debug_clear(), and u_swapchain_debug_clear().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Must not be called while variable longer tracked, after u_var_remove_root
.
References u_native_images_debug::active_index, u_native_images_debug::flip_y, u_native_images_debug::mutex, u_native_images_debug::native_image_count, u_native_images_debug::native_images, os_mutex::os_mutex_destroy(), and u_native_images_debug::xscci.
Referenced by comp_scratch_single_images::comp_scratch_single_images_destroy().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Must be called before variable is tracked.
References u_native_images_debug::mutex, and os_mutex::os_mutex_init().
Referenced by u_swapchain_debug_init().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Simple lock helper.
References u_native_images_debug::mutex, and os_mutex::os_mutex_lock().
Referenced by gui_widget_native_images_update(), u_native_images_debug_clear(), u_native_images_debug_set(), u_swapchain_debug_clear(), u_swapchain_debug_lock(), and u_swapchain_debug_set().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Updates all variables atomically by holding the lock.
References u_native_images_debug_lock(), u_native_images_debug_set_locked(), and u_native_images_debug_unlock().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Helper function to update all variables, must be called with the lock held.
References u_native_images_debug::active_index, u_native_images_debug::flip_y, u_native_images_debug::limited_unique_id, u_native_images_debug::native_image_count, u_native_images_debug::native_images, and u_native_images_debug::xscci.
Referenced by u_native_images_debug_set(), and u_swapchain_debug_set().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Simple lock helper.
References u_native_images_debug::mutex, and os_mutex::os_mutex_unlock().
Referenced by u_native_images_debug_clear(), u_native_images_debug_set(), u_swapchain_debug_clear(), u_swapchain_debug_set(), and u_swapchain_debug_unlock().
struct u_process * u_process_create_if_not_running | ( | void | ) |
#include <auxiliary/util/u_process.h>
Creates a handle for this process that is unique to the operating system user.
Returns NULL if another process holding a handle is already running.
void u_process_destroy | ( | struct u_process * | proc | ) |
#include <auxiliary/util/u_process.h>
Releases the unique handle of the operating system user.
|
inlinestatic |
#include <auxiliary/util/u_misc.h>
Reallocates or frees dynamically-allocated memory.
Wraps realloc with a return value check, freeing the provided memory if it is NULL, to avoid leaks. Use U_ARRAY_REALLOC_OR_FREE() instead.
Create a session, optionally pass in a u_system.
If usys
is not NULL the call register this session on that system. This function is exposed so that code can reuse u_session as a base class.
References xrt_session::poll_events, and U_TYPED_CALLOC.
void u_session_event_pop | ( | struct u_session * | us, |
union xrt_session_event * | out_xse | ||
) |
Pop a single event from this session, if no event is available then the type of the event will be XRT_SESSION_EVENT_NONE.
References os_mutex::os_mutex_lock(), os_mutex::os_mutex_unlock(), U_ZERO, and XRT_SESSION_EVENT_NONE.
void u_session_event_push | ( | struct u_session * | us, |
const union xrt_session_event * | xse | ||
) |
Push an event to this session.
This function is exposed so that code can reuse u_session as a base class.
References os_mutex::os_mutex_lock(), os_mutex::os_mutex_unlock(), and U_TYPED_CALLOC.
struct u_space_overseer * u_space_overseer_create | ( | struct xrt_session_event_sink * | broadcast | ) |
#include <auxiliary/util/u_space_overseer.h>
Create a default implementation of a space overseer.
[in] | broadcast | Event sink that broadcasts events to all sessions. |
References xrt_space_overseer::create_local_space, and U_TYPED_CALLOC.
Referenced by u_builder_create_space_overseer_legacy().
void u_space_overseer_create_null_space | ( | struct u_space_overseer * | uso, |
struct xrt_space * | parent, | ||
struct xrt_space ** | out_space | ||
) |
#include <auxiliary/util/u_space_overseer.h>
Creates a space without any offset, this is just for optimisation over a regular offset space.
void u_space_overseer_legacy_setup | ( | struct u_space_overseer * | uso, |
struct xrt_device ** | xdevs, | ||
uint32_t | xdev_count, | ||
struct xrt_device * | head, | ||
const struct xrt_pose * | local_offset, | ||
bool | root_is_unbounded, | ||
bool | per_app_local_spaces | ||
) |
#include <auxiliary/util/u_space_overseer.h>
Sets up the space overseer and all semantic spaces in a way that works with the old xrt_tracking_origin information.
Will automatically create local and stage spaces. If another setup is needed the builder should manually set the space graph up using below functions.
References u_space_overseer::per_app_local_spaces, xrt_space_overseer::root, and xrt_device::tracking_origin.
Referenced by u_builder_create_space_overseer_legacy().
void u_space_overseer_link_space_to_device | ( | struct u_space_overseer * | uso, |
struct xrt_space * | xs, | ||
struct xrt_device * | xdev | ||
) |
#include <auxiliary/util/u_space_overseer.h>
The space overseer internally keeps track the space that xrt_device is in, and then uses that mapping when creating pose spaces.
This function allows builders to create a much more bespoke setup. This function adds a reference to the space.
References u_space_overseer::lock.
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Clear all variables atomically by holding the lock, still valid to use.
References u_swapchain_debug::base, u_native_images_debug_clear_locked(), u_native_images_debug_lock(), u_native_images_debug_unlock(), xrt_swapchain_native::xrt_swapchain_native_reference(), and u_swapchain_debug::xscn.
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Must not be called while variable longer tracked, after u_var_remove_root
.
References u_native_images_debug::active_index, u_swapchain_debug::base, u_native_images_debug::mutex, os_mutex::os_mutex_destroy(), xrt_swapchain_native::xrt_swapchain_native_reference(), and u_swapchain_debug::xscn.
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Must be called before variable is tracked.
References u_swapchain_debug::base, and u_native_images_debug_init().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Simple lock helper.
References u_swapchain_debug::base, and u_native_images_debug_lock().
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Updates all variables atomically by holding the lock.
References u_swapchain_debug::base, xrt_swapchain_native::base, xrt_swapchain::image_count, xrt_swapchain_native::limited_unique_id, u_native_images_debug_lock(), u_native_images_debug_set_locked(), u_native_images_debug_unlock(), xrt_swapchain_native::xrt_swapchain_native_reference(), and u_swapchain_debug::xscn.
|
inlinestatic |
#include <auxiliary/util/u_native_images_debug.h>
Simple lock helper.
References u_swapchain_debug::base, and u_native_images_debug_unlock().
void u_system_add_session | ( | struct u_system * | usys, |
struct xrt_session * | xs, | ||
struct xrt_session_event_sink * | xses | ||
) |
Add a xrt_session to be tracked and to receive multiplexed events.
References u_system::count, os_mutex::os_mutex_lock(), os_mutex::os_mutex_unlock(), u_system::pairs, and U_ARRAY_REALLOC_OR_FREE.
void u_system_broadcast_event | ( | struct u_system * | usys, |
const union xrt_session_event * | xse | ||
) |
Broadcast event to all sessions under this system.
References u_system::count, os_mutex::os_mutex_lock(), os_mutex::os_mutex_unlock(), u_system::pairs, U_LOG_W, xrt_session_event_sink::xrt_session_event_sink_push(), and XRT_SUCCESS.
struct u_system * u_system_create | ( | void | ) |
Create a u_system.
References xrt_system::create_session, and U_TYPED_CALLOC.
Referenced by sdl_system_init().
|
inlinestatic |
#include <auxiliary/util/u_system_helpers.h>
Small inline helper to cast from xrt_system_devices.
Referenced by u_system_devices_close().
struct u_system_devices * u_system_devices_allocate | ( | void | ) |
#include <auxiliary/util/u_system_helpers.h>
Allocates a empty u_system_devices to be filled in by the caller, only the destroy function is filled in.
References xrt_system_devices::destroy, and U_TYPED_CALLOC.
void u_system_devices_close | ( | struct xrt_system_devices * | xsysd | ) |
#include <auxiliary/util/u_system_helpers.h>
Destroys all devices and clears out the frame context, doesn't free the struct itself, useful for code embedding the system devices struct into other objects where it's not the first member or C++ classes.
References ARRAY_SIZE, u_system_devices(), xrt_system_devices::xdevs, u_system_devices::xfctx, xrt_device::xrt_device_destroy(), and xrt_frame_context::xrt_frame_context_destroy_nodes().
xrt_result_t u_system_devices_create_from_prober | ( | struct xrt_instance * | xinst, |
struct xrt_session_event_sink * | broadcast, | ||
struct xrt_system_devices ** | out_xsysd, | ||
struct xrt_space_overseer ** | out_xso | ||
) |
#include <auxiliary/util/u_system_helpers.h>
Takes a xrt_instance, gets the prober from it and then uses the prober to allocate a filled in u_system_devices.
References xrt_instance::xrt_instance_get_prober(), xrt_prober::xrt_prober_create_system(), xrt_prober::xrt_prober_probe(), and XRT_SUCCESS.
struct xrt_device * u_system_devices_get_ht_device | ( | struct xrt_system_devices * | xsysd, |
enum xrt_input_name | name | ||
) |
#include <auxiliary/util/u_system_helpers.h>
Helper function.
Looks through xrt_system_devices's devices and returns the first device that supports hand tracking and the supplied input name.
Used by target_builder_lighthouse to find Knuckles controllers in the list of devices returned, the legacy builder to find hand tracking devices, etc.
References xrt_device::input_count, xrt_device::inputs, xrt_system_devices::xdev_count, and xrt_system_devices::xdevs.
Referenced by u_system_devices_get_ht_device_left(), and u_system_devices_get_ht_device_right().
|
inlinestatic |
#include <auxiliary/util/u_system_helpers.h>
Helper to get the first left hand-tracking device, uses u_system_devices_get_ht_device.
References u_system_devices_get_ht_device().
|
inlinestatic |
#include <auxiliary/util/u_system_helpers.h>
Helper to get the first right hand-tracking device, uses u_system_devices_get_ht_device.
References u_system_devices_get_ht_device().
|
inlinestatic |
#include <auxiliary/util/u_system_helpers.h>
Small inline helper to cast from xrt_system_devices.
struct u_system_devices_static * u_system_devices_static_allocate | ( | void | ) |
#include <auxiliary/util/u_system_helpers.h>
Allocates a empty u_system_devices to be filled in by the caller, only the destroy function is filled in.
References xrt_system_devices::destroy, and U_TYPED_CALLOC.
Referenced by u_builder_roles_helper_open_system().
void u_system_devices_static_finalize | ( | struct u_system_devices_static * | usysds, |
struct xrt_device * | left, | ||
struct xrt_device * | right | ||
) |
#include <auxiliary/util/u_system_helpers.h>
Finalizes the static struct with the given input devices, the system devices will always return these devices for the left and right role.
This function must be called before xrt_system_devices_get_roles is called.
Referenced by u_builder_roles_helper_open_system().
void u_system_fill_properties | ( | struct u_system * | usys, |
const char * | name | ||
) |
Fill system properties.
void u_system_remove_session | ( | struct u_system * | usys, |
struct xrt_session * | xs, | ||
struct xrt_session_event_sink * | xses | ||
) |
Remove a xrt_session from tracking, it will no longer receive events, the given xses
needs to match when it was added.
References u_system::count, os_mutex::os_mutex_lock(), u_system::pairs, and U_LOG_E.
void u_system_set_system_compositor | ( | struct u_system * | usys, |
struct xrt_system_compositor * | xsysc | ||
) |
Set the system compositor, used in the xrt_system_create_session call.
References u_system::xsysc.
void u_trace_marker_init | ( | void | ) |
#include <auxiliary/util/u_trace_marker.h>
Must be called from a non-static/global constructor context.
Referenced by xrt_instance::xrt_instance_create().
void u_trace_marker_setup | ( | enum u_trace_which | which | ) |
#include <auxiliary/util/u_trace_marker.h>
Internal setup function, use U_TRACE_TARGET_SETUP, see Tracing support.
|
inlinestatic |
#include <auxiliary/util/u_truncate_printf.h>
We want to truncate the value, not get the possible written, and error when we can not write out anything.
See u_truncate_vsnprintf for more info.
@
References u_truncate_vsnprintf().
|
inlinestatic |
#include <auxiliary/util/u_truncate_printf.h>
We want to truncate the value, not get the possible written.
There are no version of the many Windows versions of this functions that truncates and returns the number of bytes written (not including null). Also need to have the same behaviour on Linux.
@
Referenced by u_truncate_snprintf().
void u_var_add_root | ( | void * | root, |
const char * | c_name, | ||
bool | suffix_with_number | ||
) |
#include <auxiliary/util/u_var.h>
Add a named root object, the u_var subsystem is completely none-invasive to the object it's tracking.
The root pointer is used as a entry into a hashmap of hidden objects. When not active all calls are stubs and have no side-effects.
This is intended only for debugging and is turned off by default, as this all very very unsafe. It is only pointers straight into objects, completely ignores ownership or any safe practices.
The parameter suffix_with_number
makes the variable tracking code suffix the name of the object with with a number. This allows multiple objects of the same name name.
root | Object to be tracked. |
c_name | Name of object, null terminated "C" string. |
suffix_with_number | Should name be suffixed with a number. |
void u_var_force_on | ( | void | ) |
#include <auxiliary/util/u_var.h>
This forces the variable tracking code to on, it is disabled by default.
void u_var_remove_root | ( | void * | root | ) |
#include <auxiliary/util/u_var.h>
Remove the root node.
Referenced by comp_mirror_to_debug_gui::comp_mirror_fini().
void u_var_visit | ( | u_var_root_cb | enter_cb, |
u_var_root_cb | exit_cb, | ||
u_var_elm_cb | elem_cb, | ||
void * | priv | ||
) |
#include <auxiliary/util/u_var.h>
Visit all root nodes and their variables.
void u_visibility_mask_get_default | ( | enum xrt_visibility_mask_type | type, |
const struct xrt_fov * | fov, | ||
struct xrt_visibility_mask ** | out_mask | ||
) |
#include <auxiliary/util/u_visibility_mask.h>
Default visibility mask, only returns a very simple mask with four small triangles in each corner, scaled to the given FoV so it matches the OpenXR conventions.
The caller must take care of de-allocating the mask once done with it.
|
inlinestatic |
#include <auxiliary/util/u_wait.h>
Waits until the given time using the os_precise_sleeper.
References os_monotonic_get_ns(), os_precise_sleeper::os_precise_sleeper_nanosleep(), time_is_less_then_or_within_range(), U_TIME_1MS_IN_NS, and U_WAIT_MEASURED_SCHEDULER_LATENCY_NS.
struct u_worker_group * u_worker_group_create | ( | struct u_worker_thread_pool * | uwtp | ) |
#include <auxiliary/util/u_worker.h>
Create a new worker group.
void u_worker_group_destroy | ( | struct u_worker_group * | uwg | ) |
#include <auxiliary/util/u_worker.h>
Destroy a worker pool.
Referenced by u_worker_group_reference().
void u_worker_group_push | ( | struct u_worker_group * | uwg, |
u_worker_group_func_t | f, | ||
void * | data | ||
) |
#include <auxiliary/util/u_worker.h>
Push a new task to worker group.
Referenced by xrt::auxiliary::util::TaskCollection::TaskCollection().
|
inlinestatic |
#include <auxiliary/util/u_worker.h>
Standard Monado reference function.
References u_worker_group_destroy(), xrt_reference::xrt_reference_dec_and_is_zero(), and xrt_reference::xrt_reference_inc().
Referenced by xrt::auxiliary::util::TaskCollection::TaskCollection(), and xrt::auxiliary::util::TaskCollection::waitAll().
void u_worker_group_wait_all | ( | struct u_worker_group * | uwg | ) |
#include <auxiliary/util/u_worker.h>
Wait for all pushed tasks to be completed, "donates" this thread to the shared thread pool.
Referenced by xrt::auxiliary::util::TaskCollection::waitAll().
struct u_worker_thread_pool * u_worker_thread_pool_create | ( | uint32_t | starting_worker_count, |
uint32_t | thread_count, | ||
const char * | prefix | ||
) |
#include <auxiliary/util/u_worker.h>
Creates a new thread pool to be used by a worker group.
starting_worker_count | How many worker threads can be active at the same time without any "donated" threads. |
thread_count | The number of threads to be created in total, this is the maximum threads that can be in flight at the same time. |
prefix | Prefix to used when naming threads, used for tracing and debugging. |
Referenced by xrt::auxiliary::util::SharedThreadPool::SharedThreadPool().
void u_worker_thread_pool_destroy | ( | struct u_worker_thread_pool * | uwtp | ) |
#include <auxiliary/util/u_worker.h>
Internal function, only called by reference.
Referenced by u_worker_thread_pool_reference().
|
inlinestatic |
#include <auxiliary/util/u_worker.h>
Standard Monado reference function.
References u_worker_thread_pool_destroy(), xrt_reference::xrt_reference_dec_and_is_zero(), and xrt_reference::xrt_reference_inc().
Referenced by xrt::auxiliary::util::SharedThreadPool::SharedThreadPool().