Lubosz Sarnecki
d047ce8af4
d/vive/controller: Add Vive tracker gen 2 support.
2020-07-02 19:29:14 +02:00
Lubosz Sarnecki
6662e0caef
d/vive/controller: Add Vive tracker gen 1 support.
2020-07-02 19:29:14 +02:00
Lubosz Sarnecki
2fd6fe2f16
d/vive/prober: Print error before device init.
2020-07-02 19:29:14 +02:00
Lubosz Sarnecki
260cfd8d26
d/vive/controller: Use u_json and move config to vive_config.
...
To be consistent with the headset implementation, move all config
related code to vive_config and use u_json consistently with static
string sizes.
2020-07-02 18:42:42 +02:00
Lubosz Sarnecki
53619fa64e
d/vive/controller: Move prober interface to vive_prober.
...
Create propper initializer for the controller and move the proper
interface to vive_prober to be more consistent with the device. This
will also allow to share more code like the config parsing in a later
patch.
2020-07-02 18:42:42 +02:00
Lubosz Sarnecki
f33c6356d7
d/vive: Rename vive_controller files.
...
To be more consistent with the rest of the driver, rename the controller
files to match the others style.
2020-07-02 18:42:42 +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
bb52a673eb
d/vive/controller: Parse vec3 correctly as arrays.
...
The u_json_get_vec3 function only works for json vec3 objects with x, y,
z members. The function unnoticedly returned false before.
2020-07-02 18:42:42 +02:00
Lubosz Sarnecki
166346ad6e
u/json: Add u_json_get_matrix_3x3.
...
As seen in Vive driver.
2020-07-02 18:42:37 +02:00
Lubosz Sarnecki
a9db6fbd40
u/json: Add fprintf error messages.
2020-07-02 18:42:37 +02:00
Lubosz Sarnecki
0bdd1133e4
u/json: Add u_json_get_vec3_array.
...
As seen in Vive driver.
2020-07-02 18:42:30 +02:00
Lubosz Sarnecki
efd351f5c1
d/vive/controller: Initialize debug and spew before it's used.
2020-07-02 18:36:21 +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
08c6fe9744
d/vive_controller: Fix imu timestamp calculation
...
Philipp Zabel looked into it and it turns out the timestamp from the
imu sample should be the third byte, not the fourth.
2020-07-02 11:33:58 +02:00
Christoph Haag
acdda780b6
d/vive_controller: implement remaining "gen2" input events
...
v2: document and clarify imu sample timestamp
2020-07-01 18:36:41 +02:00
Christoph Haag
d8de19d4ae
d/vive_controller: Add and set Index "Gen2" input names
2020-07-01 18:36:41 +02:00
Christoph Haag
184dd277bf
bindings: Fix Index squeeze/force binding declaration
2020-07-01 18:36:41 +02:00
Jakob Bornecrantz
5bad87690f
ipc: Avoid deadlocks due to render timing helper not getting data in time
2020-07-01 13:22:03 +01:00
Jakob Bornecrantz
addeea2acf
d/psmv: When in 3dof mode return angular and linear velocities
2020-06-26 10:41:13 +01:00
Christoph Haag
c6d25a9773
st/oxr: Convert action timestamp with time_state_monotonic_to_ts_ns
...
Action timestamps were missing this conversion to XrTime with time_state_monotonic_to_ts_ns()
which caused them to be out of sync with the predicted frame times and device "pose at" timestamps.
2020-06-26 01:41:08 +02:00
Christoph Haag
2a9a14c605
d/survive: Report linear and angular velocities from survive
2020-06-26 01:41:08 +02:00
Christoph Haag
b7ea0ce2b3
st/oxr: Support next-chained XrSpaceVelocity in XrSpaceLocation
2020-06-26 01:41:08 +02:00
Jakob Bornecrantz
bf086f8be2
c/client: Add two new linear formats to OpenGL
2020-06-25 19:55:08 +00:00
Jakob Bornecrantz
0be1456b32
c/main: Add support for more linear formats and prioritize them better
2020-06-25 19:55:08 +00:00
Jakob Bornecrantz
70a6240d48
comp: Use a sRGB window swapchain
2020-06-25 19:55:08 +00:00
Jakob Bornecrantz
f13f911e8a
c/main: Implement prepare_session and poll_events
2020-06-25 15:48:34 +01:00
Pete Black
bd5aa24463
xrt: Add multi client and overlay client support
2020-06-25 15:48:34 +01:00
Jakob Bornecrantz
a26fa7bbdc
c/client: Tidy whitespace
2020-06-25 12:58:22 +01:00
Jakob Bornecrantz
513ebd9957
ipc: Remove no longer used semaphore code (NFC)
2020-06-24 22:57:00 +01:00
Jakob Bornecrantz
e59b4a1cb1
ipc: Use new frame timing code
2020-06-24 11:42:46 +01:00
Jakob Bornecrantz
83081f9cc1
u/render_timing: Add helper code for frame timing
2020-06-24 00:56:45 +01:00
Jakob Bornecrantz
3275f00464
st/oxr: Use a semaphore to ensure wait frame is released after begin frame has been called
2020-06-23 21:31:03 +01:00
Jakob Bornecrantz
f5359b655e
os/threading: Add semaphore
2020-06-23 21:31:03 +01:00
Jakob Bornecrantz
ef282c7df2
os/time: Add function to convert to a timespec struct
2020-06-23 21:31:03 +01:00
Jakob Bornecrantz
b75f4f844b
xrt: Add frame_id to compositor frame calls
2020-06-23 21:31:00 +01:00
Jakob Bornecrantz
5ac0c7a139
xrt: Make prepare_session and poll_events return xrt_result_t
2020-06-23 12:39:57 +01:00
Jakob Bornecrantz
017e6738e0
d/psmv: Slightly improved locking and printing
2020-06-23 12:39:57 +01:00
Christoph Haag
f31f1edde2
ipc: Set destroyed swapchains to not active
...
Fixes the service failing to create swapchains with "ERROR: Too many swapchains!"
after one or several sequentially started and quit clients created 32 swapchains.
2020-06-19 14:41:34 +02:00
Lubosz Sarnecki
0dbbe423d9
c/layer_renderer: Implement eye visibility.
2020-06-18 16:03:49 +01:00
Jakob Bornecrantz
e76f698463
c/main: Respect alpha blending layer flag
2020-06-18 16:03:49 +01:00
Jakob Bornecrantz
e8d62d948f
aux/vk: Add helper to create image view with component swizzles
2020-06-18 13:48:10 +01:00
Jakob Bornecrantz
3055102217
tests: Use project code formatting on tests
...
v2: Increase line length, and add to formatting script (rpavlik)
2020-06-17 17:32:23 -05:00
Ryan Pavlik
726e446421
st/oxr: Make sure to clear action state metadata in case input is not active.
...
Also addresses some review comments on earlier changes.
2020-06-17 17:27:59 -05:00
Jakob Bornecrantz
5443e3a069
st/oxr: Work around stict-aliasing warning (NFC)
2020-06-17 12:20:30 +01:00
Christoph Haag
7a1dbbe8a1
st/oxr: Ensure quaternion is normalized in xrLocateViews()
...
In rare cases the state tracker's pose transformations resulted in a quaternion
that accumulated float precision errors such that the norm of the quaternion was
not within float precision of 1.0 anymore.
Introduce a function math_quat_ensure_normalized() that can be used after multiple
operations have been performed on a quaternion.
2020-06-17 13:03:34 +02:00
Ryan Pavlik
876c8bc5d7
inc/xrt: Remove now-unneeded enum.
2020-06-17 11:48:43 +01:00
Jakob Bornecrantz
17f40ecc26
st/oxr: Use the transformed boolean value
2020-06-17 11:48:43 +01:00
Ryan Pavlik
1a5d31b82b
st/oxr: New input transform implementation, fixes conformance failures.
...
Includes unit tests for oxr_input_transform, add to CI
This is a revised implementation using "variants" instead of
"inheritance" in a linked-list.
2020-06-17 10:03:32 +00:00
Christoph Haag
fb103659ef
build: Support building with v4l2 installed but driver disabled
2020-06-17 11:33:13 +02:00
Ryan Pavlik
adbafad079
st/oxr: Rename the remaining oxr_source things to oxr_action
2020-06-16 16:42:38 -05:00
Jakob Bornecrantz
d778c236fe
c/client: A working but non-spec conforming way to get Vulkan clients working
2020-06-16 16:33:04 +01:00
Jakob Bornecrantz
04c150a50d
xrt: Add new error and types for Vulkan command buffers
2020-06-16 00:01:48 +00:00
Benjamin Saunders
f81f568931
aux/vk: Add helper to translate usage bits to Vulkan bits
2020-06-16 00:01:48 +00:00
Benjamin Saunders
fe734bb6e2
aux/vk: Add functions to create semaphores from FDs
2020-06-16 00:01:48 +00:00
Benjamin Saunders
3f744331e1
aux/vk: Declare consistent usage for xr swapchain images
2020-06-16 00:01:48 +00:00
Benjamin Saunders
27d2163f37
aux/vk: Delete nonsensical image usage case
2020-06-16 00:01:48 +00:00
Benjamin Saunders
f45f482d5e
aux/vk: Store Vulkan queue handle directly
2020-06-16 00:01:48 +00:00
Jakob Bornecrantz
65dcc82e3a
comp+ipc: Respect view space layer flag
2020-06-15 23:59:04 +00:00
Jakob Bornecrantz
abf8d5b8bd
st/oxr: More correctly handle spaces for layers
2020-06-15 23:59:04 +00:00
Jakob Bornecrantz
fbd41e0413
xrt: Add new layer flag for view space poses
2020-06-15 23:59:04 +00:00
Ryan Pavlik
1738329138
st/oxr: Give oxr_action and oxr_action_set ref-counted backing data
2020-06-15 18:11:33 -05:00
Ryan Pavlik
640fa1bbe5
st/oxr: Rename the action set and action keys to distinct names.
2020-06-15 17:09:20 -05:00
Ryan Pavlik
2f8d1a54a5
st/oxr: Reparent action set/action attachment.
...
They are no longer a linked list and a handle, but simple dynamic arrays.
2020-06-15 17:09:15 -05:00
Ryan Pavlik
894aa8d61f
st/oxr: Rename some types, functions, and variables for clarity
2020-06-15 17:08:05 -05:00
Ryan Pavlik
6fe801e766
st/oxr: Re-use a structure
2020-06-15 17:04:00 -05:00
Ryan Pavlik
6be05e2107
st/oxr: Factor out source cache teardown function
2020-06-15 17:04:00 -05:00
Ryan Pavlik
821706e0e4
u/hashmap: Add "empty" function.
...
Used for cleanup assertions to start with: i.e. at some known point,
the hash map should be empty.
2020-06-15 17:04:00 -05:00
Ryan Pavlik
4a4bed8df4
st/oxr: Handle treadmill user path
2020-06-15 17:04:00 -05:00
Ryan Pavlik
2a2157af66
st/oxr: Clean up comments
2020-06-15 10:46:29 -05:00
Ryan Pavlik
79b2cf6703
inc/xrt: Improve docs
2020-06-15 10:36:28 -05:00
Christoph Haag
8141a3c761
ipc: Reset waitframe semaphore when client disconnects
...
The semaphore was usually kept at a value of 1 after a client disconnected,
meaning the next client to connect was never blocked on it.
2020-06-15 15:47:56 +02:00
Jakob Bornecrantz
cbb91904e9
st/oxr: Remove old validation that's now done in api function
2020-06-14 23:01:13 +01:00
Jakob Bornecrantz
2dcf4a819b
st/oxr: Improve xrSuggestInteractionProfileBindings validation of input
2020-06-14 23:01:13 +01:00
Gonzalo Aguilar Delgado
cdde7cd2c2
FIX #88 : Add required dependencies
2020-06-13 17:05:14 +00:00
Jakob Bornecrantz
e4a4a5e7b2
st/oxr: Use correct enum type when converting from eye visibility NFC
2020-06-13 13:58:14 +01:00
Ryan Pavlik
172ff0f434
ipc: Simplify code by just copying a structure.
2020-06-09 17:13:06 -05:00
Ryan Pavlik
1881bb6357
ipc: Further de-duplication of structures
2020-06-09 17:07:22 -05:00
Ryan Pavlik
b6b5052d48
ipc: Remove structs that effectively duplicate xrt_layer_data
...
The only non-duplicate members are the swapchain IDs,
so store those in their own array as already done elsewhere in the
codebase.
2020-06-09 17:07:22 -05:00
Ryan Pavlik
f407fb9461
ipc: Doc comments
2020-06-09 17:07:22 -05:00
Ryan Pavlik
eaa4c186ce
ipc: Port to using xrt_sub_image where possible.
...
This highlighted several places where we are not considering an image rect,
but possibly should be.
2020-06-09 16:26:01 -05:00
Ryan Pavlik
26ab046fba
comp: Remove no-longer-needed comp_layer_quad struct.
...
Replaced by xrt_comp_layer_quad.
Also add some comments.
2020-06-09 16:19:39 -05:00
Ryan Pavlik
7446dc08d5
xrt: Rename output parameter of acquire_image to out_image.
...
As is tradition.
2020-06-09 15:56:26 -05:00
Ryan Pavlik
03f85fcd0a
inc/xrt: Doc comment improvements
2020-06-09 15:52:33 -05:00
Ryan Pavlik
d7562ba65c
fixup commit
2020-06-09 15:32:51 -05:00
Ryan Pavlik
8ffad1112f
inc/xrt: Update docs to fix Doxygen warnings
2020-06-09 15:32:39 -05:00
Ryan Pavlik
e0e5aeceda
xrt: name xrt_swapchain pointers consistently "xsc" or similar.
...
As is tradition.
2020-06-09 15:29:46 -05:00
Jakob Bornecrantz
45c977d199
xrt: Introduce xrt_sub_image and xrt_layer_projection_view_data
2020-06-09 20:32:53 +01:00
Jakob Bornecrantz
259bd52dbd
st/oxr: Convert layer bits from OpenXR to XRT
2020-06-09 19:04:48 +00:00
Jakob Bornecrantz
55e026245a
xrt: Use new xrt_layer_data in layer functions
2020-06-09 19:04:48 +00:00
Jakob Bornecrantz
320c9ab3cb
ipc+comp: Use new xrt_layer_data and friends struct
2020-06-09 19:04:48 +00:00
Jakob Bornecrantz
5912964ded
ipc+comp: Even more make layers the same
2020-06-09 19:04:48 +00:00
Lubosz Sarnecki
08d81e5950
ipc+comp: Make layer structs more consistent.
...
Add missing fields.
Sort layer struct members.
ipc/protocol: Move xdev_id and name to common layer struct.
2020-06-09 19:04:48 +00:00
Jakob Bornecrantz
15be0209b9
xrt: Introduce xrt_layer_[quad|stereo_projection]_data struct
2020-06-09 19:04:48 +00:00
Lubosz Sarnecki
cbb8573d35
xrt: Move layer enums to compositor header.
2020-06-09 19:04:47 +00:00
Lubosz Sarnecki
b1d39e7f07
xrt: Move layer enum to xrt namespace.
2020-06-09 19:04:47 +00:00
Ryan Pavlik
435f6c5c89
build: Allow enabling inter-procedural optimization in CMake builds, if supported.
2020-06-09 12:03:08 -05:00
Christoph Haag
bc995e3aab
ipc: Return XR_ERROR_INSTANCE_LOST instead of SIGABRT on the client side
2020-06-05 16:06:32 +02:00
Christoph Haag
cc9b415a8f
xrt: Add xrt_result_t return type to many functions
...
Many functions returned void and were assumed to always succeed, and some functions
returned only a bool to indicate vague success/failure.
Now that these functions get piped over IPC all of them have to be able to indicate
an IPC failure like for example an unreachable service.
With the xrt_result_t return type they now have the opportunity to report various
types of failures.
2020-06-05 16:06:32 +02:00
Christoph Haag
db5db10a19
ipc: Replace ipc_result_t with global xrt_result_t
...
Functions down the line should be able to fail and return a status.
They can be called either through IPC or directly depending on compile settings,
therefore we need an internal result type for various XR_ERROR_* errors, but also IPC failure.
For now functions in ipc_client_utils.c only return XRT_SUCCESS or XRT_ERROR_IPC_FAILURE.
If there is no IPC failure, the generated protocol will extract and return the called functions'
actual return value from the reply.
v2: make failure results negative
2020-06-05 16:02:38 +02:00