Commit graph

502 commits

Author SHA1 Message Date
Ryan Pavlik 1acadb8a18 a/android: Make MonadoView fullscreen. 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 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
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 d0187cee9a aux/android: Add Java code 2020-10-28 09:33:26 -05:00
Ryan Pavlik 06f75e03b4 a/android: Fix typo in comment 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 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 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
Lubosz Sarnecki 7035490ed7 aux/math: Implement math_matrix_4x4_inverse_view_projection. 2020-10-26 01:34:10 +00:00
Jakob Bornecrantz 2528583c55 xrt: Add git tag/description 2020-10-20 17:43:11 +01:00
Jakob Bornecrantz 438a8e71f9 aux/vk: Add vkFreeDescriptorSets 2020-10-13 18:59:28 +01:00
Christoph Haag ca5cbaaa6f aux: Add hand_tracking util 2020-10-12 22:55:33 +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
Ryan Pavlik 835beedcca u_handles: Add Win32 handle utilities 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 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 51c8575323 u/mesh: Add back none distortion generation 2020-10-07 23:45:39 +01:00
Christoph Haag 5bea856f20 build/meson: Add XRT_HAVE_DBUS when dbus is found 2020-10-05 16:05:02 +00: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 9a675cc7f3 xrt: Rename xrt_uv_triplet 2020-09-30 15:35:57 +01: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 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
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
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
Jakob Bornecrantz 6a94b1cf80 m/ff: Improve interface 2020-09-16 17:27:16 +01:00
Jakob Bornecrantz b624d290d0 m/3dof: Add filter fifos to variable tracking code 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 a884e24b9a aux: Support waiting more than 0.999... seconds in os_nanosleep 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 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 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 4f94ee0c91 u/render_timing: Improve debug printing 2020-09-04 13:48:40 +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
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
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
Ryan Pavlik 9d19ab2755 u/misc: Improve docs of calloc macros. 2020-08-26 11:26:46 -05:00
Ryan Pavlik 581f59a2eb vk: Add an Android function to the vk_bundle 2020-08-26 16:31:38 +01:00
Jakob Bornecrantz 62fd80ff8d aux/vk: Print a little bit more when failing on usage 2020-08-26 14:28:10 +00:00
Christoph Haag 6dc4a1f237 aux/vk: Report appropriate errors on unsupported image usage flags 2020-08-24 10:18:12 +02:00
Christoph Haag 370f6820aa m: Generalize math_matrix_4x4_quad_model, making scaling a vec3 2020-08-21 02:11:03 +02:00
Christoph Haag fbe390813c vk: Add update_buffer helper function 2020-08-21 02:11:03 +02:00
Christoph Haag cf5596adba comp: Use CLAMP_TO_EDGE for swapchains
Avoids sampling black at the edges of layers.
2020-08-21 02:09:20 +02:00
Ryan Pavlik 3b8c8ddc1a xrt: Move the android globals functionality to the new android aux lib. 2020-08-19 16:07:00 -05:00
Ryan Pavlik a57507518d aux/android: New aux library, add image allocator for Android 2020-08-19 16:06:30 -05:00
Ryan Pavlik fa34c65ed3 xrt: Make xrt_image_native::size optional.
Not all allocators can supply it.
2020-08-19 16:06:30 -05:00
Ryan Pavlik e48f68deb6 aux/ogl: Add helper header for OpenGL. 2020-08-19 16:06:30 -05:00
Ryan Pavlik 430f79a7ca aux/util: Add u_android for global state. 2020-08-19 11:01:10 -05:00
Ryan Pavlik e092345292 aux/vk: Port to using u_handles 2020-08-13 17:34:05 -05:00
Ryan Pavlik 129c1a9ac4 a/util: Add u_handles module. 2020-08-13 17:34:05 -05:00
Ryan Pavlik e52539d1a3 aux/vk: Fix compile time conditionals 2020-08-13 17:34:05 -05:00
Ryan Pavlik 9087d1c7a9 xrt: Use our generic graphics buffer typedefs all over.
This adds some Android support in composition clients,
and fixes the breakage from 2 commits ago.

Thanks to Jakob for finding my error in an earlier version.
2020-08-13 17:34:05 -05:00
Ryan Pavlik 475192ec73 xrt: Rename "fd" references to "handle"
This breaks some Android pieces, which will be fixed shortly.
2020-08-12 17:11:42 -05:00
Ryan Pavlik 146218b346 xrt: Some clang tidy fixes.
A few suppressions as well where clang-tidy did the wrong thing.
2020-08-12 17:11:42 -05:00
Jakob Bornecrantz cd9da1c1e1 aux/vk: Make xrt_swapchain_create_info const 2020-08-07 17:00:10 +01:00
Christoph Haag e48c748a57 xrt: suggest correct GPU in xrGetVulkanGraphicsDevice()
As before, on the service side the GPU index the compositor runs on can be selected with
* XRT_COMPOSITOR_FORCE_GPU_INDEX=INDEX1

By default xrGetVulkanGraphicsDevice() will suggest the same GPU the compositor runs on.

It is also possible to override the GPU index suggested to applications with
* XRT_COMPOSITOR_FORCE_CLIENT_GPU_INDEX=INDEX2

The reason this is both done on the service side is that if compositor and client run
on different GPUs, the swapchains use linear tiling instead of optimal tiling.

To make chosen GPUs comparable across the compositor's and the client's vulkan instance,
VkPhysicalDeviceIDProperties.deviceUUID is used.
2020-08-07 17:01:13 +02:00
Jakob Bornecrantz 3a7a86aafc vk: Refactor VkImageUsageFlags code into helper function 2020-08-06 14:28:23 +00:00
Jakob Bornecrantz ce7da3941c vk: Add support for XRT_SWAPCHAIN_USAGE_INPUT_ATTACHMENT 2020-08-06 14:28:23 +00:00
Ryan Pavlik 07f2e62e76 aux/vk: vk_create_semaphore_from_fd -> vk_create_semaphore_from_native 2020-08-05 20:50:00 +00:00
Ryan Pavlik d8ad620bd2 xrt: Update GLAD again, to a "merged" distribution.
This merges the OpenGL and OpenGL-ES code.
2020-08-05 20:50:00 +00:00