Commit graph

1355 commits

Author SHA1 Message Date
Moses Turner bfdeaa7d8f a/tracking: Introduce t_camera_models.h 2023-02-04 15:23:04 -06:00
Mateo de Mayo 3cdc02c1bb a/vk: Small improvements
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-02-04 18:52:59 +00:00
Jakob Bornecrantz a8c4d1299e a/vk: Fix crash caused by different signedness comparisons
Closes #234.

All credit for debugging and figuring out what the problem is goes to Mateo, I
made a different fix for it.

Co-authored-by: Mateo de Mayo <mateo.demayo@collabora.com>
2023-02-04 18:52:35 +00:00
Jakob Bornecrantz 3a143cadd1 a/vk: Print more color space formats 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz 7576ce0960 a/vk: Track VK_EXT_swapchain_colorspace 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz b7addee249 a/vk: Track VK_KHR_format_feature_flags2 2023-02-02 20:40:20 +00:00
Jakob Bornecrantz 0938a1a02b xrt: Fix missing function declaration without a prototype warnings
Found by clang-15.

src/xrt/auxiliary/math/m_permutation.c:133:15: warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
m_do_the_thing()
              ^
               void
2023-02-02 13:03:08 +00:00
Guillaume Meunier 76dff0b42f ipc: make the pid filename, the socket filename, and the client library suffix customizable 2023-01-31 09:30:47 +00:00
Moses Turner 86e31f54f3 xrt: Refactor t_camera_calibration to use a tagged union instead of a bare array
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-01-30 17:09:27 -06:00
Moses 10cdde859a a/math, comp/main, comp/render: Change math_matrix_2x2_* to m_mat2x2_* 2023-01-27 12:37:22 -06:00
Moses Turner 7d8d1ad8e7 a/math: Add m_matrix_2x2_invert 2023-01-27 12:37:22 -06:00
Moses Turner da16e64982 a/math: Move m_matrix_2x2 functions into their own header 2023-01-27 12:37:22 -06:00
Mateo de Mayo da50a2499f d/wmr: Adjust exposure and gain individually for each camera 2023-01-26 18:07:10 +00:00
Mateo de Mayo 60b996239c u/aeg: Add optional prefix for having multiple aeg UIs 2023-01-26 18:07:10 +00:00
Mateo de Mayo d22f58bee4 u/var: Add nested headers 2023-01-26 18:07:10 +00:00
Christoph Haag 6f263dbda4 a/vk: allow VkImageViewUsageCreateInfo in Vulkan 1.1
Some drivers do not advertise support for VK_KHR_maintenance2 in
Vulkan 1.1, because it has been promoted to core.

This caused a validation error on compositors that use Vulkan 1.1
because the scratch image is allocated with unorm format and STORAGE
usage: an image view with srgb format can not be created with STORAGE
usage on many GPUs.
2023-01-26 12:30:13 +00:00
Christoph Haag a188ef219c a/vk: Store vulkan version in vk_bundle
Also adds code in c/util's Vulkan code to store it.
2023-01-26 12:30:13 +00:00
Jakob Bornecrantz 6ce2978648 xrt: Add ML2 controller 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz d231850771 xrt: Add Samsung Odyssey Controller 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz 958911fd0b xrt: Add HP Reverb G2 Controller 2023-01-24 22:40:53 +00:00
Jakob Bornecrantz da5323642d m/space: Correct comments 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz c7fdaacd02 m/space: Make sure to use valid poses in linear and angular calculations 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz f7118d7a93 m/space: Refactor pose part first 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz 02aad19c78 m/space: Make pose validity upgrading clearer 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz 2c1d413bf0 m/space: Add missing extern "C" 2023-01-24 16:11:56 +00:00
Jakob Bornecrantz 1c046dc523 m/space: Move functions to correct section 2023-01-24 16:11:56 +00:00
Robbie Bridgewater 17560d0618 a/util,st/gui: Add i64 as a debug GUI type 2023-01-24 15:35:39 +00:00
Ryan Pavlik 85a897a0b5 a/d3d,a/vk,c/client,ipc: D3D Depth texture / DXGI handle support
a/d3d: Improve allocation

Enable D3D11 and D3D112 depth images using DXGI handles

Allow D3D depth by default

D3D: only use DXGI handles

NT handles don't support depth formats and may fail to properly interop with Vulkan with some image dimensions.

Removed D3D_COMPOSITOR_ALLOW_DEPTH env.
D3D now always imports depth.

Added authorship.

Format pass

Fix D3D compositor tests

ipc: Fix HANDLE bit twiddling code

Merge into commits related to D3D depth changes. Makes the code compile
as C++, useful for Windows traceing

Co-authored-by: Robbie Bridgewater <ebridgewater@magicleap.com>
Co-authored-by: Fernando Velazquez Innella <finnella@magicleap.com>
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
2023-01-24 15:35:22 +00:00
Robbie Bridgewater 3802e737bb a/d3d,a/vk: Add R32_SFLOAT formats
Co-authored-by: Catalin Slobodeanu <cslobodeanu@magicleap.com>
2023-01-24 15:35:01 +00:00
Mario Kleiner 887b770f9e aux/binding: Implement optional "steamvr_controllertypes" for SteamVR input bindings
Add an optional switch -s or --steamvr to steamvr_profiles.py, which enables
a different naming scheme for the "controller_type" field in the generated
SteamVR profile json files.

If the switch is provided and an interaction profile in bindings.json
provides the optional new property "steamvr_controllertype", that property
will be used for the "controller_type" field of the written out .json,
instead of the regular auto-generated name.

This allows to generate json files which use controller_type names normally
used by SteamVR, so Monado provided controllers are mapped to the same
OpenXR interaction profiles that SteamVR would normally map them to.
E.g., the standard controller_type for Oculus touch controllers used by
SteamVR is "oculus_touch" instead of Monado's "monado_oculus_touch_controller".

That in turn allows OpenXR clients to use the SteamVR/OpenXR runtime to
access controllers provided by Monado's SteamVR driver plugin. Without such
compatible json files, only standard OpenVR clients can use controllers
exposed by Monado's SteamVR driver by default, but not OpenXR clients.

Tested with an Oculus Rift CV-1, and shown to now enable OpenXR clients
to make full use of the Oculus touch controllers.

The mappings for controllers other than Oculus Touch are derived from
SteamVR log output, but not actually tested due to lack of suitable hw.

Per discussion for the merge request, we enable this '-s' flag by
default in the make file for SteamVR style naming scheme.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-01-23 16:30:27 +00:00
Mario Kleiner d3893c229f aux/binding: Implement optional "steamvr_path" for SteamVR input bindings
When using the Monado SteamVR driver plugin together with an Oculus
Rift CV-1 and Oculus touch controllers, the grip / squeeze sensors
(e.g., /user/hand/left/input/squeeze/value) and the thumbsticks did not
work.

This because SteamVR expects those controls to be exposed under a
different path than what one would use for OpenXR, e.g.,
OpenXR /input/squeeze --> SteamVR /input/grip and
OpenXR /input/thumbstick --> SteamVR /input/joystick

The same is true for some other controller types.

To fix this, add some new code for input subpath substitution, to perform
this remapping, depending on binding type:

For type "trigger":  Substitute squeeze with grip
For type "joystick": Substitute thumbstick with joystick

For rare controller types where this would be the wrong thing to do,
e.g., Valve Index (for type "joystick", needs the path to remain
"thumbstick" as before), and for special cases not covered, we add
a new optional parameter 'steamvr_path' which can be used in bindings.json
to handle such mismatches in path flexibly to allow a dedicated path
name for SteamVR, overriding the regular "OpenXR style" input path or
auto-substituted path is if the parameter is omitted.

This makes the Oculus Rift CV-1 touch controllers fully work under SteamVR.

I haven't tested this with other controllers, as I only have Oculus
controllers for testing atm. But after reading about the HTC Vive controllers,
i did add a "steamvr_path" override for /input/menu -> /input/application_menu.
Cfe. https://github.com/ValveSoftware/openvr/wiki/IVRDriverInput-Overview

Also, a minor typo fix in steamvr_profiles.py as a bonus.

Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2023-01-23 16:30:27 +00:00
Moses Turner dcbdcede5a a/util: Fix edge cases in Moses's distortion method
Before this, we read out of bounds at the bottom of the display. Unsure why nothing but Valgrind caught it.
2023-01-21 03:50:20 +00:00
Moses Turner 8d8b0d03b0 a/util: Constify u_box_iou's Box constructor 2023-01-17 23:46:46 -06:00
Malek 5c013bcecd a/math: Add stdbool include to m_lowpass_integer.h 2022-12-12 00:45:05 -08:00
SeungHoon Han a594d6d86e a/android: fixed forced applied alpha=0.8 window after Android S 2022-12-08 21:41:16 +00:00
SeungHoon Han a2f5e5f1b9 a/android: hide display cutout to use full screen 2022-12-08 20:24:53 +00:00
Jakob Bornecrantz 50783a4c35 u/trace_marker: Add U_TRACE_[BEGIN|END] for greater control of zones/tracks 2022-12-08 00:24:42 +00:00
Jakob Bornecrantz f8d2c095ee u/trace_marker: Ensure ENABLE_TRACE is set before including Tracy headers 2022-12-08 00:24:42 +00:00
Mateo de Mayo dad7957fb2 a/math: Add clock_offset.h
For now it only has our simple exponential smoothing clock offset estimator.
But more advanced ones can go here too.
2022-12-02 16:10:09 +00:00
Bailey Morgan 35061c1d80 a/vk: Select graphics device based on prefered device type 2022-12-02 14:05:34 +00:00
Maxim Kizub 950f6cc506 a/android: Improve waiting for surface holder 2022-11-30 09:26:38 -06:00
Moses Turner 85c0c78ac6 a/math: Fix m_vec3_angle function
Dot product is equivalent to a.length*b.length*cos(theta), not a.length_squared*b.length_squared*cos(theta)
2022-11-29 03:11:53 -06:00
Jakob Bornecrantz 2a12f7d661 os/time: Use timePeriod[Begin|End] when sleeping in precise sleeper
One alternative to this is to use the CreateWaitableTimerExW function
with the CREATE_WAITABLE_TIMER_HIGH_RESOLUTION flag. On my systems the
function/flag was either as good or worse then timePeriod[Begin|End].
Setting the state globally or just just around the wait didn't seem to
have an impact on the precision.
2022-11-25 17:02:00 +00:00
Jakob Bornecrantz c195608602 a/tracing: Do more tracing in PSMV tracking code 2022-11-25 16:44:24 +00:00
Jakob Bornecrantz f552aacb87 a/tracking: Fix data waiting logic in PSMV tracking 2022-11-25 16:44:24 +00:00
Jakob Bornecrantz 3b465b4241 u/windows: Add helper for trying priority or privilege from args 2022-11-25 16:04:20 +00:00
Jakob Bornecrantz 9e57a745b2 u/windows: Add function to raise CPU priority 2022-11-25 16:00:49 +00:00
Jakob Bornecrantz ef77cb08d0 u/windows: Add function to enable privileges on processes
Also add a small helper to add the privilege
SeIncreaseBasePriorityPrivilege, which is needed on
NVIDIA for HIGH and REALTIME priority Vulkan queues.
2022-11-25 15:54:45 +00:00
Jakob Bornecrantz 57820394f4 u/windows: Add files and u_winerror string format helper 2022-11-24 16:17:26 +00:00
Jakob Bornecrantz ad4c6a7215 u/pacing: More Tracy plots 2022-11-24 15:34:59 +00:00