Commit graph

331 commits

Author SHA1 Message Date
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
Christoph Haag f7a8e8810b xrt: Split hand tracking input name into left/right
oxr_hand_tracker now stores which xdev and input name it tracks.
2020-12-07 11:43:51 +00:00
Ryan Pavlik 535f20b503 inc/xrt: Reference the Vulkan extension table from related data. 2020-12-06 23:07:05 +00:00
Lubosz Sarnecki 049bc385b1 xrt: Remove unused XRT_DEVICE_ANDROID. 2020-12-01 18:05:32 +01:00
Ryan Pavlik 04318b4104 meson: Generate a mock Android config header. 2020-12-01 18:05:31 +01:00
Christoph Haag f5ef3985ba xrt: Add support for locating hand joints in action spaces 2020-11-23 20:42:54 +00:00
Ryan Pavlik af8459e407 inc/xrt: Comments 2020-11-23 14:18:20 -06: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
Christoph Haag 0af755814c xrt: Improve comment documenting xrt_view::viewport 2020-11-12 16:03:27 +01:00
Christoph Haag c7ebf91821 xrt: Improve comment documenting xrt_view::display 2020-11-12 16:03:27 +01:00
Christoph Haag 1ad25d1050 xrt: Document that xrt_hmd_parts::screens dimensions are before rotation 2020-11-12 16:03:27 +01:00
Christoph Haag cb62514fd0 steamvr: Implement basic SteamVR driver
v3:
  targets: Add Monado-SteamVR driver target
  st/ovrd: Add OpenVR driver header
  build: Factor out sdl hack into lib_sdl2_hack and update steamvr build
  build: Revert lib_sdl2_refactor
  steamvr: Emulate Index Controller by default
  steamvr: Use oxr_handle_destroy instead of exposing oxr_instance_destroy
  steamvr: don't use oxr internals
  steamvr: communicate 3dof tracking to steamvr
  steamvr: use util functions for device assignment and tracking origin setup
  steamvr: Install plugin to <prefix>/share/steamvr-monado
  steamvr: Use thread for updating poses every 1ms

Makes a big difference for the Index @144Hz on the vive driver.
Still somewhat choppy on survive driver - prediction should solve it.

Main-author: Christoph Haag <christoph.haag@collabora.com>
Co-author: Jakob Bornecrantz <jakob@collabora.com>
2020-11-09 19:21:27 +00:00
Jakob Bornecrantz 7c807a8605 xrt: Add device driver provided bindings 2020-11-05 14:41:55 +00:00
Lubosz Sarnecki f4113ef15b d/android: Add Android sensors driver. 2020-10-30 18:20:35 -05:00
Ryan Pavlik 0f43bbe924 inc/xrt: Add Android config header to store package name. 2020-10-28 09:32:49 -05:00
Lubosz Sarnecki 663dfe8990 meson: Add equirect2 to build. 2020-10-26 01:34:10 +00:00
Lubosz Sarnecki 3195ba8351 c/main: Implement XR_KHR_composition_layer_equirect2. 2020-10-26 01:34:10 +00:00
Jakob Bornecrantz f3394320b1 xrt: Add simple controller input profile 2020-10-15 21:07:40 +00:00
Christoph Haag 1f021a6eda xrt: Add defines for minimum haptic frequency and unspecified haptic frequency 2020-10-13 19:27:53 +02:00
Christoph Haag 256e2c68d8 xrt: Implement & hook up hand joint tracking infrastructure
Include <inttypes.h> to satisfy older compilers
2020-10-12 22:13:47 +02:00
Ryan Pavlik 3faa32753d inc/xrt: have the vulkan includes include windows.h neatly.
The Vulkan header itself already does it, we just want to do it first
with the right defines.
2020-10-08 17:26:22 -05:00
Ryan Pavlik 8b416da12b xrt: Add Win32 Vulkan platform define when needed 2020-10-08 17:26:22 -05:00
Ryan Pavlik 938e8cb393 inc/xrt: Windows uses Win32 HANDLEs for things. 2020-10-08 17:26:22 -05:00
Ryan Pavlik 60b4fc2ba1 inc/xrt: Add a header for minimally including Windows.h 2020-10-08 17:26:22 -05:00
Christoph Haag 5bea856f20 build/meson: Add XRT_HAVE_DBUS when dbus is found 2020-10-05 16:05:02 +00:00
Jakob Bornecrantz 92caeae39c xrt: Define XRT_FEATURE_COMPOSITOR_MAIN and XRT_FEATURE_OPENXR 2020-10-05 16:46:06 +01:00
Jakob Bornecrantz 942ba178a0 st/oxr: Add extension support for XR_KHR_composition_layer_equirect2 2020-10-05 16:45:48 +01:00
Jakob Bornecrantz 33879da21a xrt: Add XRT_HAVE_DBUS 2020-10-05 14:19:52 +01:00
Jakob Bornecrantz 9a675cc7f3 xrt: Rename xrt_uv_triplet 2020-09-30 15:35:57 +01: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
Ryan Pavlik 54f6aa2166 inc/xrt: Some MSVC and Windows support 2020-09-18 13:56:11 +01:00
Ryan Pavlik 3ff56f4a3c inc/xrt: Add Windows implementations of atomic intrinsics. 2020-09-18 13:56:05 +01:00
Jakob Bornecrantz 8e24dda794 xrt: Remove out_timestamp argument to xrt_device::get_tracked_pose 2020-09-07 23:37:09 +01:00
Jakob Bornecrantz eaffa05a37 xrt: Remove acceleration components from xrt_space_relation 2020-09-07 23:36:34 +01:00
Jakob Bornecrantz 4d85db6051 xrt: Add xrt_space_graph 2020-09-07 16:14:46 +01:00
Christoph Haag 4a1d8b3a41 xrt: Fix vive input defines 2020-09-04 01:46:47 +02:00
Jakob Bornecrantz 6846ab7637 xrt: Add stream capture type 2020-09-02 11:52:59 +01:00
Christoph Haag cde94cc8a2 build: Remove libv4l2 dependency from meson
We use the linux/v4l2-common.h header to access v4l devices, not libv4l from v4l-utils.
2020-08-28 12:10:53 +00:00
Pete Black 20ee4114b0 xrt: Fix typo in comment 2020-08-28 11:38:03 +00:00
Jakob Bornecrantz 4e6a137c62 ipc: Make it possible to toggle inputs on and off 2020-08-28 11:33:38 +00:00
Jakob Bornecrantz deb5633bf9 d/psmv: Introduce proper grip and aim poses
Correctly rotate the grip pose to follow the spec more closely.
2020-08-27 10:42:05 +01:00
Jakob Bornecrantz 1309164303 xrt: Add max layers supported by a compositor 2020-08-26 15:25:00 +01:00
Jakob Bornecrantz 1496262564 xrt: Constify compositor interface 2020-08-26 15:25:00 +01:00
Jakob Bornecrantz 777add8f9e xrt: Tidy some comments 2020-08-26 15:25:00 +01:00
Jakob Bornecrantz 9bd725a800 xrt: Add missing xrt_comp_layer_stereo_projection_depth 2020-08-25 14:55:43 +01: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 6c084e2cbf build: Add build support for cube, cylinder and equirect layers to meson 2020-08-21 02:09:20 +02: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
Christoph Haag cd05c86c59 d/ns,rs: Add external slam tracking type 2020-08-19 14:46:55 +02: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