Commit graph

5102 commits

Author SHA1 Message Date
Jakob Bornecrantz 062dec59b7 cmake: Sort print list and general tidy [NFC]
* Sort lists
* Add all entries to exposed cmakedefines list
* Remove duplicate hand-tracking entry
* Move SLAM entry to feature list as it's called feature
2023-03-08 01:03:21 +00:00
Moshi Turner 03546e0b99 h/mercury: Add wrist pose initialization guesser 2023-03-07 17:41:49 -06:00
Moshi Turner 3f2b71a9d5 h/mercury: Use post-rotation residual that'll handle big rotations
Fixes a long-standing bug
2023-03-07 17:41:49 -06:00
Moshi Turner cdd0a6df67 h/mercury: Have a post-translation as well as post-rotation
For better numerical stability. Shouldn't significantly affect tracking besides slight jitter reduction and very slightly higher accuracy.
2023-03-07 17:41:49 -06:00
Moshi Turner 7c93b1ccfd h/mercury: Move all defines to lm_defines.hpp 2023-03-07 17:40:45 -06:00
Moshi Turner 4ccc133ac5 h/mercury: Split lm_rotations into two files to make copyright ownership clear 2023-03-07 17:40:45 -06:00
Moshi Turner 7485afbeaa xrt: Refactor oxr_sdl2_hack to u_debug_gui
And OXR_DEBUG_GUI to XRT_DEBUG_GUI

Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-03-06 16:39:52 -06:00
Jakob Bornecrantz e338d57945 st/gui: Remove unused pointer [NFC] 2023-03-06 14:38:36 +00:00
Moshi Turner c0af2327fd h/mercury: Push frame timestamp back before predicting next frame ROIs
Fixes minor logic error and stops crash if hands are detected on the very first frame
2023-03-05 22:41:10 -06:00
Moshi Turner bc152f6983 h/mercury: Dynamically allocate arrays for stereographic projection
Also factor out stereographic_unprojection into its own file because we're gonna need it elsewhere
2023-03-04 17:52:15 -06:00
Moshi Turner 0931cbaf0f h/mercury: Add option to run hand detection model in all views 2023-03-03 20:27:39 -06:00
Moshi Turner 7f5562c765 h/mercury: Don't show hands until tracked for 10 frames 2023-03-03 20:27:39 -06:00
Moshi Turner 84bae0b8ca h/mercury: Add debug instrumentation header
So that we can run automated tests on our hand tracking
2023-03-03 20:27:39 -06:00
Moses Turner a934bf4ae3 h/mercury: Bump the hand detection threshold up 2023-03-03 20:27:39 -06:00
Jakob Bornecrantz 006bdbc400 u/pp: Add new xrt input enums to printing function 2023-03-03 21:38:54 +00:00
Jakob Bornecrantz 3ab34071be st/oxr: Extract space type conversions 2023-03-03 21:38:54 +00:00
Jakob Bornecrantz a980392b9e st/oxr: Refactor out conversion helper to own header 2023-03-03 21:38:54 +00:00
Jakob Bornecrantz b15ac35e76 st/oxr: Refactor some things into oxr_defines.h 2023-03-03 21:38:54 +00:00
Jakob Bornecrantz d84a679eb9 u/builders: Move setup tracking origin function here 2023-03-03 21:38:54 +00:00
Jakob Bornecrantz 05de788168 d/multi: Remove all uses of tracking_origin offsets 2023-03-03 21:38:54 +00:00
Moshi Turner 5519aecd2c cmake: Don't build t_euroc_recorder on Windows 2023-03-03 15:13:23 -06:00
Moshi Turner 8d2d90432a cmake: Add XRT_MODULE_MONADO_GUI 2023-03-03 15:13:23 -06:00
Moshi Turner ed086ea423 cmake: Add XRT_MODULE_MONADO_CLI 2023-03-03 15:13:23 -06:00
Moshi Turner ae7167dbab cmake: Add XRT_MODULE_AUX_VIVE 2023-03-03 15:13:23 -06:00
Moshi Turner 85a701a4a0 cmake: Add XRT_MODULE_MERCURY_HANDTRACKING 2023-03-03 15:13:23 -06:00
Moses Turner 58399cd993 h/mercury: Remove duplicate include 2023-03-03 15:13:23 -06:00
Moshi Turner 54bd4b844f a/math: Fix m_filter_f32_run -> m_filter_euro_f32_run
This is currently used in the delay filter in the Mercury SteamVR driver
2023-03-03 15:13:23 -06:00
Moses Turner c596b31327 h/mercury: Add interface header define 2023-03-03 15:07:45 -06:00
Moshi Turner c750d714a9 d/ht_ctrl_emu: Fix pinch detection 2023-03-03 15:07:45 -06:00
Jakob Bornecrantz 4b6491aa16 cmake: Introduce a new module category 2023-03-03 20:56:59 +00:00
Ryan Pavlik 2a3157b087 cmake: Do not install a test binary 2023-03-03 01:06:11 +00:00
Ryan Pavlik fd77b84938 st/oxr: Suppress clang-tidy removing a forward declaration. 2023-03-03 01:05:14 +00:00
Ryan Pavlik ae61287f4c a/vk: Enlarge buffer to fix warning 2023-03-03 01:05:14 +00:00
Ryan Pavlik 124c9ecf3f st/oxr: Suppress a warning.
It looks more serious than it actually is, this is normal usage.
2023-03-03 01:05:14 +00:00
Ryan Pavlik 9348130fe7 a/util: Fix bitwise operation on signed integer warnings 2023-03-03 01:05:14 +00:00
Ryan Pavlik bdc526b77d xrt: Fix bitwise operation on signed integer warnings 2023-03-03 01:05:14 +00:00
Ryan Pavlik cff131da36 st/oxr: Fix bitwise operation on signed int warnings. 2023-03-03 01:05:14 +00:00
Ryan Pavlik f43ac4841b d/wmr: Fix warnings/issues, mostly related to 32-bit builds 2023-03-03 01:05:14 +00:00
Ryan Pavlik f230446cec c/util: Fix printf on 32-bit 2023-03-03 01:05:14 +00:00
Ryan Pavlik 06b91dabc8 c/main: Fix printf formatting on 32bit 2023-03-03 01:05:14 +00:00
Ryan Pavlik 43ac5d44cf d/euroc: Fix printf formatting on 32bit 2023-03-03 01:05:14 +00:00
Ryan Pavlik fd2c7c6a98 a/util: Fix printf formatting on 32-bit 2023-03-03 01:05:14 +00:00
Ryan Pavlik 44d6755814 external: Fix typo in DearImGui demo. 2023-03-02 17:49:26 -06:00
Ryan Pavlik 172a5baf23 st/oxr: Add missing calling convention macros for entry points.
Fixes 32-bit Windows build.
2023-03-02 13:48:25 -06:00
Moshi Turner 3c1880448e a/vive: Remove unused zlib linkage 2023-03-02 04:35:44 +00:00
Moshi Turner e26a272c17 d/dai, st/gui, t/common: Make DepthAI frameserver work with multicam sinks 2023-03-01 14:37:26 -06:00
Ryan Pavlik 9cf124254e c/main: Constify target factories 2023-03-01 19:54:36 +00:00
Ryan Pavlik 3058f1c149 c/main: Fix typo 2023-03-01 19:54:11 +00:00
Mateo de Mayo 59c3c911e6 d/rift_s: Add initial multicamera support
Tested-by: Nova <technobaboo@gmail.com>
2023-03-01 19:47:10 +00:00
Mateo de Mayo 813cb31cc6 t/euroc: Support euroc recording for multiple cameras 2023-03-01 19:43:06 +00:00
Mateo de Mayo c39dc977c4 d/euroc: Support datasets with more than two cameras 2023-03-01 19:43:06 +00:00
Mateo de Mayo 186ca8258e t/slam: Adapt camera calibration data for multiple cameras 2023-03-01 19:43:06 +00:00
Mateo de Mayo d8e1b7d921 t/slam: Handle multiple camera sinks 2023-03-01 19:43:06 +00:00
Mateo de Mayo 09d7aac89e external/slam: Update interface to support multiple cameras 2023-03-01 19:43:06 +00:00
Mateo de Mayo 52cac31d3a xrt: Support more than two cameras in a SLAM sink 2023-03-01 19:43:06 +00:00
Mateo de Mayo a93dc650a1 u/debug: Export debug_to_num function 2023-03-01 19:43:06 +00:00
Jakob Bornecrantz 84ccf3a78e a/math: Tidy m_filter_one_euro.[h|c] 2023-03-01 19:34:50 +00:00
Ryan Pavlik 534d2e9f66 a/math: Improve comments for one euro filter 2023-03-01 19:33:48 +00:00
Ryan Pavlik 8f02541c27 a/math: Add a zeroing in the generic init for one euro 2023-03-01 19:31:59 +00:00
Ryan Pavlik 0c8d78fe49 a/bindings: JSON schema for bindings 2023-03-01 17:10:48 +00:00
Ryan Pavlik 2d056e6606 a/math: Add comment for searching in the lever arm math. 2023-03-01 17:08:39 +00:00
Ryan Pavlik 66a303f809 st/oxr: Internal docs 2023-03-01 17:08:39 +00:00
Jan Schmidt 699a92d9f8 rift_s: Ignore the first 100 samples for the clock
After turning on the display, the Rift S
sends a burst of stale data and it can lead to
wildly incorrect clock estimates that then
recover really slowly and cause SLAM tracking to
lag horribly.

Throw away the first 100 samples, which seems to be
enough (only the first 20 or so seem to be bad).

Also reduce the clock a2b cutoff frequency, for
faster adaptation to changes.

Tested-By: Nova <technobaboo@gmail.com>
2023-03-01 17:08:09 +00:00
Ryan Pavlik f6ab734b2e a/math: Add floating point conversion methods to Rational 2023-03-01 10:53:18 -06:00
Jakob Bornecrantz 9a19a91f2d ipc: Refactor out common ipc_client_xdev 2023-02-28 21:27:56 +00:00
Jakob Bornecrantz a86cb86c80 st/oxr: Remove unused out_xdev argument 2023-02-28 21:27:53 +00:00
Jakob Bornecrantz 78f069a10d a/math: Make argument const 2023-02-28 21:27:19 +00:00
Ryan Pavlik f66d60cb2c aux/android: The Android XINA already always adds "sampled" 2023-02-28 13:56:58 -06:00
Jarvis Huang 9b2384f1fb t/android: Fix unable to connet to runtime if process is still alive 2023-02-28 19:38:41 +00:00
Jakob Bornecrantz 494e17e173 c/util: Filter Vulkan formats for AHardwareBuffer formats
Some drivers says that they can export/import Vulkan formats that doesn't
have a direct mapping to a AHardwareBuffer format. Our import/export code
doesn't handle that case so make sure to filter out those formats.
2023-02-28 16:05:39 +00:00
Jarvis Huang 5380b6c149 st/oxr: Use xrt_device_is_form_factor_available 2023-02-22 23:52:21 +00:00
Jarvis Huang 693641b70b ipc: Add support for xrt_device::is_form_factor_available 2023-02-22 23:52:21 +00:00
Jarvis Huang b93d1ea8b8 xrt: Add xrt_device::is_form_factor_available 2023-02-22 23:52:21 +00:00
Simon Zeni fdec80cd99 d/survive: add hand tracking pose offsets to controller 2023-02-22 23:51:50 +00:00
Simon Zeni 0402a1e1a0 aux/vive: add hand tracking values to vive_poses transforms 2023-02-22 23:51:50 +00:00
Fernando Innella 80a8048c39 c/render: Fix handling of alpha channel in compute layer renderer 2023-02-21 11:10:10 -05:00
Mateo de Mayo e9e0cf9f2c t/slam: Recover fallback measurements for systems without timing extension
Fixes #235
2023-02-18 13:49:56 +00:00
Mateo de Mayo b666b8b017 t/slam: Use accel for prediction by default
Before we were not doing this because we have a hardcoded gravity vector.
Due to this, if the IMU gravity is too different, it causes the prediction to
bounce around slightly.
In practice the difference seems to be sufficiently small so as to be almost
not noticeable and we get the latency improvements we get are probably worth it.
2023-02-17 15:31:59 -06:00
Mateo de Mayo 4ac9d985e5 st/steamvr_drv: Silence warning 2023-02-17 15:31:53 -06:00
Mateo de Mayo 5ba9efd522 t/euroc: Implement trajectory recording 2023-02-17 21:03:08 +00:00
Connor Smith 8b8358f0c9 Fix typo in Magic Leap 2 controller shoulder button path. 2023-02-17 15:05:41 -05:00
Moses Turner 3bfc87f76d (NFC) h/mercury: Fix typo 2023-02-16 17:03:17 -06:00
Moses Turner 8621acd899 d/ht, h/mercury: Use u_file_get_hand_tracking_models_dir
Needed for Windows SteamVR driver
2023-02-16 17:03:17 -06:00
Moses Turner 8b2d62cf57 a/util: Add u_file_get_hand_tracking_models_dir
Needed for Windows SteamVR driver
2023-02-16 17:03:15 -06:00
Moses Turner 266aec20e1 (NFC) h/mercury: Random nit in if case 2023-02-16 17:01:12 -06:00
Moses Turner 79701d8567 h/mercury: Remove __builtin_expect on MSVC 2023-02-16 17:01:12 -06:00
Moses Turner 3155765aed h/mercury: IWYU hg_image_distorter 2023-02-16 17:00:48 -06:00
Moses Turner b32ee5bbfb a/vive: Add extern "C" so we can use from C++
Needed for Windows SteamVR driver
2023-02-16 17:00:48 -06:00
Moses Turner 2835b597be a/tracking: Support JPEG output in euroc recorder 2023-02-16 16:53:13 -06:00
Moshi Turner 73416db7ba a/tracking: Remove break statement that broke OPENCV_RADTAN promotion/demotion 2023-02-13 11:30:44 -06:00
Ryan Pavlik 0b7c822007 a/bindings: Fix typos 2023-02-08 17:35:58 -06:00
Ryan Pavlik f32ed406d8 a/android,ipc/android: Fix typos 2023-02-08 17:35:49 -06:00
Ryan Pavlik a87fb2be93 a/tracking: Fix typo 2023-02-08 17:35:33 -06:00
Ryan Pavlik a51c2bcb1a d/rift_s: Fix typo 2023-02-08 17:35:22 -06:00
Ryan Pavlik 992066ea7e c/shaders: Fix typos 2023-02-08 17:35:14 -06:00
Christoph Haag 60b8b6e8fc a/binding: reverb g2 input/menu/click is on both hands
Spec:

On both hands
    …/input/menu/click
2023-02-07 11:27:39 +00:00
Ryan Pavlik 999c67975a st/oxr: Fix inconsistent naming related to subaction paths 2023-02-06 17:58:00 -06:00
Ryan Pavlik b2e65ed08c st/oxr: Add some const correctness 2023-02-06 17:58:00 -06:00
Ryan Pavlik 573cbb12ee st/oxr: Fix typo 2023-02-06 17:58:00 -06:00
Daniel Willmott 795de613c1 d/survive: Add aim pose offset to index controllers 2023-02-05 20:19:52 +00:00
Daniel Willmott ab857e8f74 aux/vive: Add vive_poses 2023-02-05 20:19:52 +00:00
Daniel Willmott e383609cbc aux/math: Add math_quat_from_euler_angles() 2023-02-05 20:19:52 +00:00
Moses Turner e9f79c45bf h/mercury: Update hand tracking with new half-artificial model 2023-02-04 15:23:04 -06:00
Moses Turner bfdeaa7d8f a/tracking: Introduce t_camera_models.h 2023-02-04 15:23:04 -06:00
Mateo de Mayo 3cdc02c1bb a/vk: Small improvements
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-02-04 18:52:59 +00:00
Jakob Bornecrantz a8c4d1299e a/vk: Fix crash caused by different signedness comparisons
Closes #234.

All credit for debugging and figuring out what the problem is goes to Mateo, I
made a different fix for it.

Co-authored-by: Mateo de Mayo <mateo.demayo@collabora.com>
2023-02-04 18:52:35 +00:00
Mateo de Mayo 5b431152e1 t/common: Remove invalid parameter 2023-02-03 10:13:41 -03:00
Jakob Bornecrantz c7e3a358b3 c/main: Prettier print of VkSurfaceFormats 2023-02-02 20:50:42 +00:00
Jakob Bornecrantz e5b28c491a c/main: Refactor instance extension selection
Add also add VK_EXT_swapchain_colorspace
2023-02-02 20:50:42 +00:00
Jakob Bornecrantz a7f7023570 c/main: Add optional VK_KHR_format_feature_flags2 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz 3a143cadd1 a/vk: Print more color space formats 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz 7576ce0960 a/vk: Track VK_EXT_swapchain_colorspace 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz b7addee249 a/vk: Track VK_KHR_format_feature_flags2 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz 3dc0415374 ipc: Tidy client includes (NFC)
Fixes some clang-tidy warnings about duplicated includes.
2023-02-02 20:05:06 +00:00
Jakob Bornecrantz 0938a1a02b xrt: Fix missing function declaration without a prototype warnings
Found by clang-15.

src/xrt/auxiliary/math/m_permutation.c:133:15: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
m_do_the_thing()
              ^
               void
2023-02-02 13:03:08 +00:00
Patrick Nicolas 559e145934 c/main: Record pose used in compositor 2023-01-31 09:30:47 +00:00
Patrick Nicolas 7a0d87db25 c/main: Allow providing comp_target_factory in constructor 2023-01-31 09:30:47 +00:00
Guillaume Meunier 76dff0b42f ipc: make the pid filename, the socket filename, and the client library suffix customizable 2023-01-31 09:30:47 +00:00
Moses Turner 86e31f54f3 xrt: Refactor t_camera_calibration to use a tagged union instead of a bare array
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-01-30 17:09:27 -06:00
Jakob Bornecrantz 3b0f938028 d/simulated: Add builder 2023-01-30 13:20:57 +00:00
Jakob Bornecrantz d1b7e3e557 d/simulated: Add controllers
Supports simulating Simple, WinMR and ML2 controllers
2023-01-30 13:20:57 +00:00
Jakob Bornecrantz c562930cdc d/simulated: Export logging level 2023-01-30 13:20:57 +00:00
Jakob Bornecrantz 0494777d1a d/simulated: Make hmd center be pose and make it possible to pass it in at start 2023-01-30 13:20:57 +00:00
Jakob Bornecrantz 121bcf028a d/simulated: Make it possible to pass in movement mode
And a little bit of tidy.
2023-01-30 13:20:57 +00:00
Jakob Bornecrantz 06806cc6ef t/common: Tidy builder list 2023-01-30 13:20:57 +00:00
Jakob Bornecrantz 9b8de2f155 t/common: Sort builder definitions alphabetically 2023-01-30 13:20:57 +00:00
Jakob Bornecrantz 84ebd4d687 t/common: Add comment to NorthStar builder create function 2023-01-30 13:20:57 +00:00
Jakob Bornecrantz 17a14d5b10 t/cli: Add calib-dump command 2023-01-29 01:38:01 +00:00
Moses Turner 7d72b74a68 c/main: Make peek window struct private, and fix build with old SDL2 2023-01-28 12:47:57 -06:00
Jakob Bornecrantz 9bd63cb37d d/dai: It's using aux_util so depend on it 2023-01-27 20:17:27 +00:00
Moses Turner 1bba34e944 xrt: Remove old_rgb hand tracking 2023-01-27 12:37:33 -06:00
Moses 10cdde859a a/math, comp/main, comp/render: Change math_matrix_2x2_* to m_mat2x2_* 2023-01-27 12:37:22 -06:00
Moses Turner 7d8d1ad8e7 a/math: Add m_matrix_2x2_invert 2023-01-27 12:37:22 -06:00
Moses Turner da16e64982 a/math: Move m_matrix_2x2 functions into their own header 2023-01-27 12:37:22 -06:00
Moses Turner 2c73485ecd d/ht: Tidy header 2023-01-26 19:10:57 -06:00
Mateo de Mayo da50a2499f d/wmr: Adjust exposure and gain individually for each camera 2023-01-26 18:07:10 +00:00
Mateo de Mayo 60b996239c u/aeg: Add optional prefix for having multiple aeg UIs 2023-01-26 18:07:10 +00:00
Mateo de Mayo d22f58bee4 u/var: Add nested headers 2023-01-26 18:07:10 +00:00
Christoph Haag 6f263dbda4 a/vk: allow VkImageViewUsageCreateInfo in Vulkan 1.1
Some drivers do not advertise support for VK_KHR_maintenance2 in
Vulkan 1.1, because it has been promoted to core.

This caused a validation error on compositors that use Vulkan 1.1
because the scratch image is allocated with unorm format and STORAGE
usage: an image view with srgb format can not be created with STORAGE
usage on many GPUs.
2023-01-26 12:30:13 +00:00
Christoph Haag a188ef219c a/vk: Store vulkan version in vk_bundle
Also adds code in c/util's Vulkan code to store it.
2023-01-26 12:30:13 +00:00
Christoph Haag e7fff3e435 d/hdk: handle 0 bytes read 2023-01-26 00:23:18 +01:00
Christoph Haag bc1d355e26 d/hdk: Zero initialize buffer 2023-01-26 00:17:37 +01:00
Christoph Haag 4030b474ad d/hdk: Use 100 ms hid read timeout
Avoids burning cpu cycles with busy looping
2023-01-26 00:17:37 +01:00
Moses Turner c9405e946f t/common: Add environment variable for replacing RiftS controllers with hand tracking 2023-01-25 22:24:53 +00:00
Jakob Bornecrantz c21a8ef0cc st/oxr: Add controller extensions
Extensions enabled:
* XR_EXT_hp_mixed_reality_controller
* XR_EXT_samsung_odyssey_controller
* XR_ML_ml2_controller_interaction
2023-01-24 22:40:53 +00:00
Jakob Bornecrantz 6ce2978648 xrt: Add ML2 controller 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz d231850771 xrt: Add Samsung Odyssey Controller 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz 958911fd0b xrt: Add HP Reverb G2 Controller 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz ed1f18bb74 xrt: More space in xrt_input_name enum list 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz 213cc271f6 xrt: Sort xrt_device_name enums 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz da5323642d m/space: Correct comments 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz c7fdaacd02 m/space: Make sure to use valid poses in linear and angular calculations 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz f7118d7a93 m/space: Refactor pose part first 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz 02aad19c78 m/space: Make pose validity upgrading clearer 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz 2c1d413bf0 m/space: Add missing extern "C" 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz 1c046dc523 m/space: Move functions to correct section 2023-01-24 16:11:56 +00:00
Robbie Bridgewater 17560d0618 a/util,st/gui: Add i64 as a debug GUI type 2023-01-24 15:35:39 +00:00
Fernando Velazquez Innella e035d060d1 c/render: implement render_resources_get_duration
Useful for systems that don't support calibrated timestamps and caseas where only execution time measuring is needed.
2023-01-24 15:35:31 +00:00
Ryan Pavlik 85a897a0b5 a/d3d,a/vk,c/client,ipc: D3D Depth texture / DXGI handle support
a/d3d: Improve allocation

Enable D3D11 and D3D112 depth images using DXGI handles

Allow D3D depth by default

D3D: only use DXGI handles

NT handles don't support depth formats and may fail to properly interop with Vulkan with some image dimensions.

Removed D3D_COMPOSITOR_ALLOW_DEPTH env.
D3D now always imports depth.

Added authorship.

Format pass

Fix D3D compositor tests

ipc: Fix HANDLE bit twiddling code

Merge into commits related to D3D depth changes. Makes the code compile
as C++, useful for Windows traceing

Co-authored-by: Robbie Bridgewater <ebridgewater@magicleap.com>
Co-authored-by: Fernando Velazquez Innella <finnella@magicleap.com>
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-01-24 15:35:22 +00:00
Robbie Bridgewater 3802e737bb a/d3d,a/vk: Add R32_SFLOAT formats
Co-authored-by: Catalin Slobodeanu <cslobodeanu@magicleap.com>
2023-01-24 15:35:01 +00:00
SJakab e4a40a6e4e st/oxr: Skip oxr_session_end if connected to Unreal 4. 2023-01-24 11:42:46 +00:00
Moses Turner 4709ab85ca d/wmr: Fix grammar 2023-01-23 14:24:28 -06:00
Christoph Haag 87680c69d4 d/ohmd: Get rid of enum alias
The last enum index was used to determine the size of the inputs array.
The "clever" solution of aliasing enum values saved a minor amount of space
when allocating the xrt_device, while still allowing to dynamically assign
any input profile.

It also has drawbacks of being confusing and making it impossible to
validate that inputs from the correct xrt_input_name is requested.
Therefore just get rid of it, the minor space savings is not worth it.

fixes 2be4cbf4c3
2023-01-23 17:46:33 +01:00
Mario Kleiner 887b770f9e aux/binding: Implement optional "steamvr_controllertypes" for SteamVR input bindings
Add an optional switch -s or --steamvr to steamvr_profiles.py, which enables
a different naming scheme for the "controller_type" field in the generated
SteamVR profile json files.

If the switch is provided and an interaction profile in bindings.json
provides the optional new property "steamvr_controllertype", that property
will be used for the "controller_type" field of the written out .json,
instead of the regular auto-generated name.

This allows to generate json files which use controller_type names normally
used by SteamVR, so Monado provided controllers are mapped to the same
OpenXR interaction profiles that SteamVR would normally map them to.
E.g., the standard controller_type for Oculus touch controllers used by
SteamVR is "oculus_touch" instead of Monado's "monado_oculus_touch_controller".

That in turn allows OpenXR clients to use the SteamVR/OpenXR runtime to
access controllers provided by Monado's SteamVR driver plugin. Without such
compatible json files, only standard OpenVR clients can use controllers
exposed by Monado's SteamVR driver by default, but not OpenXR clients.

Tested with an Oculus Rift CV-1, and shown to now enable OpenXR clients
to make full use of the Oculus touch controllers.

The mappings for controllers other than Oculus Touch are derived from
SteamVR log output, but not actually tested due to lack of suitable hw.

Per discussion for the merge request, we enable this '-s' flag by
default in the make file for SteamVR style naming scheme.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-01-23 16:30:27 +00:00
Mario Kleiner d3893c229f aux/binding: Implement optional "steamvr_path" for SteamVR input bindings
When using the Monado SteamVR driver plugin together with an Oculus
Rift CV-1 and Oculus touch controllers, the grip / squeeze sensors
(e.g., /user/hand/left/input/squeeze/value) and the thumbsticks did not
work.

This because SteamVR expects those controls to be exposed under a
different path than what one would use for OpenXR, e.g.,
OpenXR /input/squeeze --> SteamVR /input/grip and
OpenXR /input/thumbstick --> SteamVR /input/joystick

The same is true for some other controller types.

To fix this, add some new code for input subpath substitution, to perform
this remapping, depending on binding type:

For type "trigger":  Substitute squeeze with grip
For type "joystick": Substitute thumbstick with joystick

For rare controller types where this would be the wrong thing to do,
e.g., Valve Index (for type "joystick", needs the path to remain
"thumbstick" as before), and for special cases not covered, we add
a new optional parameter 'steamvr_path' which can be used in bindings.json
to handle such mismatches in path flexibly to allow a dedicated path
name for SteamVR, overriding the regular "OpenXR style" input path or
auto-substituted path is if the parameter is omitted.

This makes the Oculus Rift CV-1 touch controllers fully work under SteamVR.

I haven't tested this with other controllers, as I only have Oculus
controllers for testing atm. But after reading about the HTC Vive controllers,
i did add a "steamvr_path" override for /input/menu -> /input/application_menu.
Cfe. https://github.com/ValveSoftware/openvr/wiki/IVRDriverInput-Overview

Also, a minor typo fix in steamvr_profiles.py as a bonus.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-01-23 16:30:27 +00:00
Mario Kleiner 50f7b5ba5f d/ohmd: Fix input from controls_mapping[0].
Use INPUT_INDICES_LAST instead of 0 for checking if control_mapping[i]
is unassigned for index i, ie. for skipping input.

As 0 is a valid mapping assignment defined in "enum input_indices", this
lead to dead input for SIMPLE_SELECT_CLICK and OCULUS_TOUCH_X_CLICK, both
assigned to 0.

This commit makes the Oculus Rift CV-1 left touch controllers X-Button
work in Monado OpenXR native and SteamVR via. Monado driver plugin.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-01-23 16:30:27 +00:00
Jakob Bornecrantz cb94bc2df0 t/common: Fix warning in lighthouse builder (NFC) 2023-01-23 13:42:20 +00:00
Christoph Haag 694baebd07 d/ohmd: Fix build
fixes 2be4cbf4c3
2023-01-22 22:04:47 +01:00
Christoph Haag 2be4cbf4c3 d/ohmd: Support generic trackers and clean up 2023-01-21 19:21:59 +00:00
Moses Turner dcbdcede5a a/util: Fix edge cases in Moses's distortion method
Before this, we read out of bounds at the bottom of the display. Unsure why nothing but Valgrind caught it.
2023-01-21 03:50:20 +00:00
Christoph Haag bb75281907 ext/tracy: Link dl 2023-01-19 20:00:30 +00:00
Jarvis Huang 503dae2883 ipc/android: Early reject if server failed to start 2023-01-19 19:50:28 +00:00
Moses Turner 8d8b0d03b0 a/util: Constify u_box_iou's Box constructor 2023-01-17 23:46:46 -06:00
Moses Turner 1ef49b92f2 d/dai: Control floodlight brightness with an env var
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-01-15 09:54:54 -05:00
Jakob Bornecrantz 4643d4f089 st/gui: Add small hand-tracking demo scene 2023-01-14 20:11:49 -05:00
Christoph Haag 01dd02dc83 d/hdk: initialized thread helper
Fixes assert in debug mode.
2023-01-08 23:42:31 +01:00
Mateo de Mayo 6bd921b390 d/wmr: Fix unused corrected IMU timestamp 2023-01-02 16:21:08 -03:00
Jarvis Huang aa6b8cd88d ipc: Change init order to avoid assertion 2023-01-01 17:00:43 +00:00
Moses Turner cd163e366b c/main: Add another string for Reverb G2 to the nvidia direct mode allowlist 2022-12-31 03:11:41 -06:00
Moses Turner 946141ce40 h/mercury: Remove kine_ccdik optimizer
Goodbye, sweet prince.
This was my first attempt at the "optimizer" piece of our optical hand tracking, and it *did work* dammit! It just wasn't anywhere near as flexible or efficient as Levenberg-Marquardt.
It's worse in every way to the `kine_lm` optimizer, and getting hard to maintain, so we're getting rid of it. Gone, but never forgotten.
2022-12-29 20:03:05 +00:00
Jakob Bornecrantz 7da72f4697 external/nanopb: Generate monado_metrics with same version as files 2022-12-22 22:06:39 +00:00
Ryan Pavlik a7b9c7b69c external/nanopb: Update nanopb from upstream nanopb-0.4.7
GitOrigin-RevId: b97aa657a706d3ba4a9a6ccca7043c9d6fe41cba
2022-12-21 21:24:14 +00:00
Jakob Bornecrantz 966878b1db t/sdl_test: Make sure to include inttypes.h for PRIu64 define 2022-12-21 00:49:06 +00:00
Ryan Pavlik 9705b1e763 external/cjson: Update cJSON from upstream v1.7.15
GitOrigin-RevId: d348621ca93571343a56862df7de4ff3bc9b5667
2022-12-20 18:51:08 +00:00
Ryan Pavlik 00b1c9531d external/stb: Update stb libraries from upstream
GitOrigin-RevId: 1ee679ca2ef753a528db5ba6801e1067b40481b8
2022-12-20 11:54:28 -06:00
Jakob Bornecrantz 814170469a t/sdl_test: Include m_mathinclude to fix compile on Windows 2022-12-20 16:02:18 +00:00
Jakob Bornecrantz 1472bdf6b6 c/client: Create a share context instead of using context directly 2022-12-19 16:38:51 +00:00
Jakob Bornecrantz 0cf18ae044 c/client: Refactor context mutex locking to helper function 2022-12-19 16:38:51 +00:00
Jakob Bornecrantz b87239e7d8 d/wmr: Increase display init sleep and also add debug variable to control it 2022-12-14 12:20:10 +00:00
Malek 5c013bcecd a/math: Add stdbool include to m_lowpass_integer.h 2022-12-12 00:45:05 -08:00
Christoph Haag 2abcc17178 c/main: Add XRT_COMPOSITOR_DISABLE_DEFERRED env var 2022-12-09 16:38:06 +00:00
SeungHoon Han a594d6d86e a/android: fixed forced applied alpha=0.8 window after Android S 2022-12-08 21:41:16 +00:00
SeungHoon Han a2f5e5f1b9 a/android: hide display cutout to use full screen 2022-12-08 20:24:53 +00:00
Jakob Bornecrantz 040764c4f1 ipc: Trace around ipc_dispatch 2022-12-08 00:24:42 +00:00
Jakob Bornecrantz 50783a4c35 u/trace_marker: Add U_TRACE_[BEGIN|END] for greater control of zones/tracks 2022-12-08 00:24:42 +00:00
Jakob Bornecrantz f8d2c095ee u/trace_marker: Ensure ENABLE_TRACE is set before including Tracy headers 2022-12-08 00:24:42 +00:00
Jakob Bornecrantz b7748691b7 ext/tracy: Do not define ENABLE_TRACY globally 2022-12-08 00:24:42 +00:00
Jakob Bornecrantz 87f7b3426a t/sdl_test: Fix build on Windows 2022-12-08 00:24:42 +00:00
Jakob Bornecrantz a29a3c5ef3 c/mutli: Error log on failing semaphore wait 2022-12-06 15:26:40 +00:00
Jakob Bornecrantz ebb7c3cac2 d/wmr: Tidy prober code 2022-12-05 15:21:20 +00:00
zhibin wang 828dacc10b c/client: Fix eglDestroyImageKHR error and add AHB buffer release 2022-12-05 14:44:53 +00:00
Jakob Bornecrantz 9b3f9baff3 ipc: Properly cast assignment 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz 6450cba854 ipc: Clarify code around xrt_comp_begin_session call 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz bc83130354 ipc: Use correct cast 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz 2ffaf7fd46 ipc: Add C++ guards to generated headers 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz 09975b0d24 ipc: Use XRT_STRUCT_INIT 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz 4a8448fcc3 c/multi: Clarify code around xrt_comp_layer_begin call 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz 840febfb57 c/multi: Do not declare variable in switch statement 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz f343bb709c c/multi: Use XRT_STRUCT_INIT 2022-12-04 18:07:53 +00:00
Jakob Bornecrantz f0021c359f xrt: Add XRT_STRUCT_INIT define
This helps with code that needs to be compiled with both C and C++.
2022-12-04 18:07:53 +00:00
Moses Turner 8c0735feec d/rift_s: Link to hand tracking driver if necessary 2022-12-04 18:05:02 +00:00
Mateo de Mayo dad7957fb2 a/math: Add clock_offset.h
For now it only has our simple exponential smoothing clock offset estimator.
But more advanced ones can go here too.
2022-12-02 16:10:09 +00:00
Bailey Morgan 35061c1d80 a/vk: Select graphics device based on prefered device type 2022-12-02 14:05:34 +00:00
Maxim Kizub e600cdaabf c/main,ipc/android: Deferred render target initialization for Android. 2022-11-30 09:32:18 -06:00
Maxim Kizub f6e1ea7aa9 t/oxr_android: fixed libmonado-service.so not found UnsatisfiedLinkError in inProcess build variant
Co-authored-by: SeungHoon Han <senicy.han@samsung.com>
2022-11-30 09:30:02 -06:00
Maxim Kizub 950f6cc506 a/android: Improve waiting for surface holder 2022-11-30 09:26:38 -06:00
Maxim Kizub 0ee891e7d6 c/main: Deferred render target initialization for windows 2022-11-30 09:25:43 -06:00
Jakob Bornecrantz f28f3a27e6 c/main: Fix crash on debug print 2022-11-30 13:31:36 +00:00
Moses Turner 85c0c78ac6 a/math: Fix m_vec3_angle function
Dot product is equivalent to a.length*b.length*cos(theta), not a.length_squared*b.length_squared*cos(theta)
2022-11-29 03:11:53 -06:00
Jakob Bornecrantz fec8e13f73 ext/openxr: Update headers to 1.0.26 2022-11-26 14:29:16 +00:00
Jakob Bornecrantz 69238be306 ext/openxr: Update XR_MNDX_force_feedback_curl 2022-11-26 14:26:58 +00:00
Jakob Bornecrantz 2a12f7d661 os/time: Use timePeriod[Begin|End] when sleeping in precise sleeper
One alternative to this is to use the CreateWaitableTimerExW function
with the CREATE_WAITABLE_TIMER_HIGH_RESOLUTION flag. On my systems the
function/flag was either as good or worse then timePeriod[Begin|End].
Setting the state globally or just just around the wait didn't seem to
have an impact on the precision.
2022-11-25 17:02:00 +00:00
Jakob Bornecrantz 96552a6caa t/common: Fix leak of calibration data in RGB-Tracker builder 2022-11-25 16:44:24 +00:00
Jakob Bornecrantz c195608602 a/tracing: Do more tracing in PSMV tracking code 2022-11-25 16:44:24 +00:00
Jakob Bornecrantz f552aacb87 a/tracking: Fix data waiting logic in PSMV tracking 2022-11-25 16:44:24 +00:00
Jakob Bornecrantz fb15e8aa50 ipc: Tidy Windows mainloop code 2022-11-25 16:04:20 +00:00
Jakob Bornecrantz 8271d213f5 ipc: Use u_winerror helper 2022-11-25 16:04:20 +00:00
Jakob Bornecrantz 6fc6968387 t/service: Try to raise priority and privilege on Windows 2022-11-25 16:04:20 +00:00
Jakob Bornecrantz 3b465b4241 u/windows: Add helper for trying priority or privilege from args 2022-11-25 16:04:20 +00:00
Jakob Bornecrantz 9e57a745b2 u/windows: Add function to raise CPU priority 2022-11-25 16:00:49 +00:00
Jakob Bornecrantz ef77cb08d0 u/windows: Add function to enable privileges on processes
Also add a small helper to add the privilege
SeIncreaseBasePriorityPrivilege, which is needed on
NVIDIA for HIGH and REALTIME priority Vulkan queues.
2022-11-25 15:54:45 +00:00
Jakob Bornecrantz 57820394f4 u/windows: Add files and u_winerror string format helper 2022-11-24 16:17:26 +00:00
Jakob Bornecrantz ad4c6a7215 u/pacing: More Tracy plots 2022-11-24 15:34:59 +00:00
Jakob Bornecrantz 8d817b773e st/prober: Print the deviecs we got when looping throught the builders 2022-11-24 12:08:17 +00:00
Jakob Bornecrantz d1db1dabfd u/pacing: Work around asserts on slow compositors
This isn't the most ideal solution but a proper fix will take longer.
2022-11-24 12:03:53 +00:00
Jakob Bornecrantz ad045fd271 t/sdl: Increase FPS 2022-11-24 12:03:53 +00:00
Jakob Bornecrantz 37da46b709 u/pacing: Add metrics output 2022-11-24 00:34:50 +00:00
Jakob Bornecrantz 87fdedeb68 u/pacing: Track more variables in app pacer 2022-11-24 00:34:50 +00:00
Jakob Bornecrantz f0cbb8a7aa t/service: Add metrics support 2022-11-24 00:34:50 +00:00
Jakob Bornecrantz 7fa20a8b46 u/metrics: Add functions to write a metrics file 2022-11-24 00:34:50 +00:00
Jakob Bornecrantz 57a31fde7c external: Dealing with MSVC in NanoPD 2022-11-24 00:34:50 +00:00
Jakob Bornecrantz 2a7c411798 external: Add monado_metrics protocol 2022-11-24 00:34:50 +00:00
Jakob Bornecrantz 58186cc63a external: Add NanoPB 2022-11-24 00:34:50 +00:00
Moses Turner f580271291 d/wmr: Guess camera orientation for Reverb G2 based on HT0 twist value 2022-11-23 13:02:35 -06:00
Moses Turner f5d4d49607 a/math: Add math_quat_to_swing_twist 2022-11-23 13:02:35 -06:00
Moses Turner b3c277196e a/math: Add faster (and correct!) math_quat_from_swing_twist 2022-11-23 13:02:35 -06:00
Moses Turner 9af195fea3 h/mercury: Add faster SwingTwistToQuaternion 2022-11-23 13:02:35 -06:00
Moses Turner e06dc0dda1 a/math: Correct documentation for math_quat_ln and math_quat_exp 2022-11-23 13:02:35 -06:00
Jakob Bornecrantz 6fe06068e8 c/main: Make XCB window deferred 2022-11-23 16:03:15 +00:00
Jakob Bornecrantz 3e1760fd04 c/main: Introduce comp_target_factory 2022-11-23 16:03:15 +00:00
Jakob Bornecrantz 93fdf0bd74 a/vk: Expose vk_select_physical_device function 2022-11-23 14:53:26 +00:00
Jakob Bornecrantz d8eb6865da c/render: Don't include comp_compositor.h 2022-11-23 14:53:26 +00:00
Maxim Kizub f5a06f9c46 c/main: Add code to defer render target initialization 2022-11-23 14:44:51 +00:00
Jakob Bornecrantz 8efb55403c d/psvr: Switch to reading sensors from its own thread
Tested-by: number-g <g@imagination.eu.org>
2022-11-22 17:58:07 +00:00
Jakob Bornecrantz 58596a5830 u/pacing: Add Tracy plots 2022-11-21 16:46:12 +00:00
Jakob Bornecrantz 7bc145d184 cmake: Add XRT_HAVE_TRACY variable 2022-11-21 16:46:12 +00:00
Jakob Bornecrantz 65e76e1277 u/trace_marker: Tracy support 2022-11-21 16:46:12 +00:00
Jakob Bornecrantz 4cecb768b1 external: Add Tracy client code 2022-11-21 16:46:12 +00:00
Jakob Bornecrantz b1b63a9397 d/vive: Do more tracing during packet handling 2022-11-21 13:47:58 +00:00
Jakob Bornecrantz 60099fdd71 t/common: Do more tracing during init and fini 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 8637617833 c/main: Do more tracing during init 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 44599a7de7 c/main: Use U_TRACE_SET_THREAD_NAME 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 432bf03981 c/multi: Use U_TRACE_SET_THREAD_NAME 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 3a2dfd850c t/hand: Use U_TRACE_SET_THREAD_NAME 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz c9bbeac70a d/v4l2: Use U_TRACE_SET_THREAD_NAME 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 36d1734377 d/vive: Use U_TRACE_SET_THREAD_NAME 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 5142fa7e88 d/psmv: Use U_TRACE_SET_THREAD_NAME 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 0691ed9b89 d/wmr: Use U_TRACE_SET_THREAD_NAME 2022-11-20 14:36:37 +00:00
Jakob Bornecrantz 386aa510bd ipc: Use U_TRACE_SET_THREAD_NAME 2022-11-20 13:52:38 +00:00
Jakob Bornecrantz d48de0d832 u/worker: Use U_TRACE_SET_THREAD_NAME 2022-11-20 13:52:38 +00:00
Jakob Bornecrantz 8b0e7675e4 u/sink: Use U_TRACE_SET_THREAD_NAME 2022-11-20 13:52:38 +00:00
Jakob Bornecrantz b49dc593b8 u/pacing: Use U_TRACE_PERFETTO define 2022-11-20 13:52:37 +00:00
Jakob Bornecrantz 469a79493c u/trace_marker: Add U_TRACE_SET_THREAD_NAME 2022-11-20 11:24:27 +00:00
Jakob Bornecrantz d1e116cb58 u/trace_marker: Check for both tracing and percetto 2022-11-20 00:31:24 +00:00
Jakob Bornecrantz f4a5e599ef u/trace_marker: Add convenience U_TRACE_PERCETTO define 2022-11-20 00:31:24 +00:00
Jakob Bornecrantz 648f91d35c u/trace_marker: Refactor define names and split idents from func 2022-11-19 17:38:48 +00:00
Jakob Bornecrantz 4ee8aa4054 u/trace_marker: Reorg file (NFC) 2022-11-19 17:38:48 +00:00
Jakob Bornecrantz 7d2bd5b3e0 u/trace_marker: Fix copy paste error (NFC)
Define was unused till now.
2022-11-19 17:38:48 +00:00
Simon Zeni 9293c628d7 a/vk: add VK_FENCE_IMPORT_TEMPORARY_BIT to vk_create_fence_sync_from_native 2022-11-18 16:43:07 -05:00
Simon Zeni 278aa4cd41 c/main: use swapchain semaphores for peek window rendering 2022-11-18 11:14:41 -05:00
Jakob Bornecrantz 98b7f7d1c6 xrt: Remove xrt_gfx_native 2022-11-15 23:24:20 +00:00
Jakob Bornecrantz 8d6b794878 c/main: Add own interface for creating the main compositor 2022-11-15 23:24:20 +00:00
Moses Turner cb2c355ba6 t/hand: fix 90 degree rotation for hand detection 2022-11-15 01:58:41 +00:00
Moses Turner a9d04045e6 c/main: Add Reverb G2's display to nvidia direct allowlist 2022-11-14 19:50:03 -06:00
Jakob Bornecrantz 89aee1892b d/remote: Update protocol to allow per view data 2022-11-14 16:07:15 +00:00
Patrick Nicolas a8dc902468 a/vk Add extentions for DMA-buf 2022-11-13 22:56:06 +00:00
Ryan Pavlik 58e4cb6e15 st/steamvr: can not -> cannot 2022-11-09 14:52:03 -06:00
Ryan Pavlik eac703a106 st/prober: can not -> cannot 2022-11-09 14:52:03 -06:00
Ryan Pavlik aa01868d0f xrt: can not -> cannot (comments) 2022-11-09 14:52:03 -06:00
Ryan Pavlik 678b27145a ipc/client: can not -> cannot 2022-11-09 14:52:03 -06:00
Ryan Pavlik 11bdba7e64 drivers: can not -> cannot 2022-11-09 14:52:03 -06:00
Ryan Pavlik 73f48d12ec comp/util: can not -> cannot 2022-11-09 14:51:58 -06:00
Ryan Pavlik 2eb259f26a aux: can not -> cannot 2022-11-09 14:48:38 -06:00
Ryan Pavlik 724b2288f9 st/oxr: can not -> cannot 2022-11-09 14:48:17 -06:00
Ryan Pavlik 1fb6270194 a/util: Resolve a bothersome clang-tidy complaint in iterators. 2022-11-09 08:26:16 -05:00
Ryan Pavlik 290fafa4f7 a/util: Fix missing pragma once 2022-11-09 08:26:16 -05:00
Ryan Pavlik a072af398c t/hand: Fix doxygen warnings 2022-11-09 03:47:44 +00:00
LeGrandToto 987d4ebecb ext: Updated Catch to v2.13.10 2022-11-08 23:54:05 +00:00
Moses Turner 00bf669e61 t/common: Disable SLAM by default for Valve Index 2022-11-08 12:32:23 -06:00
Mateo de Mayo 77f8972f36 d/vive: Add hardcoded quaternions for SLAM extrinsics
These come from my own calibration and are hopefully better than the wrong ones
reported by the factory data.
2022-11-08 12:02:34 -06:00
Mateo de Mayo c3757792d7 d/vive: Generate SLAM calibration automatically from factory data
Use factory data for SLAM calibration. Sensor rotations are off in most calib
files we saw (or at least we can't figure something better) so this won't work
very well. It's still necessary to properly calibrate the headset for good
results but at least now something works without that step.
2022-11-08 17:41:43 +00:00
Mateo de Mayo 0ebc7e042f d/vive: Improve readability of precompute_sensor_transforms (NFC) 2022-11-08 17:41:43 +00:00
Jakob Bornecrantz ca83275671 ipc: Move struct declaration into same place 2022-11-07 23:48:59 +00:00
Jakob Bornecrantz f9cd474156 ipc: Use XRT_MAX_IPC_HANDLES and also validate input from client 2022-11-07 23:48:59 +00:00
Jakob Bornecrantz 26c4771bfb ipc: Make _sync struct have the right indentation 2022-11-07 23:48:59 +00:00
Jakob Bornecrantz 86a6b4b3e3 ipc: Generated code doesn't need to care about line length 2022-11-07 23:48:59 +00:00
Jakob Bornecrantz 8601499a5a xrt: Add XRT_MAX_IPC_HANDLES 2022-11-07 23:48:59 +00:00
Jakob Bornecrantz 736f1fd671 c/util: Slightly improve device and queue creation 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz 3f3e19299f c/null: Use VK_KHR_global_priority if available 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz 04f930d99a c/main: Use VK_KHR_global_priority if available 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz 1253d58717 t/sdl: Use VK_KHR_global_priority if available 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz 6ba07d564c a/vk: If global priority is not available, only allow medium queues 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz 379bf36860 a/vk: Also try to use VK_KHR_global_priority when creating device 2022-11-04 10:46:42 +00:00
Jakob Bornecrantz b6803b4bf8 a/vk: Add VK_KHR_global_priority 2022-11-04 10:46:42 +00:00
Mateo de Mayo 9d6c29397f misc: Fix multiple compile warnings in gcc and clang 2022-11-03 20:08:52 +00:00
Jakob Bornecrantz 45937312bd a/vk: Print out error on too many images to allocate 2022-11-03 17:43:06 +00:00
Jakob Bornecrantz a41ccb0467 a/vk: Use xrt limits for number of collection images max 2022-11-03 17:43:06 +00:00
Jakob Bornecrantz 04ab47ef3b st/oxr: Use xrt limits for number of swapchain images max 2022-11-03 17:43:06 +00:00
Jakob Bornecrantz cf2dbb9334 ipc: Use xrt limits for number of swapchain handles max 2022-11-03 17:43:06 +00:00
Jakob Bornecrantz 589a898c74 xrt: Start collection of limits in one place 2022-11-03 17:43:06 +00:00
Moses Turner f41596f176 h/mercury: Replace old detection model, and discard overlapping hands 2022-11-03 16:46:33 +00:00
Moses Turner b8a586175d a/util: Add header for box intersection over union 2022-11-03 16:46:33 +00:00
Mateo de Mayo 8f14c572ee d/vive: Apply IMU pose correction for SLAM tracking
The offset between IMU and middle-of-eyes for the Index is quite noticeable and
tracking felt very off before this.
2022-11-03 13:08:02 +00:00
Gustavo Alvarez 21788f8650 t/cli: Link with aux_os_ble
Fixes build on certain configurations.
2022-11-03 10:03:25 +00:00
Moses Turner 0cd2f4f081 h/mercury: Fix data home 2022-11-02 22:35:27 +00:00
Moses Turner 32da562bc5 h/mercury: Remove really old keypoint estimator and NCNN stuff 2022-11-02 22:35:27 +00:00
Jakob Bornecrantz ede2292690 d/psvr: Paranoia 2022-11-02 17:55:58 +00:00
Jakob Bornecrantz 200bbc9da0 d/psvr: Protect sensore reads with device_mutex
Fixes asserts by the fusion code where samples where pushed in the wrong
order to the fusion code.
2022-11-02 17:55:58 +00:00
Jakob Bornecrantz fdac0b5137 d/psvr: Make sure to init the device_mutex before teardown can be called 2022-11-02 17:55:58 +00:00
Jakob Bornecrantz c4a734e546 a/tracking: Do not push empty frames to debug sink 2022-11-02 17:55:58 +00:00
Jakob Bornecrantz 0f17fa0f5f a/tracking: Fix data waiting logic in PSVR tracking 2022-11-02 17:55:58 +00:00
Jakob Bornecrantz f32eb0d662 c/main: Refactor comp_renderer init/fini slightly 2022-11-02 15:24:26 +00:00
Jakob Bornecrantz f6d7bfbe0a c/main: Init render shaders and resources earlier 2022-11-02 15:24:26 +00:00
Jakob Bornecrantz e76b382bc9 c/main: Destroy target before render resources 2022-11-02 15:24:26 +00:00
Jakob Bornecrantz f6fb9f715e c/main: Reorder fields to make dependency slightly clearer (NFC) 2022-11-02 15:24:26 +00:00
Jakob Bornecrantz 7b1c18255a u/pacing: Work around issues with frame reuse
The code creates a frame with the timing information, and keeps track of the
times the applications does various things during the frame loop. Like
starting to render and finished rendering and so on. It keeps track of that
frame until it has determined that the application or the system compositor
will never do anything thing with that frame.

Now the allocation side of thing is very simple, just a long array of
FRAME_COUNT size that is reused with frame_id % FRAME_COUNT. So if the
application or the compositor keeps a frame along for too long it will try to
reuse that frame. The code has asserts to catch this. Making FRAME_COUNT makes
that re-use more unlikely.
2022-11-02 00:22:19 +00:00
Jakob Bornecrantz a5f10e7aa2 c/multi: Rework logging with session transition a bit 2022-11-02 00:21:31 +00:00
Jakob Bornecrantz 01d195808d st/oxr: Use snprintf to safely write strings to app 2022-10-31 12:12:35 +00:00
Jakob Bornecrantz 51730d2db1 a/vk: Improve the VkResult to string printing (NFC) 2022-10-30 20:17:09 +00:00
Mateo de Mayo bf66a9595c build: Fix undefined reference to u_sink_create_queue
When XRT_FEATURE_SLAM is on, t_euroc_recorder.cpp is linked.
This depends on u_sink_queue.c.
2022-10-30 11:34:57 -03:00
Boris-Chengbiao Zhou cd2f204414 st/oxr: Check if user has already enabled timeline semaphores
We aren't allowed to add a second struct of the same type to the pNext
chain during Vulkan device creation.
2022-10-28 23:19:50 +02:00
Jakob Bornecrantz 35b941812a c/client: Merge have EGL conditional file adding 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz f9c6c0d016 a/ogl: Only link to EGL on Android 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz d33b2b136f a/os: Add comments about DSOs 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz 637c49c1ea a/os: Refactor out BLE functions into own library 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz 96eabd1347 a/os: Add BLE stub functions 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz d4a77da827 a/util: Add comments about DSOs 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz e629bbbe2b a/util: Split out process functions into own library 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz 8ca60f4304 a/util: Split out sink functions into own library 2022-10-27 17:19:57 +00:00
Jakob Bornecrantz c9ef44dd28 t/common: Remove stale comment 2022-10-27 17:19:57 +00:00
Bailey Morgan 67c47fbcb3 st/oxr: Change result code for invalid OpenGL context to match spec 2022-10-25 18:18:15 +00:00
Christoph Haag 9054dc01ca d/ht_ctrl_emu: Stub set_output 2022-10-24 17:20:59 +00:00
Christoph Haag 7dd0a6e473 st/oxr: Disable XR_KHR_convert_timespec_time on windows
This avoids a current CTS issue.
2022-10-20 12:33:02 +02:00
Mateo de Mayo 80fdf7317f t/slam: Add SLAM_UI option to enable the external system UI 2022-10-17 21:33:17 +00:00
Julian Petrov fb28f940b5 Fix an IPC protocol issue on windows when receiving zero HANDLEs 2022-10-14 10:49:50 -04:00
Julian Petrov d0f713c4c4 ipc: Add Windows support 2022-10-13 17:07:27 +00:00
Julian Petrov 7669d2c545 t/ctl: Don't build on Windows 2022-10-13 17:07:27 +00:00
Julian Petrov 5f4f7530d4 xrt: Introduce a new xrt_ipc_handle_t for IPC connections 2022-10-13 17:07:27 +00:00
Ryan Pavlik 6bb976e47f external: Add some headers from my util-headers project. 2022-10-13 11:43:31 +01:00
Jakob Bornecrantz 12bb18a34c u/file: Fix define checks being erroneous 2022-10-12 13:05:39 +01:00
Jakob Bornecrantz 1cafa92c3b u/pacing: Refactor out tracing writing to own function 2022-10-11 20:33:56 +01:00
Jakob Bornecrantz 5ed13c6cc2 u/pacing: Account for present slop in assert 2022-10-11 20:33:56 +01:00
Jan Schmidt fc3fbd6093 d/ht: Fix rotation/flipping of right hands
When dealing with rotated cameras, rotate them backward
to vertical, and then flip the right hand image in
the affine transform to get correct orientation of hands
for the keypoint estimator. Before, the left hand images
were being fed in upside down.
2022-10-10 23:50:58 +00:00
Jakob Bornecrantz 9077261ada d/dai: Set fields after nullptr check 2022-10-10 22:39:38 +00:00
Jakob Bornecrantz 00c3cc4c2f d/dai: With the latest depthai-core we can support color OV9782 sensors 2022-10-10 22:39:38 +00:00
Jakob Bornecrantz 4814f627c6 d/dai: Fix conversion warnings 2022-10-10 22:39:38 +00:00
Jakob Bornecrantz 504a2a288e d/dai: Fix typo 2022-10-10 22:39:38 +00:00
Jakob Bornecrantz 52d225ae3b t/north_star: Fix build when we have depthai but no hand-tracking 2022-10-10 22:39:38 +00:00
Christoph Haag 751c8034bc c/main: Remove useless base_space from get_view_poses
The compositor doesn't know the concept of requesting view poses in
respect to a "space", so remove this vestigial code.
2022-10-10 15:47:19 +02:00
Julian Petrov 2e4c857a5a u/process: Make u_process work on non-linux systems 2022-10-09 15:21:37 +01:00
Julian Petrov c7a5a0bc1b u/file: Make more functions work on Windows 2022-10-09 15:21:37 +01:00
Robbie Bridgewater cc2e7b6da3 ipc: Allow IPC path to be set dynamically
Uses cache for XRT_IPC_MSG_SOCK_FILE
2022-10-09 15:21:11 +01:00
Christoph Haag 74d82ff37f d/ht_ctrl_emu: Set xdev serial 2022-10-03 19:23:24 +02:00
Jan Schmidt e409264ba7 d/wmr: Fix Reverb G2 detection
196bf24276 broke Reverb G2
detection. Use the right PID to match the Reverb G2 headset
again.
2022-10-02 03:57:19 +11:00
Jakob Bornecrantz 5fc30a4e22 c/multi: Make sure to retire delivered frames once the session goes invisible or non-active
Launching two instances of hello_xr will cause an assert in the app pacer.
2022-10-01 13:10:42 +01:00
Jakob Bornecrantz 88ce42dbf9 c/multi: Paranioa 2022-10-01 13:10:42 +01:00
Christoph Haag f6821402fd c/main: Hook up layer squasher in main compositor
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
Co-authored-by: Fernando Velazquez Innella <finnella@magicleap.com>
2022-10-01 13:10:42 +01:00
Christoph Haag 95fb034b92 c/render: Implement layer squashing for compute shader
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
Co-authored-by: Fernando Velazquez Innella <finnella@magicleap.com>
2022-09-30 22:43:58 +01:00
Christoph Haag fa71462d86 c/render: Move COMP_MAX_LAYERS to render_interfaces.h 2022-09-30 22:38:54 +01:00
Jakob Bornecrantz 13124f019e d/opengloves: Fix left/right typos 2022-09-29 21:12:44 +00:00
Jakob Bornecrantz 2673787429 d/opengloves: Fix leak of config JSON 2022-09-29 21:12:44 +00:00
Jakob Bornecrantz 1e639fc2f3 d/opengloves: Fix leaks of udev objects 2022-09-29 21:12:44 +00:00
Moses Turner 034099211f d/dai: Initialize mutex and thread helper 2022-09-28 18:37:49 -05:00
Jakob Bornecrantz 127a467efc h/mercury: Add missing break statement 2022-09-28 22:56:01 +00:00
Jakob Bornecrantz da571275c2 st/oxr: Fix enum comparison warning 2022-09-28 22:56:01 +00:00
Jakob Bornecrantz 676e071aca c/main: Pass GPU info to pacer 2022-09-28 21:46:56 +00:00
Jakob Bornecrantz 08f6440aa4 u/pacing: Trace GPU info 2022-09-28 21:46:56 +00:00
Jakob Bornecrantz f63c786ac9 u/pacing: Add gpu_info to u_pacing_compositor 2022-09-28 21:46:56 +00:00
Jakob Bornecrantz da542e3f5e u/pacing: Introduce latched and retired calls on app pacer 2022-09-28 21:46:56 +00:00
Jakob Bornecrantz 7eacf6bd7a u/pacing: Refactor out tracing writing to own function 2022-09-28 21:46:56 +00:00
Jakob Bornecrantz 4ec3512641 u/pacing: Track session_id on app pacer 2022-09-28 21:46:56 +00:00
Jakob Bornecrantz b6b9004fb2 u/pacing: Tidy 2022-09-28 21:46:56 +00:00
Jakob Bornecrantz d1d845e430 u/pacing: Make sure to set predicted_display_time_ns 2022-09-28 21:46:56 +00:00
Ryan Pavlik 109e373e0c c/main: Move ownership of present/render semaphores to comp_target
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2022-09-28 21:34:06 +00:00
Jan Schmidt 3b7f95b39e d/rift_s: Rework hw2mono clock tracking
Use the common hw2mono/a2b clock code from vive_source
2022-09-26 00:32:28 +10:00
Jan Schmidt 942df72c26 d/rift_s: Reduce camera frame delay to 2 2022-09-26 00:32:28 +10:00
Jan Schmidt 32cc6e05da d/rift_s: Move builder to targets/common
Move the builder into the common area.
2022-09-26 00:32:28 +10:00
Jan Schmidt 5c573152a8 d/rift_s: Set camera orientation in calibration
Put the right rotation of the front cameras
into the camera calibration struct
2022-09-26 00:32:28 +10:00
Jan Schmidt 495eecb65f d/rift_s: Add 6DOF SLAM tracking and hand tracking
Find and capture input from cameras, and split according to
frame type. Send long exposure tracking frames through
the AEG module, and SLAM and hand tracking trackers.

Add controller emulated hand devices.

The native "fisheye62" camera distortion model is
dynamically converted to OpenCV Kannala-Brandt
parameters using a TinyCeres solver.
2022-09-26 00:32:28 +10:00
Jan Schmidt 9fbe81e494 d/rift_s: Port OpenHMD Oculus Rift S driver
Port across the Oculus Rift S driver from OpenHMD as a native
Monado driver.

This is mostly the same as the OpenHMD 3DOF driver, with
slightly better HMD distortion correction, various small
fixes, some capsense touch detection support.

Controller poses are rotated 40° to match grip pose.
2022-09-25 02:17:44 +10:00