Commit graph

517 commits

Author SHA1 Message Date
Christoph Haag 9cd3b47f94 st/oxr: Rework composition of head relation for xrLocateViews 2022-02-16 23:15:28 +00:00
Jakob Bornecrantz 49f95164a7 st/oxr: Use xrt_device_get_view_poses
Co-authored-by: Christoph Haag <christoph.haag@collabora.com>
2022-02-16 23:15:16 +00:00
Ryan Pavlik c9889f776f xrt: Rename xrt_space_graph to xrt_relation_chain.
Rename all functions and instances accordingly as well,
and add documentation for all methods.
2022-01-21 19:54:30 +00:00
Christoph Haag d0cdb8fcd3 st/oxr: Fix subactoin typo in comment 2022-01-12 23:02:53 +01:00
Jakob Bornecrantz ec537eb3aa st/oxr: Refactor extension parsing and verify extensions 2022-01-04 22:04:12 +00:00
Jakob Bornecrantz fe9191a708 st/oxr: Sort extension list 2022-01-04 18:58:35 +00:00
Jarvis Huang 27550ffa39 aux/android: Looper trick for NativeActivity with app-glue 2021-12-02 09:40:36 -06:00
Christoph Haag 22d9d97e61 st/oxr: fix finding profiles for device
fixes 6627049af3
2021-11-24 01:36:25 +01:00
Christoph Haag 821c7f0f7a st/oxr: Don't create interaction profile in xrGetInputSourceLocalizedName
oxr_instance::oxr_interaction_profile is used to bind interaction profiles
available on the assigned device to interaction profiles suggested by the
application.

Creating an interaction profile that has not been suggested might interfere
with the binding code.

xrGetInputSourceLocalizedName can only be called after the action sets are
attached, meaning all the interaction profiles must have already been
suggested.
2021-11-24 01:34:13 +01:00
Christoph Haag 1a9e0750c7 st/oxr: document oxr_instance::oxr_interaction_profile 2021-11-24 01:34:13 +01:00
Christoph Haag a1c00e14fd st/oxr: Implement a basic version of XR_FB_display_refresh_rate 2021-11-22 20:44:18 +00:00
Christoph Haag eae7231f83 st/oxr: Add XR_FB_display_refresh_rate ext to script 2021-11-22 20:44:18 +00:00
Jakob Bornecrantz 3f98ea5595 xrt: Tidy s/ll/log_level/g
Also make sure all variable logging uses the right type for logging variables.
2021-11-22 14:29:10 -06:00
Moses Turner cef025a546 Revert "st/oxr: fix building on linux with OPENGL_GLX OFF"
This reverts commit d20f8f4363
2021-11-20 00:11:06 +00:00
Jakob Bornecrantz 6627049af3 st/oxr: Don't hardcode profiles for devices 2021-11-19 14:38:31 +00:00
Jakob Bornecrantz 974f42f068 st/oxr: Debug print devices 2021-11-19 14:26:44 +00:00
Antonio Ospite d20f8f4363 st/oxr: fix building on linux with OPENGL_GLX OFF
When building on linux and OPENGL_GLX OFF compilation fails with the
following error:

-----------------------------------------------------------------------
../../state_trackers/oxr/libst_oxr.a(oxr_session_gfx_gl.c.o): In function `oxr_session_populate_gl_xlib':
oxr_session_gfx_gl.c:(.text+0x5c): undefined reference to `xrt_gfx_provider_create_gl_xlib'
collect2: error: ld returned 1 exit status
src/xrt/targets/openxr/CMakeFiles/openxr_monado.dir/build.make:126: recipe for target 'src/xrt/targets/openxr/libopenxr_monado.so' failed
make[2]: *** [src/xrt/targets/openxr/libopenxr_monado.so] Error 1
CMakeFiles/Makefile2:2490: recipe for target 'src/xrt/targets/openxr/CMakeFiles/openxr_monado.dir/all' failed
make[1]: *** [src/xrt/targets/openxr/CMakeFiles/openxr_monado.dir/all] Error 2
Makefile:145: recipe for target 'all' failed
make: *** [all] Error 2
-----------------------------------------------------------------------

Apparently the gl_xlib backend really depends on GLX specifically, so
fix the issue by reflecting that in the conditionally compiled blocks.
2021-11-13 12:16:29 +00:00
Ryan Pavlik 469b9d907d st/oxr: Rename all num_ in the state tracker, too. 2021-11-13 12:04:38 +00:00
Ryan Pavlik 33c0287f8b xrt: Rename all "num" parameters and fields to "count" (or "capacity" as appropriate)
This matches the OpenXR usage: the array is the plural of the element type,
and the count is the singular element type plus "count" (usually CountOutput
because of the two-call idiom)

Includes fixes to other code to match API changes.
2021-11-13 12:04:38 +00:00
Ryan Pavlik cc4007a69e cmake: Substantial cleanups and simplifications
We now have a cmake-format config file.
We no longer use list variables for sources, instead using
target_sources when we need to add, in accordance with current
best practice. (This makes it a lot easier to edit too.) There's no more
include_directories(), add_definitions(), or other gently-deprecated
directory-scoped commands, nor any CMake scripts that include
a parent directory reference (named targets instead)
2021-11-12 09:48:37 -06:00
Ryan Pavlik b180b244e3 st/oxr: Populate oxr_system's blend modes list from the system compositor, not the device. 2021-11-12 03:05:10 +00:00
Ryan Pavlik 409541427d st/oxr: MSVC-specialized version of macro in oxr_xrResultToString 2021-10-19 16:49:23 -05:00
Moses Turner 8fdeaccbc7 st/oxr: Switch to new get_hand_tracking signature 2021-10-02 23:06:43 +01:00
Christoph Haag d54c489738 st/oxr: Enumerate outputs too in xrEnumerateBoundSourcesForAction
Fixes #118
2021-09-20 00:28:46 +02:00
Christoph Haag fb6cf9b4cc st/oxr: Only advertise hand tracking funcs if compiled with ext 2021-09-13 21:28:01 +01:00
Christoph Haag 2b7e8d8dce st/oxr: Add ifdef for XR_EXT_hand_tracking 2021-09-13 21:27:58 +01:00
Christoph Haag d114b8bb34 st/oxr: Move XR_EXT_thermal_query #endif to the correct place 2021-09-13 21:27:54 +01:00
Christoph Haag 7c285be9e8 st/oxr: Support XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_KHR
Trivial, because XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_MND and
XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_KHR enum values are aliased.
2021-08-27 02:38:05 +02:00
Christoph Haag 5e0891404e scripts: Add XR_KHR_swapchain_usage_input_attachment_bit extension 2021-08-27 02:21:58 +02:00
Jakob Bornecrantz ea2aa56af8 st/oxr: Add debug variable for adding extra sleep in wait frame 2021-08-17 12:04:49 +01:00
Christoph Haag bc8ac9ca3c st/oxr: Use OXR_MAX_BINDINGS_PER_ACTION instead of hardcoded 32
The hardcoded value 32 was actually wrong and caused a warning

../src/xrt/state_trackers/oxr/oxr_input.c:668:9: warning: 'oxr_binding_find_bindings_from_key' accessing 256 bytes in a region of size 128 [-Wstringop-overflow=]
  668 |         oxr_binding_find_bindings_from_key(log, profile, act->act_key, binding_points, &num);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-07-15 01:08:20 +02:00
Jakob Bornecrantz 9e5df0f504 st/oxr: Calculate normalized sub-image offsets and sizes 2021-07-10 17:59:17 +01:00
Jakob Bornecrantz 390b06b22a st/oxr: Put all sub-image handling in one place (NFC) 2021-07-10 17:59:17 +01:00
Jakob Bornecrantz 570e7a5702 st/oxr: Tidy oxr_session_frame_end.c (NFC) 2021-07-10 17:59:17 +01:00
Jakob Bornecrantz 189aea97aa st/oxr: Refactor out end frame function into own file 2021-07-10 17:59:17 +01:00
Jakob Bornecrantz b8d88113c2 st/oxr: Add gfx to session gfx files 2021-07-10 17:59:17 +01:00
Christoph Haag 250ef94d71 st/oxr: Don't go to READY after EXITING
The STOPPING state has two possible follow up paths:

STOPPING -> IDLE -> READY
STOPPING -> IDLE -> EXITING

After EXITING, the application must call xrDestroySession; there is no meaningful
session state after EXITING.

To go to the READY state again, the application should first create a new session.

Applications that are lazy and drain the entire event queue and only handle
the last encountered state would be affected by "skipping" the EXITING state.
2021-07-02 15:19:00 +00:00
Christoph Haag bcc50dbd4f st/oxr: Add checks for Vulkan graphics bindings 2021-06-25 01:10:25 +02:00
quic_zhibinw 76cf6aeae4 st/oxr: Transform projection layer pose to global space. 2021-06-10 17:08:04 +08:00
Ryan Pavlik 2c87f57ad1 cmake: Make sure st_oxr exposes its optional vulkan/gl dependencies
Fixes builds of tests on Windows
2021-06-08 12:05:23 -05:00
Christoph Haag 28a29f8152 st/oxr: Fix xrGetSystemProperties crash in headless mode
fixes #125

v2: Handle sys->xsysc being NULL
2021-05-11 02:10:58 +02:00
Christoph Haag d384c90104 st/oxr: Check that VkPhysicalDevice in graphics binding matches suggested device
XR_KHR_vulkan_enable2:
physicalDevice VkPhysicalDevice must match the device specified by xrGetVulkanGraphicsDevice2KHR

XR_KHR_vulkan_enable:
physicalDevice VkPhysicalDevice must match the device specified by xrGetVulkanGraphicsDeviceKHR

XR_KHR_vulkan_enable:
Add a trivial check that xrGetVulkanGraphicsDeviceKHR is called before xrCreateSession.
(our cached suggested device will be XR_NULL_HANDLE if it has not been called).
The XR_KHR_vulkan_enable2 code path already contains this check.
2021-05-07 13:42:49 +02:00
Jakob Bornecrantz e0bf0a423f st/oxr: Make Vulkan optional 2021-04-30 21:53:21 +00:00
Jakob Bornecrantz 4e572af96a st/oxr: Rename oxr_session_views to oxr_session_locate_views (NFC) 2021-04-27 01:44:16 +01:00
Jakob Bornecrantz 4da87635d1 st/oxr: Tidy xrLocateViews function 2021-04-27 01:44:16 +01:00
Ryan Pavlik 3cfaa2ea9f st/oxr: Port to using new zero/identity defines 2021-04-26 22:38:42 +00:00
Christoph Haag 08c91d4136 st/oxr: Fix printing of the format in error message 2021-04-26 14:54:30 +02:00
Jakob Bornecrantz cabaece344 st/oxr: Print value on bad layer type 2021-04-15 21:27:13 +00:00
Jakob Bornecrantz 74c9531d4f st/oxr: Use right enum for ret check 2021-04-15 17:38:06 +01:00
Jakob Bornecrantz 7c77625da9 st/oxr: Set visibility and z_order if multi compositor controls are available 2021-04-13 16:56:17 +00:00