Monado OpenXR Runtime
oxr_instance Struct Reference

Main object that ties everything together. More...

#include <oxr/oxr_objects.h>

Inheritance diagram for oxr_instance:
Collaboration diagram for oxr_instance:

Public Member Functions

oxr_input.c
bool oxr_classify_subaction_paths (struct oxr_logger *log, const struct oxr_instance *inst, uint32_t subaction_path_count, const XrPath *subaction_paths, struct oxr_subaction_paths *subaction_paths_out)
 Helper function to classify subaction_paths. More...
 
XrResult oxr_action_set_create (struct oxr_logger *log, struct oxr_instance *inst, const XrActionSetCreateInfo *createInfo, struct oxr_action_set **out_act_set)
 
oxr_binding.c
void oxr_binding_destroy_all (struct oxr_logger *log, struct oxr_instance *inst)
 Free all memory allocated by the binding system. More...
 
void oxr_session_binding_destroy_all (struct oxr_logger *log, struct oxr_session *sess)
 Free all memory allocated by the binding system. More...
 
XrResult oxr_action_suggest_interaction_profile_bindings (struct oxr_logger *log, struct oxr_instance *inst, const XrInteractionProfileSuggestedBinding *suggestedBindings, struct oxr_dpad_state *state)
 
XrResult oxr_action_get_current_interaction_profile (struct oxr_logger *log, struct oxr_session *sess, XrPath topLevelUserPath, XrInteractionProfileState *interactionProfile)
 
- Public Member Functions inherited from oxr_handle_base
XrResult oxr_handle_destroy (struct oxr_logger *log, struct oxr_handle_base *hb)
 Destroy the handle's object, as well as all child handles recursively. More...
 

Data Fields

struct oxr_handle_base handle
 Common structure for things referred to by OpenXR handles. More...
 
struct u_debug_gui * debug_ui
 
struct xrt_instancexinst
 
struct oxr_extension_status extensions
 Enabled extensions. More...
 
struct {
   XrVersion   major_minor
 Stores only major.minor version. Simplifies comparisons for e.g. "at least OpenXR 1.1". More...
 
openxr_version
 The OpenXR version requested in the app info. It determines the instance's OpenXR version. More...
 
struct os_mutex system_init_lock
 
struct oxr_system system
 
struct time_statetimekeeping
 
struct {
   struct u_hashset *   name_store
 
   struct u_hashset *   loc_store
 
action_sets
 
struct u_hashsetpath_store
 Path store, for looking up paths. More...
 
struct oxr_path ** path_array
 Mapping from ID to path. More...
 
size_t path_array_length
 Total length of path array. More...
 
size_t path_num
 Number of paths in the array (0 is always null). More...
 
struct {
   struct os_mutex   mutex
 
   struct oxr_event *   last
 
   struct oxr_event *   next
 
event
 
struct oxr_interaction_profile ** profiles
 Interaction profile bindings that have been suggested by the client. More...
 
size_t profile_count
 
struct oxr_sessionsessions
 
struct {
   XrPath   left
 
   XrPath   right
 
   XrPath   head
 
   XrPath   gamepad
 
   XrPath   eyes
 
   XrPath   user
 
path_cache
 
struct {
   struct {
      struct {
         uint32_t   major
 
         uint32_t   minor
 
         uint32_t   patch
 
         const char *   name
 
      }   engine
 
   }   detected
 
appinfo
 
struct {
   bool   disable_vulkan_format_depth
 Some applications can't handle depth formats, or they trigger a bug in a specific version of the application or engine. More...
 
   bool   disable_vulkan_format_depth_stencil
 Some applications can't handle depth stencil formats, or they trigger a bug in a specific version of the application or engine. More...
 
   bool   skip_end_session
 Unreal 4 has a bug calling xrEndSession; the function should just exit. More...
 
   bool   no_validation_error_in_create_ref_space
 Return XR_ERROR_REFERENCE_SPACE_UNSUPPORTED instead of XR_ERROR_VALIDATION_FAILURE in xrCreateReferenceSpace. More...
 
   bool   parallel_views
 For applications that rely on views being parallel, notably some OpenVR games with OpenComposite. More...
 
   bool   map_stage_to_local_floor
 For applications that use stage and don't offer recentering. More...
 
   bool   no_texture_source_alpha
 Beat Saber submits its projection layer with XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT set. More...
 
quirks
 
struct oxr_debug_messengermessengers [256]
 Debug messengers. More...
 
bool lifecycle_verbose
 
bool debug_views
 
bool debug_spaces
 
bool debug_bindings
 
- Data Fields inherited from oxr_handle_base
uint64_t debug
 Magic (per-handle-type) value for debugging. More...
 
struct oxr_handle_baseparent
 Pointer to this object's parent handle holder, if any. More...
 
struct oxr_handle_basechildren [256]
 Array of children, if any. More...
 
enum oxr_handle_state state
 Current handle state. More...
 
oxr_handle_destroyer destroy
 Destroy the object this handle refers to. More...
 

oxr_instance.c

static XrInstance oxr_instance_to_openxr (struct oxr_instance *inst)
 To go back to a OpenXR object. More...
 
XrResult oxr_instance_create (struct oxr_logger *log, const XrInstanceCreateInfo *createInfo, XrVersion major_minor, const struct oxr_extension_status *extensions, struct oxr_instance **out_inst)
 Creates a instance, does minimal validation of createInfo. More...
 
XrResult oxr_instance_init_system_locked (struct oxr_logger *log, struct oxr_instance *inst)
 Must be called with oxr_instance::system_init_lock held. More...
 
XrResult oxr_instance_get_properties (struct oxr_logger *log, struct oxr_instance *inst, XrInstanceProperties *instanceProperties)
 
XrResult oxr_instance_convert_time_to_timespec (struct oxr_logger *log, struct oxr_instance *inst, XrTime time, struct timespec *timespecTime)
 
XrResult oxr_instance_convert_timespec_to_time (struct oxr_logger *log, struct oxr_instance *inst, const struct timespec *timespecTime, XrTime *time)
 

oxr_path.c

bool oxr_path_is_valid (struct oxr_logger *log, struct oxr_instance *inst, XrPath path)
 
void * oxr_path_get_attached (struct oxr_logger *log, struct oxr_instance *inst, XrPath path)
 
XrResult oxr_path_get_or_create (struct oxr_logger *log, struct oxr_instance *inst, const char *str, size_t length, XrPath *out_path)
 Get the path for the given string if it exists, or create it if it does not. More...
 
XrResult oxr_path_only_get (struct oxr_logger *log, struct oxr_instance *inst, const char *str, size_t length, XrPath *out_path)
 Only get the path for the given string if it exists. More...
 
XrResult oxr_path_get_string (struct oxr_logger *log, const struct oxr_instance *inst, XrPath path, const char **out_str, size_t *out_length)
 Get a pointer and length of the internal string. More...
 

Additional Inherited Members

- Protected Member Functions inherited from oxr_handle_base
XrResult oxr_handle_init (struct oxr_logger *log, struct oxr_handle_base *hb, uint64_t debug, oxr_handle_destroyer destroy, struct oxr_handle_base *parent)
 Initialize a handle holder, and if a parent is specified, update its child list to include this handle. More...
 

Detailed Description

Main object that ties everything together.

No parent type/handle: this is the root handle.

OpenXR Object:
XrInstance

Field Documentation

◆ disable_vulkan_format_depth

bool oxr_instance::disable_vulkan_format_depth

Some applications can't handle depth formats, or they trigger a bug in a specific version of the application or engine.

This flag only disables depth formats

See also
disable_vulkan_format_depth_stencil for depth-stencil formats.

◆ disable_vulkan_format_depth_stencil

bool oxr_instance::disable_vulkan_format_depth_stencil

Some applications can't handle depth stencil formats, or they trigger a bug in a specific version of the application or engine.

This flag only disables depth-stencil formats,

See also
disable_vulkan_format_depth flag for depth only formats.

In the past it was used to work around a bug in Unreal's VulkanRHI backend.

◆ extensions

struct oxr_extension_status oxr_instance::extensions

Enabled extensions.

Referenced by handle_non_null().

◆ handle

struct oxr_handle_base oxr_instance::handle

Common structure for things referred to by OpenXR handles.

◆ major_minor

XrVersion oxr_instance::major_minor

Stores only major.minor version. Simplifies comparisons for e.g. "at least OpenXR 1.1".

◆ map_stage_to_local_floor

bool oxr_instance::map_stage_to_local_floor

For applications that use stage and don't offer recentering.

◆ messengers

struct oxr_debug_messenger* oxr_instance::messengers[256]

Debug messengers.

◆ no_texture_source_alpha

bool oxr_instance::no_texture_source_alpha

Beat Saber submits its projection layer with XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT set.

This breaks rendering because the game uses the alpha texture to store data for the bloom shader, causing most of the game to render as black, only showing glowing parts of the image.

◆ no_validation_error_in_create_ref_space

bool oxr_instance::no_validation_error_in_create_ref_space

Return XR_ERROR_REFERENCE_SPACE_UNSUPPORTED instead of XR_ERROR_VALIDATION_FAILURE in xrCreateReferenceSpace.

◆ 

struct { ... } oxr_instance::openxr_version

The OpenXR version requested in the app info. It determines the instance's OpenXR version.

◆ parallel_views

bool oxr_instance::parallel_views

For applications that rely on views being parallel, notably some OpenVR games with OpenComposite.

◆ path_array

struct oxr_path** oxr_instance::path_array

Mapping from ID to path.

◆ path_array_length

size_t oxr_instance::path_array_length

Total length of path array.

◆ path_num

size_t oxr_instance::path_num

Number of paths in the array (0 is always null).

◆ path_store

struct u_hashset* oxr_instance::path_store

Path store, for looking up paths.

◆ profiles

struct oxr_interaction_profile** oxr_instance::profiles

Interaction profile bindings that have been suggested by the client.

Referenced by bindings.Bindings::__init__(), and oxr_session::oxr_session_attach_action_sets().

◆ skip_end_session

bool oxr_instance::skip_end_session

Unreal 4 has a bug calling xrEndSession; the function should just exit.


The documentation for this struct was generated from the following file: