28 #define XRT_UUID_SIZE 16
52 #define XRT_LUID_SIZE 8
97 xrt_atomic_s32_t count;
110 XRT_BLEND_MODE_OPAQUE = 1,
111 XRT_BLEND_MODE_ADDITIVE = 2,
112 XRT_BLEND_MODE_ALPHA_BLEND = 3,
113 XRT_BLEND_MODE_MAX_ENUM,
116 #define XRT_MAX_DEVICE_BLEND_MODES 3
166 XRT_DISTORTION_MODEL_NONE = 1u << 0u,
167 XRT_DISTORTION_MODEL_COMPUTE = 1u << 1u,
168 XRT_DISTORTION_MODEL_MESHUV = 1u << 2u,
183 XRT_FORMAT_BAYER_GR8,
187 XRT_FORMAT_BITMAP_8X1,
188 XRT_FORMAT_BITMAP_8X8,
204 XRT_STEREO_FORMAT_NONE,
229 #define XRT_QUAT_IDENTITY \
295 #define XRT_VEC3_ZERO \
305 #define XRT_VEC3_UNIT_X \
315 #define XRT_VEC3_UNIT_Y \
325 #define XRT_VEC3_UNIT_Z \
475 #define XRT_POSE_IDENTITY \
477 XRT_QUAT_IDENTITY, XRT_VEC3_ZERO \
498 #define XRT_MATRIX_2X2_ELEMENTS 4
505 #define XRT_MATRIX_2X2_VECS 2
525 #define XRT_MATRIX_3X3_ELEMENTS 9
552 #define XRT_MATRIX_4X4_ELEMENTS 16
600 XRT_SPACE_REFERENCE_TYPE_VIEW,
601 XRT_SPACE_REFERENCE_TYPE_LOCAL,
602 XRT_SPACE_REFERENCE_TYPE_LOCAL_FLOOR,
603 XRT_SPACE_REFERENCE_TYPE_STAGE,
604 XRT_SPACE_REFERENCE_TYPE_UNBOUNDED,
612 #define XRT_SPACE_REFERENCE_TYPE_COUNT (XRT_SPACE_REFERENCE_TYPE_UNBOUNDED + 1)
620 #define XRT_SPACE_REFERENCE_TYPE_INVALID ((enum xrt_reference_space_type)(-1))
631 XRT_SPACE_RELATION_ORIENTATION_VALID_BIT = (1u << 0u),
632 XRT_SPACE_RELATION_POSITION_VALID_BIT = (1u << 1u),
633 XRT_SPACE_RELATION_LINEAR_VELOCITY_VALID_BIT = (1u << 2u),
634 XRT_SPACE_RELATION_ANGULAR_VELOCITY_VALID_BIT = (1u << 3u),
635 XRT_SPACE_RELATION_ORIENTATION_TRACKED_BIT = (1u << 4u),
636 XRT_SPACE_RELATION_POSITION_TRACKED_BIT = (1u << 5u),
638 XRT_SPACE_RELATION_BITMASK_ALL = (uint32_t)XRT_SPACE_RELATION_ORIENTATION_VALID_BIT |
639 (uint32_t)XRT_SPACE_RELATION_POSITION_VALID_BIT |
640 (uint32_t)XRT_SPACE_RELATION_LINEAR_VELOCITY_VALID_BIT |
641 (uint32_t)XRT_SPACE_RELATION_ANGULAR_VELOCITY_VALID_BIT |
642 (uint32_t)XRT_SPACE_RELATION_ORIENTATION_TRACKED_BIT |
643 (uint32_t)XRT_SPACE_RELATION_POSITION_TRACKED_BIT,
644 XRT_SPACE_RELATION_BITMASK_NONE = 0,
673 #define XRT_SPACE_RELATION_ZERO \
675 XRT_SPACE_RELATION_BITMASK_NONE, XRT_POSE_IDENTITY, XRT_VEC3_ZERO, XRT_VEC3_ZERO \
685 #define XRT_RELATION_CHAIN_CAPACITY 8
713 XRT_DEVICE_INVALID = 0,
715 XRT_DEVICE_GENERIC_HMD = 1,
719 XRT_DEVICE_VIVE_WAND,
720 XRT_DEVICE_VIVE_TRACKER,
721 XRT_DEVICE_VIVE_TRACKER_GEN1,
722 XRT_DEVICE_VIVE_TRACKER_GEN2,
723 XRT_DEVICE_VIVE_TRACKER_GEN3,
724 XRT_DEVICE_VIVE_TRACKER_TUNDRA,
727 XRT_DEVICE_SIMPLE_CONTROLLER,
729 XRT_DEVICE_WMR_CONTROLLER,
730 XRT_DEVICE_XBOX_CONTROLLER,
731 XRT_DEVICE_GO_CONTROLLER,
732 XRT_DEVICE_TOUCH_CONTROLLER,
733 XRT_DEVICE_INDEX_CONTROLLER,
735 XRT_DEVICE_HP_REVERB_G2_CONTROLLER,
736 XRT_DEVICE_SAMSUNG_ODYSSEY_CONTROLLER,
737 XRT_DEVICE_ML2_CONTROLLER,
738 XRT_DEVICE_OPPO_MR_CONTROLLER,
740 XRT_DEVICE_HAND_INTERACTION,
742 XRT_DEVICE_EYE_GAZE_INTERACTION,
749 XRT_DEVICE_HAND_TRACKER,
750 XRT_DEVICE_REALSENSE,
767 XRT_DEVICE_TYPE_UNKNOWN = 0,
769 XRT_DEVICE_TYPE_RIGHT_HAND_CONTROLLER,
770 XRT_DEVICE_TYPE_LEFT_HAND_CONTROLLER,
771 XRT_DEVICE_TYPE_ANY_HAND_CONTROLLER,
772 XRT_DEVICE_TYPE_GENERIC_TRACKER,
773 XRT_DEVICE_TYPE_HAND_TRACKER,
774 XRT_DEVICE_TYPE_EYE_TRACKER,
775 XRT_DEVICE_TYPE_FACE_TRACKER
811 #define XRT_INPUT_TYPE_BITWIDTH 8u
820 #define XRT_INPUT_TYPE_BITMASK 0xffu
833 #define XRT_INPUT_NAME(id, type) ((UINT32_C(id) << XRT_INPUT_TYPE_BITWIDTH) | (uint32_t)XRT_INPUT_TYPE_##type)
844 #define XRT_GET_INPUT_TYPE(name) ((enum xrt_input_type)(name & XRT_INPUT_TYPE_BITMASK))
855 #define XRT_GET_INPUT_ID(name) ((uint32_t)(name >> XRT_INPUT_TYPE_BITWIDTH))
858 #define XRT_INPUT_LIST(_) \
860 _(XRT_INPUT_GENERIC_HEAD_POSE , XRT_INPUT_NAME(0x0000, POSE)) \
861 _(XRT_INPUT_GENERIC_HEAD_DETECT , XRT_INPUT_NAME(0x0001, BOOLEAN)) \
862 _(XRT_INPUT_GENERIC_HAND_TRACKING_LEFT , XRT_INPUT_NAME(0x0002, HAND_TRACKING)) \
863 _(XRT_INPUT_GENERIC_HAND_TRACKING_RIGHT , XRT_INPUT_NAME(0x0004, HAND_TRACKING)) \
864 _(XRT_INPUT_GENERIC_TRACKER_POSE , XRT_INPUT_NAME(0x0005, POSE)) \
866 _(XRT_INPUT_GENERIC_PALM_POSE , XRT_INPUT_NAME(0x0006, POSE)) \
869 _(XRT_INPUT_GENERIC_EYE_GAZE_POSE , XRT_INPUT_NAME(0x0007, POSE)) \
871 _(XRT_INPUT_GENERIC_LOCAL_SPACE_POSE , XRT_INPUT_NAME(0x0008, POSE)) \
872 _(XRT_INPUT_GENERIC_LOCAL_FLOOR_SPACE_POSE , XRT_INPUT_NAME(0x0009, POSE)) \
873 _(XRT_INPUT_GENERIC_STAGE_SPACE_POSE , XRT_INPUT_NAME(0x000A, POSE)) \
874 _(XRT_INPUT_GENERIC_UNBOUNDED_SPACE_POSE , XRT_INPUT_NAME(0x000B, POSE)) \
876 _(XRT_INPUT_SIMPLE_SELECT_CLICK , XRT_INPUT_NAME(0x0010, BOOLEAN)) \
877 _(XRT_INPUT_SIMPLE_MENU_CLICK , XRT_INPUT_NAME(0x0011, BOOLEAN)) \
878 _(XRT_INPUT_SIMPLE_GRIP_POSE , XRT_INPUT_NAME(0x0012, POSE)) \
879 _(XRT_INPUT_SIMPLE_AIM_POSE , XRT_INPUT_NAME(0x0013, POSE)) \
881 _(XRT_INPUT_PSMV_PS_CLICK , XRT_INPUT_NAME(0x0020, BOOLEAN)) \
882 _(XRT_INPUT_PSMV_MOVE_CLICK , XRT_INPUT_NAME(0x0021, BOOLEAN)) \
883 _(XRT_INPUT_PSMV_START_CLICK , XRT_INPUT_NAME(0x0022, BOOLEAN)) \
884 _(XRT_INPUT_PSMV_SELECT_CLICK , XRT_INPUT_NAME(0x0023, BOOLEAN)) \
885 _(XRT_INPUT_PSMV_SQUARE_CLICK , XRT_INPUT_NAME(0x0024, BOOLEAN)) \
886 _(XRT_INPUT_PSMV_CROSS_CLICK , XRT_INPUT_NAME(0x0025, BOOLEAN)) \
887 _(XRT_INPUT_PSMV_CIRCLE_CLICK , XRT_INPUT_NAME(0x0026, BOOLEAN)) \
888 _(XRT_INPUT_PSMV_TRIANGLE_CLICK , XRT_INPUT_NAME(0x0027, BOOLEAN)) \
889 _(XRT_INPUT_PSMV_TRIGGER_VALUE , XRT_INPUT_NAME(0x0028, VEC1_ZERO_TO_ONE)) \
890 _(XRT_INPUT_PSMV_GRIP_POSE , XRT_INPUT_NAME(0x0029, POSE)) \
891 _(XRT_INPUT_PSMV_AIM_POSE , XRT_INPUT_NAME(0x002A, POSE)) \
892 _(XRT_INPUT_PSMV_BODY_CENTER_POSE , XRT_INPUT_NAME(0x002B, POSE)) \
893 _(XRT_INPUT_PSMV_BALL_CENTER_POSE , XRT_INPUT_NAME(0x002C, POSE)) \
895 _(XRT_INPUT_HYDRA_1_CLICK , XRT_INPUT_NAME(0x0030, BOOLEAN)) \
896 _(XRT_INPUT_HYDRA_2_CLICK , XRT_INPUT_NAME(0x0031, BOOLEAN)) \
897 _(XRT_INPUT_HYDRA_3_CLICK , XRT_INPUT_NAME(0x0032, BOOLEAN)) \
898 _(XRT_INPUT_HYDRA_4_CLICK , XRT_INPUT_NAME(0x0033, BOOLEAN)) \
899 _(XRT_INPUT_HYDRA_MIDDLE_CLICK , XRT_INPUT_NAME(0x0034, BOOLEAN)) \
900 _(XRT_INPUT_HYDRA_BUMPER_CLICK , XRT_INPUT_NAME(0x0035, BOOLEAN)) \
901 _(XRT_INPUT_HYDRA_JOYSTICK_CLICK , XRT_INPUT_NAME(0x0036, BOOLEAN)) \
902 _(XRT_INPUT_HYDRA_JOYSTICK_VALUE , XRT_INPUT_NAME(0x0037, VEC2_MINUS_ONE_TO_ONE)) \
903 _(XRT_INPUT_HYDRA_TRIGGER_VALUE , XRT_INPUT_NAME(0x0038, VEC1_ZERO_TO_ONE)) \
904 _(XRT_INPUT_HYDRA_POSE , XRT_INPUT_NAME(0x0039, POSE)) \
906 _(XRT_INPUT_DAYDREAM_TOUCHPAD_CLICK , XRT_INPUT_NAME(0x0040, BOOLEAN)) \
907 _(XRT_INPUT_DAYDREAM_BAR_CLICK , XRT_INPUT_NAME(0x0041, BOOLEAN)) \
908 _(XRT_INPUT_DAYDREAM_CIRCLE_CLICK , XRT_INPUT_NAME(0x0042, BOOLEAN)) \
909 _(XRT_INPUT_DAYDREAM_VOLUP_CLICK , XRT_INPUT_NAME(0x0043, BOOLEAN)) \
910 _(XRT_INPUT_DAYDREAM_VOLDN_CLICK , XRT_INPUT_NAME(0x0044, BOOLEAN)) \
911 _(XRT_INPUT_DAYDREAM_TOUCHPAD , XRT_INPUT_NAME(0x0045, VEC2_MINUS_ONE_TO_ONE)) \
912 _(XRT_INPUT_DAYDREAM_POSE , XRT_INPUT_NAME(0x0046, POSE)) \
913 _(XRT_INPUT_DAYDREAM_TOUCHPAD_TOUCH , XRT_INPUT_NAME(0x0047, BOOLEAN)) \
915 _(XRT_INPUT_INDEX_SYSTEM_CLICK , XRT_INPUT_NAME(0x0050, BOOLEAN)) \
916 _(XRT_INPUT_INDEX_SYSTEM_TOUCH , XRT_INPUT_NAME(0x0051, BOOLEAN)) \
917 _(XRT_INPUT_INDEX_A_CLICK , XRT_INPUT_NAME(0x0052, BOOLEAN)) \
918 _(XRT_INPUT_INDEX_A_TOUCH , XRT_INPUT_NAME(0x0053, BOOLEAN)) \
919 _(XRT_INPUT_INDEX_B_CLICK , XRT_INPUT_NAME(0x0054, BOOLEAN)) \
920 _(XRT_INPUT_INDEX_B_TOUCH , XRT_INPUT_NAME(0x0055, BOOLEAN)) \
921 _(XRT_INPUT_INDEX_SQUEEZE_VALUE , XRT_INPUT_NAME(0x0056, VEC1_ZERO_TO_ONE)) \
922 _(XRT_INPUT_INDEX_SQUEEZE_FORCE , XRT_INPUT_NAME(0x0057, VEC1_ZERO_TO_ONE)) \
923 _(XRT_INPUT_INDEX_TRIGGER_CLICK , XRT_INPUT_NAME(0x0058, BOOLEAN)) \
924 _(XRT_INPUT_INDEX_TRIGGER_VALUE , XRT_INPUT_NAME(0x0059, VEC1_ZERO_TO_ONE)) \
925 _(XRT_INPUT_INDEX_TRIGGER_TOUCH , XRT_INPUT_NAME(0x005A, BOOLEAN)) \
926 _(XRT_INPUT_INDEX_THUMBSTICK , XRT_INPUT_NAME(0x005B, VEC2_MINUS_ONE_TO_ONE)) \
927 _(XRT_INPUT_INDEX_THUMBSTICK_CLICK , XRT_INPUT_NAME(0x005D, BOOLEAN)) \
928 _(XRT_INPUT_INDEX_THUMBSTICK_TOUCH , XRT_INPUT_NAME(0x005E, BOOLEAN)) \
929 _(XRT_INPUT_INDEX_TRACKPAD , XRT_INPUT_NAME(0x005F, VEC2_MINUS_ONE_TO_ONE)) \
930 _(XRT_INPUT_INDEX_TRACKPAD_FORCE , XRT_INPUT_NAME(0x0061, VEC1_ZERO_TO_ONE)) \
931 _(XRT_INPUT_INDEX_TRACKPAD_TOUCH , XRT_INPUT_NAME(0x0062, BOOLEAN)) \
932 _(XRT_INPUT_INDEX_GRIP_POSE , XRT_INPUT_NAME(0x0063, POSE)) \
933 _(XRT_INPUT_INDEX_AIM_POSE , XRT_INPUT_NAME(0x0064, POSE)) \
935 _(XRT_INPUT_VIVE_SYSTEM_CLICK , XRT_INPUT_NAME(0x0070, BOOLEAN)) \
936 _(XRT_INPUT_VIVE_SQUEEZE_CLICK , XRT_INPUT_NAME(0x0071, BOOLEAN)) \
937 _(XRT_INPUT_VIVE_MENU_CLICK , XRT_INPUT_NAME(0x0072, BOOLEAN)) \
938 _(XRT_INPUT_VIVE_TRIGGER_CLICK , XRT_INPUT_NAME(0x0073, BOOLEAN)) \
939 _(XRT_INPUT_VIVE_TRIGGER_VALUE , XRT_INPUT_NAME(0x0074, VEC1_ZERO_TO_ONE)) \
940 _(XRT_INPUT_VIVE_TRACKPAD , XRT_INPUT_NAME(0x0075, VEC2_MINUS_ONE_TO_ONE)) \
941 _(XRT_INPUT_VIVE_TRACKPAD_CLICK , XRT_INPUT_NAME(0x0076, BOOLEAN)) \
942 _(XRT_INPUT_VIVE_TRACKPAD_TOUCH , XRT_INPUT_NAME(0x0077, BOOLEAN)) \
943 _(XRT_INPUT_VIVE_GRIP_POSE , XRT_INPUT_NAME(0x0078, POSE)) \
944 _(XRT_INPUT_VIVE_AIM_POSE , XRT_INPUT_NAME(0x0079, POSE)) \
946 _(XRT_INPUT_VIVEPRO_SYSTEM_CLICK , XRT_INPUT_NAME(0x0080, BOOLEAN)) \
947 _(XRT_INPUT_VIVEPRO_VOLUP_CLICK , XRT_INPUT_NAME(0x0081, BOOLEAN)) \
948 _(XRT_INPUT_VIVEPRO_VOLDN_CLICK , XRT_INPUT_NAME(0x0082, BOOLEAN)) \
949 _(XRT_INPUT_VIVEPRO_MUTE_MIC_CLICK , XRT_INPUT_NAME(0x0083, BOOLEAN)) \
951 _(XRT_INPUT_WMR_MENU_CLICK , XRT_INPUT_NAME(0x0090, BOOLEAN)) \
952 _(XRT_INPUT_WMR_SQUEEZE_CLICK , XRT_INPUT_NAME(0x0091, BOOLEAN)) \
953 _(XRT_INPUT_WMR_TRIGGER_VALUE , XRT_INPUT_NAME(0x0092, VEC1_ZERO_TO_ONE)) \
954 _(XRT_INPUT_WMR_THUMBSTICK_CLICK , XRT_INPUT_NAME(0x0093, BOOLEAN)) \
955 _(XRT_INPUT_WMR_THUMBSTICK , XRT_INPUT_NAME(0x0094, VEC2_MINUS_ONE_TO_ONE)) \
956 _(XRT_INPUT_WMR_TRACKPAD_CLICK , XRT_INPUT_NAME(0x0095, BOOLEAN)) \
957 _(XRT_INPUT_WMR_TRACKPAD_TOUCH , XRT_INPUT_NAME(0x0096, BOOLEAN)) \
958 _(XRT_INPUT_WMR_TRACKPAD , XRT_INPUT_NAME(0x0097, VEC2_MINUS_ONE_TO_ONE)) \
959 _(XRT_INPUT_WMR_GRIP_POSE , XRT_INPUT_NAME(0x0098, POSE)) \
960 _(XRT_INPUT_WMR_AIM_POSE , XRT_INPUT_NAME(0x0099, POSE)) \
961 _(XRT_INPUT_WMR_HOME_CLICK , XRT_INPUT_NAME(0x009A, BOOLEAN)) \
963 _(XRT_INPUT_XBOX_MENU_CLICK , XRT_INPUT_NAME(0x00A0, BOOLEAN)) \
964 _(XRT_INPUT_XBOX_VIEW_CLICK , XRT_INPUT_NAME(0x00A1, BOOLEAN)) \
965 _(XRT_INPUT_XBOX_A_CLICK , XRT_INPUT_NAME(0x00A2, BOOLEAN)) \
966 _(XRT_INPUT_XBOX_B_CLICK , XRT_INPUT_NAME(0x00A3, BOOLEAN)) \
967 _(XRT_INPUT_XBOX_X_CLICK , XRT_INPUT_NAME(0x00A4, BOOLEAN)) \
968 _(XRT_INPUT_XBOX_Y_CLICK , XRT_INPUT_NAME(0x00A5, BOOLEAN)) \
969 _(XRT_INPUT_XBOX_DPAD_DOWN_CLICK , XRT_INPUT_NAME(0x00A6, BOOLEAN)) \
970 _(XRT_INPUT_XBOX_DPAD_RIGHT_CLICK , XRT_INPUT_NAME(0x00A7, BOOLEAN)) \
971 _(XRT_INPUT_XBOX_DPAD_UP_CLICK , XRT_INPUT_NAME(0x00A8, BOOLEAN)) \
972 _(XRT_INPUT_XBOX_DPAD_LEFT_CLICK , XRT_INPUT_NAME(0x00A9, BOOLEAN)) \
973 _(XRT_INPUT_XBOX_SHOULDER_LEFT_CLICK , XRT_INPUT_NAME(0x00AA, BOOLEAN)) \
974 _(XRT_INPUT_XBOX_SHOULDER_RIGHT_CLICK , XRT_INPUT_NAME(0x00AB, BOOLEAN)) \
975 _(XRT_INPUT_XBOX_THUMBSTICK_LEFT_CLICK , XRT_INPUT_NAME(0x00AC, BOOLEAN)) \
976 _(XRT_INPUT_XBOX_THUMBSTICK_LEFT , XRT_INPUT_NAME(0x00AD, VEC2_MINUS_ONE_TO_ONE)) \
977 _(XRT_INPUT_XBOX_THUMBSTICK_RIGHT_CLICK , XRT_INPUT_NAME(0x00AE, BOOLEAN)) \
978 _(XRT_INPUT_XBOX_THUMBSTICK_RIGHT , XRT_INPUT_NAME(0x00AF, VEC2_MINUS_ONE_TO_ONE)) \
979 _(XRT_INPUT_XBOX_LEFT_TRIGGER_VALUE , XRT_INPUT_NAME(0x00B0, VEC1_ZERO_TO_ONE)) \
980 _(XRT_INPUT_XBOX_RIGHT_TRIGGER_VALUE , XRT_INPUT_NAME(0x00B1, VEC1_ZERO_TO_ONE)) \
982 _(XRT_INPUT_GO_SYSTEM_CLICK , XRT_INPUT_NAME(0x00B0, BOOLEAN)) \
983 _(XRT_INPUT_GO_TRIGGER_CLICK , XRT_INPUT_NAME(0x00B1, BOOLEAN)) \
984 _(XRT_INPUT_GO_BACK_CLICK , XRT_INPUT_NAME(0x00B2, BOOLEAN)) \
985 _(XRT_INPUT_GO_TRACKPAD_CLICK , XRT_INPUT_NAME(0x00B3, BOOLEAN)) \
986 _(XRT_INPUT_GO_TRACKPAD_TOUCH , XRT_INPUT_NAME(0x00B4, BOOLEAN)) \
987 _(XRT_INPUT_GO_TRACKPAD , XRT_INPUT_NAME(0x00B5, VEC2_MINUS_ONE_TO_ONE)) \
988 _(XRT_INPUT_GO_GRIP_POSE , XRT_INPUT_NAME(0x00B6, POSE)) \
989 _(XRT_INPUT_GO_AIM_POSE , XRT_INPUT_NAME(0x00B7, POSE)) \
991 _(XRT_INPUT_TOUCH_X_CLICK , XRT_INPUT_NAME(0x00C0, BOOLEAN)) \
992 _(XRT_INPUT_TOUCH_X_TOUCH , XRT_INPUT_NAME(0x00C1, BOOLEAN)) \
993 _(XRT_INPUT_TOUCH_Y_CLICK , XRT_INPUT_NAME(0x00C2, BOOLEAN)) \
994 _(XRT_INPUT_TOUCH_Y_TOUCH , XRT_INPUT_NAME(0x00C3, BOOLEAN)) \
995 _(XRT_INPUT_TOUCH_MENU_CLICK , XRT_INPUT_NAME(0x00C4, BOOLEAN)) \
996 _(XRT_INPUT_TOUCH_A_CLICK , XRT_INPUT_NAME(0x00C5, BOOLEAN)) \
997 _(XRT_INPUT_TOUCH_A_TOUCH , XRT_INPUT_NAME(0x00C6, BOOLEAN)) \
998 _(XRT_INPUT_TOUCH_B_CLICK , XRT_INPUT_NAME(0x00C7, BOOLEAN)) \
999 _(XRT_INPUT_TOUCH_B_TOUCH , XRT_INPUT_NAME(0x00C8, BOOLEAN)) \
1000 _(XRT_INPUT_TOUCH_SYSTEM_CLICK , XRT_INPUT_NAME(0x00C9, BOOLEAN)) \
1001 _(XRT_INPUT_TOUCH_SQUEEZE_VALUE , XRT_INPUT_NAME(0x00CA, VEC1_ZERO_TO_ONE)) \
1002 _(XRT_INPUT_TOUCH_TRIGGER_TOUCH , XRT_INPUT_NAME(0x00CB, BOOLEAN)) \
1003 _(XRT_INPUT_TOUCH_TRIGGER_VALUE , XRT_INPUT_NAME(0x00CC, VEC1_ZERO_TO_ONE)) \
1004 _(XRT_INPUT_TOUCH_THUMBSTICK_CLICK , XRT_INPUT_NAME(0x00CD, BOOLEAN)) \
1005 _(XRT_INPUT_TOUCH_THUMBSTICK_TOUCH , XRT_INPUT_NAME(0x00CE, BOOLEAN)) \
1006 _(XRT_INPUT_TOUCH_THUMBSTICK , XRT_INPUT_NAME(0x00CF, VEC2_MINUS_ONE_TO_ONE)) \
1007 _(XRT_INPUT_TOUCH_THUMBREST_TOUCH , XRT_INPUT_NAME(0x00D0, BOOLEAN)) \
1008 _(XRT_INPUT_TOUCH_GRIP_POSE , XRT_INPUT_NAME(0x00D1, POSE)) \
1009 _(XRT_INPUT_TOUCH_AIM_POSE , XRT_INPUT_NAME(0x00D2, POSE)) \
1011 _(XRT_INPUT_HAND_SELECT_VALUE , XRT_INPUT_NAME(0x00E0, VEC1_ZERO_TO_ONE)) \
1012 _(XRT_INPUT_HAND_SQUEEZE_VALUE , XRT_INPUT_NAME(0x00E1, VEC1_ZERO_TO_ONE)) \
1013 _(XRT_INPUT_HAND_GRIP_POSE , XRT_INPUT_NAME(0x00E2, POSE)) \
1014 _(XRT_INPUT_HAND_AIM_POSE , XRT_INPUT_NAME(0x00E3, POSE)) \
1016 _(XRT_INPUT_G2_CONTROLLER_X_CLICK , XRT_INPUT_NAME(0x00F0, BOOLEAN)) \
1017 _(XRT_INPUT_G2_CONTROLLER_Y_CLICK , XRT_INPUT_NAME(0x00F1, BOOLEAN)) \
1018 _(XRT_INPUT_G2_CONTROLLER_A_CLICK , XRT_INPUT_NAME(0x00F2, BOOLEAN)) \
1019 _(XRT_INPUT_G2_CONTROLLER_B_CLICK , XRT_INPUT_NAME(0x00F3, BOOLEAN)) \
1020 _(XRT_INPUT_G2_CONTROLLER_MENU_CLICK , XRT_INPUT_NAME(0x00F4, BOOLEAN)) \
1021 _(XRT_INPUT_G2_CONTROLLER_SQUEEZE_VALUE , XRT_INPUT_NAME(0x00F5, VEC1_ZERO_TO_ONE)) \
1022 _(XRT_INPUT_G2_CONTROLLER_TRIGGER_VALUE , XRT_INPUT_NAME(0x00F6, VEC1_ZERO_TO_ONE)) \
1023 _(XRT_INPUT_G2_CONTROLLER_THUMBSTICK_CLICK , XRT_INPUT_NAME(0x00F7, BOOLEAN)) \
1024 _(XRT_INPUT_G2_CONTROLLER_THUMBSTICK , XRT_INPUT_NAME(0x00F8, VEC2_MINUS_ONE_TO_ONE)) \
1025 _(XRT_INPUT_G2_CONTROLLER_GRIP_POSE , XRT_INPUT_NAME(0x00F9, POSE)) \
1026 _(XRT_INPUT_G2_CONTROLLER_AIM_POSE , XRT_INPUT_NAME(0x00FA, POSE)) \
1027 _(XRT_INPUT_G2_CONTROLLER_HOME_CLICK , XRT_INPUT_NAME(0x00FB, BOOLEAN)) \
1028 _(XRT_INPUT_G2_CONTROLLER_SQUEEZE_CLICK , XRT_INPUT_NAME(0x00FC, BOOLEAN)) \
1030 _(XRT_INPUT_ODYSSEY_CONTROLLER_MENU_CLICK , XRT_INPUT_NAME(0x0100, BOOLEAN)) \
1031 _(XRT_INPUT_ODYSSEY_CONTROLLER_SQUEEZE_CLICK , XRT_INPUT_NAME(0x0101, BOOLEAN)) \
1032 _(XRT_INPUT_ODYSSEY_CONTROLLER_TRIGGER_VALUE , XRT_INPUT_NAME(0x0102, VEC1_ZERO_TO_ONE)) \
1033 _(XRT_INPUT_ODYSSEY_CONTROLLER_THUMBSTICK_CLICK , XRT_INPUT_NAME(0x0103, BOOLEAN)) \
1034 _(XRT_INPUT_ODYSSEY_CONTROLLER_THUMBSTICK , XRT_INPUT_NAME(0x0104, VEC2_MINUS_ONE_TO_ONE)) \
1035 _(XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD_CLICK , XRT_INPUT_NAME(0x0105, BOOLEAN)) \
1036 _(XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD_TOUCH , XRT_INPUT_NAME(0x0106, BOOLEAN)) \
1037 _(XRT_INPUT_ODYSSEY_CONTROLLER_TRACKPAD , XRT_INPUT_NAME(0x0107, VEC2_MINUS_ONE_TO_ONE)) \
1038 _(XRT_INPUT_ODYSSEY_CONTROLLER_GRIP_POSE , XRT_INPUT_NAME(0x0108, POSE)) \
1039 _(XRT_INPUT_ODYSSEY_CONTROLLER_AIM_POSE , XRT_INPUT_NAME(0x0109, POSE)) \
1040 _(XRT_INPUT_ODYSSEY_CONTROLLER_HOME_CLICK , XRT_INPUT_NAME(0x010A, BOOLEAN)) \
1042 _(XRT_INPUT_ML2_CONTROLLER_MENU_CLICK , XRT_INPUT_NAME(0x0200, BOOLEAN)) \
1043 _(XRT_INPUT_ML2_CONTROLLER_SELECT_CLICK , XRT_INPUT_NAME(0x0201, BOOLEAN)) \
1044 _(XRT_INPUT_ML2_CONTROLLER_TRIGGER_CLICK , XRT_INPUT_NAME(0x0202, BOOLEAN)) \
1045 _(XRT_INPUT_ML2_CONTROLLER_TRIGGER_VALUE , XRT_INPUT_NAME(0x0203, VEC1_ZERO_TO_ONE)) \
1046 _(XRT_INPUT_ML2_CONTROLLER_TRACKPAD_CLICK , XRT_INPUT_NAME(0x0204, BOOLEAN)) \
1047 _(XRT_INPUT_ML2_CONTROLLER_TRACKPAD_TOUCH , XRT_INPUT_NAME(0x0205, BOOLEAN)) \
1048 _(XRT_INPUT_ML2_CONTROLLER_TRACKPAD_FORCE , XRT_INPUT_NAME(0x0206, VEC1_ZERO_TO_ONE)) \
1049 _(XRT_INPUT_ML2_CONTROLLER_TRACKPAD , XRT_INPUT_NAME(0x0207, VEC2_MINUS_ONE_TO_ONE)) \
1050 _(XRT_INPUT_ML2_CONTROLLER_GRIP_POSE , XRT_INPUT_NAME(0x0208, POSE)) \
1051 _(XRT_INPUT_ML2_CONTROLLER_AIM_POSE , XRT_INPUT_NAME(0x0209, POSE)) \
1052 _(XRT_INPUT_ML2_CONTROLLER_SHOULDER_CLICK , XRT_INPUT_NAME(0x020A, BOOLEAN)) \
1054 _(XRT_INPUT_VIVE_TRACKER_SYSTEM_CLICK , XRT_INPUT_NAME(0x0210, BOOLEAN)) \
1055 _(XRT_INPUT_VIVE_TRACKER_MENU_CLICK , XRT_INPUT_NAME(0x0211, BOOLEAN)) \
1056 _(XRT_INPUT_VIVE_TRACKER_TRIGGER_CLICK , XRT_INPUT_NAME(0x0212, BOOLEAN)) \
1057 _(XRT_INPUT_VIVE_TRACKER_SQUEEZE_CLICK , XRT_INPUT_NAME(0x0213, BOOLEAN)) \
1058 _(XRT_INPUT_VIVE_TRACKER_TRIGGER_VALUE , XRT_INPUT_NAME(0x0214, VEC1_ZERO_TO_ONE)) \
1059 _(XRT_INPUT_VIVE_TRACKER_TRACKPAD , XRT_INPUT_NAME(0x0215, VEC2_MINUS_ONE_TO_ONE)) \
1060 _(XRT_INPUT_VIVE_TRACKER_TRACKPAD_CLICK , XRT_INPUT_NAME(0x0216, BOOLEAN)) \
1061 _(XRT_INPUT_VIVE_TRACKER_TRACKPAD_TOUCH , XRT_INPUT_NAME(0x0217, BOOLEAN)) \
1062 _(XRT_INPUT_VIVE_TRACKER_GRIP_POSE , XRT_INPUT_NAME(0x0218, POSE)) \
1064 _(XRT_INPUT_PSSENSE_PS_CLICK , XRT_INPUT_NAME(0x0300, BOOLEAN)) \
1065 _(XRT_INPUT_PSSENSE_SHARE_CLICK , XRT_INPUT_NAME(0x0301, BOOLEAN)) \
1066 _(XRT_INPUT_PSSENSE_OPTIONS_CLICK , XRT_INPUT_NAME(0x0302, BOOLEAN)) \
1067 _(XRT_INPUT_PSSENSE_SQUARE_CLICK , XRT_INPUT_NAME(0x0303, BOOLEAN)) \
1068 _(XRT_INPUT_PSSENSE_SQUARE_TOUCH , XRT_INPUT_NAME(0x0304, BOOLEAN)) \
1069 _(XRT_INPUT_PSSENSE_TRIANGLE_CLICK , XRT_INPUT_NAME(0x0305, BOOLEAN)) \
1070 _(XRT_INPUT_PSSENSE_TRIANGLE_TOUCH , XRT_INPUT_NAME(0x0306, BOOLEAN)) \
1071 _(XRT_INPUT_PSSENSE_CROSS_CLICK , XRT_INPUT_NAME(0x0307, BOOLEAN)) \
1072 _(XRT_INPUT_PSSENSE_CROSS_TOUCH , XRT_INPUT_NAME(0x0308, BOOLEAN)) \
1073 _(XRT_INPUT_PSSENSE_CIRCLE_CLICK , XRT_INPUT_NAME(0x0309, BOOLEAN)) \
1074 _(XRT_INPUT_PSSENSE_CIRCLE_TOUCH , XRT_INPUT_NAME(0x030a, BOOLEAN)) \
1075 _(XRT_INPUT_PSSENSE_SQUEEZE_CLICK , XRT_INPUT_NAME(0x030b, BOOLEAN)) \
1076 _(XRT_INPUT_PSSENSE_SQUEEZE_TOUCH , XRT_INPUT_NAME(0x030c, BOOLEAN)) \
1077 _(XRT_INPUT_PSSENSE_SQUEEZE_PROXIMITY , XRT_INPUT_NAME(0x030d, VEC1_ZERO_TO_ONE)) \
1078 _(XRT_INPUT_PSSENSE_TRIGGER_CLICK , XRT_INPUT_NAME(0x030e, BOOLEAN)) \
1079 _(XRT_INPUT_PSSENSE_TRIGGER_TOUCH , XRT_INPUT_NAME(0x030f, BOOLEAN)) \
1080 _(XRT_INPUT_PSSENSE_TRIGGER_VALUE , XRT_INPUT_NAME(0x0310, VEC1_ZERO_TO_ONE)) \
1081 _(XRT_INPUT_PSSENSE_TRIGGER_PROXIMITY , XRT_INPUT_NAME(0x0311, VEC1_ZERO_TO_ONE)) \
1082 _(XRT_INPUT_PSSENSE_THUMBSTICK , XRT_INPUT_NAME(0x0312, VEC2_MINUS_ONE_TO_ONE)) \
1083 _(XRT_INPUT_PSSENSE_THUMBSTICK_CLICK , XRT_INPUT_NAME(0x0313, BOOLEAN)) \
1084 _(XRT_INPUT_PSSENSE_THUMBSTICK_TOUCH , XRT_INPUT_NAME(0x0314, BOOLEAN)) \
1085 _(XRT_INPUT_PSSENSE_GRIP_POSE , XRT_INPUT_NAME(0x0315, POSE)) \
1086 _(XRT_INPUT_PSSENSE_AIM_POSE , XRT_INPUT_NAME(0x0316, POSE)) \
1089 _(XRT_INPUT_HAND_PINCH_POSE , XRT_INPUT_NAME(0x0401, POSE)) \
1090 _(XRT_INPUT_HAND_POKE_POSE , XRT_INPUT_NAME(0x0402, POSE)) \
1091 _(XRT_INPUT_HAND_PINCH_VALUE , XRT_INPUT_NAME(0x0403, VEC1_ZERO_TO_ONE)) \
1092 _(XRT_INPUT_HAND_AIM_ACTIVATE_VALUE , XRT_INPUT_NAME(0x0404, VEC1_ZERO_TO_ONE)) \
1093 _(XRT_INPUT_HAND_GRASP_VALUE , XRT_INPUT_NAME(0x0405, VEC1_ZERO_TO_ONE)) \
1094 _(XRT_INPUT_HAND_PINCH_READY , XRT_INPUT_NAME(0x0406, BOOLEAN)) \
1095 _(XRT_INPUT_HAND_AIM_ACTIVATE_READY , XRT_INPUT_NAME(0x0407, BOOLEAN)) \
1096 _(XRT_INPUT_HAND_GRASP_READY , XRT_INPUT_NAME(0x0408, BOOLEAN)) \
1098 _(XRT_INPUT_OPPO_MR_X_CLICK , XRT_INPUT_NAME(0x0500, BOOLEAN)) \
1099 _(XRT_INPUT_OPPO_MR_X_TOUCH , XRT_INPUT_NAME(0x0501, BOOLEAN)) \
1100 _(XRT_INPUT_OPPO_MR_Y_CLICK , XRT_INPUT_NAME(0x0502, BOOLEAN)) \
1101 _(XRT_INPUT_OPPO_MR_Y_TOUCH , XRT_INPUT_NAME(0x0503, BOOLEAN)) \
1102 _(XRT_INPUT_OPPO_MR_MENU_CLICK , XRT_INPUT_NAME(0x0504, BOOLEAN)) \
1103 _(XRT_INPUT_OPPO_MR_HEART_RATE_VALUE , XRT_INPUT_NAME(0x0505, VEC1_ZERO_TO_ONE)) \
1104 _(XRT_INPUT_OPPO_MR_A_CLICK , XRT_INPUT_NAME(0x0506, BOOLEAN)) \
1105 _(XRT_INPUT_OPPO_MR_A_TOUCH , XRT_INPUT_NAME(0x0507, BOOLEAN)) \
1106 _(XRT_INPUT_OPPO_MR_B_CLICK , XRT_INPUT_NAME(0x0508, BOOLEAN)) \
1107 _(XRT_INPUT_OPPO_MR_B_TOUCH , XRT_INPUT_NAME(0x0509, BOOLEAN)) \
1108 _(XRT_INPUT_OPPO_MR_HOME_CLICK , XRT_INPUT_NAME(0x050A, BOOLEAN)) \
1109 _(XRT_INPUT_OPPO_MR_SQUEEZE_VALUE , XRT_INPUT_NAME(0x050B, VEC1_ZERO_TO_ONE)) \
1110 _(XRT_INPUT_OPPO_MR_TRIGGER_TOUCH , XRT_INPUT_NAME(0x050C, BOOLEAN)) \
1111 _(XRT_INPUT_OPPO_MR_TRIGGER_VALUE , XRT_INPUT_NAME(0x050D, VEC1_ZERO_TO_ONE)) \
1112 _(XRT_INPUT_OPPO_MR_GRIP_POSE , XRT_INPUT_NAME(0x050E, POSE)) \
1113 _(XRT_INPUT_OPPO_MR_AIM_POSE , XRT_INPUT_NAME(0x050F, POSE)) \
1114 _(XRT_INPUT_OPPO_MR_THUMBSTICK_CLICK , XRT_INPUT_NAME(0x0510, BOOLEAN)) \
1115 _(XRT_INPUT_OPPO_MR_THUMBSTICK_TOUCH , XRT_INPUT_NAME(0x0511, BOOLEAN)) \
1116 _(XRT_INPUT_OPPO_MR_THUMBSTICK , XRT_INPUT_NAME(0x0512, VEC2_MINUS_ONE_TO_ONE)) \
1118 _(XRT_INPUT_GENERIC_FACE_TRACKING , XRT_INPUT_NAME(0x0600, FACE_TRACKING)) \
1120 _(XRT_INPUT_HTC_EYE_FACE_TRACKING , XRT_INPUT_NAME(0x0601, FACE_TRACKING)) \
1121 _(XRT_INPUT_HTC_LIP_FACE_TRACKING , XRT_INPUT_NAME(0x0602, FACE_TRACKING))
1135 #define XRT_INPUT_LIST_TO_NAME_VALUE(NAME, VALUE) NAME = VALUE,
1137 XRT_INPUT_LIST(XRT_INPUT_LIST_TO_NAME_VALUE)
1139 #undef XRT_INPUT_LIST_TO_NAME_VALUE
1148 #define XRT_HAND_JOINT_COUNT 26
1157 XRT_HAND_JOINT_PALM = 0,
1158 XRT_HAND_JOINT_WRIST = 1,
1159 XRT_HAND_JOINT_THUMB_METACARPAL = 2,
1160 XRT_HAND_JOINT_THUMB_PROXIMAL = 3,
1161 XRT_HAND_JOINT_THUMB_DISTAL = 4,
1162 XRT_HAND_JOINT_THUMB_TIP = 5,
1163 XRT_HAND_JOINT_INDEX_METACARPAL = 6,
1164 XRT_HAND_JOINT_INDEX_PROXIMAL = 7,
1165 XRT_HAND_JOINT_INDEX_INTERMEDIATE = 8,
1166 XRT_HAND_JOINT_INDEX_DISTAL = 9,
1167 XRT_HAND_JOINT_INDEX_TIP = 10,
1168 XRT_HAND_JOINT_MIDDLE_METACARPAL = 11,
1169 XRT_HAND_JOINT_MIDDLE_PROXIMAL = 12,
1170 XRT_HAND_JOINT_MIDDLE_INTERMEDIATE = 13,
1171 XRT_HAND_JOINT_MIDDLE_DISTAL = 14,
1172 XRT_HAND_JOINT_MIDDLE_TIP = 15,
1173 XRT_HAND_JOINT_RING_METACARPAL = 16,
1174 XRT_HAND_JOINT_RING_PROXIMAL = 17,
1175 XRT_HAND_JOINT_RING_INTERMEDIATE = 18,
1176 XRT_HAND_JOINT_RING_DISTAL = 19,
1177 XRT_HAND_JOINT_RING_TIP = 20,
1178 XRT_HAND_JOINT_LITTLE_METACARPAL = 21,
1179 XRT_HAND_JOINT_LITTLE_PROXIMAL = 22,
1180 XRT_HAND_JOINT_LITTLE_INTERMEDIATE = 23,
1181 XRT_HAND_JOINT_LITTLE_DISTAL = 24,
1182 XRT_HAND_JOINT_LITTLE_TIP = 25,
1183 XRT_HAND_JOINT_MAX_ENUM = 0x7FFFFFFF
1213 #define XRT_FINGER_COUNT 5
1222 XRT_FINGER_LITTLE = 0,
1262 #define XRT_OUTPUT_TYPE_BITWIDTH 8u
1269 #define XRT_OUTPUT_TYPE_BITMASK 0xffu
1279 XRT_OUTPUT_TYPE_VIBRATION = 0x00,
1280 XRT_OUTPUT_TYPE_FORCE_FEEDBACK = 0x01,
1284 #define XRT_OUTPUT_NAME(id, type) ((UINT32_C(id) << XRT_OUTPUT_TYPE_BITWIDTH) | (uint32_t)XRT_OUTPUT_TYPE_##type)
1286 enum xrt_eye_expression_htc
1288 XRT_EYE_EXPRESSION_LEFT_BLINK_HTC = 0,
1289 XRT_EYE_EXPRESSION_LEFT_WIDE_HTC = 1,
1290 XRT_EYE_EXPRESSION_RIGHT_BLINK_HTC = 2,
1291 XRT_EYE_EXPRESSION_RIGHT_WIDE_HTC = 3,
1292 XRT_EYE_EXPRESSION_LEFT_SQUEEZE_HTC = 4,
1293 XRT_EYE_EXPRESSION_RIGHT_SQUEEZE_HTC = 5,
1294 XRT_EYE_EXPRESSION_LEFT_DOWN_HTC = 6,
1295 XRT_EYE_EXPRESSION_RIGHT_DOWN_HTC = 7,
1296 XRT_EYE_EXPRESSION_LEFT_OUT_HTC = 8,
1297 XRT_EYE_EXPRESSION_RIGHT_IN_HTC = 9,
1298 XRT_EYE_EXPRESSION_LEFT_IN_HTC = 10,
1299 XRT_EYE_EXPRESSION_RIGHT_OUT_HTC = 11,
1300 XRT_EYE_EXPRESSION_LEFT_UP_HTC = 12,
1301 XRT_EYE_EXPRESSION_RIGHT_UP_HTC = 13
1304 enum xrt_lip_expression_htc
1306 XRT_LIP_EXPRESSION_JAW_RIGHT_HTC = 0,
1307 XRT_LIP_EXPRESSION_JAW_LEFT_HTC = 1,
1308 XRT_LIP_EXPRESSION_JAW_FORWARD_HTC = 2,
1309 XRT_LIP_EXPRESSION_JAW_OPEN_HTC = 3,
1310 XRT_LIP_EXPRESSION_MOUTH_APE_SHAPE_HTC = 4,
1311 XRT_LIP_EXPRESSION_MOUTH_UPPER_RIGHT_HTC = 5,
1312 XRT_LIP_EXPRESSION_MOUTH_UPPER_LEFT_HTC = 6,
1313 XRT_LIP_EXPRESSION_MOUTH_LOWER_RIGHT_HTC = 7,
1314 XRT_LIP_EXPRESSION_MOUTH_LOWER_LEFT_HTC = 8,
1315 XRT_LIP_EXPRESSION_MOUTH_UPPER_OVERTURN_HTC = 9,
1316 XRT_LIP_EXPRESSION_MOUTH_LOWER_OVERTURN_HTC = 10,
1317 XRT_LIP_EXPRESSION_MOUTH_POUT_HTC = 11,
1318 XRT_LIP_EXPRESSION_MOUTH_SMILE_RIGHT_HTC = 12,
1319 XRT_LIP_EXPRESSION_MOUTH_SMILE_LEFT_HTC = 13,
1320 XRT_LIP_EXPRESSION_MOUTH_SAD_RIGHT_HTC = 14,
1321 XRT_LIP_EXPRESSION_MOUTH_SAD_LEFT_HTC = 15,
1322 XRT_LIP_EXPRESSION_CHEEK_PUFF_RIGHT_HTC = 16,
1323 XRT_LIP_EXPRESSION_CHEEK_PUFF_LEFT_HTC = 17,
1324 XRT_LIP_EXPRESSION_CHEEK_SUCK_HTC = 18,
1325 XRT_LIP_EXPRESSION_MOUTH_UPPER_UPRIGHT_HTC = 19,
1326 XRT_LIP_EXPRESSION_MOUTH_UPPER_UPLEFT_HTC = 20,
1327 XRT_LIP_EXPRESSION_MOUTH_LOWER_DOWNRIGHT_HTC = 21,
1328 XRT_LIP_EXPRESSION_MOUTH_LOWER_DOWNLEFT_HTC = 22,
1329 XRT_LIP_EXPRESSION_MOUTH_UPPER_INSIDE_HTC = 23,
1330 XRT_LIP_EXPRESSION_MOUTH_LOWER_INSIDE_HTC = 24,
1331 XRT_LIP_EXPRESSION_MOUTH_LOWER_OVERLAY_HTC = 25,
1332 XRT_LIP_EXPRESSION_TONGUE_LONGSTEP1_HTC = 26,
1333 XRT_LIP_EXPRESSION_TONGUE_LEFT_HTC = 27,
1334 XRT_LIP_EXPRESSION_TONGUE_RIGHT_HTC = 28,
1335 XRT_LIP_EXPRESSION_TONGUE_UP_HTC = 29,
1336 XRT_LIP_EXPRESSION_TONGUE_DOWN_HTC = 30,
1337 XRT_LIP_EXPRESSION_TONGUE_ROLL_HTC = 31,
1338 XRT_LIP_EXPRESSION_TONGUE_LONGSTEP2_HTC = 32,
1339 XRT_LIP_EXPRESSION_TONGUE_UPRIGHT_MORPH_HTC = 33,
1340 XRT_LIP_EXPRESSION_TONGUE_UPLEFT_MORPH_HTC = 34,
1341 XRT_LIP_EXPRESSION_TONGUE_DOWNRIGHT_MORPH_HTC = 35,
1342 XRT_LIP_EXPRESSION_TONGUE_DOWNLEFT_MORPH_HTC = 36
1345 enum xrt_facial_tracking_type_htc
1347 XRT_FACIAL_TRACKING_TYPE_EYE_DEFAULT_HTC = 1,
1348 XRT_FACIAL_TRACKING_TYPE_LIP_DEFAULT_HTC = 2
1351 #define XRT_FACIAL_EXPRESSION_EYE_COUNT_HTC 14
1352 #define XRT_FACIAL_EXPRESSION_LIP_COUNT_HTC 37
1356 uint64_t sample_time_ns;
1364 float expression_weights[XRT_FACIAL_EXPRESSION_EYE_COUNT_HTC];
1371 float expression_weights[XRT_FACIAL_EXPRESSION_LIP_COUNT_HTC];
1392 XRT_OUTPUT_NAME_SIMPLE_VIBRATION = XRT_OUTPUT_NAME(0x0010, VIBRATION),
1393 XRT_OUTPUT_NAME_PSMV_RUMBLE_VIBRATION = XRT_OUTPUT_NAME(0x0020, VIBRATION),
1394 XRT_OUTPUT_NAME_INDEX_HAPTIC = XRT_OUTPUT_NAME(0x0030, VIBRATION),
1395 XRT_OUTPUT_NAME_VIVE_HAPTIC = XRT_OUTPUT_NAME(0x0040, VIBRATION),
1396 XRT_OUTPUT_NAME_WMR_HAPTIC = XRT_OUTPUT_NAME(0x0050, VIBRATION),
1398 XRT_OUTPUT_NAME_XBOX_HAPTIC_LEFT = XRT_OUTPUT_NAME(0x0060, VIBRATION),
1399 XRT_OUTPUT_NAME_XBOX_HAPTIC_RIGHT = XRT_OUTPUT_NAME(0x0061, VIBRATION),
1400 XRT_OUTPUT_NAME_XBOX_HAPTIC_LEFT_TRIGGER = XRT_OUTPUT_NAME(0x0062, VIBRATION),
1401 XRT_OUTPUT_NAME_XBOX_HAPTIC_RIGHT_TRIGGER = XRT_OUTPUT_NAME(0x0063, VIBRATION),
1403 XRT_OUTPUT_NAME_TOUCH_HAPTIC = XRT_OUTPUT_NAME(0x0070, VIBRATION),
1405 XRT_OUTPUT_NAME_FORCE_FEEDBACK_LEFT = XRT_OUTPUT_NAME(0x0080, FORCE_FEEDBACK),
1406 XRT_OUTPUT_NAME_FORCE_FEEDBACK_RIGHT = XRT_OUTPUT_NAME(0x0081, FORCE_FEEDBACK),
1408 XRT_OUTPUT_NAME_G2_CONTROLLER_HAPTIC = XRT_OUTPUT_NAME(0x0090, VIBRATION),
1409 XRT_OUTPUT_NAME_ODYSSEY_CONTROLLER_HAPTIC = XRT_OUTPUT_NAME(0x00A0, VIBRATION),
1410 XRT_OUTPUT_NAME_ML2_CONTROLLER_VIBRATION = XRT_OUTPUT_NAME(0x00B0, VIBRATION),
1412 XRT_OUTPUT_NAME_PSSENSE_VIBRATION = XRT_OUTPUT_NAME(0x00C0, VIBRATION),
1413 XRT_OUTPUT_NAME_PSSENSE_TRIGGER_FEEDBACK = XRT_OUTPUT_NAME(0x00C1, FORCE_FEEDBACK),
1415 XRT_OUTPUT_NAME_VIVE_TRACKER_HAPTIC = XRT_OUTPUT_NAME(0x00D0, VIBRATION),
1417 XRT_OUTPUT_NAME_OPPO_MR_HAPTIC = XRT_OUTPUT_NAME(0x00E0, VIBRATION),
1426 #define XRT_MIN_HAPTIC_DURATION -1
1435 #define XRT_FREQUENCY_UNSPECIFIED 0
1442 #define XRT_INFINITE_DURATION (0x7fffffffffffffffLL)
1444 enum xrt_force_feedback_location
1446 XRT_FORCE_FEEDBACK_LOCATION_LEFT_THUMB,
1447 XRT_FORCE_FEEDBACK_LOCATION_LEFT_INDEX,
1448 XRT_FORCE_FEEDBACK_LOCATION_LEFT_MIDDLE,
1449 XRT_FORCE_FEEDBACK_LOCATION_LEFT_RING,
1450 XRT_FORCE_FEEDBACK_LOCATION_LEFT_PINKY,
1456 enum xrt_force_feedback_location location;
1470 int64_t duration_ns;
1476 uint64_t force_feedback_location_count;
1505 XRT_PERF_DOMAIN_CPU = 1,
1506 XRT_PERF_DOMAIN_GPU = 2,
1509 enum xrt_perf_sub_domain
1511 XRT_PERF_SUB_DOMAIN_COMPOSITING = 1,
1512 XRT_PERF_SUB_DOMAIN_RENDERING = 2,
1513 XRT_PERF_SUB_DOMAIN_THERMAL = 3
1521 XRT_PERF_SET_LEVEL_POWER_SAVINGS = 0,
1522 XRT_PERF_SET_LEVEL_SUSTAINED_LOW = 25,
1523 XRT_PERF_SET_LEVEL_SUSTAINED_HIGH = 50,
1524 XRT_PERF_SET_LEVEL_BOOST = 75,
1532 XRT_PERF_NOTIFY_LEVEL_NORMAL = 0,
1533 XRT_PERF_NOTIFY_LEVEL_WARNING = 25,
1534 XRT_PERF_NOTIFY_LEVEL_IMPAIRED = 75,
1544 XRT_VISIBILITY_MASK_TYPE_HIDDEN_TRIANGLE_MESH = 1,
1545 XRT_VISIBILITY_MASK_TYPE_VISIBLE_TRIANGLE_MESH = 2,
1546 XRT_VISIBILITY_MASK_TYPE_LINE_LOOP = 3,
1565 xrt_atomic_s32_inc_return(&xref->count);
1577 xrt_atomic_s32_dec_return(&xref->count);
1586 XRT_CHECK_RESULT
static inline bool
1589 int32_t count = xrt_atomic_s32_inc_return(&xref->count);
1599 XRT_CHECK_RESULT
static inline bool
1602 int32_t count = xrt_atomic_s32_dec_return(&xref->count);
xrt_input_type
Base type of this inputs.
Definition: xrt_defines.h:784
xrt_hand
Enumeration for left and right hand.
Definition: xrt_defines.h:1190
#define XRT_MATRIX_3X3_ELEMENTS
The number of values in xrt_matrix_3x3.
Definition: xrt_defines.h:525
xrt_stereo_format
What type of stereo format a frame has.
Definition: xrt_defines.h:203
xrt_visibility_mask_type
Visibility mask, mirror of XrVisibilityMaskKHR.
Definition: xrt_defines.h:1541
xrt_blend_mode
Blend mode that the device supports, exact mirror of XrEnvironmentBlendMode.
Definition: xrt_defines.h:109
static XRT_CHECK_RESULT bool xrt_reference_dec_and_is_zero(struct xrt_reference *xref)
Decrement the reference and return true if the value is now zero.
Definition: xrt_defines.h:1598
xrt_form_factor
What form factor is this device, mostly maps onto OpenXR's XrFormFactor.
Definition: xrt_defines.h:1491
xrt_input_name
Every internal input source known to monado with a baked in type.
Definition: xrt_defines.h:1134
xrt_output_type
Base type of this output.
Definition: xrt_defines.h:1275
static XRT_CHECK_RESULT bool xrt_reference_inc_and_was_zero(struct xrt_reference *xref)
Increment the reference and return true if the value was zero.
Definition: xrt_defines.h:1585
#define XRT_UUID_SIZE
Internal define for VK_UUID_SIZE and XR_UUID_SIZE_EXT.
Definition: xrt_defines.h:28
#define XRT_MATRIX_2X2_ELEMENTS
The number of values in xrt_matrix_2x2.
Definition: xrt_defines.h:498
static void xrt_reference_inc(struct xrt_reference *xref)
Increment the reference, probably want xrt_reference_inc_and_was_zero.
Definition: xrt_defines.h:1561
#define XRT_MATRIX_2X2_VECS
The number of 2d vectors in xrt_matrix_2x2.
Definition: xrt_defines.h:505
#define XRT_LUID_SIZE
Internal define for VK_LUID_SIZE.
Definition: xrt_defines.h:52
static void xrt_reference_dec(struct xrt_reference *xref)
Decrement the reference, probably want xrt_reference_dec_and_is_zero.
Definition: xrt_defines.h:1573
xrt_reference_space_type
Type of a OpenXR mapped reference space, maps to the semantic spaces on the xrt_space_overseer struct...
Definition: xrt_defines.h:599
#define XRT_HAND_JOINT_COUNT
Number of joints in a hand.
Definition: xrt_defines.h:1146
xrt_output_name
Name of a output with a baked in type.
Definition: xrt_defines.h:1388
xrt_finger
Names for fingers on a hand.
Definition: xrt_defines.h:1219
xrt_hand_joint
Number of joints in a hand.
Definition: xrt_defines.h:1154
#define XRT_MATRIX_4X4_ELEMENTS
The number of values in a 4x4 matrix like xrt_matrix_4x4 and xrt_matrix_4x4_f64.
Definition: xrt_defines.h:552
xrt_space_relation_flags
Flags of which components of a xrt_space_relation is valid.
Definition: xrt_defines.h:629
xrt_device_type
How an xrt_device can be used.
Definition: xrt_defines.h:766
@ XRT_INPUT_TYPE_POSE
A tracked pose.
Definition: xrt_defines.h:797
@ XRT_INPUT_TYPE_VEC2_MINUS_ONE_TO_ONE
Vec2 input, components in [-1, 1].
Definition: xrt_defines.h:791
@ XRT_INPUT_TYPE_VEC3_MINUS_ONE_TO_ONE
Vec3 input, components in [-1, 1].
Definition: xrt_defines.h:793
@ XRT_INPUT_TYPE_FACE_TRACKING
A tracked face.
Definition: xrt_defines.h:801
@ XRT_INPUT_TYPE_HAND_TRACKING
A tracked hand.
Definition: xrt_defines.h:799
@ XRT_INPUT_TYPE_VEC1_MINUS_ONE_TO_ONE
Float input in [-1, 1].
Definition: xrt_defines.h:789
@ XRT_INPUT_TYPE_BOOLEAN
Boolean (digital, binary) input.
Definition: xrt_defines.h:795
@ XRT_INPUT_TYPE_VEC1_ZERO_TO_ONE
Float input in [0, 1].
Definition: xrt_defines.h:787
@ XRT_STEREO_FORMAT_OAU
Over & Under.
Definition: xrt_defines.h:207
@ XRT_STEREO_FORMAT_SBS
Side by side.
Definition: xrt_defines.h:205
@ XRT_STEREO_FORMAT_INTERLEAVED
Interleaved pixels.
Definition: xrt_defines.h:206
@ XRT_FORM_FACTOR_HANDHELD
Handheld display.
Definition: xrt_defines.h:1493
@ XRT_FORM_FACTOR_HMD
Head mounted display.
Definition: xrt_defines.h:1492
static Eigen::Map< const Eigen::Vector3f > position(const struct xrt_pose &pose)
Return a Eigen type wrapping a pose's position (const).
Definition: m_eigen_interop.hpp:217
static Eigen::Map< const Eigen::Quaternionf > orientation(const struct xrt_pose &pose)
Return a Eigen type wrapping a pose's orientation (const).
Definition: m_eigen_interop.hpp:199
A range of API versions supported.
Definition: xrt_defines.h:580
A 3 element colour with floating point channels.
Definition: xrt_defines.h:384
A 3 element colour with 8 bits per channel.
Definition: xrt_defines.h:359
A 4 element colour with floating point channels.
Definition: xrt_defines.h:396
A 4 element colour with 8 bits per channel.
Definition: xrt_defines.h:371
Definition: xrt_defines.h:1353
Definition: xrt_defines.h:1373
Definition: xrt_defines.h:1359
Definition: xrt_defines.h:1366
Describes a projection matrix fov.
Definition: xrt_defines.h:486
Joint set type used for hand tracking.
Definition: xrt_defines.h:1233
Location of a single hand joint.
Definition: xrt_defines.h:1201
A limited unique id, it is only unique for the process it is in, so must not be used or synchronized ...
Definition: xrt_defines.h:79
To transport LUIDs between different APIs.
Definition: xrt_defines.h:60
A tightly packed 2x2 matrix of floats.
Definition: xrt_defines.h:513
A tightly packed 3x3 matrix of doubles.
Definition: xrt_defines.h:543
A tightly packed 3x3 matrix of floats.
Definition: xrt_defines.h:533
A tightly packed 4x4 matrix of double.
Definition: xrt_defines.h:570
A tightly packed 4x4 matrix of floats.
Definition: xrt_defines.h:560
Normalized image rectangle, coordinates and size in 0 .
Definition: xrt_defines.h:453
Image offset.
Definition: xrt_defines.h:420
Definition: xrt_defines.h:1452
A pose composed of a position and orientation.
Definition: xrt_defines.h:465
A quaternion with single floats.
Definition: xrt_defines.h:216
Image rectangle.
Definition: xrt_defines.h:443
Image rectangle.
Definition: xrt_defines.h:430
A base class for reference counted objects.
Definition: xrt_defines.h:96
A chain of space relations and their associated validity flags.
Definition: xrt_defines.h:695
#define XRT_RELATION_CHAIN_CAPACITY
The maximum number of steps that can be in a relation chain.
Definition: xrt_defines.h:685
Image size.
Definition: xrt_defines.h:409
A relation with two spaces, includes velocity and acceleration.
Definition: xrt_defines.h:657
To transport UUIDs between different APIs.
Definition: xrt_defines.h:36
Represents a uv triplet for distortion, basically just three xrt_vec2.
Definition: xrt_defines.h:261
A 1 element vector with single floats.
Definition: xrt_defines.h:240
A 2 element vector with 32 bit integers.
Definition: xrt_defines.h:348
A 2 element vector with single floats.
Definition: xrt_defines.h:250
A 3 element vector with single doubles.
Definition: xrt_defines.h:283
A 3 element vector with 32 bit integers.
Definition: xrt_defines.h:336
A 3 element vector with single floats.
Definition: xrt_defines.h:271
A union of all output types.
Definition: xrt_defines.h:1463
Header holding common defines.
xrt_perf_notify_level
Performance level.
Definition: xrt_defines.h:1529
xrt_distortion_model
Which distortion model does the device expose, used both as a bitfield and value.
Definition: xrt_defines.h:164
xrt_passthrough_purpose_flags
Specify the kind of passthrough behavior the layer provides.
Definition: xrt_defines.h:148
@ XRT_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_MASKED_HANDS
Provided by XR_FB_passthrough_keyboard_hands.
Definition: xrt_defines.h:156
@ XRT_PASSTHROUGH_LAYER_PURPOSE_RECONSTRUCTION
Fullscreen layer.
Definition: xrt_defines.h:150
@ XRT_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_HANDS
Provided by XR_FB_passthrough_keyboard_hands.
Definition: xrt_defines.h:154
@ XRT_PASSTHROUGH_LAYER_PURPOSE_PROJECTED
Projected layer.
Definition: xrt_defines.h:152
xrt_device_name
A enum that is used to name devices so that the state trackers can reason about the devices easier.
Definition: xrt_defines.h:712
@ XRT_DEVICE_HTC_FACE_TRACKING
XR_HTC_facial_tracking.
Definition: xrt_defines.h:757
@ XRT_DEVICE_EXT_HAND_INTERACTION
XR_EXT_hand_interaction.
Definition: xrt_defines.h:754
xrt_perf_domain
Domain type.
Definition: xrt_defines.h:1502
xrt_passthrough_state
Specify additional state change behavior.
Definition: xrt_defines.h:133
@ XRT_PASSTHROUGH_STATE_CHANGED_NON_RECOVERABLE_ERROR_BIT
Non-recoverable error has occurred.
Definition: xrt_defines.h:137
@ XRT_PASSTHROUGH_STATE_CHANGED_RESTORED_ERROR_BIT
The runtime has recovered from a previous error and is functioning normally.
Definition: xrt_defines.h:141
@ XRT_PASSTHROUGH_STATE_CHANGED_REINIT_REQUIRED_BIT
Passthrough system requires reinitialization.
Definition: xrt_defines.h:135
@ XRT_PASSTHROUGH_STATE_CHANGED_RECOVERABLE_ERROR_BIT
A recoverable error has occurred.
Definition: xrt_defines.h:139
xrt_format
Common formats, use u_format_* functions to reason about them.
Definition: xrt_defines.h:176
xrt_passthrough_create_flags
Special flags for creating passthrough.
Definition: xrt_defines.h:122
@ XRT_PASSTHROUGH_LAYER_DEPTH
Our compositor just ignores this bit.
Definition: xrt_defines.h:126
@ XRT_PASSTHROUGH_IS_RUNNING_AT_CREATION
Start the passthrough on creation.
Definition: xrt_defines.h:124
xrt_perf_set_level
Performance level.
Definition: xrt_defines.h:1518
Internal result type for XRT.