Commit graph

4709 commits

Author SHA1 Message Date
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