Commit graph

2900 commits

Author SHA1 Message Date
Mateo de Mayo cbc74bc9c1 xrt: Add stream_start alternative to xrt_fs for SLAM streaming 2021-09-15 19:03:55 +00:00
Mateo de Mayo 552c03bb2b xrt: Add SLAM sinks 2021-09-15 19:03:55 +00:00
Simon Zeni 47be806428 c/main: Implement WINDOW_DIRECT_WAYLAND 2021-09-15 18:44:18 +00:00
Simon Zeni 26c684d42f aux/vk: Add VK_EXT_acquire_drm_display functions 2021-09-15 18:44:18 +00:00
Moses Turner 56f34d23b9 d/vive: Use m_relation history for HMD 2021-09-15 12:13:14 -05:00
Moses Turner 7f88583d37 d/survive: Use m_relation_history for HMD and controllers 2021-09-15 12:13:14 -05:00
Moses Turner f9d540aee0 d/rs: Use m_relation_history for 6DOF 2021-09-15 12:13:14 -05:00
Moses Turner 947bac9e54 aux/math: Implement m_relation_history
to keep track of past poses of HMDs, controllers, etc.
2021-09-15 12:13:14 -05:00
Moses Turner 7f69dc795f d/ht; aux/util: Move ringbuffer implementation into aux/util 2021-09-15 12:13:00 -05:00
Moses Turner 9960f0ab22 aux/math: Add tracing for m_predict 2021-09-15 12:13:00 -05:00
Jakob Bornecrantz c5c07eced2 c/render: Remove the hacks 2021-09-14 16:15:27 +00:00
Jakob Bornecrantz 5bff6f3c9b c/render: Add ATW support for compute rendering 2021-09-14 16:15:27 +00:00
Jakob Bornecrantz 3795004208 c/main: Add compute distortion rendering backend 2021-09-14 16:15:27 +00:00
Moses Turner ee429ac279 d/ht: make blackbar work with non-square inputs 2021-09-14 14:09:03 +01:00
Jakob Bornecrantz cb7563ecd6 m/predict: Add C++ extern guards 2021-09-14 13:42:20 +01:00
Jakob Bornecrantz 608bb987d9 u/[rt|ft]: Adjust margins
This commit adds more margins to both the app and the compositor, with the
compute work this yeilds basically no frame misses for the compositor.
2021-09-13 21:50:20 +01:00
Jakob Bornecrantz dda80836c6 u/ft: Rename min_margin_ns to margin_ns 2021-09-13 21:49:31 +01:00
Jakob Bornecrantz 5192e82948 d/ht: Tidy includes 2021-09-13 21:47:05 +01:00
Jakob Bornecrantz 4cdfadf3e0 d/ht: Tidy view creation 2021-09-13 21:47:04 +01:00
Christoph Haag 79fe29f674 c/main: Use ns_to_ms helper for nominal frame interval 2021-09-13 21:28:10 +01: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
Mateo de Mayo d9482d0b76 u/var: Add f64 kind 2021-09-13 18:59:03 +01:00
Christoph Haag 83e194e9d3 comp: Wait for release/acquire fence before destroying swapchain
Fixes validation warning when quitting Vulkan OpenXR applications
like hello_xr -G Vulkan2:

VUID-vkDestroyImage-image-01000(ERROR / SPEC): msgNum: -221078694 - Validation Error: [ VUID-vkDestroyImage-image-01000 ] Object 0: handle = 0x55d4d96e4960, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xf2d29b5a | Cannot call vkDestroyImage on VkImage 0xcb1c7c000000001b[] that is currently in use by a command buffer. The Vulkan spec states: All submitted commands that refer to image, either directly or via a VkImageView, must have completed execution (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkDestroyImage-image-01000)
    Objects: 1
        [0] 0x55d4d96e4960, type: 3, name: NULL

This is an addition to commit 778515739f that
introduced this fence.
2021-09-07 11:51:03 +02:00
Christoph Haag cc53994b4f d/survive: Count ahead of time how many configs to wait for
On recent libsurvive versions, loading the config of the HMD takes quite
long when only a HMD is active without controllers.

Instead of adjusting the timeout value all the time, rework how we wait for
the device configs.

Previously we just waited for device configs to arrive until no new configs
arrive for a predefined timeout.
Now we count how many objects of interest libsurvive actually knows, and then
only wait until the configs for this many devices are loaded.

This should make initialization of the survive driver faster and more robust.
2021-09-04 02:35:59 +02:00
Jakob Bornecrantz 129902750d u/sink: Add conversion from L8 to R8G8B8 2021-09-03 22:16:21 +01:00
Moses Turner d7fc516cfb d/vive: Use hand tracking if VIVE_USE_HANDTRACKING is set 2021-09-03 21:06:18 +00:00
Moses Turner db4a50410c d/survive: Use hand tracking if there aren't any controllers
rebase-survive
2021-09-03 21:06:18 +00:00
Moses Turner 624a676f56 d/ht: Change everything 2021-09-03 21:06:18 +00:00
Moses Turner 8068912953 targets: Don't probe handtracking driver 2021-09-03 21:06:18 +00:00
Moses Turner cef922946a aux/vive: Parse camera calibration 2021-09-03 21:06:18 +00:00
Moses Turner efbc4cd9e5 d/survive: Allow users to set wait time through config_v0.json
Necessary for Moses - for some reason, with no controllers, his headset takes forever to probe
2021-09-03 21:06:18 +00:00
Moses Turner a1b683385f aux/util: Add u_frame_clone 2021-09-03 21:06:18 +00:00
Moses Turner 815aa47ac2 d/vf: Add new format for stereo hand tracking 2021-09-03 21:06:18 +00:00
Christoph Haag 2609502150 aux/vk: Add and document tegra specific dedicated allocation workaround 2021-09-03 15:32:35 +00:00
Christoph Haag 4982a14541 aux/vk: Add Tegra detection 2021-09-03 15:32:35 +00:00
Christoph Haag e7d047f956 aux/vk: debug print preferred/required dedicated allocation 2021-09-03 15:32:35 +00:00
Christoph Haag 7dcd420df8 aux/vk: Add VK_FORMAT_R16G16B16A16_UNORM to vk_color_format_string 2021-09-03 15:32:35 +00:00
Christoph Haag 527efd379f comp: debug print the numeric format
helps to see which format it is when it can not be translated to a string
2021-09-03 15:32:35 +00:00
Jakob Bornecrantz 3bab14fa3b t/psmv: Fix misconception with disparity transform 2021-09-01 22:00:46 +01:00
Jakob Bornecrantz 992642bdf8 d/vive: Tidy warning 2021-09-01 22:00:46 +01:00
Jakob Bornecrantz 407461fd4f d/vive: Silence warnings from when the camera is running 2021-09-01 22:00:46 +01:00
Mateo de Mayo 91db53572b st/prober: Make euroc start by hooking it into the prober 2021-08-27 18:39:37 +01:00
Mateo de Mayo 97c59bd59f d/euroc: Add EuRoC dataset reader driver.
A squash of the following commits.

d/euroc: Add Euroc driver initial boilerplate

d/euroc: Implement xrt_frame_node interface

d/euroc: Implement mainloop thread start flow

d/euroc: Parse samples from data.csv files

d/euroc: Determine dataset information at start

Also use that information to provide a xrt_fs mode and to know if
right camera images are available to use.

d/euroc: Produce frames for left and right sinks

d/euroc: Implement xrt_imu_sink

d/euroc: Implement playback properties

d/euroc: Implement pausing with UI state machine

d/euroc: Show IMU and progress data in UI

d/euroc: Make sure to give in nullptr or valid pointers to wrapL8

d/euroc: Unreference frames when done with them

d/euroc: Fix leaks with debug sinks, and work around free issue

d/euroc: Refactor playback to produce samples with current timestamps

d/euroc: Fix double free by separating debug sinks from downstream sinks
2021-08-27 18:38:40 +01:00
Mateo de Mayo 00a2f891a2 xrt: Add xrt_imu_sink interface 2021-08-27 13:02:18 +00:00
Mateo de Mayo 92fc2784e1 xrt: Add xrt_imu_sample 2021-08-27 13:02:18 +00:00
Mateo de Mayo de3bfc193d u/var: Add button and u64 var kinds
Also: fix on_ff_vec3_var
2021-08-27 13:02:18 +00:00
Mateo de Mayo 167fe78af0 st/gui: Handle NULL pdev in video listing scene. 2021-08-27 13:02:18 +00:00
Christoph Haag 08c136b712 ipc: Fix warning and paranoia check 2021-08-27 12:34:08 +00: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 cc4e46b3ec xrt: typedef EGLenm too for GLES
Used in XrSwapchainStateSamplerOpenGLESFB added in OpenXR SDK 1.0.16
2021-08-27 02:21:58 +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 8b8891f60f u/sink: Make sure to add deinterleaver sink to context 2021-08-23 20:25:52 +01:00
Jakob Bornecrantz c83dc7b323 u/sink: Make sure to add split sink to context 2021-08-23 20:25:08 +01:00
Jakob Bornecrantz a8251815af t/framemat: Update confusing comments, sorry. 2021-08-23 19:42:45 +01:00
Christoph Haag 602ce70a0a aux/vk: Only use dedicated allocation when it is required
On tegra, when VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT is set for color image usage
with VK_FORMAT_R16G16B16A16_SFLOAT, dedicated allocation is preferred, but not required.

When using dedicated allocation in this case, we get only a black texture,
and when blitting from that texture, we get a kernel driver error:
gk20a_fifo_handle_mmu_fault_locked:1721 [ERR]  fake mmu fault on engine 0, engine subid 1 (hub), client 1 (ce0), addr 0x46cd8aa000, type 15 (poisoned), access_type 0x00000000,inst_ptr 0x212ef3000

Only using dedicated allocation when it is required works around this issue.
2021-08-23 13:01:05 +00:00
korejan 42af354f65 c/multi: Fixes some uninitialized mutexes.
Fixes some uninitialized/null mutexes that causes crash bug during the creation of the multi compositors (seen on Windows).
2021-08-21 11:34:33 +01:00
Jakob Bornecrantz 49e6514a3d u/sink: Make sure to free frame when we fail to decode 2021-08-20 18:55:21 +01:00
Jakob Bornecrantz 8225539178 st/gui: Make sure to unreference any frames pending for upload 2021-08-20 17:35:32 +01:00
Jakob Bornecrantz 36a8f949d5 st/gui: Make sure to add ogl texture sink to context 2021-08-20 17:18:42 +01:00
Jakob Bornecrantz 022bf18200 u/sink: Make sure to add quirk sink to context 2021-08-20 17:14:43 +01:00
Jakob Bornecrantz 601a6832b8 d/vive: Use u_device_free to free distortion mesh data 2021-08-20 17:09:05 +01:00
Jakob Bornecrantz df484c508d d/vive: Tidy 2021-08-20 16:56:15 +01:00
Jakob Bornecrantz d61cf5dc78 d/vive: Make sure to properly destroy controller 2021-08-20 16:56:15 +01:00
Jakob Bornecrantz a89c8309c7 u/vive: Pass in logging level to parse function 2021-08-20 13:42:11 +01:00
Jakob Bornecrantz 00aca14832 u/vive: Add vive_config_teardown function to free any pointers that needs freeing. 2021-08-20 13:42:11 +01:00
Jakob Bornecrantz 3b62f9e6fb t/gui: Add sanitizers 2021-08-20 12:28:30 +01:00
Jakob Bornecrantz 4d8fa41c5e t/ctl: Add sanitizers 2021-08-20 12:28:30 +01:00
Jakob Bornecrantz 5f66236de6 t/cli: Add sanitizers 2021-08-20 12:28:30 +01:00
Moses Turner 6dcf10a4fc d/rs: clean up device list 2021-08-20 12:28:30 +01:00
Moses Turner 9febede5c6 ipc/server: Clean up the hack if we exit early 2021-08-20 12:28:26 +01:00
Moses Turner 74c93f83f7 d/survive: Use u_device_free to free distortion mesh data 2021-08-20 12:28:22 +01:00
Moses Turner e8907afeed d/rs: Free JSON 2021-08-20 12:28:19 +01:00
Jakob Bornecrantz 003ade3006 d/ht: Don't leak when we can't create the hand-tracker tracker 2021-08-19 23:20:24 +01:00
Moses Turner 6e5efc850e aux/math: Add euro filtering 2021-08-18 18:56:10 +00:00
Moses Turner a1574312d2 d/v4l2: more paranoid logging 2021-08-18 13:17:17 -05:00
Jakob Bornecrantz ea2aa56af8 st/oxr: Add debug variable for adding extra sleep in wait frame 2021-08-17 12:04:49 +01:00
Jakob Bornecrantz f27b50ff5a d/dummy: Add option to rotate around up axis 2021-08-17 12:04:49 +01:00
Jakob Bornecrantz 9178e0ef59 c/main: Constify argument 2021-08-17 12:04:49 +01:00
Jakob Bornecrantz 05c61511ab m/vec2: Add a few more scalar functions 2021-08-17 12:04:49 +01:00
Jakob Bornecrantz 70ceabb56e m/mat4: Add Matrix 4x4 f64 functions 2021-08-17 12:04:49 +01:00
Jakob Bornecrantz 521f066e72 xrt: Add a Matrix4x4 with f64 2021-08-17 12:04:49 +01:00
Moses Turner bcddb4cff3 targets/service: Use address sanitizer on monado-service if desired 2021-08-16 21:18:52 +01:00
Jakob Bornecrantz a6bdf92fd0 d/vf: Remove debug message 2021-08-16 21:18:52 +01:00
Moses Turner b2ef01af10 d/vf: Add trace marker 2021-08-16 21:18:46 +01:00
Moses Turner 13f2b3b7c4 aux/util: Add get_vec3_f64_array 2021-08-16 21:02:27 +01:00
Moses Turner 0b2dd35b60 aux/os: Add os_mutex_trylock 2021-08-16 21:02:27 +01:00
Moses Turner 7356100696 aux/math: Add m_vec3_project, m_vec3_orthonormalize, m_vec3_lerp, m_vec2_normalize, math_lerp 2021-08-16 21:02:27 +01:00
Moses Turner cda56ddfbd xrt: Add xrt_vec3_f64 struct 2021-08-16 21:02:27 +01:00
Christoph Haag 778515739f comp: Guard acquire/release with a fence
Fixes validation warning when acquiring images before the command buffer
of the previous acquire or release on the same queue has finished.

VUID-vkQueueSubmit-pCommandBuffers-00071(ERROR / SPEC): msgNum: 774851941 - Validation Error: [ VUID-vkQueueSubmit-pCommandBuffers-00071 ] Object 0: handle = 0x558634c5c750, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0x2e2f4d65 | vkQueueSubmit(): pSubmits[0].pCommandBuffers[0] VkCommandBuffer 0x558634b85a10[] is already in use and is not marked for simultaneous use. The Vulkan spec states: If any element of the pCommandBuffers member of any element of pSubmits was not recorded with the VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, it must not be in the pending state (https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VUID-vkQueueSubmit-pCommandBuffers-00071)
    Objects: 1
        [0] 0x558634c5c750, type: 3, name: NULL
2021-08-16 15:52:57 +02:00
Christoph Haag 32d09aadc3 aux/vk: Add vkGetFenceStatus function 2021-08-16 15:37:29 +02:00
Jakob Bornecrantz 7d8b83aba5 xrt: Add docu 2021-08-11 18:28:27 +01:00
Jakob Bornecrantz 77a67387b4 ipc/server: Paranoia 2021-08-11 18:09:52 +01:00
Christoph Haag b249af9415 comp: Bind the correct GL texture for importing memory objects 2021-08-09 15:17:25 +02:00
Christoph Haag 1b179306dc comp: Only use dedicated allocation when supported/preferred
Fixes OpenGL depth formats on Tegra
2021-08-09 15:17:25 +02:00
Christoph Haag b4145a1543 aux/vk: Print all used device extensions in XRT_LOG=trace 2021-08-09 15:15:57 +02:00
Moses Turner e8e977faa2 inc/xrt, aux/bindings: fix typo XRT_OUTPUT_NAME_XBOX_HAPTIC_RIGHTT -> XRT_OUTPUT_NAME_XBOX_HAPTIC_RIGHT 2021-07-29 20:45:05 +00:00
humbletim 0b36586fe7 add 'Vive MV.' model_number variant 2021-07-27 20:02:33 -04:00
Jakob Bornecrantz 9d9879ca3e c/multi: Make sure there are at least some predicted data
To avoid asserts in non-service mode.
2021-07-22 17:19:45 +01:00
Jakob Bornecrantz fb92a3f27f d/vf: Add tracing support 2021-07-16 15:29:27 +00:00
Jakob Bornecrantz a6a5b3dda6 d/vf: Refactor frame handling 2021-07-16 15:29:27 +00:00
Jakob Bornecrantz f04a113693 d/vf: Tidy 2021-07-16 15:29:27 +00:00
Christoph Haag 162915f022 p/prober: disable all drivers when qwerty is enabled
qwerty is auto probed, making HMDs that are not auto probed always take precedence.
When setting QWERTY_ENABLE=1 the intent is usually to exclusively use qwerty.
Therefore we default to disabling all other drivers when this variable is set.

To make the old behavior of adding qwerty devices with lower priority than actual
devices, the variable QWERTY_COMBINE=1 is introduced.
2021-07-16 15:15:28 +00:00
Christoph Haag c6b5c5322c aux/vk: Print info for setting CAP_SYS_NICE 2021-07-15 16:35:06 +00:00
Christoph Haag c676020bdb aux/vk: Add VK_ERROR_NOT_PERMITTED_EXT error code string 2021-07-15 16:35:06 +00:00
Christoph Haag 82140ea83b aux/vk: Print vkCreateDevice error num too 2021-07-15 16:35:06 +00:00
Christoph Haag be0b4f496a d/ulv2: fix maybe uninitialized warning
../src/xrt/drivers/ultraleap_v2/ulv2_driver.cpp: In function 'void* leap_input_loop(void*)':
../src/xrt/drivers/ultraleap_v2/ulv2_driver.cpp:290:29: warning: 'hi' may be used uninitialized in this function [-Wmaybe-uninitialized]
  290 |                         int hi; // hand index
      |                             ^~
2021-07-15 01:35:49 +02:00
Christoph Haag ab209bcf18 c/main: Add return value for when asserts are disabled
It's not worth introducing a new error code for this case, just
return XRT_ERROR_VULKAN.

Fixes error with asserts disabled

../src/xrt/compositor/main/comp_compositor.c: In function 'compositor_mark_frame':
../src/xrt/compositor/main/comp_compositor.c:186:1: warning: control reaches end of non-void function [-Wreturn-type]
  186 | }
      | ^
2021-07-15 01:31:19 +02:00
Christoph Haag 86e42858b7 d/qwerty: Add reasonable alternative code paths for asserts
In release builds asserts will be disabled, so we should try to handle the
assert cases reasonably.

This commit fixes several unused variable warnings when asserts are disabled.
2021-07-15 01:19:13 +02:00
Christoph Haag 2b94b2b165 d/ns: Fix may be used uninitialized warnings 2021-07-15 01:10:40 +02: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
Christoph Haag e2e13b7ac3 st/gui: Don't access first vec3 member as float array
It produces a warning

../src/xrt/state_trackers/gui/gui_scene_debug.c:141:9: warning: ‘igInputFloat3’ accessing 12 bytes in a region of size 4 [-Wstringop-overflow=]
  141 |         igInputFloat3(name, (float *) &value.x, "%+f", ImGuiInputTextFlags_ReadOnly);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2021-07-15 00:59:09 +02:00
Jakob Bornecrantz cb9ce8b34e t/calibration: Add support for RGB images 2021-07-13 15:01:00 +00:00
Jakob Bornecrantz dbb6b1f43c t/calibration: Make it possible to select number distortion parameters 2021-07-13 15:01:00 +00:00
Jakob Bornecrantz 9aff6fb9b3 u/sink: Add special converter sink that passes through YUV, L8 and RGB 2021-07-13 15:01:00 +00:00
Jakob Bornecrantz f725924723 st/gui: Make it possible to select the DepthAI camera in Video select UI 2021-07-13 15:01:00 +00:00
Jakob Bornecrantz 6beb57bf98 st/gui: Add support to record from ELP 3D camera 2021-07-13 15:01:00 +00:00
Jakob Bornecrantz 33563ccb7e st/gui: Correct order of arguments to xrt_fs_stream_start 2021-07-13 15:01:00 +00:00
Jakob Bornecrantz ae3a2179b9 st/gui: Check that we actually opened the video device 2021-07-13 15:01:00 +00: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
Jakob Bornecrantz 7bd1dba1d8 xrt: Add normalized sub-image offset and size in layer data
This makes the compositor not have to care about texture size.
2021-07-10 17:58:54 +01:00
Moses Turner e312422e61 t/gui: Add tracing support 2021-07-09 20:24:38 -05:00
Jakob Bornecrantz 94d029ed15 d/dai: Add tracing support 2021-07-09 20:23:49 -05:00
Jakob Bornecrantz 09513d73af d/v4l2: Add tracing support 2021-07-09 21:43:21 +01:00
Jakob Bornecrantz c278618ec1 t/hsv: Add tracing support 2021-07-09 21:38:02 +01:00
Jakob Bornecrantz cdf30b00e1 u/sink: Add tracing support 2021-07-09 21:36:57 +01:00
Jakob Bornecrantz e04decbe64 u/trace_marker: Add sink category 2021-07-09 19:19:50 +01:00
Christoph Haag 9ba24e3b15 t/ctl: Fix error message when toggling io fails 2021-07-07 00:50:07 +02:00
Christoph Haag e21f4a2458 t/ctl: Add usage information 2021-07-07 00:49:28 +02: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
Jakob Bornecrantz 5838d737b3 u/sink: Tidy and add some comments to queue sink (NFC) 2021-06-27 00:59:24 +00:00
Jan Schmidt 8192e74f76 d/wmr: Compute visible region for render rectangle.
Use the distortion function to calculate the visible limits of the
display and then configure the rendered FoV angles accordingly.
2021-06-26 03:52:32 +10:00
Jan Schmidt dfe932ffd7 d/wmr: Add an extensible headset map.
Add a mechanism for recognising known headsets and handling specific
init/deinit sequences for those that need it.
2021-06-26 03:52:29 +10:00
Dan Weatherford 6bb3577b1b d/wmr: Implement Lenovo explorer support.
Recognise the Lenovo explorer device
2021-06-26 03:52:29 +10:00
Jan Schmidt bad625965a d/wmr: Extract JSON configuration from the firmware.
Pull in the WMR config obfuscation key and extract the JSON
calibration data.

Based on a patch from Dan Weatherford <sabretooth@gmail.com>
2021-06-26 03:52:26 +10:00
Dan Weatherford 3ca80e9607 d/wmr: Add functions to read raw config data
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2021-06-26 03:52:26 +10:00
Jan Schmidt 0cf7b4a9b3 d/wmr: Add render distortion configuration
Take the parameters from the headset configuration and the existing
render FoV, and use them to instantiate a distortion mesh.

TODO: Reverse the distortion in order to calculate good FoV range
that covers the full view for each headset.
2021-06-26 03:52:23 +10:00
Jan Schmidt f663727b07 d/wmr: Add some groundwork for config parsing.
Sketch out some groundwork for parsing WMR config blocks,
using some hard-coded values from my headset for now. Later,
this will be parsed from the headset JSON blob.
2021-06-26 03:52:16 +10:00
Dan Weatherford fabf01ff39 aux/math: Add math_quat_slerp() 2021-06-25 17:40:07 +01:00
Jan Schmidt 4581a7a9a6 aux/math: Implement math_matrix_3x3_inverse.
Add a function to invert 3x3 matrices, to reverse 2D
affine transforms.
2021-06-25 17:40:07 +01:00
Christoph Haag bcc50dbd4f st/oxr: Add checks for Vulkan graphics bindings 2021-06-25 01:10:25 +02:00
Moses Turner 7461c57043 cmake: make ulv2 build a little better 2021-06-23 23:40:43 +01:00
Jakob Bornecrantz 47470cc8e2 d/ns: Use fread when reading from config file 2021-06-21 12:29:31 -05:00
Moses Turner 3569e4f2ed d/ns: Fix 3D distortion FOV calc
co-authored-by: Nico Zobernig <nico.zobernig@gmail.com>
2021-06-21 12:29:31 -05:00
Moses Turner bcadbea3aa d/ns: Clean utility_northstar a bit 2021-06-21 12:29:31 -05:00