Commit graph

85 commits

Author SHA1 Message Date
Ryan Pavlik 33c0287f8b xrt: Rename all "num" parameters and fields to "count" (or "capacity" as appropriate)
This matches the OpenXR usage: the array is the plural of the element type,
and the count is the singular element type plus "count" (usually CountOutput
because of the two-call idiom)

Includes fixes to other code to match API changes.
2021-11-13 12:04:38 +00:00
Jakob Bornecrantz c8d57a4ff3 d/vive: Add some more tracing 2021-09-29 21:38:33 +00:00
Jakob Bornecrantz 98c1cb5358 d/vive: Add tracing support focusing on device message processing 2021-09-29 21:38:33 +00:00
Moses Turner 56f34d23b9 d/vive: Use m_relation history for HMD 2021-09-15 12:13:14 -05:00
Jakob Bornecrantz 992642bdf8 d/vive: Tidy warning 2021-09-01 22:00:46 +01:00
Jakob Bornecrantz 407461fd4f d/vive: Silence warnings from when the camera is running 2021-09-01 22:00:46 +01:00
Jakob Bornecrantz 601a6832b8 d/vive: Use u_device_free to free distortion mesh data 2021-08-20 17:09:05 +01:00
Jakob Bornecrantz a89c8309c7 u/vive: Pass in logging level to parse function 2021-08-20 13:42:11 +01:00
Jakob Bornecrantz 00aca14832 u/vive: Add vive_config_teardown function to free any pointers that needs freeing. 2021-08-20 13:42:11 +01:00
Jakob Bornecrantz a6b908f3ce d/vive: Add comment and assert to get_view_pose (NFC) 2021-04-27 16:51:56 +01:00
Jakob Bornecrantz 8277df418d xrt: Make eye_relation argument to xrt_device_get_view_pose const (NFC) 2021-04-27 01:44:13 +01:00
Ryan Pavlik 48d043796c d/vive: Port to using new zero/identity defines 2021-04-26 22:38:42 +00:00
Ryan Pavlik 3b0a6a558c d/vive: Port to u_device_get_view_pose 2021-04-26 22:38:42 +00:00
Moses Turner 7cd2a33737 drivers: switch blend mode to array 2021-04-11 04:08:49 -05:00
Jakob Bornecrantz 9695e90d95 d/vive: Setup the variable tracking for imu fusion 2021-04-02 16:00:42 +01:00
Christoph Haag aa65480607 d/vive: Use a mutex for get_tracked_pose 2021-03-09 12:39:12 +00:00
Christoph Haag 9ea02ac032 d/vive: Give consistent name to HMD 2021-03-02 17:50:19 +00:00
Christoph Haag ab70115a89 d/vive: Add HMD rotation pose prediction 2021-02-17 19:59:52 +01:00
Christoph Haag c67a6ccd34 xrt: Add xrt_device::serial for uniquely identifying devices if possible
d: Make controller serials unique by appending number

For drivers that do not (yet) know a persistent unique id per device.
2021-02-12 00:38:51 +01:00
Christoph Haag f93209a1ed d/vive: Remove vive_device::variant and use variant from config 2021-02-11 20:54:31 +01:00
Christoph Haag b87c7d5e61 d/survive: Port to vive_config parsing 2021-02-01 15:23:19 +00:00
Christoph Haag e4b0e6282d d/vive: Factor out config into separate struct 2021-02-01 15:23:19 +00:00
Jakob Bornecrantz 2b996f30c4 xrt: Reflow after column change 2021-01-15 13:50:32 +00:00
Christoph Haag 9e788df463 xrt: Remove lens center from xrt_view
It's only used internally in drivers now.
2020-11-12 16:04:00 +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 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 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 8e24dda794 xrt: Remove out_timestamp argument to xrt_device::get_tracked_pose 2020-09-07 23:37:09 +01: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 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
Christoph Haag 12c0f5d75a d/vive: Destroy watchman hid device on shutdown 2020-08-05 20:32:51 +00: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 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
Christoph Haag b073e3dfb9 xrt: Add support for assigned device roles
Abandons the assumption that in oxr_system.xdevs[], index 0 is HMD,
1 is left controller, 2 is right controller.

Now to represent the dynamically assigned roles, oxr_system.role contains
the index for a device in oxr_system.xdevs[] for head, left and right.

This role assignment happens on the client side and currently can not be updated
from the server side.

Also adds an enum that device drivers set indicating allowed assignments
(many controllers are physically designed to be held in a specific hand).

This also adds support for configurations with only a HMD and a right controller.
2020-07-13 18:03:01 +02:00
Christoph Haag 5788fb90a2 drivers: Add rotation/position tracking bool to xdev
xrGetSystemProperties() will return these values to application in XrSystemTrackingProperties
using the xdev assigned to head.
2020-07-13 18:03:01 +02:00
Lubosz Sarnecki 499751e4fa d/vive: Use VIVE_ERROR when vive_device is available. 2020-07-09 14:11:35 +02:00
Lubosz Sarnecki 5dff60a93d d/vive: Create common header for controller and hmd. 2020-07-09 13:38:07 +02:00
Lubosz Sarnecki dfcff5e806 d/vive/device: Use VIVE_WARN and VIVE_INFO. 2020-07-09 13:38:07 +02:00
Lubosz Sarnecki 7121c260ae d/vive/device: Replace old debug macros with new ones. 2020-07-09 13:38:07 +02:00
Lubosz Sarnecki eaea6888a7 d/vive: Port logging to u_logging. 2020-07-09 13:37:58 +02:00
Lubosz Sarnecki eb51b89e9c d/vive_config: Move config and json related code to vive_config.
Isolate JSON config related code in vive_config.
2020-07-02 18:42:42 +02:00
Lubosz Sarnecki 2580958e2c d/vive: Use functions from u_json.
Uses the old and newly moved u_json functions.
Creates defines to keep short syntax.
Strings are now stored with static sizes in favor of being allocated
dynamically and not freed.
2020-07-02 18:42:42 +02:00
Lubosz Sarnecki f9d92890ce d/vive: Fix crash on Vive Pro as it's missing a json key.
The key "lens_separation" is not available in my Vive Pro config.
2020-07-02 18:35:18 +02:00
Christoph Haag e3b74c2e70 d/vive: Fix _json_get_string 2020-04-28 10:22:42 +00:00