Commit graph

2113 commits

Author SHA1 Message Date
Jakob Bornecrantz aa7f922e35 os/time: Add a Linux specific way to get the realtime clock (for RealSense) 2020-11-09 23:42:13 +00:00
Jakob Bornecrantz 4bbe25148b os/time: Make timespec argument const 2020-11-09 23:42:11 +00:00
Ryan Pavlik 83b91ea4a9 d/ns: Some clang-tidy cleanups 2020-11-09 16:18:00 -06:00
Ryan Pavlik 97d711a9ef d/hdk: Appease clang-tidy a little more. 2020-11-09 16:18:00 -06:00
Ryan Pavlik 7cebdb4763 aux/os: More defines to calm clang-tidy. 2020-11-09 16:18:00 -06:00
Ryan Pavlik b855fd1ae2 a/util: Appease clang-tidy with a define for ns per second 2020-11-09 16:18:00 -06:00
Ryan Pavlik ab82c5b8e2 u_debug: Remove duplicate declaration 2020-11-09 16:18:00 -06:00
Ryan Pavlik 4c0d71aa30 d/ns: const correctness cleanup for math. 2020-11-09 16:17:57 -06:00
Ryan Pavlik d4011ed78a d/ns: Fix memory leak in math 2020-11-09 16:06:14 -06:00
Christoph Haag cb62514fd0 steamvr: Implement basic SteamVR driver
v3:
  targets: Add Monado-SteamVR driver target
  st/ovrd: Add OpenVR driver header
  build: Factor out sdl hack into lib_sdl2_hack and update steamvr build
  build: Revert lib_sdl2_refactor
  steamvr: Emulate Index Controller by default
  steamvr: Use oxr_handle_destroy instead of exposing oxr_instance_destroy
  steamvr: don't use oxr internals
  steamvr: communicate 3dof tracking to steamvr
  steamvr: use util functions for device assignment and tracking origin setup
  steamvr: Install plugin to <prefix>/share/steamvr-monado
  steamvr: Use thread for updating poses every 1ms

Makes a big difference for the Index @144Hz on the vive driver.
Still somewhat choppy on survive driver - prediction should solve it.

Main-author: Christoph Haag <christoph.haag@collabora.com>
Co-author: Jakob Bornecrantz <jakob@collabora.com>
2020-11-09 19:21:27 +00:00
Christoph Haag 9d894ab5ff xrt: Move tracking origin setup code to u_device 2020-11-09 00:32:33 +01:00
Christoph Haag c60b7412e5 xrt: Move device assignment code to u_device 2020-11-09 00:32:33 +01:00
Benjamin Saunders 15a89005ca Fix trailing space in xrGetVulkanDeviceExtensionsKHR
Also tweak the instance extensions definition for consistency.
2020-11-07 12:50:25 -08:00
Christoph Haag 29820345c7 d/survive: Fix bindings declaration after rebase of MR 587 2020-11-06 16:36:09 +01:00
Christoph Haag 5478bad3d0 st/oxr: Add OXR_FRAME_TIMING_SPEW var to print basic frame timing information 2020-11-06 00:51:24 +01:00
Christoph Haag 2a00c9f09e comp: Add basic frame timing information to trace log 2020-11-06 00:50:24 +01:00
Christoph Haag 803e9531ec aux: Use time since time_state creation for time_state timestamps
Easy to read timestamps and somewhat meaningful.
2020-11-05 23:11:03 +00:00
Christoph Haag 2e2a62ce1a st/oxr: submit layers with os monotonic timestamp, not XrTime
The compositor does not know about XrTime, only os monotonic timestamps.
2020-11-05 23:11:03 +00:00
Ryan Pavlik 3c13dbce43 t/oxr_android: Work on aboutLibraries usage. 2020-11-05 17:04:58 -06:00
Ryan Pavlik 25967f906b t/oxr_android: Generate license resource at build time. 2020-11-05 17:04:53 -06:00
Ryan Pavlik e1e7b92372 ipc/android: Add additional service options 2020-11-05 17:02:21 -06:00
Ryan Pavlik cb09e68f0c gradle: Allow python location to be explicitly specified in local.properties 2020-11-05 16:09:27 -06:00
Ryan Pavlik ed519b1601 t/oxr_android: Rename activity and add version field 2020-11-05 16:09:26 -06:00
Jakob Bornecrantz 1c98297aa0 st/oxr: Use new xdev providing binding 2020-11-05 14:44:04 +00:00
Jakob Bornecrantz b5e847c814 ipc: Add support for device provided bindings 2020-11-05 14:44:04 +00:00
Christoph Haag ffa7cc84c8 d/vive: Add device bindings 2020-11-05 14:44:04 +00:00
Christoph Haag 4b261219a2 d/survive: Add device bindings 2020-11-05 14:41:55 +00:00
Jakob Bornecrantz 12df35232a d/psmv: Add device bindings 2020-11-05 14:41:55 +00:00
Jakob Bornecrantz 24a3886e85 d/daydream: Add device bindings 2020-11-05 14:41:55 +00:00
Jakob Bornecrantz 5997708634 d/arduino: Add device bindings 2020-11-05 14:41:55 +00:00
Jakob Bornecrantz 7c807a8605 xrt: Add device driver provided bindings 2020-11-05 14:41:55 +00:00
Christoph Haag d0b126c1ee oxr: Add one missing mutex to active_wait_frames 2020-11-04 13:33:27 +00:00
Jakob Bornecrantz 2a9a0100bc d/psvr: Tidy code 2020-11-04 13:26:47 +00:00
Christoph Haag 7eaa7abb89 oxr: Implement additional xrWaitFrame/xrBeginFrame call order checks
Relevant CTS tests: https://github.com/KhronosGroup/OpenXR-CTS/pull/7
2020-11-04 00:37:21 +01:00
Christoph Haag 965fa60bff xrt: Move synchronized state test into oxr session
The compositor now moves immediately to visible/focused when polling.
The state tracker will generate relevant openxr state changes once the session is synchronized.

Properly working alternative to e03ee48dce (reverted in e7643de8db)
2020-11-04 00:37:10 +01:00
Christoph Haag 4709744d0a ipc: log ipc calls and dispatch with IPC_PRINT_SPEW 2020-11-03 22:32:58 +01:00
Christoph Haag 233f3cb234 ipc: hook up IPC_PRINT_SPEW and IPC_PRINT_DEBUG variables
for both server and client
2020-11-03 22:32:58 +01:00
Jakob Bornecrantz e7643de8db c/main: Revert "Transition to visible/focused after xrEndFrame, not xrWaitFrame"
This reverts commit e03ee48dce.
2020-11-03 21:04:05 +00:00
Ryan Pavlik 5f70826ba5 xrt: Add misc missing copyright/license notices 2020-11-02 17:04:51 +00:00
Ryan Pavlik 0684daae4f clang-format configs: Fix SPDX tags 2020-11-02 17:04:51 +00:00
Christoph Haag e03ee48dce comp: Transition to visible/focused after xrEndFrame, not xrWaitFrame
The application synchronizes its frame loop by "by calling xrWaitFrame,
xrBeginFrame and xrEndFrame in a loop."

Applications can discard frames by not calling xrEndFrame. If initial
frames are discarded, we should not consider the frame loop synchronized.

Previously a sequence like
  xrBeginFrame, xrWaitFrame, xrBeginFrame, xrWaitFrame, xrPollEvent, xrBeginFrame
failed because xrPollEvent the compositor emitted transitions to visible
and focused but they were not emitted in the state tracker, because the
oxr session had not internally tranisitioned to the synchronized state.
2020-10-31 20:14:49 +01:00
Ryan Pavlik 240b8f3047 t/oxr_android: Include library attribution/notices in "about" activity. 2020-10-30 18:20:36 -05:00
Ryan Pavlik f70b1abd88 d/android: Use not-deprecated API when possible. 2020-10-30 18:20:36 -05:00
Lubosz Sarnecki ae1d4e9541 d/android: Enable cardboard distortion. 2020-10-30 18:20:36 -05:00
Lubosz Sarnecki f4113ef15b d/android: Add Android sensors driver. 2020-10-30 18:20:35 -05:00
Ryan Pavlik ad42bbff9e t/oxr_android: Move some distribution-related strings to build system 2020-10-30 18:20:35 -05:00
Ryan Pavlik 55eab2d79b t/oxr_android: Set package version from Git 2020-10-30 18:20:35 -05:00
Ryan Pavlik 36a9273db2 t/oxr_android: Match theme to temporary logo 2020-10-30 18:20:35 -05:00
Ryan Pavlik f46b801ad4 t/oxr_android: Improve VR Mode status messages 2020-10-30 18:20:35 -05:00
Ryan Pavlik 36fa605ab4 t/oxr_android: Add fragment to the main activity 2020-10-30 18:20:35 -05:00
Ryan Pavlik 03a129a4ea t/oxr_android: Add VrModeStatus fragment. 2020-10-30 18:20:35 -05:00
Ryan Pavlik ce3750bfe1 a/android: Store a native pointer in the MonadoView. 2020-10-30 18:20:35 -05:00
Ryan Pavlik 3bc84cca9e a/android: Migrate to using the MonadoView generated wrapper. 2020-10-30 18:20:35 -05:00
Ryan Pavlik b6a12f8522 a/android: Add some partially-generated wrappers for our own Java code. 2020-10-30 18:20:35 -05:00
Ryan Pavlik fc78b5de86 a/android: Use android_custom_surface constructor/destructor 2020-10-30 18:20:34 -05:00
Ryan Pavlik 66d6281a7f a/android: Monitor whether MonadoView is still being used by native code. 2020-10-30 18:20:34 -05:00
Ryan Pavlik 6f989f5451 t/oxr_android: Clean up main activity. 2020-10-30 18:20:34 -05:00
Jakob Bornecrantz 75ff836e3b ipc: Add ipc_android doc group 2020-10-29 17:02:06 +00:00
Jakob Bornecrantz 585bb6fe7a ipc: Add ipc_shared doc group 2020-10-29 17:02:06 +00:00
Jakob Bornecrantz 3008e5482d ipc: Refactor folders 2020-10-29 17:02:06 +00:00
Jakob Bornecrantz 5ba3486628 t/[gui|oxr]: Directly reference SDL2 in CMake
This fixes the build when building with clang and CMake.
2020-10-29 16:33:15 +00:00
Jakob Bornecrantz 09ba7fc1e3 d/remote: Fix warning when building with clang 2020-10-29 16:17:20 +00:00
Ryan Pavlik 26cd22b232 a/android: Move class name to a constant. 2020-10-28 12:12:31 -05:00
Ryan Pavlik da3959e642 a/android: C++ headers use .hpp as the extension 2020-10-28 12:12:31 -05:00
Ryan Pavlik 8301c9d1b4 a/android: Fix some file comments. 2020-10-28 12:12:31 -05:00
Ryan Pavlik 941c6286e5 t/oxr_android: Add version annotation to the VR listener 2020-10-28 12:12:31 -05:00
Ryan Pavlik e724a72fc1 st/oxr_android: Adjust name string 2020-10-28 12:12:31 -05:00
Ryan Pavlik e4e3ee888a st/oxr_android: Clean up manifest 2020-10-28 12:12:31 -05:00
Ryan Pavlik 1acadb8a18 a/android: Make MonadoView fullscreen. 2020-10-28 12:12:31 -05:00
Ryan Pavlik 307b3f28fa t/oxr_android: Clean up manifest 2020-10-28 12:12:31 -05:00
Ryan Pavlik bcb6e85f9d t/oxr_android: Rename the VrListener class/service. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki a8c7ac2074 c/eglimage_swapchain: Actually return created swapchain. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki af4c6a8ba3 c/gl_client: Check if swapchain is not NULL. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki bd107095fd c/gl_client: Port to u_logging. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki e3df2f9940 st/oxr: Add GLES Android session boilerplate. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki d61faff421 aux/android/ahardwarebuffer_allocator: Use Vulkan enums in format switch. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki 633b7839c2 aux/vk+comp/sc: Initialize extra structs for hardware buffer extension.
Fix sRGB format for Android hardware buffers.
2020-10-28 12:12:31 -05:00
Lubosz Sarnecki 3cc8793d7d aux+comp: Add Android hardware buffer device extension. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki 2cc8252c05 aux/vk: Add vkGetAndroidHardwareBufferPropertiesANDROID. 2020-10-28 12:12:31 -05:00
Lubosz Sarnecki 2df2daa00c aux/android/ahardwarebuffer_allocator: Add function to allocate a single buffer. 2020-10-28 12:12:31 -05:00
Ryan Pavlik 436886852d a/android: Improve monadoview, including fixing deleted ref problem. 2020-10-28 12:12:31 -05:00
Ryan Pavlik a0bbca572d comp: Basic Android compositor window.
Also makes the service feature not depend on other options:
it can be used without those other parts.

comp/window_android: Remove unused EGL code for now, as it is crashing.

comp/window_android: Use MonadoView async method to create surface.

comp/window_android: Use custom surface as intended

Co-authored-by: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
2020-10-28 09:41:30 -05:00
Ryan Pavlik dfd771f768 aux/android: Enhance custom surface
Includes fixes to my mistakes by Lubosz.

Co-authored-by: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
2020-10-28 09:41:03 -05:00
Lubosz Sarnecki e78ad12634 aux/android/custom_surface: Make JNI happy.
Keep android_load_class methods in C++, since
casting the class handle to void results in:

```
JNI DETECTED ERROR IN APPLICATION: use of deleted global reference.
```

Co-authored-by: Ryan Pavlik <ryan.pavlik@collabora.com>
2020-10-28 09:33:47 -05:00
Lubosz Sarnecki 2a8db3d780 aux/android/load_class: Use pkgClassLoader.loadClass to load MonadoView class. 2020-10-28 09:33:46 -05:00
Lubosz Sarnecki dbe0338956 android/MonadoView: Register surface callback and fix imports.
Run UI things on UI thread.
2020-10-28 09:33:46 -05:00
Lubosz Sarnecki c64d17fa88 comp/main: Define Android extensions. 2020-10-28 09:33:46 -05:00
Lubosz Sarnecki 79fd76f68d comp/main: Don't check for VK_KHR_display on Android. 2020-10-28 09:33:46 -05:00
Lubosz Sarnecki 7d02a93ca5 android/manifest: Extract libs. 2020-10-28 09:33:46 -05:00
Ryan Pavlik 43d724b6bf aux/vk: Fix a place where we were missing an android ifdef 2020-10-28 09:33:46 -05:00
Ryan Pavlik d4b19f3d47 aux/android: Add custom surface code. 2020-10-28 09:33:46 -05:00
Ryan Pavlik 9b67c0a09f aux/android: Add code to load Java from a package 2020-10-28 09:33:46 -05:00
Ryan Pavlik 2cafdfa5cc t/oxr_android: Add Android-specific subdirectory 2020-10-28 09:33:46 -05:00
Ryan Pavlik d6564e3798 ipc_android: Add Android-specific Java/AIDL code 2020-10-28 09:33:46 -05:00
Ryan Pavlik d0187cee9a aux/android: Add Java code 2020-10-28 09:33:26 -05:00
Ryan Pavlik 0f43bbe924 inc/xrt: Add Android config header to store package name. 2020-10-28 09:32:49 -05:00
Ryan Pavlik 06f75e03b4 a/android: Fix typo in comment 2020-10-28 09:32:49 -05:00
Ryan Pavlik 0ea7cf8009 targets: Add service-lib stub for Android 2020-10-28 09:32:49 -05:00
Ryan Pavlik 59d2285c8e aux/util: Port logging for Android.
Now if u_logging is used, it goes to logcat.
2020-10-28 09:32:49 -05:00
Jakob Bornecrantz 463330d5d5 u/distortion: Set blend mode incase it is zero 2020-10-27 21:34:29 +00:00
Jakob Bornecrantz ecbde55752 m/space: Normalize orientation when returning result 2020-10-27 16:20:12 +00:00
Jakob Bornecrantz 09566cf5fd c/main: Fix projection layer flags not getting set 2020-10-27 16:05:13 +00:00
Jakob Bornecrantz bd6ea43de5 m/headers: Fix doxygen warnings 2020-10-26 22:55:22 +00:00
Jakob Bornecrantz 8730ff479a u/hand_tracking: Tidy header 2020-10-26 22:50:54 +00:00
Jakob Bornecrantz d72776b82c d/psvr: Switch to logging API 2020-10-26 22:41:49 +00:00
Jakob Bornecrantz 6fd1e7b36c d/dummy: Add logging to variable tracking 2020-10-26 22:41:27 +00:00
Jakob Bornecrantz 02a3b47f7c d/dummy: Switch to logging API 2020-10-26 22:17:15 +00:00
Jakob Bornecrantz 3611193feb d/dummy: Tidy file 2020-10-26 22:14:05 +00:00
Jakob Bornecrantz cf8ca3756e c/main: Fix leaks of samplers and tidy code 2020-10-26 22:07:12 +00:00
Jakob Bornecrantz 75153a7066 u/distortion: Add simple cardboard distortion code 2020-10-26 21:53:55 +00:00
Jakob Bornecrantz ed2040a571 u/mesh: Tidy header 2020-10-26 20:36:30 +00:00
Jakob Bornecrantz 7bcdf0de40 st/prober: Depend on remote driver as we reference it directly 2020-10-26 20:35:18 +00:00
Jakob Bornecrantz f868f61a17 st/oxr: Improve verification of XrGraphicsBindingEGLMNDX 2020-10-26 14:05:27 +00:00
Jakob Bornecrantz 7ba4bee439 st/oxr: Minor fixes for oxr_session_egl 2020-10-26 14:03:30 +00:00
Jakob Bornecrantz ebfd984c12 st/oxr: Fix missing semicolons 2020-10-26 14:03:30 +00:00
Jakob Bornecrantz f9443cf362 st/oxr: Timeout minimum duration pulses after 0.1 seconds 2020-10-26 14:03:30 +00:00
Lubosz Sarnecki 663dfe8990 meson: Add equirect2 to build. 2020-10-26 01:34:10 +00:00
Lubosz Sarnecki 1227c77556 st/oxr: Add equirect2 verify and submit functions. 2020-10-26 01:34:10 +00:00
Lubosz Sarnecki 3195ba8351 c/main: Implement XR_KHR_composition_layer_equirect2. 2020-10-26 01:34:10 +00:00
Lubosz Sarnecki 9738b4fe93 c/shaders: Add equirect shader. 2020-10-26 01:34:10 +00:00
Lubosz Sarnecki 5777d829c6 c/comp: Init repeat sampler for swapchain images. 2020-10-26 01:34:10 +00:00
Lubosz Sarnecki 7035490ed7 aux/math: Implement math_matrix_4x4_inverse_view_projection. 2020-10-26 01:34:10 +00:00
Christoph Haag 74f7d03830 xrt: Add printing list of built in drivers to monado_cli probe 2020-10-25 22:59:06 +01:00
Christoph Haag f910367014 d/oh: Add startup delay for Rift S and rotate left 2020-10-21 01:26:53 +02:00
Jakob Bornecrantz fd5cfbe9a7 st/oxr: Fix state changes errors 2020-10-20 19:28:57 +01:00
Jakob Bornecrantz 2528583c55 xrt: Add git tag/description 2020-10-20 17:43:11 +01:00
Jakob Bornecrantz 9440a9dd93 st/prober: Add remote loading 2020-10-15 21:07:40 +00:00
Jakob Bornecrantz 27abc58d51 st/prober: Add the concept of active config to config file 2020-10-15 21:07:40 +00:00
Jakob Bornecrantz a122b4b0b2 st/prober: Refactor out adding functions. 2020-10-15 21:07:40 +00:00
Jakob Bornecrantz 541bdd2fce st/gui: Add remote device control ui 2020-10-15 21:07:40 +00:00
Jakob Bornecrantz 3483a7286d d/remote: Add remote driver 2020-10-15 21:07:40 +00:00
Jakob Bornecrantz 0cf3c704b6 st/oxr: Add simple controller bindings 2020-10-15 21:07:40 +00:00
Jakob Bornecrantz f3394320b1 xrt: Add simple controller input profile 2020-10-15 21:07:40 +00:00
Jakob Bornecrantz a200bd5fec st/oxr: Add option to disable printing to stderr 2020-10-15 01:45:51 +00:00
Jakob Bornecrantz 71e05fc21d st/oxr: Improve pose sub-path handling
If the client only supplies the 'any' path no sub-path would be
selected in the 'any' cause.
2020-10-15 01:45:51 +00:00
Jakob Bornecrantz 54739aff8d c/render: Refactor out distortion rendering 2020-10-13 19:51:13 +01:00
Jakob Bornecrantz c5741af98a c/main: Tidy names 2020-10-13 19:17:50 +01:00
Jakob Bornecrantz 4ffc0b4144 c/main: Remove viewport_id in mesh shader 2020-10-13 19:17:50 +01:00
Jakob Bornecrantz 95bdcc0bd3 c/main: Round viewport to cover the same as scissors 2020-10-13 19:17:50 +01:00
Jakob Bornecrantz 32fd9398fe c/main: Refactor shader loading to own file 2020-10-13 19:17:50 +01:00
Jakob Bornecrantz 438a8e71f9 aux/vk: Add vkFreeDescriptorSets 2020-10-13 18:59:28 +01:00
Christoph Haag c0a5b3b76c d/survive: Implement haptic feedback 2020-10-13 19:39:28 +02:00
Christoph Haag 0dcde4a597 d/vive: Actually Use defined values for default haptic frequency and min haptic duration 2020-10-13 19:39:28 +02:00
Christoph Haag 270a4143c7 d/vive: Use defines for minimum haptic frequency and unspecified haptic frequency 2020-10-13 19:39:25 +02:00
Christoph Haag 1f021a6eda xrt: Add defines for minimum haptic frequency and unspecified haptic frequency 2020-10-13 19:27:53 +02:00
Christoph Haag d959bea54a d/vive: curl thumb when touching a button 2020-10-12 22:55:33 +02:00
Christoph Haag 05f65e0028 d/survive: curl thumb when touching a button 2020-10-12 22:55:33 +02:00
Christoph Haag f8088c1fa4 d/survive: Add fingertracking and refactor
Get controller config at startup & determine variant.
2020-10-12 22:55:33 +02:00
Christoph Haag 5164488225 d/vive_controller: Add finger tracking 2020-10-12 22:55:33 +02:00
Christoph Haag ca5cbaaa6f aux: Add hand_tracking util 2020-10-12 22:55:33 +02:00
Christoph Haag 6e5206f232 ipc: Add missing position_tracking_supported passthrough 2020-10-12 22:13:48 +02:00
Christoph Haag 256e2c68d8 xrt: Implement & hook up hand joint tracking infrastructure
Include <inttypes.h> to satisfy older compilers
2020-10-12 22:13:47 +02:00
Christoph Haag 2a07c1034e d/ns: Don't create rs tracker twice on v1 2020-10-12 16:06:25 +02:00
Ryan Pavlik 9d8af39b4f t/cli: Fix build on Windows. 2020-10-08 17:26:23 -05:00
Ryan Pavlik 835beedcca u_handles: Add Win32 handle utilities 2020-10-08 17:26:22 -05:00
Ryan Pavlik 5522c7317a st/oxr: Replace __typeof__ usage with portable syntax.
Needed for building on MSVC
2020-10-08 17:26:22 -05:00
Ryan Pavlik 3faa32753d inc/xrt: have the vulkan includes include windows.h neatly.
The Vulkan header itself already does it, we just want to do it first
with the right defines.
2020-10-08 17:26:22 -05:00
Ryan Pavlik 39ede92287 build: Link aux_util against threads explicitly 2020-10-08 17:26:22 -05:00
Ryan Pavlik 8b416da12b xrt: Add Win32 Vulkan platform define when needed 2020-10-08 17:26:22 -05:00
Ryan Pavlik 938e8cb393 inc/xrt: Windows uses Win32 HANDLEs for things. 2020-10-08 17:26:22 -05:00
Ryan Pavlik 60b4fc2ba1 inc/xrt: Add a header for minimally including Windows.h 2020-10-08 17:26:22 -05:00
Ryan Pavlik 3f83b1da92 u_json: Properly silence secure CRT warnings. 2020-10-08 17:26:22 -05:00
Ryan Pavlik 48eb00f1c8 u_bitwise: Switch from static const int to defines.
Sadly MSVC didn't believe those were constant,
and this is a C file so no constexpr.
2020-10-08 17:26:22 -05:00
Jakob Bornecrantz 1750bb672f c/main: Remove none shaders 2020-10-08 15:02:52 +01:00
Jakob Bornecrantz 39ec39dbee c/main: Add more logging levels 2020-10-08 14:57:59 +01:00
Jakob Bornecrantz 813487c2f5 ipc: Use new none distortion code 2020-10-07 23:45:46 +01:00
Jakob Bornecrantz 96046d1315 d/ohmd: Use new none distortion code 2020-10-07 23:45:45 +01:00
Jakob Bornecrantz 7baf90d3d8 d/hdk: Use new none distortion code 2020-10-07 23:45:43 +01:00
Jakob Bornecrantz cd2ea960b9 d/dummy: Use new none distortion code 2020-10-07 23:45:41 +01:00
Jakob Bornecrantz 51c8575323 u/mesh: Add back none distortion generation 2020-10-07 23:45:39 +01:00
Jakob Bornecrantz b5e5322f49 c/main: Use log levels 2020-10-06 20:37:01 +01:00
Lubosz Sarnecki bbeab1da3f c/main: Use u_logging.
Remove comp_compositor_print.
2020-10-06 20:04:52 +01:00
Christoph Haag dc29c3f97e build/meson: Build daydream and arduino driver when dbus is enabled 2020-10-05 16:05:02 +00:00
Christoph Haag 5bea856f20 build/meson: Add XRT_HAVE_DBUS when dbus is found 2020-10-05 16:05:02 +00:00
Jakob Bornecrantz 92caeae39c xrt: Define XRT_FEATURE_COMPOSITOR_MAIN and XRT_FEATURE_OPENXR 2020-10-05 16:46:06 +01:00
Jakob Bornecrantz 942ba178a0 st/oxr: Add extension support for XR_KHR_composition_layer_equirect2 2020-10-05 16:45:48 +01:00
Jakob Bornecrantz c5b696cfd7 t/cli: Add lighthouse command 2020-10-05 16:22:02 +01:00
Jakob Bornecrantz 0804dc20d1 os/ble: Use logging 2020-10-05 16:22:02 +01:00
Jakob Bornecrantz 40c764a290 os/ble: Large refactor of code 2020-10-05 14:19:52 +01:00
Jakob Bornecrantz 5af976a510 os/ble: Add os_ble_broadcast_write_value function 2020-10-05 14:19:52 +01:00
Jakob Bornecrantz 5b4d45ffcc os/ble: Correct documentation on os_ble_notify_open function 2020-10-05 14:19:52 +01:00
Jakob Bornecrantz 33879da21a xrt: Add XRT_HAVE_DBUS 2020-10-05 14:19:52 +01:00
Christoph Haag a0dd182dae build/ctl: Explicitly depend on generated ipc client header
Including a header in the build target is the documented solution for depending on
the generation of files via custom targets.

Fixes build on alpine linux.
2020-10-04 23:44:16 +02:00
Jakob Bornecrantz 02b33c668b st/oxr: Destroy client compositor when session is destroyed
Fixes #99
2020-10-04 13:04:57 +01:00
Jakob Bornecrantz 9dd8bfef28 st/oxr: Use xrt_comp_native_destroy helper 2020-10-04 13:04:55 +01:00
Jakob Bornecrantz 3729f2e8c9 ipc: Free client side compositor 2020-10-04 13:04:53 +01:00
Jakob Bornecrantz 309037a445 c/client: The client compositors doesn't own the native compositor 2020-10-04 13:04:52 +01:00
Jakob Bornecrantz 6ec6c2eac9 d/dummy: Make view rotate slightly with time 2020-10-01 23:49:12 +01:00
Jakob Bornecrantz 9f39410b64 d/dummy: Make the view move slightly with time 2020-10-01 15:50:51 +01:00
Jakob Bornecrantz 9a675cc7f3 xrt: Rename xrt_uv_triplet 2020-09-30 15:35:57 +01:00
Christoph Haag bb56e5f3c5 d/openhmd: Make struct oh_device private and refactor 2020-09-30 02:08:03 +02:00
Christoph Haag f6c3998d29 xrt: Use struct vive_values for u_compute_distortion_vive 2020-09-30 02:05:05 +02:00
Christoph Haag 29188d681c xrt: Remove all but mesh distortion values from xrt_hmd_parts::distortion
Move vive values to struct u_vive_values in u_distortion_mesh.
Move openhmd values to private struct inside ohmd driver.
2020-09-30 02:05:05 +02:00
Christoph Haag c5209c5ed4 comp: Move mesh generation to comp_renderer init
Use none shader when XRT_DISTORTION_MODEL_NONE is set.
Fall back to none distortion if mesh generation fails or unsupported
distortion model is set.

comp_render init updates comp_settings::distortion_model.

u_compute_distortion_mesh: Don't touch xdev::distortion::preferred,
just add XRT_DISTORTION_MODEL_MESHUV mesh to xdev::distortion::models.
2020-09-30 02:05:05 +02:00
Christoph Haag f82f247c19 comp: Rename distortion.vert to none.vert
After removing the other shaders, it is only used for no distortion anymore.
2020-09-30 02:05:05 +02:00
Christoph Haag bc7a948975 comp: More replacing of binding indices with variables 2020-09-30 02:05:05 +02:00
Christoph Haag 2e7451ca5e comp: Support only mesh and no istortion, remove pano and vive shaders
Also changes hardcoded binding indices into variables to make following the code easier
e.g. when adding new UBOs.
2020-09-30 02:05:04 +02:00
Christoph Haag 80f6fc9039 comp: Replace hardcoded binding indices with variables
Makes it easier to follow when changing code.
2020-09-30 01:30:30 +02:00
Christoph Haag fd883e26bf d/openhmd: Fix distortion_k value ordering
Their order is opposite to the psvr panotools values.
2020-09-30 01:30:30 +02:00
Christoph Haag fb71c71a8c xrt: Replace mesh generator with xdev->compute_distortion()
Each HMD driver now has to implement compute_distortion() which will be called
by the compositor implementation to generate a mesh (usually).

u_distortion_mesh contains implementations for the defaults (panotools, OpenHMD, vive).

Also adds compute_distortion function for Vive distortion

There are differences between OpenHMD and Panotools values, main differences for now:
* psvr has 5 pano coefficients, ohmd has 3
* psvr uses viewport size and lens center in pixels for distortion calculation, ohmd in meter
* psvr uses different distortion scaling than ohmd
2020-09-28 17:04:15 +01:00
Jakob Bornecrantz 2aaa3acfdf st/oxr: Do not destroy native compositor in sub-classed session creation functions
So it's owned by the instance.
2020-09-24 19:07:01 +01:00
Jakob Bornecrantz 6961bf885f st/oxr: Don't create a new native compositor in android session
Spotted by Jarvis.
2020-09-24 19:06:51 +01:00
Christoph Haag ee8fdb45fd d/ns: remove useless assignments 2020-09-22 02:19:13 +02:00
Christoph Haag e5683d4fde comp: remove useless pano ubo from mesh distortion
It was left in as a debug measure, but is more confusing than useful,
especially with northstar directly generating a mesh and vive with its own shader.
2020-09-22 02:19:13 +02:00
Christoph Haag 3c0ae7e61e d/dummy: reduce dummy HMD resolution to 720p 2020-09-21 20:37:28 +02:00
Christoph Haag 31539c800e d/ohmd: Add (OpenHMD) suffix to openhmd driver string 2020-09-21 20:37:28 +02:00
Christoph Haag 3d0235a450 st/prober: Fix build with v4l2 disabled 2020-09-21 20:21:56 +02:00
Jakob Bornecrantz 9ebf1c4d4d st/oxr: Fix warning 2020-09-18 20:51:31 +01:00
Ryan Pavlik 6af00ed8db u/file: Stub out Linux path manip code. 2020-09-18 18:27:46 +01:00
Ryan Pavlik 6ad46cb1b2 build: Be able to build against pthreads4w 2020-09-18 18:25:27 +01:00
Ryan Pavlik 7e600dd244 build: Adjust/fix missing dependencies 2020-09-18 18:25:27 +01:00
Ryan Pavlik 6779b1c0f8 st/p: Fix include of libusb 2020-09-18 18:25:27 +01:00
Ryan Pavlik b71f13c582 st/p: Tighten preprocessor conditionals for non-Linux 2020-09-18 18:25:15 +01:00
Milan Jaros 3f4bcb412e u/threading: Cast result of realloc. 2020-09-18 17:15:33 +01:00
Ryan Pavlik 695a2c1151 u/debug: Silence warnings on MSVC 2020-09-18 17:15:33 +01:00
Ryan Pavlik f7a132e635 u/time: Fix overflow. 2020-09-18 17:15:33 +01:00
Ryan Pavlik 1dffe58952 u/json: Silence warnings on MSVC 2020-09-18 17:15:33 +01:00
Milan Jaros 7685f49adb os/threading: Fix includes on Windows 2020-09-18 17:15:33 +01:00
Milan Jaros 367c01f354 os/time: Provide time functions for Windows 2020-09-18 17:15:33 +01:00
Ryan Pavlik 7c47293c52 os/time: Implement os_nanosleep for Windows 2020-09-18 13:56:34 +01:00
Ryan Pavlik dae3ab3a4f xrt: Be sure to include config headers 2020-09-18 13:56:24 +01:00
Ryan Pavlik a0c8839a71 xrt: Remove un-needed includes of unistd 2020-09-18 13:56:16 +01:00
Ryan Pavlik 54f6aa2166 inc/xrt: Some MSVC and Windows support 2020-09-18 13:56:11 +01:00
Ryan Pavlik 3ff56f4a3c inc/xrt: Add Windows implementations of atomic intrinsics. 2020-09-18 13:56:05 +01:00
Jakob Bornecrantz c411caf0cd st/oxr: Fix return length from oxr_action_get_input_source_localized_name 2020-09-17 23:04:37 +01:00
Jakob Bornecrantz 4a62e88f09 st/oxr: Return identifier name for bindings 2020-09-17 23:04:37 +01:00
Jakob Bornecrantz b6786f5bfc st/oxr: Return controller name for bindings 2020-09-17 15:28:59 +01:00
Jakob Bornecrantz 33713c790c st/oxr: Correctly return sub path for input source 2020-09-17 00:26:12 +01:00
Jakob Bornecrantz 0fc4cdcd0f st/gui: Get the number of samples in a fifo for graph 2020-09-16 17:27:16 +01:00
Jakob Bornecrantz 6a94b1cf80 m/ff: Improve interface 2020-09-16 17:27:16 +01:00
Bart Ribbers 71f912ffc5 Fix compilation on Musl
Without this fix, compilation failed on Musl due to ssize_t being an
unknown type

In file included from ../src/xrt/state_trackers/prober/p_prober.c:15:
../src/xrt/state_trackers/prober/p_prober.h:67:2: error: unknown type name 'ssize_t'
   67 |  ssize_t interface;
      |  ^~~~~~~
2020-09-16 10:44:06 +02:00
Jakob Bornecrantz b624d290d0 m/3dof: Add filter fifos to variable tracking code 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz f7ff6c08ed st/gui: Plot vec3_f32 filter fifos 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz 468f72d62f st/gui: Include ImPlot and Monado-ImGui in gui_imgui header 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz f843c59c37 imgui: Add ImPlot 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz 36ea1825bf imgui: Update to 1.78 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz 3ffa40c628 u/var: Refactor how variables info is passed 2020-09-15 16:41:07 +00:00
Jakob Bornecrantz d5c62f8ccb u/var: Add tracking for filter fifos 2020-09-15 16:41:07 +00:00
Christoph Haag 17ff908041 d/ns: Set XRT_SPACE_RELATION_ORIENTATION_TRACKED_BIT 2020-09-14 16:57:10 +02:00
Christoph Haag 37519dc54d d/dummy: Set XRT_SPACE_RELATION_ORIENTATION_TRACKED_BIT 2020-09-14 16:56:54 +02:00
Christoph Haag ddf3eb5789 st/oxr: Use space graph in global-to-local space transform
This takes care of transforming the velocities.
2020-09-11 19:06:16 +02:00
Christoph Haag 150b7649f3 d/survive: Don't fix up invalid pose 2020-09-11 18:52:01 +02:00
Christoph Haag a664bb22bf d/survive: Update to recent libsurvive git
Rewrite input event handling and add new events from libsurvive.
2020-09-11 18:52:01 +02:00
Christoph Haag c3fbe6eaf8 d/survive: remove unused structs 2020-09-11 18:52:01 +02:00
Christoph Haag 357b47522c d/survive: set relation flags properly 2020-09-11 18:52:01 +02:00
Christoph Haag f41edee4b4 st/oxr: Use space graph resolve result relation flags instead of pure pose relation 2020-09-11 18:52:01 +02:00
Christoph Haag 19acc7be25 st/oxr: Pass actual ViewStateFlags to application with xrLocateViews
These flags are originally set by the driver, then processed by the space graph resolver.
2020-09-11 18:52:01 +02:00
Christoph Haag 2b90b4ea89 st/oxr: Destroy compositor on instance destroy
Fixes direct mode on subsequent instance creation in the same process
when no session was created.
2020-09-11 18:52:01 +02:00
Christoph Haag eb8a304178 ipc: print send and receive errors with ERROR, not DEBUG
These errors lead to unexpected output and should be investigated.
2020-09-11 18:52:01 +02:00
Christoph Haag a884e24b9a aux: Support waiting more than 0.999... seconds in os_nanosleep 2020-09-11 18:52:01 +02:00
Christoph Haag 6133d4cf99 d/survive: Remove out_relation_timestamp_ns 2020-09-11 18:52:01 +02:00
Christoph Haag 844daee844 st/oxr: Check xrLocateViews quaternion only if orientation valid 2020-09-11 18:52:01 +02:00
Christoph Haag 1429d678a0 aux/space: Propagate orientation valid bit through space graph resolve
Invalid poses may be handled more gracefully in the future. For now poses
are not transformed if orientation is not valid, because transforming with
an invalid quaternion will have bad results in any way.

v2: Upgrade poses with valid position but invalid orientation to valid poses
2020-09-11 18:51:58 +02:00
Christoph Haag 6cce04f8d3 aux/space: fix typo: propagate tracked orientation bit properly 2020-09-09 14:51:06 +02:00
Jakob Bornecrantz 8e24dda794 xrt: Remove out_timestamp argument to xrt_device::get_tracked_pose 2020-09-07 23:37:09 +01:00
Jakob Bornecrantz eaffa05a37 xrt: Remove acceleration components from xrt_space_relation 2020-09-07 23:36:34 +01:00
Jakob Bornecrantz 5a4d45bbaa m/base: Remove old space relation functions 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz 855b2005f3 c/main: Use new xrt_space_graph 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz d60cce8977 st/oxr: Use new xrt_space_graph 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz 74690a2278 d/psmv: Rotate angular velocity to be in base space 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz f9905a4007 d/psmv: Use space graphs for poses 2020-09-07 23:33:28 +01:00
Jakob Bornecrantz fe94dec5ea m/space: Space graph functions 2020-09-07 23:33:25 +01:00
Jakob Bornecrantz ca91695722 m/quat: Add math_quat_rotate_derivative 2020-09-07 16:14:46 +01:00
Jakob Bornecrantz 4d85db6051 xrt: Add xrt_space_graph 2020-09-07 16:14:46 +01:00
Moses Turner 0ff1865c2e d/ns: Add version 2 config support 2020-09-07 11:35:24 +01:00
Jakob Bornecrantz ea6374d296 d/dummy: Minor comments 2020-09-06 22:53:10 +01:00
Jakob Bornecrantz 09bcf6c9d2 t/ctl: Fix typo 2020-09-06 21:58:34 +01:00
Jakob Bornecrantz 4f94ee0c91 u/render_timing: Improve debug printing 2020-09-04 13:48:40 +01:00
Christoph Haag 4a1d8b3a41 xrt: Fix vive input defines 2020-09-04 01:46:47 +02:00
Jakob Bornecrantz 787c104339 d/psmv: Use last package timestamp for input changes 2020-09-02 22:08:01 +01:00
Jakob Bornecrantz 328f5d5315 m/base: Add math_quat_invert 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 511a51b283 m/3dof: Rename to timestamp 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 8cdfe0e694 m/fifo: Add f64 filter fifo 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 991c9029c7 m/3dof: Tweak values 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 736fa81349 m/3dof: Add vars tracking helper function 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 33f05c7bea m/vec3: Add C++ operators 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz d396117a39 m/vec2: Add C++ operators 2020-09-02 22:07:35 +01:00
Jakob Bornecrantz 2d8a39b731 d/v4l2: Set correct name on variable tracker 2020-09-02 18:36:47 +01:00
Jakob Bornecrantz ffa888a575 d/v4l2: Use different tweaks depending on capture type 2020-09-02 11:57:47 +01:00
Jakob Bornecrantz 6846ab7637 xrt: Add stream capture type 2020-09-02 11:52:59 +01:00
Christoph Haag 330279d330 d/psvr: Set positional tracking bit when tracker is present 2020-09-01 17:03:55 +02:00
Christoph Haag cde94cc8a2 build: Remove libv4l2 dependency from meson
We use the linux/v4l2-common.h header to access v4l devices, not libv4l from v4l-utils.
2020-08-28 12:10:53 +00:00
Pete Black 3f197eeffd t/psmv: Use the same filtering as in PSVR tracker 2020-08-28 11:38:03 +00:00
Pete Black 76a439bd59 t/psvr: Add a functional PSVR tracker 2020-08-28 11:38:03 +00:00
Pete Black 3fdce20afd d/psvr: Only power on front LEDs 2020-08-28 11:38:03 +00:00
Jakob Bornecrantz b3c5bf1517 math: Add a permutation library 2020-08-28 11:38:03 +00:00
Jakob Bornecrantz d3b224275c u/logging: Fix return of debug_get_log_option_SUFFIX 2020-08-28 11:38:03 +00:00
Pete Black 751fdb2884 u/render_timing: Paranoia 2020-08-28 11:38:03 +00:00
Pete Black 20ee4114b0 xrt: Fix typo in comment 2020-08-28 11:38:03 +00:00
Jakob Bornecrantz 233ca93569 t/ctl: Print devices as well 2020-08-28 11:33:38 +00:00
Jakob Bornecrantz 5c08dc1617 t/ctl: Refactor connection opening 2020-08-28 11:33:38 +00:00
Jakob Bornecrantz 691881f507 t/ctl: Implement device IO toggling 2020-08-28 11:33:38 +00:00
Jakob Bornecrantz 7b9d7091bd t/ctl: Refactor code to make more tidy 2020-08-28 11:33:38 +00:00
Jakob Bornecrantz 4e6a137c62 ipc: Make it possible to toggle inputs on and off 2020-08-28 11:33:38 +00:00
Jakob Bornecrantz 557dacbb02 st/oxr: Special case the any path for pose actions 2020-08-28 10:34:19 +00:00
Jakob Bornecrantz deb5633bf9 d/psmv: Introduce proper grip and aim poses
Correctly rotate the grip pose to follow the spec more closely.
2020-08-27 10:42:05 +01:00
Ryan Pavlik ff603d3acd st/oxr: Add layer type conditionals around depth-image manipulation 2020-08-26 12:28:43 -05:00
Ryan Pavlik 2ac0013e25 st/oxr: Verify that the compositor created can actually do the layer types claimed. 2020-08-26 12:28:35 -05:00
Ryan Pavlik 9d19ab2755 u/misc: Improve docs of calloc macros. 2020-08-26 11:26:46 -05:00
Ryan Pavlik cb26f7255c comp: Use the correct calloc macro 2020-08-26 11:25:43 -05:00