Commit graph

1173 commits

Author SHA1 Message Date
Ryan Pavlik c42675437b st/gui: Remove no-longer-needed timekeeping. 2020-05-27 18:40:56 -05:00
Ryan Pavlik c7841fd73c inc/xrt: Improve docs for prober interface. 2020-05-27 18:40:56 -05:00
Jakob Bornecrantz aa0523e535 c/main: Only allocate one image for static swapchains 2020-05-27 21:57:48 +01:00
Jakob Bornecrantz e8e7493679 ipc: Pass all arguments to create swapchain image 2020-05-27 21:57:48 +01:00
Jakob Bornecrantz efd35da334 st/oxr: Correctly translate XrSwapchainCreateFlags 2020-05-27 21:21:00 +01:00
Jakob Bornecrantz 0aeb2ccfb2 st/oxr: Turn XrPaths into atoms 2020-05-27 21:21:00 +01:00
Jakob Bornecrantz 7cf5edbf87 st/oxr: Now that IPC correctly wait frames check predicted display for zero 2020-05-27 18:12:26 +01:00
Jakob Bornecrantz 51545411f9 st/oxr: Validate time better xrConvertTimeToTimespecTimeKHR 2020-05-27 18:12:26 +01:00
Jakob Bornecrantz ef41cf2088 u/time: Use a very large hammer to "fix" time_state 2020-05-27 17:50:06 +01:00
Jakob Bornecrantz 18fbd3f819 ipc: Make the XR client actually wait in wait frame by setting the correct semaphore value 2020-05-27 17:50:06 +01:00
Ryan Pavlik 168f2ced41 inc/xrt: Improve xrt_instance documentation 2020-05-26 19:36:28 +00:00
Ryan Pavlik 16d3020ae8 include/xrt: Fix doxygen warning. 2020-05-26 19:36:28 +00:00
Jakob Bornecrantz 4039dc7096 st/oxr: Validate some internal state and improve error message 2020-05-26 19:34:49 +01:00
Christoph Haag 41e3a6fd17 st/oxr: error on displayTime <= 0 in xrEndFrame 2020-05-26 19:34:49 +01:00
Jakob Bornecrantz 589a4ad3e9 st/oxr: Better printing of envBlendMode errors 2020-05-26 19:34:49 +01:00
Christoph Haag 4ea17ce7be st/oxr: Always error on unsupported blend mode
The spec requires always returning an error if the blend mode is unsupported:

XR_ERROR_ENVIRONMENT_BLEND_MODE_UNSUPPORTED must be returned if
XrFrameEndInfo::environmentBlendMode is not supported.
2020-05-26 19:34:49 +01:00
Ryan Pavlik 5383944f85 comp/main: Fix warning 2020-05-26 11:25:03 -05:00
Ryan Pavlik e565ab6d0f d/psvr: Fix warnings 2020-05-26 11:25:03 -05:00
Ryan Pavlik 3624c17754 st/oxr: Fix some warnings by initializing variables. 2020-05-26 11:25:03 -05:00
Ryan Pavlik 525f9c09f2 inc/xrt: Documentation improvements and cleanups. 2020-05-26 11:24:57 -05:00
Ryan Pavlik 0f7832f2c8 st/p: Fix warnings when building without OpenCV 2020-05-26 11:21:09 -05:00
Jakob Bornecrantz 98d11709fb st/oxr: Remove head offset when submitting layers 2020-05-26 11:33:58 +01:00
Lubosz Sarnecki eab3cac623 st/oxr: Verify valid swapchain array index for quads. 2020-05-26 11:33:58 +01:00
Lubosz Sarnecki 8b0a43a64e st/oxr: Test for XR_ERROR_POSE_INVALID.
In quad verification.
2020-05-26 11:33:58 +01:00
Lubosz Sarnecki b1541c2d1e st/oxr: Return XR_ERROR_SWAPCHAIN_RECT_INVALID.
For out of bounds imageRect offsets on quad layers.
2020-05-26 11:33:58 +01:00
Lubosz Sarnecki 1bad77efb4 st/oxr: Return XR_ERROR_SWAPCHAIN_RECT_INVALID.
For negative imageRect offsets on quad layers.
2020-05-26 11:33:58 +01:00
Jakob Bornecrantz 129d76687e c/main: Idle VkDevice after presenting VkSwapchain 2020-05-26 11:33:58 +01:00
Jakob Bornecrantz 7ab48b691c c/main&ipc: Adopt to flip y in layers change
Client side changes by Lubosz Sarnecki.
2020-05-26 11:33:58 +01:00
Lubosz Sarnecki 9c8d0ae3cc xrt: Pass the flip y on layer per layer basis.
st/oxr: Adopt to flip y in layers change.
c/client: Adapt to flip y in layers change.
Set true for GL and false for Vulkan.
2020-05-26 11:33:58 +01:00
Lubosz Sarnecki e445f60ccf ipc: Add client side support for layers. 2020-05-26 11:33:58 +01:00
Jakob Bornecrantz 83ace60132 c/main: Add simple support for new layer interface 2020-05-26 11:33:58 +01:00
Jakob Bornecrantz e36e457560 c/client: Add full support for new layer interface 2020-05-26 11:33:58 +01:00
Lubosz Sarnecki 9349193d0c st/oxr: Use new layer interface and accept multiple projection and quad layers.
Authered by Jakob Bornecrantz and Lubosz Sarnecki.
2020-05-26 11:33:58 +01:00
Jakob Bornecrantz 84700f3209 xrt: Add layers to the compositor interface 2020-05-26 11:33:58 +01:00
Jakob Bornecrantz f9e933af39 d/psmv: Transform the ball tip pose so it can be used for pointing 2020-05-25 19:50:31 +00:00
Christoph Haag 07d8fdae46 build: Set XRT_HAVE_V4L2 in meson too 2020-05-25 20:50:33 +02:00
Jakob Bornecrantz b7b9d9307b ipc: Remove leftover fprintf (NFC) 2020-05-23 13:54:49 +01:00
Jakob Bornecrantz cea8f93892 st/oxr: Fix missed change from MNDX_egl_enable name change 2020-05-21 11:20:32 +01:00
Jakob Bornecrantz d37f446def st/oxr: Update openxr header and switch to XR_MNDX_egl_enable 2020-05-20 18:08:56 +00:00
Ryan Pavlik 75d05c49de build: Fix missed rename of config 2020-05-19 16:15:00 -05:00
Christoph Haag 854272a7d0 d/vive_controller: Don't infinitely loop in device update
This prevented the update thread from being joined and the driver from being destroyed.
2020-05-14 00:25:34 +02:00
Christoph Haag b32652c4df ipc: Implement xrWaitFrame by waiting on a shared semaphore v2
Version 2 additions by Jakob, still use a semaphore to wake up the client.
But now instead call the compositor wait frame and have that thread wake up
the client, and return immediatly on the IPC channel.
2020-05-13 17:07:08 +01:00
Jakob Bornecrantz ac38679641 r/debug: Fix ODR rule violation
Closes #79
2020-05-12 22:06:10 +01:00
Ryan Pavlik 4638b0af7b build: Switch all CMake options to XRT_... to match what's used in source.
Also revise other small related parts of the build to make them more clear and consistent.
2020-05-12 11:52:51 -05:00
Ryan Pavlik 4dd7a603f4 xrt: Temporarily fix build broken by layer violation. 2020-05-12 11:52:51 -05:00
Ryan Pavlik 098ddde5da ipc: Fix typo 2020-05-12 11:46:53 -05:00
Christoph Haag 653ca1d39d d/vive: Declare struct forward declaration as extern
Fixes build with gcc on arch.
2020-05-12 15:38:04 +02:00
Lubosz Sarnecki 136794ab63 c/distortion: Idle before running destructor. 2020-05-11 20:22:51 +01:00
Lubosz Sarnecki 3e88a850ff c/renderer: Use vk_submit_cmd_buffer from vk_helpers. 2020-05-11 20:22:51 +01:00
Lubosz Sarnecki dc45605c84 c/renderer: Use vk_init_cmd_buffer from vk_helpers. 2020-05-11 20:22:51 +01:00
Lubosz Sarnecki e8d273bc41 aux/vk: Add vkFlushMappedMemoryRanges. 2020-05-11 20:22:51 +01:00
Lubosz Sarnecki 54985b110a aux/vk: Add descriptor set functions. 2020-05-11 20:22:50 +01:00
Lubosz Sarnecki f131739c00 aux/vk: Take VkExtent2D and VkImageUsageFlags in vk_create_image_simple. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki c09beb9efb aux/vk: Add vk_get_access_flags. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 06ce79272d aux/vk: Add vk_check_error macro. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 6aa1b4e571 aux/math: Add function to calculate view matrix from pose. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 0b6d97ec8f aux/math: Add matrix_4x4 identity and matrix_4x4_muliply. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 0e5d10ca39 c/renderer: Rename comment. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 501d8dadd4 c/main: Split nvidia test to function. 2020-05-11 20:21:58 +01:00
Lubosz Sarnecki 03074cd52e st/oxr: Unreleased swapchain must return XR_ERROR_LAYER_INVALID. 2020-05-11 20:21:58 +01:00
Jakob Bornecrantz d8538d3a2f gui: Require OpenGL version 3.3 2020-05-11 18:13:49 +00:00
Christoph Haag 26539e79b6 ipc: Fix looking up tracking origins
Fixes #78
2020-05-09 21:14:24 +02:00
Jakob Bornecrantz cf3a337547 ipc: Be paranoid about tracking origins 2020-05-09 19:37:48 +01:00
Christoph Haag 5908c33439 d/survive: Add survive driver 2020-05-09 13:12:06 +00:00
Christoph Haag 5b2efcbb7a st/prober: Fix typo in error message 2020-05-09 13:12:06 +00:00
Jakob Bornecrantz 66bcdf712e ipc: Track tracking origins with variable tracking 2020-05-09 12:43:26 +01:00
Jakob Bornecrantz ee163cbdb2 ipc: Reflect tracking origins correctly 2020-05-09 12:43:26 +01:00
Jakob Bornecrantz 694d978e25 st/prober: Name the tracking origin and make offset editable 2020-05-09 12:43:26 +01:00
Ryan Pavlik 8f6b7b930a ipc: Output the attempted filename in the bind error message. 2020-05-08 14:53:03 -05:00
Jakob Bornecrantz e620fa9063 st/prober: Refactor JSON config loading so that we print less errors when we don't need the config 2020-05-07 22:25:44 +00:00
Jakob Bornecrantz 1744715a5d u/file: Do not print errors 2020-05-07 22:25:44 +00:00
Ryan Pavlik 83cace51d4 ipc: Add error message on bind failure. 2020-05-07 17:00:25 -05:00
Ryan Pavlik c4f8c7fdf7 ipc: Unlink on exit, not before start. 2020-05-07 16:55:10 -05:00
Ryan Pavlik acbac4f1a6 t/service: Add ability to generate, link, install systemd unit files 2020-05-07 16:54:17 -05:00
Ryan Pavlik 5935fad73b ipc: Add ability for service to be launched by systemd socket activation. 2020-05-07 16:54:11 -05:00
Ryan Pavlik d7e84cf5b5 build: Fix include directories for IPC server module 2020-05-07 15:46:29 -05:00
Ryan Pavlik b52b3ec649 meson: Improve build when sdl2 not available
Unfortunately doesn't fix 32-bit meson CI
2020-05-07 20:04:08 +00:00
Christoph Haag aaa2f0a0bd d/vive_controller: read from usb with timeout
This aligns with the vive HMD driver and fixes high CPU usage.
2020-05-07 21:24:43 +02:00
Christoph Haag dc4dcf15a9 d/vive_controller: Fix left index controller imu
The IMU in the left index controller has a different orientation
than the right one.
2020-05-05 19:50:20 +00:00
Christoph Haag f8b2e179cb d/vive_controller: index controller trackpad: send 0,0 position after release 2020-05-05 14:19:37 +00:00
Christoph Haag 344846b3e2 aux/vk: Print available GPUs with XRT_COMPOSITOR_PRINT_DEBUG
Useful for finding out a gpu index to use for XRT_COMPOSITOR_FORCE_GPU_INDEX.
2020-05-05 15:12:08 +02:00
Christoph Haag d95c77ad54 comp: Also enable vk debug print with XRT_COMPOSITOR_PRINT_DEBUG
This is useful because it prints which GPU the compositor runs on.
2020-05-05 15:12:08 +02:00
Christoph Haag a1b6efd16b d/vive_controller: Report zero values for trigger and trackpad
Turns out we actually want to know when theose transition into/over zero.
2020-05-04 21:25:03 +02:00
Jakob Bornecrantz 695ac70dab st/oxr: Silence warning about uninitialized variable and add todo (NFC) 2020-05-04 18:05:13 +01:00
Christoph Haag cf0e5d7861 st/oxr: store preferred path per binding, not per action
Fixes d62c2d2011

For any one action, multiple bindings may be suggested. The preferred/matched
input path depends on which binding is active.

Each bindings already stores a list of actions for which the suggested bindings
matched any of the input paths, just add a corresponding list *which* path matched.
2020-05-04 17:29:43 +02:00
Christoph Haag 2a58d1225f bindings: Don't create broken subpath for haptic output
This macro created two paths for haptics, the first of which was useless/wrong:
/user/hand/*/output/haptics/
/user/hand/*/output/haptics
2020-05-04 17:29:43 +02:00
Jakob Bornecrantz c582bde17a d/dd: Make touchpad a single input 2020-05-03 22:58:47 +00:00
Christoph Haag d62c2d2011 st/oxr: properly enable binding to /x and /y
Store Thumbstick, Trackpad etc. data internally in a vec2f.
The knowledge that a binding path ../x and ../y refers to the x and y components of this vec2f
is stored as an INPUT_REDIRECT_VEC2_X_TO_VEC1 or INPUT_REDIRECT_VEC2_Y_TO_VEC enum.

Actions now also store the index of the binding paths it matched to,
e.g. when an action binds ../trackpad/y to an input that provides bindings [../trackpad, ../trackpad/x, ../trackpad/y],
the index 2 is stored.

v2: Clarify preferred binding path index variable
2020-05-03 22:58:47 +00:00
Jakob Bornecrantz d8428b2544 ipc/client: Don't assert on devices with no output 2020-05-01 19:20:03 +01:00
Christoph Haag 7ab1ca727f ipc: Make send_and_get_reply thread safe
When multiple threads call OpenXR functions, make sure one thread
can not read the reply meant for another thread.

Unfortunately this also blocks other OpenXR functions from being
called while xrWaitFrame() is blocking.
2020-05-01 16:11:26 +02:00
Christoph Haag d491f59b55 ipc: Log unexpected messaging events as errors
Any of these unexpected events will likely lead to more errors down the line.
Always printing them as errors will make it easier to diagnose the ipc.
2020-05-01 16:11:00 +02:00
Christoph Haag a195f22bc3 ipc: disconnect client on xrDestroyInstance()
The service considers clients to be connected as long as the fd is not closed.
After destroying an XrInstance this prevents the client from creating a subsequent XrInstance.
2020-05-01 02:49:44 +02:00
Jakob Bornecrantz a4dcdf1f0b ipc/server: Improve error messages 2020-04-30 20:45:34 +01:00
Jakob Bornecrantz 6d770336b7 ipc/server: Pass in MSG_NOSIGNAL to not get SIGPIPEd 2020-04-30 20:44:35 +01:00
Jakob Bornecrantz a02293e8dd ipc: Improve swapchain handling a tiny bit 2020-04-30 20:44:35 +01:00
Jakob Bornecrantz 11539e28b7 ipc/server: Fix swapchain being swapped left and right 2020-04-30 14:00:27 +01:00
Ryan Pavlik 457d411016 comp: Remaining 32-bit warning fixes 2020-04-29 17:47:32 -05:00
Ryan Pavlik 233c63a773 comp: Fix Wint-to-pointer-cast warnings on 32-bit.
Culprit is a Vulkan non-dispatchable handle:
Fix is simpler than for OpenXR because we aren't a Vulkan
implementation so they're all opaque to us.
2020-04-29 17:44:07 -05:00
Ryan Pavlik 53f9eb332d st/oxr: Fix more pointer conversion warnings. 2020-04-29 17:44:07 -05:00
Ryan Pavlik e89a3c1d8f st/oxr: Fix 32-bit warnings when checking for null handles 2020-04-29 17:44:07 -05:00