Commit graph

4881 commits

Author SHA1 Message Date
Jan Schmidt ea53d274a5 d/wmr: Split out OG WMR controller handling
Move the original WMR controller specific handling
into a subclass of wmr_controller_base, and add
a stub placeholder for HP Reverb G2 controllers
2023-05-01 16:32:33 +01:00
Jan Schmidt f33326e90b d/wmr: Fix crash on invalid firmware
Don't access invalid memory on a short firmware read.
2023-05-01 16:32:33 +01:00
Jan Schmidt d326ff9890 d/wmr: Split the connection from controller
Factor out the bluetooth connection behaviour from
the WMR controller, so the connection can be
provided from the headset as well.
2023-05-01 16:32:33 +01:00
Jan Schmidt 35f72696fb xrt: Add WMR and Odyssey home click
Add xrt input entries to expose the home button on OG and
Odyssey+ WMR controllers
2023-05-01 16:32:33 +01:00
Jakob Bornecrantz cb6201f297 st/oxr: Set extensions earlier 2023-05-01 14:03:41 +01:00
Jakob Bornecrantz ce5669aabb st/oxr: Handle LOCAL_FLOOR enums 2023-05-01 14:03:41 +01:00
Jakob Bornecrantz 2b921ab673 t/slam: Enable some tracing 2023-05-01 14:03:41 +01:00
Jakob Bornecrantz c0cc22e101 d/wmr: Expand tracing in camera 2023-05-01 14:03:40 +01:00
Jakob Bornecrantz cfdea265f4 c/client: Avoid using shared context on synchronization 2023-05-01 14:03:01 +01:00
Jan Schmidt 96d188803c d/wmr: Fix typo in debug output
correnntly -> currently
2023-05-01 13:51:44 +01:00
Jan Schmidt 236e732404 d/wmr: Fix prober crash after failing to load fw
Fix a double-free. The wmr_hmd_create() method
already cleans up the hid devices on failure.
2023-05-01 13:51:44 +01:00
Jan Schmidt 87d804c7d6 d/wmr: Log larger Device Status messages
HP Reverb G2 sends larger device status messages with unknown
content. Log how large they are, and at least dump the first
11 bytes
2023-05-01 13:51:44 +01:00
Jan Schmidt ed54b7899c d/wmr: Don't wait forever for HMD firmware
Add a 100ms timeout for firmware reads from the HMD,
and error out if it takes longer. Fixes problems
sometimes waiting forever on my G2 when it gets
into a bad state.
2023-05-01 13:51:44 +01:00
Jan Schmidt 7b4fffed8f d/wmr: Improve readability in the camera source 2023-05-01 13:51:44 +01:00
Jan Schmidt e9c977243f u/logging: Add hexdump logging method
Add macros for logging hexdumps of memory blocks to help
with driver development. Only macros for trace and debug
level logging are provided, as noone should be logging
hexdumps except for development.
2023-05-01 13:51:44 +01:00
Jakob Bornecrantz 5197b4a42f d/vive: Add a slider to adjust all tracked pose timestamps 2023-04-26 22:17:36 +01:00
Jakob Bornecrantz ce3c5d59fb d/wmr: Add a slider to adjust all tracked pose timestamps 2023-04-26 22:17:36 +01:00
Jakob Bornecrantz 9d8668a0a6 cmake: Remove _SLAM suffixes on KIMERA and BASALT have defines 2023-04-26 21:39:16 +01:00
Ryan Pavlik c924157c59 a/android: Only look up the standardized intent to find our own package.
Should allow a constrained query manifest in client apps.
2023-04-25 10:40:58 -05:00
Christoph Haag aa052046a8 cmake: Delete active_runtime.json if it already exists 2023-04-24 13:57:00 +00:00
Jakob Bornecrantz c0d242e1ed a/vk: Fix doccomment style [NFC] 2023-04-21 14:28:18 +01:00
Jakob Bornecrantz 17ea4a73eb a/vk: Mark unexported function as static [NFC] 2023-04-21 14:28:18 +01:00
Jakob Bornecrantz c7fa7fe701 a/vk: Loop over all optional extensions, not just the first
This caused the event thread to not start
because the needed extensions where not enabled.
2023-04-21 14:27:33 +01:00
Jakob Bornecrantz 05792ff150 st/oxr: Refactor OXR_NO_PRINTING env vars 2023-04-18 22:28:53 +01:00
Jakob Bornecrantz fa0b3ad73c st/oxr: Refactor logging functions and use OutputDebugStringA on Windows
The OXR logging functions are not called during normal opperation so it's okay
to always copy into a full buffer.
2023-04-18 22:28:53 +01:00
Jarvis Huang 0d31791092 comp/android: Refine surface creation flow
Reuse MonadoView when "Display over other apps" is enabled. Move surface
creation logic to compositor for consistency. With this approach, compositor
implementer controls the way surface is created.
2023-04-18 16:24:35 -05:00
Jarvis Huang cf7e44b710 aux/android: Refactor MonadoView 2023-04-18 16:22:42 -05:00
Jarvis Huang d60db29295 aux/android: Refactor SystemUiController 2023-04-18 16:22:42 -05:00
Jakob Bornecrantz 7147e47508 c/client: Implement excplicit transitions in Vulkan and D3D12 2023-04-18 14:31:55 +01:00
Jakob Bornecrantz 45fe1d6ed0 st/oxr: Refactor swapchains to use explicit transitions 2023-04-18 14:31:55 +01:00
Jakob Bornecrantz 6415480f1c st/oxr: Tidy includes [NFC] 2023-04-18 14:21:10 +01:00
Jakob Bornecrantz b49cd74114 st/oxr: Rename and document common swapchain creation function [NFC] 2023-04-18 14:21:10 +01:00
Jakob Bornecrantz 9055b9d2ec st/oxr: Remove unneeded prefixes on functions [NFC] 2023-04-18 14:21:10 +01:00
Jakob Bornecrantz 52f790289d st/oxr: Swapchain destroy was the same for all APIs 2023-04-18 14:21:10 +01:00
Jakob Bornecrantz a56caf762e st/oxr: Refactor swapchain functions a bit 2023-04-18 14:21:10 +01:00
Jakob Bornecrantz 505e4e8c2f c/client: Refactor image barrier submission into a helper function 2023-04-18 14:21:10 +01:00
Jakob Bornecrantz 0d21b73b05 c/client: Implement transition image stubs 2023-04-18 14:21:10 +01:00
Jakob Bornecrantz b7362f27e6 xrt: Add image transition inteface 2023-04-18 14:21:10 +01:00
Ryan Pavlik 9840730169 ipc/android: Run spotlessApply to format Java and Kotlin code 2023-04-17 10:58:38 -05:00
Ryan Pavlik fc3af6f711 a/android: Run spotlessApply to format Java and Kotlin code 2023-04-17 10:58:38 -05:00
utzcoz b5b0c30936 t/android: Run spotlessApply to format Java and Kotlin code
Signed-off-by: utzcoz <utzcoz@outlook.com>
2023-04-17 10:58:38 -05:00
utzcoz 8e93bbde4b gradle: Integrate spotless to format Java and Kotlin code
See https://github.com/diffplug/spotless.

Signed-off-by: utzcoz <utzcoz@outlook.com>
2023-04-17 10:58:38 -05:00
utzcoz c8c5d6444e gradle: Remove redundant dependency of lifecycle-viewmodel
Signed-off-by: utzcoz <utzcoz@outlook.com>
2023-04-15 16:20:50 +00:00
Mario Kleiner ff9ad4016f c/multi: Refine some logging messages a bit.
Add some timestamps and extra logging to the frame scheduling code.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-04-15 00:43:20 +00:00
Mario Kleiner ae2e7405dd c/multi: Move log_frame_time_diff() to avoid false late frame reports.
In its original call location, this diagnostic/warning function gets
called for each composition cycle even for client frames which have
not yet been delivered for display, because the frames target display
time "XrFrameEndInfo frameEndInfo.displayTime" (as provided by the
OpenXR client) has not been reached yet. Iow. if a OpenXR client
specifies a target frameEndInfo.displayTime in the future, to request
frame presentation in the future, this will cause a flood of false
"Frame late ..." messages by the compositor, despite nothing being
wrong with the timing, until the frame is actually delivered.

E.g., if frameEndInfo.displayTime is 1 second in the future, we'll
get this for each client xrEndFrame() invocation:

WARN [log_frame_time_diff] Frame late by 11.11ms!
WARN [log_frame_time_diff] Frame late by 22.22ms!
... another 87 like these ...
WARN [log_frame_time_diff] Frame late by 988.43ms!

I think what we want is to only check client frames that are actually
delivered the first time by multi_compositor_deliver_any_frames() for
initial display in the current compositor work cycle, and then report
if this first frame display onset was not on or close to the OpenXR
client requested frameEndInfo.displayTime, but too early or too late,
in violation of the clients wishes.

Moving the call check and call of log_frame_time_diff() achieves this
and gives meaningful debug output.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-04-15 00:43:20 +00:00
Mario Kleiner 1c96ee619d u/metrics: Add option to fflush after writing each metrics record.
This allows to use the metrics logging in "streaming mode" where
records are written out with low delay, e.g., into a Unix fifo
file / pipe for live consumption by some tracing or recording
application.

XRT_METRICS_EARLY_FLUSH=true enables this "streaming mode".

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-04-15 00:32:22 +00:00
Mario Kleiner 9e647f9a46 d/vive: Parse/Recognize HTC Vive Pro Eye HMD headphone audio buttons.
Does not do anything yet within Monado, but documents how to parse
button state of left headphone volume up/down buttons and right
headphone microphone mute button.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-04-14 10:48:39 +00:00
Mario Kleiner 0116a76db5 d/vive: Add Vive Wand controller name string for the HTC Vive Pro Eye.
Behave like other Wands, just a different name string.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-04-14 10:48:39 +00:00
Jakob Bornecrantz 86262e8b4e a/vk: Remove global command pool 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz e9475b1313 c/main: Use cmd helpers for main submission 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 231a743896 c/main: Use cmd pool helpers in peek code 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 185bc2bc3c c/main: Use cmd pool helpers in mirror window code 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 5ef2b647f1 c/main: Use cmd pool helpers in layer render 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 1ddfcaa5ab c/client: Use cmd pool helpers 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz d1906d1cf8 c/util: Use cmd pool helpers in swapchain code 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 197461b4cd c/render: Refactor close loops [NFC] 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 6598760522 c/render: Put distortion image functions in own file 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz f536ec2009 c/render: Use cmd pool helpers in init code 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz e5fed9c3be c/render: Improve error handling 2023-04-14 02:34:49 +01:00
Jakob Bornecrantz 68b8a2f371 a/vk: Add command pool helpers 2023-04-14 02:34:49 +01:00
Moshi Turner 4d3c1cf7c5 t/common: Parse upside-down DepthAI device in North Star builder 2023-04-13 11:50:38 +00:00
Moshi Turner bdc33510a1 h/mercury: Dump camera calibration if debugging 2023-04-13 11:50:38 +00:00
utzcoz 667a0404c2 a/util: Remove unused headers for u_var.cpp 2023-04-13 06:41:06 +00:00
Moshi Turner ec59e97bda st/gui: Use IMU in EuRoC recorder scene 2023-04-12 16:43:20 -05:00
Moshi Turner c05c5d5c2e st/gui: Add EuRoC recorder for DepthAI cameras 2023-04-12 12:19:13 +00:00
Moshi Turner 53e738a093 d/dai: Add manual exposure controls 2023-04-12 12:11:06 +00:00
Jakob Bornecrantz ee0dad22d5 c/main: Tidy readback code [NFC] 2023-04-12 12:49:24 +01:00
Moshi Turner f2bea2c7c6 d/ns; a/util: Remove old name from Moshi's distortion correction method
I don't hate my old name that much, but this is my last chance to change it before there's some "moshi-style" North Stars floating around.
2023-04-11 23:45:23 -05:00
Moshi Turner 19e0af55d2 c/main: Bounce readback images off temporary image
Most NVidia graphics cards don't support blitting straight from device memory to host memory, but all GPUs support doing it this way.
2023-04-11 22:27:36 -05:00
Moshi Turner 51ff80e802 st/gui: Lazily create debug sinks so that they can be created at any time
Useful for deferred-creation compositors, and for repositories submoduling Monado.
2023-04-11 19:50:41 -05:00
utzcoz 39d701a30c t/common: Fix small typo for target_builder_simulated.c's comment [NFC] 2023-04-11 12:00:01 +00:00
utzcoz 5565564e70 gradle: Fix building with JDK11+
1. Bump Kotlin version to 1.7.10.
2. Bump Hilt version to 2.45.
3. Add implementation of lifecycle-viewmodel-ktx dependency explicitly
   to fix duplicate class error.

Signed-off-by: utzcoz <utzcoz@outlook.com>
2023-04-11 11:43:57 +00:00
utzcoz 08831237f5 gradle: Migrate compileSdkVersion to compileSdk
Signed-off-by: utzcoz <utzcoz@outlook.com>
2023-04-11 11:43:57 +00:00
Christoph Haag c248670f2f d/survive: Add vive ipd range 2023-04-11 11:42:21 +00:00
Ryan Pavlik af29da2545 gradle: Use static C++ runtime library by default when building Monado, for compatibility.
We do not export any C++ symbols.

Added property to allow selection of shared C++ standard lib.
2023-04-10 14:11:41 -05:00
Ryan Pavlik 788973926a gradle: Fix warning related to dagger 2023-04-10 14:11:41 -05:00
Ryan Pavlik 8bc8abe904 gradle: Fix parsing OpenXR version 2023-04-10 14:11:41 -05:00
Ryan Pavlik 048552f914 gradle: Adjust where we generate files to 2023-04-10 14:11:41 -05:00
Ryan Pavlik 8b50c5cb9e gradle: Do not need the CDDL anymore because Dagger changed its deps 2023-04-10 14:11:41 -05:00
Ryan Pavlik 4369640ecc android: Clean up manifest and silence warnings 2023-04-10 14:11:41 -05:00
Ryan Pavlik 35b1bc063d gradle: Update dependencies further and fix conflicts 2023-04-10 14:11:41 -05:00
Jakob Bornecrantz 5f1b54bcd5 a/vk: Add blit and copy helpers 2023-04-09 14:04:53 +01:00
Jakob Bornecrantz c0287b690b a/vk: Add command helpers 2023-04-09 12:01:27 +01:00
Jakob Bornecrantz 14f15284a1 a/vk: Update comments for command buffer writers 2023-04-08 00:03:20 +01:00
Jakob Bornecrantz 585e23054d a/vk: Use helper define in vk_csci_get_image_usage_flags 2023-04-07 21:44:22 +01:00
Jakob Bornecrantz 732c4a23ae a/vk: Don't unconditionally set colour attachment usage bit for swapchains 2023-04-07 21:44:22 +01:00
Jakob Bornecrantz 748ec59ddf a/vk: Don't hardcode sampled bit anymore 2023-04-07 21:44:22 +01:00
Jakob Bornecrantz 9f06b1a25e c/util: Always request sampled in extra bits 2023-04-07 21:44:22 +01:00
Jakob Bornecrantz a03d1421b8 c/client: Respect native compositor's extra usage bits 2023-04-07 21:44:22 +01:00
Jakob Bornecrantz 1adf46b02a c/client: Use correct format in get_swapchain_create_properties funtions 2023-04-07 21:44:20 +01:00
Jakob Bornecrantz 94c9c8a253 xrt: Allow compositor to request extra usage bits
Some compositors might need extra usage bits set beyond just the constant
sampled bit, make it all generic and extend the xrt interface to allow it.
2023-04-07 21:33:52 +01:00
Jakob Bornecrantz b193c3bdd2 t/sdl_test: Make sure to init devices before system devices 2023-04-07 16:11:16 +01:00
Jakob Bornecrantz bab4a126ae xrt: Remove product_name from xrt_prober_device struct
And move it to an internal struct instead. Better to keep it internal to the
prober as it was only used for the bluetooth probing. And there was a function
that applications should use to get strings from xrt_prober_device.
2023-04-07 15:37:22 +01:00
Jakob Bornecrantz d40805e777 c/client: Silence VK_FORMAT_R32_SFLOAT warning in OpenGL code 2023-04-07 14:27:08 +00:00
Jakob Bornecrantz 8e087ac5ac d/vive: Use vive_poses helpers for offsets of poses 2023-04-07 13:37:05 +00:00
Jakob Bornecrantz ea97960b9e d/vive: Change how the pose GUI variable is updated 2023-04-07 13:37:05 +00:00
utzcoz 990ce39fa1 c/main: Remove unused headers for comp_renderer.c 2023-04-07 11:23:43 +00:00
Mateo de Mayo c0f7a5ed01 d/vive: Improve handling of controller pose 2023-04-06 16:46:11 +00:00
Jakob Bornecrantz e9c43a7ca6 d/wmr: Remove legacy found functions 2023-04-05 16:53:24 +01:00
Jakob Bornecrantz 2ddf868735 d/wmr: Do device creation via builder interface 2023-04-05 16:53:24 +01:00