Commit graph

484 commits

Author SHA1 Message Date
Jakob Bornecrantz 38f68dc104 xrt: Use xrt_luid_t for deviceLUID 2022-05-04 15:11:24 +00:00
Jakob Bornecrantz b62d871498 xrt: Add xrt_luid_t 2022-05-04 15:11:24 +00:00
Jakob Bornecrantz 07fe47d053 xrt: Add xrt_swapchain_create_properties and related function 2022-05-04 15:48:57 +01:00
Ryan Pavlik 3691d881fc xrt: Adjust includes for intrinsics on Windows/msvc 2022-05-03 22:33:57 +01:00
Ryan Pavlik 14f37dbe4c xrt: Add GPU LUID to xrt_system_compositor_info 2022-05-03 22:32:17 +01:00
Jakob Bornecrantz 91facd10f1 xrt: Add xrt_uuid_t 2022-05-02 17:16:04 +01:00
Jakob Bornecrantz 5f421503e9 st/oxr: Set XR_USE_GRAPHICS_API_VULKAN as a compile define like the others 2022-05-02 15:40:31 +00:00
Jakob Bornecrantz 175ff58f10 build: Remove meson files 2022-04-28 21:36:25 +00:00
nima01 232b3bade5 aux/math: More double-precision matrix and vector support 2022-04-25 19:14:46 +00:00
Ryan Pavlik 2d916c11c5 xrt: Fix OpenXR platform include on Windows 2022-04-18 12:12:43 -05:00
Ryan Pavlik 02435cc033 xrt: clarify comment 2022-04-18 10:54:22 -05:00
Ryan Pavlik 3631289e4f xrt: Rename interface: reserved word in msvc. 2022-04-18 10:52:57 -05:00
Ryan Pavlik 1331e93bdc xrt: Fix typo 2022-04-18 10:52:42 -05:00
Ryan Pavlik 3e6ec47296 monado: Apply clang-tidy fixes to most of the codebase.
All at least visually inspected, some revised from the auto-fixit
2022-04-13 09:34:54 -05:00
Ryan Pavlik 55364cde35 xrt: Manual fixes to clang-tidy issues. 2022-04-13 01:10:14 +01:00
Jakob Bornecrantz cbeebe6ca4 xrt: Add XRT_GET_INPUT_ID 2022-04-09 22:07:06 +01:00
Christoph Haag cb7855b8bd c/client: Ensure the correct GL context is current
when running OpenGL functions.

Co-authored-by: James Hogan <james@albanarts.com>
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2022-04-07 20:17:29 +02:00
Ryan Pavlik 9463de7e6f xrt: Undef Status and Bool in vulkan include if we think the xlib header got included. 2022-04-05 23:32:07 +01:00
Ryan Pavlik 96314d4f76 meson: Define XRT_HAVE_HIDAPI if using it 2022-03-29 09:31:49 -05:00
Jakob Bornecrantz b4f2bc88c8 cmake: Introduce XRT_HAVE_HIDAPI to make HIDAPI controllable 2022-03-28 22:35:01 +00:00
Jakob Bornecrantz 71d9887b5b xrt: Tidy xrt_instance.h (NFC) 2022-03-16 15:46:14 +00:00
Jakob Bornecrantz 57d1394941 xrt: Add XRT_CHECK_RESULT define 2022-03-15 00:16:17 +00:00
Mateo de Mayo 147d4c5d26 xrt: Add groundtruth sink to xrt_slam_sinks 2022-03-14 23:42:13 +00:00
Mateo de Mayo 88bd7a669d xrt: Add pose sink interface 2022-03-14 23:42:13 +00:00
Jakob Bornecrantz 851224123e xrt: Add compositor semaphore interface 2022-03-14 19:52:48 +00:00
Jakob Bornecrantz f4f2196e34 xrt: Add a way to say that timeline semaphores have been enabled 2022-03-14 18:58:35 +00:00
Jakob Bornecrantz 8bda87c855 xrt: Correct xrt_compositor_fence::wait docu 2022-03-08 21:04:56 +00:00
Jakob Bornecrantz 60cd630271 tracking: Add new hand tracking interface header
Co-authored-by: Moses Turner <moses@collabora.com>
2022-03-08 20:38:58 +00:00
Jakob Bornecrantz 7e8f4f46c6 xrt: Add XRT_TIMEOUT to xrt_result_t 2022-03-01 20:59:35 +00:00
Christoph Haag 996a5d3e9a xrt: Move fov from xrt_view to xrt_hmd_parts::distortion 2022-02-19 13:04:32 +00:00
Ryan Pavlik de6e237a9f xrt: Additional doxygen fix. 2022-02-19 01:15:33 +00:00
Christoph Haag 43f0bb4343 xrt: Fix tracking override docs 2022-02-19 00:43:30 +00:00
Ryan Pavlik 1eb6aecdc0 xrt: Improve docs and fix doxygen warnings 2022-02-18 21:22:32 +00:00
Christoph Haag c162ff655b st/oxr: add renderdoc API to xrBeginFrame/xrEndFrame
Usually renderdoc captures frames by hooking the present functions to
recognize when an application is finished rendering a frame.

OpenXR applications might not present to a window. Therefore use the
renderdoc API to capture application frames between xrBeginFrame and
and xrEndFrame.

This allows renderdoc to capture application frames without the need
to modify the application.
2022-02-18 13:44:15 +01:00
Jakob Bornecrantz 9b656cde77 xrt: Remove xrt_device::get_view_pose
Co-authored-by: Christoph Haag <christoph.haag@collabora.com>
2022-02-16 23:15:24 +00:00
Jakob Bornecrantz 780f1763e3 xrt: Add xrt_device::get_view_poses function 2022-02-16 23:15:02 +00:00
Ryan Pavlik 9ad96455a1 xrt: Small doc/interface cleanups. 2022-02-08 10:51:40 -06:00
Ryan Pavlik c9889f776f xrt: Rename xrt_space_graph to xrt_relation_chain.
Rename all functions and instances accordingly as well,
and add documentation for all methods.
2022-01-21 19:54:30 +00:00
Colin Kinloch 0a783ca208 systemd: Use pkgconfig variable systemduserunitdir as unit install directory 2022-01-18 21:11:44 +00:00
Jakob Bornecrantz f0e27a88a3 xrt: Clarify call order on some compositor functions 2022-01-15 00:27:00 +00:00
Jakob Bornecrantz c272549802 xrt: Correctly tag out arguments 2022-01-15 00:05:38 +00:00
Moses Turner 683dc4ea56 gui: add SLAM Stereo option to calibrate gui 2022-01-04 18:19:17 +00:00
Moses Turner 749723f0ba xrt: Remove xrt_view::display::{w|h}_meters
It is not used anywhere.
2021-12-10 21:27:15 -06:00
Ryan Pavlik 5b1c60eeb0 xrt: Add unique_ptr typedef for xrt_device 2021-12-10 21:24:02 +00:00
Jakob Bornecrantz 986cde6750 cmake: Build the IPC irrespectively of the service or not 2021-11-24 21:30:01 +00:00
Christoph Haag a1c00e14fd st/oxr: Implement a basic version of XR_FB_display_refresh_rate 2021-11-22 20:44:18 +00:00
Jan Schmidt 760e8dd3ad meson: Add GStreamer recording support 2021-11-19 04:05:40 +11:00
Ryan Pavlik 3a22c74aa6 xrt: Update some xrt_device docs 2021-11-13 12:29:58 +00:00
Ryan Pavlik b5bcea758d xrt: Rename a prober-related define that wasn't namespaced. 2021-11-13 12:29:58 +00:00
Ryan Pavlik 46fdb32991 xrt: Factor out a function pointer type for the prober "found" functions. 2021-11-13 12:24:15 +00:00
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
Ryan Pavlik 5e55b9d992 xrt: Prober docs. 2021-11-13 12:04:38 +00:00
Ryan Pavlik cc4007a69e cmake: Substantial cleanups and simplifications
We now have a cmake-format config file.
We no longer use list variables for sources, instead using
target_sources when we need to add, in accordance with current
best practice. (This makes it a lot easier to edit too.) There's no more
include_directories(), add_definitions(), or other gently-deprecated
directory-scoped commands, nor any CMake scripts that include
a parent directory reference (named targets instead)
2021-11-12 09:48:37 -06:00
Ryan Pavlik cd5ac5f1c9 xrt: Support multiple blend modes in system compositor info 2021-11-12 03:05:10 +00:00
Nima01 2a1e6debfb st/prober: Support for querying of 'Product name' from Bluetooth devices. 2021-11-09 01:10:20 +00:00
Ryan Pavlik afc2af549f xrt: Improve docs for ref-counting functions. 2021-11-03 17:27:56 -05:00
Ryan Pavlik 9688cd37dd xrt: Improve doc comments in compositor header 2021-10-27 17:05:55 -05:00
Mateo de Mayo ab2da01631 build: Add Basalt as an external SLAM system 2021-10-16 17:02:27 -03:00
Mateo de Mayo 7f247604e3 build: Use pkg-config for finding SLAM systems in CMake and other minor improvements 2021-10-07 14:33:10 -03:00
Mateo de Mayo 67a5946778 xrt: Add units to xrt_imu_sample fields
After using the structure a bit more, and realizing that while different components
sometimes use different units, it is easier to force them to send the imu_samples
in a standardized unit.
2021-10-06 16:41:18 -03:00
Mateo de Mayo 5845155229 xrt: Use doubles in xrt_vec3_f64 2021-10-06 15:23:28 -03:00
Moses Turner ca007be4d5 xrt: Switch to new get_hand_tracking signature 2021-10-02 23:05:46 +01:00
Moses Turner 1c99e8edb5 meson: add option for tracing; align messages 2021-09-28 12:41:01 +00:00
Mateo de Mayo d61a695f13 meson: Allow percetto to be used with meson
You may need to specify --libdir=$installdir/lib when installing percetto,
otherwise it gets installed on $installdir/lib/x86_64-linux-gnu by default and
meson might not look for the appropriate pkgconfig in there.
2021-09-28 12:41:01 +00:00
Jakob Bornecrantz f1f4dd7c8a xrt: Expose XRT_HAVE_WAYLAND and XRT_HAVE_WAYLAND_DIRECT 2021-09-17 11:54:57 +00:00
Christoph Haag dc15dbf75d build/meson: Don't build slam if tracking is disabled
Fixes build with -Dtracking=disabled
2021-09-16 23:33:05 +02:00
Mateo de Mayo 8e8a9c14a9 external: Add slam_tracker.hpp and SLAM build flow 2021-09-15 19:03:55 +00:00
Mateo de Mayo caa9192a26 xrt: Add xrt_tracked_slam interface 2021-09-15 19:03:55 +00:00
Mateo de Mayo cbc74bc9c1 xrt: Add stream_start alternative to xrt_fs for SLAM streaming 2021-09-15 19:03:55 +00:00
Mateo de Mayo 552c03bb2b xrt: Add SLAM sinks 2021-09-15 19:03:55 +00:00
Simon Zeni 47be806428 c/main: Implement WINDOW_DIRECT_WAYLAND 2021-09-15 18:44:18 +00:00
Mateo de Mayo 00a2f891a2 xrt: Add xrt_imu_sink interface 2021-08-27 13:02:18 +00:00
Mateo de Mayo 92fc2784e1 xrt: Add xrt_imu_sample 2021-08-27 13:02:18 +00:00
Christoph Haag cc4e46b3ec xrt: typedef EGLenm too for GLES
Used in XrSwapchainStateSamplerOpenGLESFB added in OpenXR SDK 1.0.16
2021-08-27 02:21:58 +02:00
Jakob Bornecrantz 521f066e72 xrt: Add a Matrix4x4 with f64 2021-08-17 12:04:49 +01:00
Moses Turner cda56ddfbd xrt: Add xrt_vec3_f64 struct 2021-08-16 21:02:27 +01:00
Jakob Bornecrantz 7d8b83aba5 xrt: Add docu 2021-08-11 18:28:27 +01:00
Christoph Haag 1b179306dc comp: Only use dedicated allocation when supported/preferred
Fixes OpenGL depth formats on Tegra
2021-08-09 15:17:25 +02:00
Moses Turner e8e977faa2 inc/xrt, aux/bindings: fix typo XRT_OUTPUT_NAME_XBOX_HAPTIC_RIGHTT -> XRT_OUTPUT_NAME_XBOX_HAPTIC_RIGHT 2021-07-29 20:45:05 +00:00
Jakob Bornecrantz 7bd1dba1d8 xrt: Add normalized sub-image offset and size in layer data
This makes the compositor not have to care about texture size.
2021-07-10 17:58:54 +01:00
Jakob Bornecrantz 4b9b1f991c xrt: Add xrt_device_compute_distortion helper 2021-06-15 19:45:14 +00:00
Moses Turner 01283257b2 xrt: clarify camera type (NFC) 2021-06-10 19:25:14 +01:00
Moses Turner 886a87e5ef meson: add option for tracing 2021-05-10 10:10:07 -05:00
Jakob Bornecrantz b3455555c2 u/trace_marker: Use Percetto/Perfetto for tracing 2021-05-05 17:00:35 +01:00
Jakob Bornecrantz 8a715ec41c xrt: Add new error return for IPC 2021-04-27 22:47:11 +00:00
Ryan Pavlik 7d1c8480b3 xrt: Fix an incomplete compositor method doc. 2021-04-27 22:05:00 +00: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 19a1228bd2 xrt: Add unit vector defines for xrt_vec3 2021-04-26 22:38:42 +00:00
Ryan Pavlik 8c0aabfc0d xrt: Add definitions for zero/identity initializers for pose-related structs. 2021-04-26 22:38:42 +00:00
Jakob Bornecrantz 576ff7d252 xrt: Add new IPC session not created error 2021-04-21 18:03:10 +00:00
Jakob Bornecrantz 5105148c45 xrt: Correct error number 2021-04-21 18:03:10 +00:00
Christoph Haag 4ea68b89a4 xrt: Add u_process, backed by libbsd's pidfile
Delete stale ipc files in ipc server when not already running.

If built without libbsd, fall back to previous behavior of complaining about existing ipc files and exit.
2021-04-15 21:42:06 +00:00
Moses Turner 6f93b4c718 inc/xrt: switch blend mode to array
In order of how preferred they are.
2021-04-11 04:08:49 -05:00
Ryan Pavlik d6d933f20d xrt: Fix doxygen warnings. 2021-04-09 18:16:54 -05:00
Jakob Bornecrantz efdba1602f xrt: Pass along display_time_ns to layer begin 2021-04-07 00:50:10 +01:00
Jakob Bornecrantz f3abddf224 xrt: Add multi session managment interface 2021-04-07 00:50:10 +01:00
Jakob Bornecrantz 353c7735bf xrt: Add alternative functions to wait_frame 2021-04-07 00:50:10 +01:00
Jakob Bornecrantz 1f3896d729 xrt: Add new error code 2021-04-07 00:50:10 +01:00
Jakob Bornecrantz 2ab99b821b xrt: Add compositor fence interface 2021-04-07 00:50:10 +01:00
Jakob Bornecrantz 2b63fd8078 xrt: Add helper push frame function 2021-04-03 03:07:21 +01:00
Moses Turner 6a833b1131 st/oxr+xrt: add is_active to struct xrt_hand_joint_set to give drivers an easy way to deactivate hands 2021-04-01 02:02:26 +02:00
Christoph Haag 4061bf7707 d/multi: Add "attached" tracking override type
Example usage: Leap Motion attached to a Northstar headset.
2021-04-01 02:02:26 +02:00
Ryan Pavlik 061ae2f7b7 xrt: Fix more narrowing conversion warnings. 2021-03-31 12:02:41 -05:00
Ryan Pavlik 58ebd7ee20 xrt: Adjust how we define ssize_t on MSVC 2021-03-30 20:46:00 +00:00
Mateo de Mayo 12d52193da d/qwerty: Connect the debug UI to the Qwerty driver
It was necessary to add a list of xdevs to oxr_sdl2_hack_start and to
populate such list from its callees.
That includes sdl2_program.gui_program->xdevs which was not being filled
for the monado-service target.
2021-03-29 15:41:25 -03:00
Mateo de Mayo e6db1fae74 d/qwerty: Implement still HMD creation 2021-03-29 15:41:25 -03:00
Jakob Bornecrantz 63f5c86257 xrt: Make xrt_swapchain be reference counted 2021-03-24 17:50:08 +00:00
Christoph Haag aab94e7add build/meson: Allow disabling tracking
The tracking code uses ifdefs with XRT_HAVE_OPENCV.
2021-03-24 18:05:51 +01:00
Jakob Bornecrantz 0571e0337e xrt: Add XRT_ERROR_EGL_CONFIG_MISSING error 2021-03-12 00:06:36 +00:00
Jakob Bornecrantz 8be59f73ec xrt: Return xrt_result_t from xrt_gfx_provider_create_gl_egl 2021-03-12 00:06:36 +00:00
Christoph Haag 851a600a6a build/meson: Add systemd feature option for monado-service 2021-03-10 01:57:55 +01:00
Christoph Haag eb594409dd xrt: Increase number of autoprobers to 16
We actually have a total of 11 auto probers.
2021-03-09 14:16:28 +01:00
Jakob Bornecrantz 3077660f1d u/tracing: Add trace marker code 2021-03-08 11:20:52 +00:00
Mateo de Mayo 75e908552f doc: Fix missing entities from modules documentation 2021-03-06 20:34:35 -03:00
Christoph Haag 5e4c62c8aa aux/util: Move json config parsing to aux/util 2021-03-02 19:43:19 +01:00
Christoph Haag ff16eab9df xrt: implement multi device wrappers for tracking overrides
Example config ~/.config/monado/config_v0.json

{
	"active": "tracking",
	"tracking":	{
		"version":	0,
		"tracking_overrides": [
			{
				"target_device_serial": "LHR-E8CC625B",
				"tracker_device_serial": "LHR-1D80A098",
				"offset": {
					"orientation": {
						"x": 0,
						"y": 0,
						"z": 0,
						"w": 1
					},
					"position": {
						"x": 0,
						"y": 0,
						"z": 0
					}
				}
			}
		]
	}
}

v2: Add multi device wrapper
2021-03-02 19:43:19 +01:00
Christoph Haag 13db11901c d/rs: Add prober and create xrt_device for rs 2021-03-02 19:43:19 +01:00
Christoph Haag 58e68e0a4a st/prober: Allow querying entries and autoprobers 2021-03-02 17:50:19 +00:00
Christoph Haag 37c96ee7fb xrt: Add a static driver_name to probers 2021-03-02 17:50:19 +00:00
Jakob Bornecrantz d6eda06ae2 doc: Remove md prefix from all Markdown pages 2021-03-01 19:42:52 +00:00
Jakob Bornecrantz ecfec5028e xrt: Add doccomment and fix doxygen error 2021-03-01 19:31:25 +00:00
Mateo de Mayo 116d77f52e st/prober: Allow autoprobe function to create more than one device. 2021-02-28 15:27:52 +00:00
Jakob Bornecrantz 78dbbec891 st/prober: Improve xrt_prober_destroy 2021-02-15 16:13:07 +00:00
Jakob Bornecrantz 2c012374da st/prober: Add copydocs 2021-02-15 16:13:07 +00:00
Jakob Bornecrantz a6fe8e8b1e st/prober: Clarify xrt_prober_get_string_descriptor 2021-02-15 16:13:06 +00:00
Jakob Bornecrantz a55c6f3cc4 st/prober: Tidy and add doc-comment 2021-02-15 16:13:00 +00: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 47ed26a5e8 xrt: Add XRT_INPUT_GENERIC_TRACKER_POSE 2021-02-11 20:54:31 +01:00
Jakob Bornecrantz 35da4a51ea d/vf: Refactor code to add videotestsrc capability and break out gstreamer detection 2021-02-02 13:53:48 +00:00
Jakob Bornecrantz 5b6e6bf6a6 xrt: Add XRT_FORMAT_BAYER_GR8 format 2021-01-27 16:09:07 +00:00
Jakob Bornecrantz fa2748637a xrt: Expose more information on frame servers 2021-01-27 16:09:07 +00:00
Christoph Haag b64b6f75fe comp: Return proper errors for OpenGL xrCreateSwapchain 2021-01-26 15:26:47 +00:00
Christoph Haag edd6a4cf70 xrt: Move oxr_binding_data.h to json profile generator
Move json profile generator to auxiliary/bindings and make generated_bindings static library.

aux/bindings: Add hardware type

aux/bindings: Add various steamvr specific things to bindings
Paths like "/input/menu/click" are used in SteamVR input profiles.
2021-01-20 18:23:09 +01:00
Christoph Haag e09d2db8e5 xrt: Add various device and input enum values 2021-01-20 18:23:09 +01:00
Christoph Haag 69fc55e15e xrt: cast XRT_GET_INPUT_TYPE result
Useful for C++ compilers.
2021-01-20 18:23:09 +01:00
Jakob Bornecrantz afea93f297 xrt: Remove prepare function from xrt_compositor 2021-01-20 15:04:09 +00:00
Jakob Bornecrantz 2b8c835b68 xrt: Introduce xrt_system_compositor 2021-01-20 15:04:09 +00:00
Christoph Haag 9481013081 comp: add VkDisplayKHR window backend
Must be activated/selected with an env var for now: XRT_COMPOSITOR_FORCE_VK_DISPLAY=2
2021-01-19 17:00:46 +00:00
Jakob Bornecrantz 2b996f30c4 xrt: Reflow after column change 2021-01-15 13:50:32 +00:00
Christoph Haag e2c1bc1d16 xrt: Rename hand_origin to hand_pose
hand_origin is confusing because it implies it is the origin of the coordinate system the hand is in.
It actually is the hand pose in the "global" coordinate system.
2021-01-06 13:29:36 +00:00
Jakob Bornecrantz 15320d9ebe c/client: Insert fence and give sync handle on layer_commit (EGL for now only) 2020-12-28 15:22:46 +00:00
Jakob Bornecrantz 1302b07d68 xrt: Add sync_handle argument to layer_commit 2020-12-28 15:22:06 +00:00
Lubosz Sarnecki 8bdff9a61a u/logging: Implement optional color logging.
Check if stderr is a tty.
2020-12-28 13:04:11 +00:00
Lubosz Sarnecki dc45a201db c+ipc+st: Complete equirect1 boilerplate. 2020-12-14 18:59:28 +00:00
Lubosz Sarnecki c8bdfae83e src: Consistently append 1 to equirect1 code.
Rename XRT_FEATURE_OPENXR_LAYER_EQUIRECT_LEGACY to XRT_FEATURE_OPENXR_LAYER_EQUIRECT1.
Use correct define in verify_equirect1_layer function.
Rename equirect to equirect1.
meson: enable equirect1 by default.
2020-12-14 18:59:28 +00:00
Lubosz Sarnecki f334b8b6c7 src: Consistently append 2 to equirect2 code.
Rename XRT_FEATURE_OPENXR_LAYER_EQUIRECT to XRT_FEATURE_OPENXR_LAYER_EQUIRECT2.
Rename equirect to equirect2.
Rename shader files.
2020-12-14 18:59:28 +00:00
Jakob Bornecrantz 743c289be5 xrt: Code style 2020-12-09 21:03:50 +00:00
Christoph Haag f0d21c1dcc d/vf: Add video file playback driver 2020-12-07 12:30:26 +00:00
Christoph Haag e480352cee t/hand: Add hand tracking module 2020-12-07 12:30:26 +00:00
Christoph Haag 717d3a27ef d/ht: Add hand tracking driver code skeleton 2020-12-07 12:30:26 +00:00