Commit graph

2904 commits

Author SHA1 Message Date
Christoph Haag ec5b5f9e1d t/slam: Only warn for incompatible OpenCV 2021-09-16 23:33:05 +02:00
Mateo de Mayo 78e8d3177c st/prober: Use euroc stream for SLAM tracking 2021-09-15 19:03:55 +00:00
Mateo de Mayo 6de1ab8f8e d/euroc: Add euroc device 2021-09-15 19:03:55 +00:00
Mateo de Mayo 3c618ec20c d/euroc: Improve euroc player
- Implement xrt_slam_source instead of xrt_fs
- Merge intermediate sink pointers into xrt_slam_sinks in_sinks
- Add out_sinks for downstream passage of data
- Make speed playback option a double (float was not precise enough)
- Add use_source_ts playback option to optionally use original dataset timestamps
- Fix colored datasets not working
2021-09-15 19:03:55 +00:00
Mateo de Mayo 549c59a493 t/slam: Add SLAM tracking module 2021-09-15 19:03:55 +00:00
Mateo de Mayo 8e8a9c14a9 external: Add slam_tracker.hpp and SLAM build flow 2021-09-15 19:03:55 +00:00
Mateo de Mayo caa9192a26 xrt: Add xrt_tracked_slam interface 2021-09-15 19:03:55 +00:00
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 8de97f197f ext/openxr: Update headers to 1.0.19 2021-08-27 02:21:58 +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