Monado OpenXR Runtime
sdl_program Struct Reference

C base class for the SDL program. More...

#include <sdl_test/sdl_internal.h>

Inheritance diagram for sdl_program:
Collaboration diagram for sdl_program:

Data Fields

struct xrt_device xdev_base
 Base class for devices. More...
 
struct xrt_instance xinst_base
 Instance base. More...
 
struct u_systemusys
 System, implemented for now using helper code. More...
 
struct xrt_system_devices xsysd_base
 System devices base. More...
 
struct xrt_space_overseerxso
 Space overseer, implemented for now using helper code. More...
 
struct sdl_compositor c
 SDL compositor struct. More...
 
struct xrt_system_compositorxsysc
 Created system compositor. More...
 
struct xrt_input inputs [1]
 Inputs exposed by the SDL device. More...
 
struct xrt_hmd_parts hmd
 HMD parts exposed by the SDL device to become a HMD. More...
 
struct xrt_tracking_origin origin
 Tracking origin that the device is located in. More...
 
enum u_logging_level log_level
 The current log level. More...
 
struct {
   struct {
      struct xrt_pose   pose
 The pose of the head, only used for view space. More...
 
   }   head
 
   struct {
      struct xrt_pose   pose
 Pose of each individual eye. More...
 
      struct xrt_fov   fov
 Fov of each individual eye. More...
 
   }   left
 
   struct {
      struct xrt_pose   pose
 Pose of each individual eye. More...
 
      struct xrt_fov   fov
 Fov of each individual eye. More...
 
   }   right
 
state
 
SDL_Window * win
 The main window. More...
 
SDL_GLContext ctx
 Main OpenGL context. More...
 
struct os_mutex current_mutex
 Protects the OpenGL context. More...
 
struct sdl_program_plusspp
 Pointer back to the C++ part of the program. More...
 
- Data Fields inherited from xrt_instance
struct xrt_instance_info instance_info
 Instance information structure, including both platform and application info. More...
 
int64_t startup_timestamp
 CLOCK_MONOTONIC timestamp of the instance startup. More...
 
struct xrt_instance_android * android_instance
 An "aspect" of the xrt_instance interface, used only on Android. More...
 
xrt_result_t(* create_system )(struct xrt_instance *xinst, struct xrt_system **out_xsys, struct xrt_system_devices **out_xsysd, struct xrt_space_overseer **out_xso, struct xrt_system_compositor **out_xsysc)
 Creates all of the system resources like the devices and system compositor. More...
 
xrt_result_t(* get_prober )(struct xrt_instance *xinst, struct xrt_prober **out_xp)
 Get the instance xrt_prober, if any. More...
 
void(* destroy )(struct xrt_instance *xinst)
 Destroy the instance and its owned objects, including the prober (if any). More...
 
- Data Fields inherited from xrt_device
enum xrt_device_name name
 Enum identifier of the device. More...
 
enum xrt_device_type device_type
 
char str [256]
 A string describing the device. More...
 
char serial [256]
 A unique identifier. Persistent across configurations, if possible. More...
 
struct xrt_hmd_partshmd
 Null if this device does not interface with the users head. More...
 
struct xrt_tracking_origintracking_origin
 Always set, pointing to the tracking system for this device. More...
 
size_t binding_profile_count
 Number of bindings in xrt_device::binding_profiles. More...
 
struct xrt_binding_profilebinding_profiles
 
size_t input_count
 Number of inputs. More...
 
struct xrt_inputinputs
 Array of input structs. More...
 
size_t output_count
 Number of outputs. More...
 
struct xrt_outputoutputs
 Array of output structs. More...
 
bool orientation_tracking_supported
 
bool position_tracking_supported
 
bool hand_tracking_supported
 
bool eye_gaze_supported
 
bool force_feedback_supported
 
bool ref_space_usage_supported
 
bool form_factor_check_supported
 
bool stage_supported
 
bool face_tracking_supported
 
bool body_tracking_supported
 
bool battery_status_supported
 
xrt_result_t(* update_inputs )(struct xrt_device *xdev)
 Update any attached inputs. More...
 
void(* get_tracked_pose )(struct xrt_device *xdev, enum xrt_input_name name, int64_t at_timestamp_ns, struct xrt_space_relation *out_relation)
 Get relationship of a tracked device to the tracking origin space as the base space. More...
 
void(* get_hand_tracking )(struct xrt_device *xdev, enum xrt_input_name name, int64_t desired_timestamp_ns, struct xrt_hand_joint_set *out_value, int64_t *out_timestamp_ns)
 Get relationship of hand joints to the tracking origin space as the base space. More...
 
xrt_result_t(* get_face_tracking )(struct xrt_device *xdev, enum xrt_input_name facial_expression_type, int64_t at_timestamp_ns, struct xrt_facial_expression_set *out_value)
 Get the requested blend shape properties & weights for a face tracker. More...
 
xrt_result_t(* get_body_skeleton )(struct xrt_device *xdev, enum xrt_input_name body_tracking_type, struct xrt_body_skeleton *out_value)
 Get the body skeleton in T-pose, used to query the skeleton hierarchy, scale, proportions etc. More...
 
xrt_result_t(* get_body_joints )(struct xrt_device *xdev, enum xrt_input_name body_tracking_type, int64_t desired_timestamp_ns, struct xrt_body_joint_set *out_value)
 Get the joint locations for a body tracker. More...
 
void(* set_output )(struct xrt_device *xdev, enum xrt_output_name name, const union xrt_output_value *value)
 Set a output value. More...
 
void(* 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)
 Get the per-view pose in relation to the view space. More...
 
bool(* compute_distortion )(struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *out_result)
 Compute the distortion at a single point. More...
 
xrt_result_t(* get_visibility_mask )(struct xrt_device *xdev, enum xrt_visibility_mask_type type, uint32_t view_index, struct xrt_visibility_mask **out_mask)
 Get the visibility mask for this device. More...
 
xrt_result_t(* ref_space_usage )(struct xrt_device *xdev, enum xrt_reference_space_type type, enum xrt_input_name name, bool used)
 Called by the xrt_space_overseer when a reference space that is implemented by this device is first used, or when the last usage of the reference space stops. More...
 
bool(* is_form_factor_available )(struct xrt_device *xdev, enum xrt_form_factor form_factor)
 Check if given form factor is available or not. More...
 
xrt_result_t(* get_battery_status )(struct xrt_device *xdev, bool *out_present, bool *out_charging, float *out_charge)
 Get battery status information. More...
 
xrt_result_t(* begin_feature )(struct xrt_device *xdev, enum xrt_device_feature_type type)
 Enable the feature for this device. More...
 
xrt_result_t(* end_feature )(struct xrt_device *xdev, enum xrt_device_feature_type type)
 Disable the feature for this device. More...
 
void(* destroy )(struct xrt_device *xdev)
 Destroy device. More...
 
- Data Fields inherited from xrt_system_devices
struct xrt_devicexdevs [(32)]
 All devices known in the system. More...
 
size_t xdev_count
 The number of elements in xdevs that are valid. More...
 
struct {
   struct xrt_device *   head
 An observing pointer to the device serving as the "head" (and HMD). More...
 
   struct xrt_device *   eyes
 An observing pointer to the device providing eye tracking (optional). More...
 
   struct xrt_device *   face
 An observing pointer to the device providing face tracking (optional). More...
 
   struct xrt_device *   body
 An observing pointer to the device providing body tracking (optional). More...
 
   struct {
      struct xrt_device *   left
 An observing pointer to the device providing hand tracking for the left hand (optional). More...
 
      struct xrt_device *   right
 An observing pointer to the device providing hand tracking for the right hand (optional). More...
 
   }   hand_tracking
 Devices providing optical (or otherwise more directly measured than from controller estimation) hand tracking. More...
 
static_roles
 Observing pointers for devices in some static (unchangeable) roles. More...
 
xrt_result_t(* get_roles )(struct xrt_system_devices *xsysd, struct xrt_system_roles *out_roles)
 Function to get the dynamic input device roles from this system devices, see xrt_system_roles for more information. More...
 
xrt_result_t(* feature_inc )(struct xrt_system_devices *xsysd, enum xrt_device_feature_type type)
 Increment the usage count of a feature. More...
 
xrt_result_t(* feature_dec )(struct xrt_system_devices *xsysd, enum xrt_device_feature_type type)
 Decrement the usage count of a feature. More...
 
void(* destroy )(struct xrt_system_devices *xsysd)
 Destroy all the devices that are owned by this system devices. More...
 
- Data Fields inherited from sdl_compositor
struct comp_base base
 Base native compositor. More...
 
struct u_pacing_compositorupc
 Pacing helper to drive us forward. More...
 
struct {
   uint64_t   frame_interval_ns
 Frame interval that we are using. More...
 
settings
 
struct xrt_system_compositor_info sys_info
 
struct {
   struct sdl_comp_frame   waited
 
   struct sdl_comp_frame   rendering
 
frame
 
- Data Fields inherited from comp_base
struct xrt_compositor_native base
 Base native compositor. More...
 
struct vk_bundle vk
 Vulkan bundle of useful things, used by swapchain and fence. More...
 
struct os_precise_sleeper sleeper
 For default xrt_compositor::wait_frame. More...
 
struct comp_swapchain_shared cscs
 Swapchain garbage collector, used by swapchain, child class needs to call. More...
 
struct comp_layer_accum layer_accum
 Collect layers for a single frame. More...
 
struct comp_frame_params frame_params
 Parameters for a single frame. More...
 
- Data Fields inherited from xrt_compositor_native
struct xrt_compositor base
 Base. More...
 
- Data Fields inherited from xrt_compositor
struct xrt_compositor_info info
 Capabilities and recommended values information. More...
 
xrt_result_t(* get_swapchain_create_properties )(struct xrt_compositor *xc, const struct xrt_swapchain_create_info *info, struct xrt_swapchain_create_properties *xsccp)
 For a given xrt_swapchain_create_info struct returns a filled out xrt_swapchain_create_properties. More...
 
xrt_result_t(* create_passthrough )(struct xrt_compositor *xc, const struct xrt_passthrough_create_info *info)
 Create a passthrough. More...
 
xrt_result_t(* create_passthrough_layer )(struct xrt_compositor *xc, const struct xrt_passthrough_layer_create_info *info)
 Create a passthrough layer. More...
 
xrt_result_t(* destroy_passthrough )(struct xrt_compositor *xc)
 Destroy a passthrough. More...
 
xrt_result_t(* set_performance_level )(struct xrt_compositor *xc, enum xrt_perf_domain domain, enum xrt_perf_set_level level)
 Set CPU/GPU performance level. More...
 
xrt_result_t(* get_reference_bounds_rect )(struct xrt_compositor *xc, enum xrt_reference_space_type reference_space_type, struct xrt_vec2 *bounds)
 Get the extents of the reference space's bounds rectangle. More...
 
void(* destroy )(struct xrt_compositor *xc)
 Teardown the compositor. More...
 
xrt_result_t(* create_swapchain )(struct xrt_compositor *xc, const struct xrt_swapchain_create_info *info, struct xrt_swapchain **out_xsc)
 Create a swapchain with a set of images. More...
 
xrt_result_t(* import_swapchain )(struct xrt_compositor *xc, const struct xrt_swapchain_create_info *info, struct xrt_image_native *native_images, uint32_t image_count, struct xrt_swapchain **out_xsc)
 Create a swapchain from a set of native images. More...
 
xrt_result_t(* import_fence )(struct xrt_compositor *xc, xrt_graphics_sync_handle_t handle, struct xrt_compositor_fence **out_xcf)
 Create a compositor fence from a native sync handle. More...
 
xrt_result_t(* create_semaphore )(struct xrt_compositor *xc, xrt_graphics_sync_handle_t *out_handle, struct xrt_compositor_semaphore **out_xcsem)
 Create a compositor semaphore, also returns a native handle. More...
 
xrt_result_t(* begin_session )(struct xrt_compositor *xc, const struct xrt_begin_session_info *info)
 See xrBeginSession. More...
 
xrt_result_t(* end_session )(struct xrt_compositor *xc)
 See xrEndSession, unlike the OpenXR one the state tracker is responsible to call discard frame before calling this function. More...
 
xrt_result_t(* predict_frame )(struct xrt_compositor *xc, int64_t *out_frame_id, int64_t *out_wake_time_ns, int64_t *out_predicted_gpu_time_ns, int64_t *out_predicted_display_time_ns, int64_t *out_predicted_display_period_ns)
 This function and mark_frame function calls are a alternative to wait_frame. More...
 
xrt_result_t(* mark_frame )(struct xrt_compositor *xc, int64_t frame_id, enum xrt_compositor_frame_point point, int64_t when_ns)
 This function and predict_frame function calls are a alternative to wait_frame. More...
 
xrt_result_t(* wait_frame )(struct xrt_compositor *xc, int64_t *out_frame_id, int64_t *out_predicted_display_time, int64_t *out_predicted_display_period)
 See xrWaitFrame. More...
 
xrt_result_t(* begin_frame )(struct xrt_compositor *xc, int64_t frame_id)
 See xrBeginFrame. More...
 
xrt_result_t(* discard_frame )(struct xrt_compositor *xc, int64_t frame_id)
 Explicitly discard a frame. More...
 
xrt_result_t(* layer_begin )(struct xrt_compositor *xc, const struct xrt_layer_frame_data *data)
 Begins layer submission. More...
 
xrt_result_t(* layer_projection )(struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc[XRT_MAX_VIEWS], const struct xrt_layer_data *data)
 Adds a projection layer for submissions. More...
 
xrt_result_t(* layer_projection_depth )(struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc[XRT_MAX_VIEWS], struct xrt_swapchain *d_xsc[XRT_MAX_VIEWS], const struct xrt_layer_data *data)
 Adds a projection layer for submission, has depth information. More...
 
xrt_result_t(* layer_quad )(struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a quad layer for submission, the center of the quad is specified by the pose and extends outwards from it. More...
 
xrt_result_t(* layer_cube )(struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a cube layer for submission. More...
 
xrt_result_t(* layer_cylinder )(struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a cylinder layer for submission. More...
 
xrt_result_t(* layer_equirect1 )(struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a equirect1 layer for submission. More...
 
xrt_result_t(* layer_equirect2 )(struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a equirect2 layer for submission. More...
 
xrt_result_t(* layer_passthrough )(struct xrt_compositor *xc, struct xrt_device *xdev, const struct xrt_layer_data *data)
 Adds a passthrough layer for submission. More...
 
xrt_result_t(* layer_commit )(struct xrt_compositor *xc, xrt_graphics_sync_handle_t sync_handle)
 Commits all of the submitted layers. More...
 
xrt_result_t(* layer_commit_with_semaphore )(struct xrt_compositor *xc, struct xrt_compositor_semaphore *xcsem, uint64_t value)
 Commits all of the submitted layers, with a semaphore. More...
 
xrt_result_t(* get_display_refresh_rate )(struct xrt_compositor *xc, float *out_display_refresh_rate_hz)
 Get the current display refresh rate. More...
 
xrt_result_t(* request_display_refresh_rate )(struct xrt_compositor *xc, float display_refresh_rate_hz)
 Request system to change the display refresh rate to the requested value. More...
 
xrt_result_t(* set_thread_hint )(struct xrt_compositor *xc, enum xrt_thread_hint hint, uint32_t thread_id)
 Set thread attributes according to thread type. More...
 

Related Functions

(Note that these are not member functions.)

#define ST_TRACE(sp, ...)   U_LOG_IFL_T(sp->log_level, __VA_ARGS__);
 Spew level logging. More...
 
#define ST_DEBUG(sp, ...)   U_LOG_IFL_D(sp->log_level, __VA_ARGS__);
 Debug level logging. More...
 
#define ST_INFO(sp, ...)   U_LOG_IFL_I(sp->log_level, __VA_ARGS__);
 Info level logging. More...
 
#define ST_WARN(sp, ...)   U_LOG_IFL_W(sp->log_level, __VA_ARGS__);
 Warn level logging. More...
 
#define ST_ERROR(sp, ...)   U_LOG_IFL_E(sp->log_level, __VA_ARGS__);
 Error level logging. More...
 

Additional Inherited Members

- Public Member Functions inherited from xrt_compositor_native
struct xrt_compositor_d3d11xrt_gfx_d3d11_provider_create (struct xrt_compositor_native *xcn, ID3D11Device *device)
 Create a D3D11 compositor client. More...
 
struct xrt_compositor_d3d12xrt_gfx_d3d12_provider_create (struct xrt_compositor_native *xcn, ID3D12Device *device, ID3D12CommandQueue *queue)
 Create a D3D12 compositor client. More...
 
xrt_result_t xrt_gfx_provider_create_gl_egl (struct xrt_compositor_native *xcn, EGLDisplay display, EGLConfig config, EGLContext context, PFNEGLGETPROCADDRESSPROC get_gl_procaddr, bool renderdoc_enabled, struct xrt_compositor_gl **out_xcgl)
 Create an OpenGL(ES) compositor client using EGL. More...
 
struct xrt_compositor_vkxrt_gfx_vk_provider_create (struct xrt_compositor_native *xcn, VkInstance instance, PFN_vkGetInstanceProcAddr get_instance_proc_addr, VkPhysicalDevice physical_device, VkDevice device, bool external_fence_fd_enabled, bool external_semaphore_fd_enabled, bool timeline_semaphore_enabled, bool debug_utils_enabled, bool renderdoc_enabled, uint32_t queue_family_index, uint32_t queue_index)
 Create a Vulkan compositor client. More...
 
struct xrt_compositor_glxrt_gfx_provider_create_gl_win32 (struct xrt_compositor_native *xcn, void *hDC, void *hGLRC)
 Create an OpenGL compositor client using Win32. More...
 
struct xrt_compositor_glxrt_gfx_provider_create_gl_xlib (struct xrt_compositor_native *xcn, Display *xDisplay, uint32_t visualid, GLXFBConfig glxFBConfig, GLXDrawable glxDrawable, GLXContext glxContext)
 Create an OpenGL compositor client using xlib. More...
 
- Static Public Member Functions inherited from xrt_instance
static xrt_result_t xrt_instance_create_system (struct xrt_instance *xinst, struct xrt_system **out_xsys, struct xrt_system_devices **out_xsysd, struct xrt_space_overseer **out_xso, struct xrt_system_compositor **out_xsysc)
 Creates all of the system resources like the devices and system compositor. More...
 
static xrt_result_t xrt_instance_get_prober (struct xrt_instance *xinst, struct xrt_prober **out_xp)
 Get the instance xrt_prober, if any. More...
 
static void xrt_instance_destroy (struct xrt_instance **xinst_ptr)
 Destroy an xrt_instance - helper function. More...
 
- Static Public Member Functions inherited from xrt_device
static xrt_result_t xrt_device_update_inputs (struct xrt_device *xdev)
 Helper function for xrt_device::update_inputs. More...
 
static void xrt_device_get_tracked_pose (struct xrt_device *xdev, enum xrt_input_name name, int64_t at_timestamp_ns, struct xrt_space_relation *out_relation)
 Helper function for xrt_device::get_tracked_pose. More...
 
static void xrt_device_get_hand_tracking (struct xrt_device *xdev, enum xrt_input_name name, int64_t desired_timestamp_ns, struct xrt_hand_joint_set *out_value, int64_t *out_timestamp_ns)
 Helper function for xrt_device::get_hand_tracking. More...
 
static xrt_result_t xrt_device_get_face_tracking (struct xrt_device *xdev, enum xrt_input_name facial_expression_type, int64_t at_timestamp_ns, struct xrt_facial_expression_set *out_value)
 Helper function for xrt_device::get_face_tracking. More...
 
static xrt_result_t xrt_device_get_body_skeleton (struct xrt_device *xdev, enum xrt_input_name body_tracking_type, struct xrt_body_skeleton *out_value)
 Helper function for xrt_device::get_body_skeleton. More...
 
static xrt_result_t xrt_device_get_body_joints (struct xrt_device *xdev, enum xrt_input_name body_tracking_type, int64_t desired_timestamp_ns, struct xrt_body_joint_set *out_value)
 Helper function for xrt_device::get_body_joints. More...
 
static void xrt_device_set_output (struct xrt_device *xdev, enum xrt_output_name name, const union xrt_output_value *value)
 Helper function for xrt_device::set_output. More...
 
static void xrt_device_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)
 Helper function for xrt_device::get_view_poses. More...
 
static bool xrt_device_compute_distortion (struct xrt_device *xdev, uint32_t view, float u, float v, struct xrt_uv_triplet *out_result)
 Helper function for xrt_device::compute_distortion. More...
 
static xrt_result_t xrt_device_get_visibility_mask (struct xrt_device *xdev, enum xrt_visibility_mask_type type, uint32_t view_index, struct xrt_visibility_mask **out_mask)
 Helper function for xrt_device::get_visibility_mask. More...
 
static xrt_result_t xrt_device_ref_space_usage (struct xrt_device *xdev, enum xrt_reference_space_type type, enum xrt_input_name name, bool used)
 Helper function for xrt_device::ref_space_usage. More...
 
static bool xrt_device_is_form_factor_available (struct xrt_device *xdev, enum xrt_form_factor form_factor)
 Helper function for xrt_device::is_form_factor_available. More...
 
static xrt_result_t xrt_device_get_battery_status (struct xrt_device *xdev, bool *out_present, bool *out_charging, float *out_charge)
 Helper function for xrt_device::get_battery_status. More...
 
static xrt_result_t xrt_device_begin_feature (struct xrt_device *xdev, enum xrt_device_feature_type type)
 Helper function for xrt_device::begin_feature. More...
 
static xrt_result_t xrt_device_end_feature (struct xrt_device *xdev, enum xrt_device_feature_type type)
 Helper function for xrt_device::end_feature. More...
 
static void xrt_device_destroy (struct xrt_device **xdev_ptr)
 Helper function for xrt_device::destroy. More...
 
- Static Public Member Functions inherited from xrt_system_devices
static xrt_result_t xrt_system_devices_get_roles (struct xrt_system_devices *xsysd, struct xrt_system_roles *out_roles)
 Function to get the dynamic input device roles from this system devices, see xrt_system_roles for more information. More...
 
static xrt_result_t xrt_system_devices_feature_inc (struct xrt_system_devices *xsysd, enum xrt_device_feature_type type)
 Increment the usage count of a feature. More...
 
static xrt_result_t xrt_system_devices_feature_dec (struct xrt_system_devices *xsysd, enum xrt_device_feature_type type)
 Decrement the usage count of a feature. More...
 
static void xrt_system_devices_destroy (struct xrt_system_devices **xsysd_ptr)
 Destroy an xrt_system_devices and owned devices - helper function. More...
 
- Static Public Member Functions inherited from xrt_compositor_native
static xrt_result_t xrt_comp_native_create_swapchain (struct xrt_compositor_native *xcn, const struct xrt_swapchain_create_info *info, struct xrt_swapchain_native **out_xscn)
 Create a native swapchain with a set of images. More...
 
static void xrt_comp_native_destroy (struct xrt_compositor_native **xcn_ptr)
 Teardown the compositor. More...
 
- Static Public Member Functions inherited from xrt_compositor
static xrt_result_t xrt_comp_get_swapchain_create_properties (struct xrt_compositor *xc, const struct xrt_swapchain_create_info *info, struct xrt_swapchain_create_properties *xsccp)
 For a given xrt_swapchain_create_info struct returns a filled out xrt_swapchain_create_properties. More...
 
static xrt_result_t xrt_comp_create_passthrough (struct xrt_compositor *xc, const struct xrt_passthrough_create_info *info)
 Create a passthrough. More...
 
static xrt_result_t xrt_comp_create_passthrough_layer (struct xrt_compositor *xc, const struct xrt_passthrough_layer_create_info *info)
 Create a passthrough layer. More...
 
static xrt_result_t xrt_comp_destroy_passthrough (struct xrt_compositor *xc)
 Destroy a passthrough. More...
 
static xrt_result_t xrt_comp_get_display_refresh_rate (struct xrt_compositor *xc, float *out_display_refresh_rate_hz)
 Get the current display refresh rate. More...
 
static xrt_result_t xrt_comp_request_display_refresh_rate (struct xrt_compositor *xc, float display_refresh_rate_hz)
 Request system to change the display refresh rate to the requested value. More...
 
static xrt_result_t xrt_comp_set_performance_level (struct xrt_compositor *xc, enum xrt_perf_domain domain, enum xrt_perf_set_level level)
 Set CPU/GPU performance level. More...
 
static xrt_result_t xrt_comp_get_reference_bounds_rect (struct xrt_compositor *xc, enum xrt_reference_space_type reference_space_type, struct xrt_vec2 *bounds)
 Get the extents of the reference space's bounds rectangle. More...
 
static void xrt_comp_destroy (struct xrt_compositor **xc_ptr)
 Teardown the compositor. More...
 
static xrt_result_t xrt_comp_create_swapchain (struct xrt_compositor *xc, const struct xrt_swapchain_create_info *info, struct xrt_swapchain **out_xsc)
 Create a swapchain with a set of images. More...
 
static xrt_result_t xrt_comp_import_swapchain (struct xrt_compositor *xc, const struct xrt_swapchain_create_info *info, struct xrt_image_native *native_images, uint32_t image_count, struct xrt_swapchain **out_xsc)
 Create a swapchain from a set of native images. More...
 
static xrt_result_t xrt_comp_import_fence (struct xrt_compositor *xc, xrt_graphics_sync_handle_t handle, struct xrt_compositor_fence **out_xcf)
 Create a compositor fence from a native sync handle. More...
 
static xrt_result_t xrt_comp_create_semaphore (struct xrt_compositor *xc, xrt_graphics_sync_handle_t *out_handle, struct xrt_compositor_semaphore **out_xcsem)
 Create a compositor semaphore, also returns a native handle. More...
 
static xrt_result_t xrt_comp_begin_session (struct xrt_compositor *xc, const struct xrt_begin_session_info *info)
 See xrBeginSession. More...
 
static xrt_result_t xrt_comp_end_session (struct xrt_compositor *xc)
 See xrEndSession, unlike the OpenXR one the state tracker is responsible to call discard frame before calling this function. More...
 
static xrt_result_t xrt_comp_predict_frame (struct xrt_compositor *xc, int64_t *out_frame_id, int64_t *out_wake_time_ns, int64_t *out_predicted_gpu_time_ns, int64_t *out_predicted_display_time_ns, int64_t *out_predicted_display_period_ns)
 This function and mark_frame function calls are a alternative to wait_frame. More...
 
static xrt_result_t xrt_comp_mark_frame (struct xrt_compositor *xc, int64_t frame_id, enum xrt_compositor_frame_point point, int64_t when_ns)
 This function and predict_frame function calls are a alternative to wait_frame. More...
 
static xrt_result_t xrt_comp_wait_frame (struct xrt_compositor *xc, int64_t *out_frame_id, int64_t *out_predicted_display_time, int64_t *out_predicted_display_period)
 See xrWaitFrame. More...
 
static xrt_result_t xrt_comp_begin_frame (struct xrt_compositor *xc, int64_t frame_id)
 See xrBeginFrame. More...
 
static xrt_result_t xrt_comp_discard_frame (struct xrt_compositor *xc, int64_t frame_id)
 Explicitly discard a frame. More...
 
static xrt_result_t xrt_comp_layer_begin (struct xrt_compositor *xc, const struct xrt_layer_frame_data *data)
 Begins layer submission. More...
 
static xrt_result_t xrt_comp_layer_projection (struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc[XRT_MAX_VIEWS], const struct xrt_layer_data *data)
 Adds a projection layer for submissions. More...
 
static xrt_result_t xrt_comp_layer_projection_depth (struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc[XRT_MAX_VIEWS], struct xrt_swapchain *d_xsc[XRT_MAX_VIEWS], const struct xrt_layer_data *data)
 Adds a projection layer for submission, has depth information. More...
 
static xrt_result_t xrt_comp_layer_quad (struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a quad layer for submission, the center of the quad is specified by the pose and extends outwards from it. More...
 
static xrt_result_t xrt_comp_layer_cube (struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a cube layer for submission. More...
 
static xrt_result_t xrt_comp_layer_cylinder (struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a cylinder layer for submission. More...
 
static xrt_result_t xrt_comp_layer_equirect1 (struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a equirect1 layer for submission. More...
 
static xrt_result_t xrt_comp_layer_equirect2 (struct xrt_compositor *xc, struct xrt_device *xdev, struct xrt_swapchain *xsc, const struct xrt_layer_data *data)
 Adds a equirect2 layer for submission. More...
 
static xrt_result_t xrt_comp_layer_passthrough (struct xrt_compositor *xc, struct xrt_device *xdev, const struct xrt_layer_data *data)
 Adds a passthrough layer for submission. More...
 
static xrt_result_t xrt_comp_layer_commit (struct xrt_compositor *xc, xrt_graphics_sync_handle_t sync_handle)
 Commits all of the submitted layers. More...
 
static xrt_result_t xrt_comp_layer_commit_with_semaphore (struct xrt_compositor *xc, struct xrt_compositor_semaphore *xcsem, uint64_t value)
 Commits all of the submitted layers, with a semaphore. More...
 
- Protected Member Functions inherited from comp_base
void comp_base_init (struct comp_base *cb)
 Inits all of the supported functions and structs, except vk_bundle. More...
 

Detailed Description

C base class for the SDL program.

Friends And Related Function Documentation

◆ ST_DEBUG

#define ST_DEBUG (   sp,
  ... 
)    U_LOG_IFL_D(sp->log_level, __VA_ARGS__);
related

Debug level logging.

◆ ST_ERROR

#define ST_ERROR (   sp,
  ... 
)    U_LOG_IFL_E(sp->log_level, __VA_ARGS__);
related

Error level logging.

◆ ST_INFO

#define ST_INFO (   sp,
  ... 
)    U_LOG_IFL_I(sp->log_level, __VA_ARGS__);
related

Info level logging.

◆ ST_TRACE

#define ST_TRACE (   sp,
  ... 
)    U_LOG_IFL_T(sp->log_level, __VA_ARGS__);
related

Spew level logging.

◆ ST_WARN

#define ST_WARN (   sp,
  ... 
)    U_LOG_IFL_W(sp->log_level, __VA_ARGS__);
related

Warn level logging.

Field Documentation

◆ c

struct sdl_compositor sdl_program::c

SDL compositor struct.

Referenced by sdl_program_plus_render().

◆ ctx

SDL_GLContext sdl_program::ctx

Main OpenGL context.

Referenced by sdl_make_current().

◆ current_mutex

struct os_mutex sdl_program::current_mutex

◆ fov

struct xrt_fov sdl_program::fov

Fov of each individual eye.

◆ hmd

struct xrt_hmd_parts sdl_program::hmd

HMD parts exposed by the SDL device to become a HMD.

Referenced by sdl_device_init().

◆ inputs

struct xrt_input sdl_program::inputs[1]

Inputs exposed by the SDL device.

Referenced by sdl_device_init().

◆ log_level

enum u_logging_level sdl_program::log_level

The current log level.

Referenced by sdl_program_plus_create().

◆ origin

struct xrt_tracking_origin sdl_program::origin

Tracking origin that the device is located in.

Referenced by sdl_device_init().

◆ pose

struct xrt_pose sdl_program::pose

The pose of the head, only used for view space.

Pose of each individual eye.

Referenced by sdl_program_plus_create().

◆ spp

struct sdl_program_plus* sdl_program::spp

Pointer back to the C++ part of the program.

Referenced by sdl_program_plus_create(), sdl_program_plus_destroy(), and sdl_program_plus_render().

◆ usys

struct u_system* sdl_program::usys

System, implemented for now using helper code.

Referenced by sdl_system_init().

◆ win

SDL_Window* sdl_program::win

The main window.

Referenced by sdl_make_current().

◆ xdev_base

struct xrt_device sdl_program::xdev_base

Base class for devices.

Referenced by sdl_compositor_init(), and sdl_device_init().

◆ xinst_base

struct xrt_instance sdl_program::xinst_base

Instance base.

Referenced by sdl_instance_init().

◆ xso

struct xrt_space_overseer* sdl_program::xso

Space overseer, implemented for now using helper code.

◆ xsysc

struct xrt_system_compositor* sdl_program::xsysc

Created system compositor.

◆ xsysd_base

struct xrt_system_devices sdl_program::xsysd_base

System devices base.

Referenced by sdl_system_devices_init().


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