Commit graph

1652 commits

Author SHA1 Message Date
Jakob Bornecrantz 16b9dc13e2 xrt: Correct assert for ipc data type 2020-08-25 14:55:43 +01:00
Jakob Bornecrantz bf9f0e6e39 st/oxr: Use the right depth projection function 2020-08-25 14:55:43 +01:00
Jakob Bornecrantz cd6a237b4a c/client: Add support for depth projection 2020-08-25 14:55:43 +01:00
Jakob Bornecrantz 8356308bf9 c/main: Add support for depth projection 2020-08-25 14:55:43 +01:00
Jakob Bornecrantz efac59a1d8 ipc: Add support for depth projection 2020-08-25 14:55:43 +01:00
Jakob Bornecrantz 9bd725a800 xrt: Add missing xrt_comp_layer_stereo_projection_depth 2020-08-25 14:55:43 +01:00
Christoph Haag 2cd010b65f st/oxr: Verify that projection layer has 0 or view count depth layers 2020-08-24 12:29:47 +02:00
Christoph Haag a9193b0e89 st/oxr: Pass through depth layer to compositor
The compositor does not make use of this layer yet.
2020-08-24 10:30:23 +02:00
Christoph Haag 4f2d421903 st/oxr: Verify depth layer 2020-08-24 10:30:23 +02:00
Christoph Haag 6dc4a1f237 aux/vk: Report appropriate errors on unsupported image usage flags 2020-08-24 10:18:12 +02:00
Christoph Haag 092dddc2da comp: Support Vk and GL depth and depth stencil formats
For now add only the depth formats mandated by OpenGL to maximize the
chances of the Vulkan driver supporting a reasonable set of usage flags
for the formats.
2020-08-24 10:18:12 +02:00
Christoph Haag 5a854fc806 st/oxr: projection layer swapchain NULL check 2020-08-24 10:18:12 +02:00
Jakob Bornecrantz 1914a2ee93 ipc: Tidy 2020-08-21 18:17:18 +01:00
Jakob Bornecrantz fba9f2532c c/client: Fix warning and tidy 2020-08-21 18:17:12 +01:00
Jakob Bornecrantz a4693f3162 st/oxr: Include m_mathinclude.h and tidy includes 2020-08-21 12:18:09 +01:00
Christoph Haag 094a9008c9 comp: Add cylinder layer implementation 2020-08-21 02:24:48 +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 8a17481301 st/oxr: handle subimage rect in submit_cylinder_layer 2020-08-21 02:11:03 +02:00
Christoph Haag 3122e2d073 comp: Use define for number of plane vertices 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
Christoph Haag 6c084e2cbf build: Add build support for cube, cylinder and equirect layers to meson 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 56dcaf5abf ipc: Some comment improvements. 2020-08-19 16:07:00 -05:00
Ryan Pavlik 7c0df6506b ipc/client: Use Android allocator on client side. 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 640f24438d comp/client: Clean up commented-out code. 2020-08-19 16:06:30 -05:00
Ryan Pavlik c49ccd7b46 comp/client: Improve EGLimage-based swapchain 2020-08-19 16:06:30 -05:00
Ryan Pavlik 3250617dcb comp/client: Use new texture target utility for OpenGL 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 6600e738a3 ipc: Fix loop conditions in loopback allocator 2020-08-19 11:01:49 -05:00
Ryan Pavlik 521de8ecfd comp: Add a URL for sample Android EGL code. 2020-08-19 11:01:49 -05:00
Ryan Pavlik 54149b12b9 st/oxr: Handle the android extension 2020-08-19 11:01:12 -05:00
Ryan Pavlik 430f79a7ca aux/util: Add u_android for global state. 2020-08-19 11:01:10 -05:00
Christoph Haag cd05c86c59 d/ns,rs: Add external slam tracking type 2020-08-19 14:46:55 +02:00
Jakob Bornecrantz 201b5337df ipc: It's okay to send zero handles 2020-08-19 11:45:31 +00:00
Jakob Bornecrantz 019e962f94 ipc: Tidy and better error messages 2020-08-19 11:45:31 +00:00
Christoph Haag 7fb0af90de xrt: Add tracking system type for Hydra 2020-08-19 11:06:28 +00:00
Christoph Haag 23bd6a4377 xrt: Add tracking system type for Lighthouse 2020-08-19 11:06:28 +00:00
Jakob Bornecrantz 8a4db7b3ef st/oxr: Make sure that an identity transform is only inserted when needed 2020-08-18 19:44:26 +01:00
Jakob Bornecrantz 1109bc7cfb st/oxr: Better logging when creating transforms 2020-08-18 19:43:27 +01:00
Jakob Bornecrantz 25c78287a2 st/oxr: Slightly better logging when we fail to transform 2020-08-18 17:06:07 +01:00
Jakob Bornecrantz a3c4cba7f5 st/oxr: Reject bindings that we can't transform 2020-08-18 17:06:07 +01:00
Ryan Pavlik 00abdb358a st/oxr: Proper gles support for Android 2020-08-17 17:30:33 -05:00
Christoph Haag 08ed44b22c d/vive,survive: Manually improve values for Valve Index display
These values are hand picked to provide a less stretchy image.
2020-08-17 22:07:22 +02:00
Christoph Haag 518728156b d/northstar: Set positional tracking bit true when built with RS support 2020-08-17 11:51:38 +00:00
Jakob Bornecrantz 132b0c541d d/rs: Use a thread to get the poses
Tested by moses from Discord.
2020-08-17 11:58:18 +01:00
Christoph Haag 0a667281f9 st/oxr: Print invalid quaternion values in xrLocateView
Gives a hint whether it was zeroed, almost normalized, or not normalized at all.
2020-08-17 12:39:08 +02:00
Ryan Pavlik 54dbb4d128 st/oxr: Use the XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING code added in OpenXR 1.0.11. 2020-08-14 17:42:19 -05:00
Ryan Pavlik 2c126e08ff st/oxr: Handle XRT_ERROR_IMAGE_CREATE_FLAG_UNSUPPORTED from compositor. 2020-08-14 19:58:01 +00:00
Ryan Pavlik 6820a7851d comp/main: Refuse to create a swapchain if protected content bit requested. 2020-08-14 19:58:01 +00:00
Ryan Pavlik 33c20b1a65 inc/xrt: Add a new xrt_result_t code, for when we don't support the specified image flags.
If we don't support protected content (and our compositor doesn't),
we are to error out in a specific way in OpenXR. This permits us to do so.
2020-08-14 19:58:01 +00:00
Jakob Bornecrantz 4b5d25dc33 c/main: Stub in code for cube, cylinder and equirect layers 2020-08-14 19:15:02 +00:00
Jakob Bornecrantz 1292173b5e c/client: Add support for cube, cylinder and equirect layers 2020-08-14 19:15:02 +00:00
Jakob Bornecrantz 4754dcd11b ipc: Add support for cube, cylinder and equirect layers 2020-08-14 19:15:02 +00:00
Jakob Bornecrantz 8846c88eb1 st/oxr: Implement cylinder layer 2020-08-14 19:15:02 +00:00
Jakob Bornecrantz 7eeab2aca6 st/oxr: Implement the layer verification functions 2020-08-14 19:15:02 +00:00
Ryan Pavlik bf37b9d999 comp: Use u_logging in some EGL code. 2020-08-13 17:34:05 -05:00
Ryan Pavlik a6b6ab8e2c ipc: Fix conditionals about handle types. 2020-08-13 17:34:05 -05:00
Ryan Pavlik 1bd2c66aa2 comp: Port to using u_handles 2020-08-13 17:34:05 -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 ab4ceee720 comp: Save/restore the correct texture binding on Android 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 f9a613a349 comp: Fix compile-time conditionals 2020-08-13 17:34:05 -05:00
Ryan Pavlik c5d1dec60c comp: Move GLAD loading and extension checking to places with more information.
They will be sure to load the right combination.
2020-08-13 17:34:05 -05:00
Ryan Pavlik 3cfdfbde60 inc/xrt: Tighten requirements for AHardwareBuffer usage.
Needs to be building for platform 26+ (Android 8.0 or newer)
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 fc73ba0401 comp: Split OpenGL[ES] swapchain types 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
Ryan Pavlik f1432789ee ipc: Const correctness 2020-08-12 09:51:07 -05:00
Jakob Bornecrantz d27044a18d ipc: Add a disabled loopback allocator 2020-08-12 15:26:43 +01:00
Jakob Bornecrantz a834c9977e ipc: Make it possible to give the client compositor a image allocator 2020-08-12 15:26:05 +01:00
Jakob Bornecrantz 01dcf59c53 xrt: Add new image native allocator interface 2020-08-12 15:24:48 +01:00
Jakob Bornecrantz 38703fc1d2 st/oxr: Add plumbing for layers 2020-08-11 01:51:24 +01:00
Jakob Bornecrantz 4a8ac6ebed cmake: Add build flags for OpenXR layers 2020-08-11 01:48:31 +01:00
Jakob Bornecrantz 71e10fafcd c/main: Fix warnings with asserts 2020-08-11 01:48:31 +01:00
Jakob Bornecrantz 5e78752a6e xrt: Add a bunch of different layer types 2020-08-11 01:48:31 +01:00
Christoph Haag 026cc64681 comp: make nvidia display selectable with XRT_COMPOSITOR_FORCE_NVIDIA_DISPLAY
Allows temporarily adding a nvidia display name string to the whitelist without recompiling.
2020-08-11 00:44:31 +02:00
Christoph Haag 5ecd0a947d comp: Move nvidia whitelist warning so it is displayed again 2020-08-10 20:48:29 +02:00
Jakob Bornecrantz 1e3508d2ce st/oxr: Fix crash in oxr_session_poll in headless mode
Spotted and reported by svillar (IRC).
2020-08-10 16:49:20 +01:00
Jakob Bornecrantz ec9ecf6332 d/psvr: Fix 3DOF tracking 2020-08-10 16:07:53 +01:00
Jakob Bornecrantz ca786df18c xrt: Make xrt_swapchain_create_info argument const 2020-08-07 19:15:18 +01: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 b7977424fc st/oxr: Get viewport information from the native compositor 2020-08-06 15:14:49 +00:00
Jakob Bornecrantz adc6ca8e8a c/main: Fill out all of the compositor info struct 2020-08-06 15:14:49 +00:00
Jakob Bornecrantz ee48b44087 c/main: Remove internal compositor global flip_y 2020-08-06 15:14:49 +00:00
Jakob Bornecrantz 0b8d800dcc ipc: Use xrt_compositor_info in proto
Transport the whole compositor info struct to the client instead of just
formats so that all information is easily moved over.
2020-08-06 15:14:49 +00:00
Jakob Bornecrantz 3bbea14f24 ipc: Remove flip_y arguments to compositor creation 2020-08-06 15:14:49 +00:00
Jakob Bornecrantz d1d841e7c3 xrt: Use new info struct for compositor formats 2020-08-06 15:14:49 +00:00
Jakob Bornecrantz 0adfeb77a1 xrt: Add xrt_compositor_info 2020-08-06 15:14:49 +00:00
Jakob Bornecrantz e8ca242967 xrt: Remove flip_y argument to native compositor creation 2020-08-06 15:14:49 +00:00
Jakob Bornecrantz fb9ebe8b88 st/oxr: Add support for MND_swapchain_usage_input_attachment_bit 2020-08-06 14:28:23 +00: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
Jakob Bornecrantz b64d683f6e xrt: Add new input attachment swapchain usage 2020-08-06 14:28:23 +00:00
Christoph Haag ae07036324 d/vive: Demote watchman timeout error message to trace
It's desirable to support running without basestations without spamming messages.
2020-08-05 21:11:24 +00:00
Christoph Haag 3a68f60d47 d/vive: Run watchman poll in separate thread
Watchman polling times out after 1 second when basestations are not present/off.
This should not block reading the IMU.
2020-08-05 21:11:24 +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 7b24fca58d inc/xrt: Add a native handle type for graphics sync primitives 2020-08-05 20:50:00 +00:00
Ryan Pavlik 8889f81194 inc/xrt: Add defines for underlying handle type 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
Christoph Haag a5360f2237 comp: Free comp_render_layer on layer destruction 2020-08-05 20:32:51 +00:00
Christoph Haag 9a52e2384f ipc: initialize msg_control buffer 2020-08-05 20:32:51 +00:00
Christoph Haag 2b20ee1f12 d/vive: close the zlib inflate stream
fixes memory leaks of zlib stream internal state
2020-08-05 20:32:51 +00:00
Christoph Haag 12c0f5d75a d/vive: Destroy watchman hid device on shutdown 2020-08-05 20:32:51 +00:00
Christoph Haag 1f9e5cdfb6 comp: Free layer renderer on renderer destroy 2020-08-05 20:32:51 +00:00
Ryan Pavlik 574631166f st/p: Downgrade an "error" message to a "debug" message.
This message is always triggered on my machine by v4l2loopback.
2020-08-05 11:12:16 -05:00
Christoph Haag 4a0aa434aa build: Install manifest in openxr subdir with meson
Before: <PREFIX>/share/1/openxr_monado.json
After : <PREFIX>/share/openxr/1/openxr_monado.json
2020-08-05 01:55:43 +02:00
Christoph Haag c019fce797 st/oxr: Don't crash when native compositor creation fails
fixes crash and exits gracefully after

compositor_init_swapchain - Window init_swapchain failed!
XR_ERROR_INITIALIZATION_FAILED in xrCreateSession: Failed to create a native compositor '-1'
2020-08-04 22:32:58 +02:00
Christoph Haag 5d4a49a1c7 st/oxr: Actually return invalid path error in sync actions 2020-08-03 19:00:17 +02:00
Christoph Haag d06f1c9ef9 st/oxr: error when sync with subactionpath that no action has 2020-08-03 19:00:17 +02:00
Christoph Haag 983665d95c st/oxr: Respect action set priority for exact matching inputs
* Only suppress action when synced actionset has relevant subpath
2020-08-03 19:00:02 +02:00
Christoph Haag 4c8e3eb95f st/oxr: Don't return early when not using 'any' subpath
'any' is only set when xrSyncActions was called with XR_NULL_PATH.
When only left or right is set, the already existing following code does the job.
2020-08-03 18:59:56 +02:00
Lubosz Sarnecki 9c16f5ed69 d/vive/lighthouse: Handle lighthouse v2 reports.
Poll ligthouse reports in separate function. Check for report sizes
consistently.
2020-07-31 13:30:12 +02:00
Lubosz Sarnecki 04467942c1 d/vive: Add and use vive_lighthouse from ouvrt. 2020-07-31 13:30:12 +02:00
Lubosz Sarnecki 87a5c425cf a/math: Add math_vec3_normalize. 2020-07-31 12:45:47 +02:00
Lubosz Sarnecki 7c8febd03d u/logging: Add U_LOG_IFL. 2020-07-31 12:45:47 +02:00
Lubosz Sarnecki bb7d05a918 d/vive: Print report type names.
Be fault tolerant on unexpected report.
2020-07-31 12:45:47 +02:00
Lubosz Sarnecki c3ba93c1ce d/vive: Poll pulse reports.
Make sensor polling function take processing callback and be more
generic.
2020-07-31 12:45:47 +02:00
Lubosz Sarnecki 2db3b6b218 d/vive: Open and enable watchman on Vive, Vive Pro and Index. 2020-07-31 12:45:13 +02:00
Lubosz Sarnecki cbb1dd82da d/vive: Remove unnesseccary clang-format off. 2020-07-31 12:35:03 +02:00
Jakob Bornecrantz 9ae720b9d4 xrt: Add all remaining swapchain creation flags 2020-07-29 14:46:17 +01:00
Jakob Bornecrantz 080fdacc70 comp: Remove some vkDeviceWaitIdle calls and document other 2020-07-24 09:12:22 +00:00
Ryan Pavlik b70d14f6b0 st/oxr: Convert some more missed subaction path iterations to x-macro usage.
Also make Doxygen expand macros so that these usages still result
in reasonable developer docs.
2020-07-23 15:40:18 -05:00
Ryan Pavlik a9a502952a st/oxr: Fix multiplicity of bound_path per action.
Thanks to @haagch for the start of this patch.
2020-07-23 14:34:38 -05:00
Ryan Pavlik ae59a3ce15 st/oxr: Add design documentation for OpenXR input subsystem. 2020-07-23 14:29:12 -05:00
Ryan Pavlik 5ba5e6b03b st/oxr: Fix typo 2020-07-23 12:50:17 +01:00
Jakob Bornecrantz ee6aa4ee1d xrt: Make swapchain static image bit match OpenXR 2020-07-23 12:39:12 +01:00
Ryan Pavlik a04c162ab3 st/oxr: Centralize the lists of subaction paths using x-macros. 2020-07-22 16:00:23 -05:00
Ryan Pavlik e6abf3dea2 ipc: Docs 2020-07-22 16:17:09 +00:00
Christoph Haag 138fcc49d8 st/oxr: Fix haptic actions being disabled
fixes d226a60a
2020-07-22 00:45:44 +02:00
Jakob Bornecrantz 7818a5b9cf st/oxr: Implement xrEnumerateBoundSourcesForAction 2020-07-21 22:41:13 +00:00
Jakob Bornecrantz 9f684dbc21 st/oxr: Add a very ugly stub implementation of xrGetInputSourceLocalizedName 2020-07-21 22:41:13 +00:00
Jakob Bornecrantz 53a0646e24 st/oxr: Add better verification in xrGetInputSourceLocalizedName 2020-07-21 22:41:13 +00:00
Jakob Bornecrantz 5e629b3437 st/oxr: Tidy header 2020-07-21 22:41:13 +00:00
Christoph Haag d226a60aac st/oxr: Combine input values
This enables binding two different inputs to the same action, for example
/user/hand/left/input/select/click and /user/hand/left/trigger/click to
the same grab action.

Also takes care of using the correct timestamp of the input that is
responsible for the last overall value change.
2020-07-21 20:59:07 +02:00
Jakob Bornecrantz b87fd91bc8 st/oxr: Send XrEventDataInteractionProfileChanged events on interaction profile changes 2020-07-20 19:52:31 +01:00
Jakob Bornecrantz 56386aa1d7 st/oxr: Implement needed checks for xrGetCurrentInteractionProfile 2020-07-20 19:34:41 +01:00
Jakob Bornecrantz b0593d7012 st/oxr: Better error message for unhandled case in xrGetCurrentInteractionProfile 2020-07-20 19:34:41 +01:00
Jakob Bornecrantz 18957e0636 st/oxr: Fix the any handiness controllers not getting assigned to right 2020-07-20 19:34:41 +01:00
Jakob Bornecrantz 9f11287fa3 st/oxr: A slightly better stub implementation of xrEnumerateBoundSourcesForAction 2020-07-20 19:34:41 +01:00
Jakob Bornecrantz 536e461776 ipc: Implement xrt_compositor::import_swapchain 2020-07-20 13:50:01 +00:00
Jakob Bornecrantz 11b2dfe213 ipc: Add function to import a swapchain 2020-07-20 13:50:01 +00:00
Jakob Bornecrantz 9c490127bb ipc: Fix in_handles handling by syncing with the server 2020-07-20 13:50:01 +00:00
Jakob Bornecrantz a41c1ce1c5 c/main: Implement xrt_compositor::swapchain_import 2020-07-20 13:50:01 +00:00
Jakob Bornecrantz d5a702cd47 c/main: Use new Vulkan image allocator helper 2020-07-20 13:50:01 +00:00