1#ifndef OPENXR_H_
2#define OPENXR_H_ 1
3
4/*
5** Copyright 2017-2024, The Khronos Group Inc.
6**
7** SPDX-License-Identifier: Apache-2.0 OR MIT
8*/
9
10/*
11** This header is generated from the Khronos OpenXR XML API Registry.
12**
13*/
14
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20
21
22#define XR_VERSION_1_0 1
23#include "openxr_platform_defines.h"
24#define XR_MAKE_VERSION(major, minor, patch) \
25 ((((major) & 0xffffULL) << 48) | (((minor) & 0xffffULL) << 32) | ((patch) & 0xffffffffULL))
26
27// OpenXR current version number.
28#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 0, 34)
29
30#define XR_VERSION_MAJOR(version) (uint16_t)(((uint64_t)(version) >> 48)& 0xffffULL)
31#define XR_VERSION_MINOR(version) (uint16_t)(((uint64_t)(version) >> 32) & 0xffffULL)
32#define XR_VERSION_PATCH(version) (uint32_t)((uint64_t)(version) & 0xffffffffULL)
33
34#define XR_MIN_COMPOSITION_LAYERS_SUPPORTED 16
35
36
37#if !defined(XR_NULL_HANDLE)
38#if (XR_PTR_SIZE == 8) && XR_CPP_NULLPTR_SUPPORTED
39 #define XR_NULL_HANDLE nullptr
40#else
41 #define XR_NULL_HANDLE 0
42#endif
43#endif
44
45
46
47#define XR_NULL_SYSTEM_ID 0
48
49
50#define XR_NULL_PATH 0
51
52
53#define XR_SUCCEEDED(result) ((result) >= 0)
54
55
56#define XR_FAILED(result) ((result) < 0)
57
58
59#define XR_UNQUALIFIED_SUCCESS(result) ((result) == 0)
60
61
62#define XR_NO_DURATION 0
63
64
65#define XR_INFINITE_DURATION 0x7fffffffffffffffLL
66
67
68#define XR_MIN_HAPTIC_DURATION -1
69
70
71#define XR_FREQUENCY_UNSPECIFIED 0
72
73
74#define XR_MAX_EVENT_DATA_SIZE sizeof(XrEventDataBuffer)
75
76
77#define XR_EXTENSION_ENUM_BASE 1000000000
78
79
80#define XR_EXTENSION_ENUM_STRIDE 1000
81
82
83#if !defined(XR_MAY_ALIAS)
84#if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4))
85#define XR_MAY_ALIAS __attribute__((__may_alias__))
86#else
87#define XR_MAY_ALIAS
88#endif
89#endif
90
91
92#if !defined(XR_DEFINE_HANDLE)
93#if (XR_PTR_SIZE == 8)
94 #define XR_DEFINE_HANDLE(object) typedef struct object##_T* object;
95#else
96 #define XR_DEFINE_HANDLE(object) typedef uint64_t object;
97#endif
98#endif
99
100
101
102#if !defined(XR_DEFINE_ATOM)
103 #define XR_DEFINE_ATOM(object) typedef uint64_t object;
104#endif
105
106
107typedef uint64_t XrVersion;
108typedef uint64_t XrFlags64;
109XR_DEFINE_ATOM(XrSystemId)
110typedef uint32_t XrBool32;
111XR_DEFINE_ATOM(XrPath)
112typedef int64_t XrTime;
113typedef int64_t XrDuration;
114XR_DEFINE_HANDLE(XrInstance)
115XR_DEFINE_HANDLE(XrSession)
116XR_DEFINE_HANDLE(XrSpace)
117XR_DEFINE_HANDLE(XrAction)
118XR_DEFINE_HANDLE(XrSwapchain)
119XR_DEFINE_HANDLE(XrActionSet)
120#define XR_TRUE 1
121#define XR_FALSE 0
122#define XR_MAX_EXTENSION_NAME_SIZE 128
123#define XR_MAX_API_LAYER_NAME_SIZE 256
124#define XR_MAX_API_LAYER_DESCRIPTION_SIZE 256
125#define XR_MAX_SYSTEM_NAME_SIZE 256
126#define XR_MAX_APPLICATION_NAME_SIZE 128
127#define XR_MAX_ENGINE_NAME_SIZE 128
128#define XR_MAX_RUNTIME_NAME_SIZE 128
129#define XR_MAX_PATH_LENGTH 256
130#define XR_MAX_STRUCTURE_NAME_SIZE 64
131#define XR_MAX_RESULT_STRING_SIZE 64
132#define XR_MAX_ACTION_SET_NAME_SIZE 64
133#define XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE 128
134#define XR_MAX_ACTION_NAME_SIZE 64
135#define XR_MAX_LOCALIZED_ACTION_NAME_SIZE 128
136
137typedef enum XrResult {
138 XR_SUCCESS = 0,
139 XR_TIMEOUT_EXPIRED = 1,
140 XR_SESSION_LOSS_PENDING = 3,
141 XR_EVENT_UNAVAILABLE = 4,
142 XR_SPACE_BOUNDS_UNAVAILABLE = 7,
143 XR_SESSION_NOT_FOCUSED = 8,
144 XR_FRAME_DISCARDED = 9,
145 XR_ERROR_VALIDATION_FAILURE = -1,
146 XR_ERROR_RUNTIME_FAILURE = -2,
147 XR_ERROR_OUT_OF_MEMORY = -3,
148 XR_ERROR_API_VERSION_UNSUPPORTED = -4,
149 XR_ERROR_INITIALIZATION_FAILED = -6,
150 XR_ERROR_FUNCTION_UNSUPPORTED = -7,
151 XR_ERROR_FEATURE_UNSUPPORTED = -8,
152 XR_ERROR_EXTENSION_NOT_PRESENT = -9,
153 XR_ERROR_LIMIT_REACHED = -10,
154 XR_ERROR_SIZE_INSUFFICIENT = -11,
155 XR_ERROR_HANDLE_INVALID = -12,
156 XR_ERROR_INSTANCE_LOST = -13,
157 XR_ERROR_SESSION_RUNNING = -14,
158 XR_ERROR_SESSION_NOT_RUNNING = -16,
159 XR_ERROR_SESSION_LOST = -17,
160 XR_ERROR_SYSTEM_INVALID = -18,
161 XR_ERROR_PATH_INVALID = -19,
162 XR_ERROR_PATH_COUNT_EXCEEDED = -20,
163 XR_ERROR_PATH_FORMAT_INVALID = -21,
164 XR_ERROR_PATH_UNSUPPORTED = -22,
165 XR_ERROR_LAYER_INVALID = -23,
166 XR_ERROR_LAYER_LIMIT_EXCEEDED = -24,
167 XR_ERROR_SWAPCHAIN_RECT_INVALID = -25,
168 XR_ERROR_SWAPCHAIN_FORMAT_UNSUPPORTED = -26,
169 XR_ERROR_ACTION_TYPE_MISMATCH = -27,
170 XR_ERROR_SESSION_NOT_READY = -28,
171 XR_ERROR_SESSION_NOT_STOPPING = -29,
172 XR_ERROR_TIME_INVALID = -30,
173 XR_ERROR_REFERENCE_SPACE_UNSUPPORTED = -31,
174 XR_ERROR_FILE_ACCESS_ERROR = -32,
175 XR_ERROR_FILE_CONTENTS_INVALID = -33,
176 XR_ERROR_FORM_FACTOR_UNSUPPORTED = -34,
177 XR_ERROR_FORM_FACTOR_UNAVAILABLE = -35,
178 XR_ERROR_API_LAYER_NOT_PRESENT = -36,
179 XR_ERROR_CALL_ORDER_INVALID = -37,
180 XR_ERROR_GRAPHICS_DEVICE_INVALID = -38,
181 XR_ERROR_POSE_INVALID = -39,
182 XR_ERROR_INDEX_OUT_OF_RANGE = -40,
183 XR_ERROR_VIEW_CONFIGURATION_TYPE_UNSUPPORTED = -41,
184 XR_ERROR_ENVIRONMENT_BLEND_MODE_UNSUPPORTED = -42,
185 XR_ERROR_NAME_DUPLICATED = -44,
186 XR_ERROR_NAME_INVALID = -45,
187 XR_ERROR_ACTIONSET_NOT_ATTACHED = -46,
188 XR_ERROR_ACTIONSETS_ALREADY_ATTACHED = -47,
189 XR_ERROR_LOCALIZED_NAME_DUPLICATED = -48,
190 XR_ERROR_LOCALIZED_NAME_INVALID = -49,
191 XR_ERROR_GRAPHICS_REQUIREMENTS_CALL_MISSING = -50,
192 XR_ERROR_RUNTIME_UNAVAILABLE = -51,
193 XR_ERROR_ANDROID_THREAD_SETTINGS_ID_INVALID_KHR = -1000003000,
194 XR_ERROR_ANDROID_THREAD_SETTINGS_FAILURE_KHR = -1000003001,
195 XR_ERROR_CREATE_SPATIAL_ANCHOR_FAILED_MSFT = -1000039001,
196 XR_ERROR_SECONDARY_VIEW_CONFIGURATION_TYPE_NOT_ENABLED_MSFT = -1000053000,
197 XR_ERROR_CONTROLLER_MODEL_KEY_INVALID_MSFT = -1000055000,
198 XR_ERROR_REPROJECTION_MODE_UNSUPPORTED_MSFT = -1000066000,
199 XR_ERROR_COMPUTE_NEW_SCENE_NOT_COMPLETED_MSFT = -1000097000,
200 XR_ERROR_SCENE_COMPONENT_ID_INVALID_MSFT = -1000097001,
201 XR_ERROR_SCENE_COMPONENT_TYPE_MISMATCH_MSFT = -1000097002,
202 XR_ERROR_SCENE_MESH_BUFFER_ID_INVALID_MSFT = -1000097003,
203 XR_ERROR_SCENE_COMPUTE_FEATURE_INCOMPATIBLE_MSFT = -1000097004,
204 XR_ERROR_SCENE_COMPUTE_CONSISTENCY_MISMATCH_MSFT = -1000097005,
205 XR_ERROR_DISPLAY_REFRESH_RATE_UNSUPPORTED_FB = -1000101000,
206 XR_ERROR_COLOR_SPACE_UNSUPPORTED_FB = -1000108000,
207 XR_ERROR_SPACE_COMPONENT_NOT_SUPPORTED_FB = -1000113000,
208 XR_ERROR_SPACE_COMPONENT_NOT_ENABLED_FB = -1000113001,
209 XR_ERROR_SPACE_COMPONENT_STATUS_PENDING_FB = -1000113002,
210 XR_ERROR_SPACE_COMPONENT_STATUS_ALREADY_SET_FB = -1000113003,
211 XR_ERROR_UNEXPECTED_STATE_PASSTHROUGH_FB = -1000118000,
212 XR_ERROR_FEATURE_ALREADY_CREATED_PASSTHROUGH_FB = -1000118001,
213 XR_ERROR_FEATURE_REQUIRED_PASSTHROUGH_FB = -1000118002,
214 XR_ERROR_NOT_PERMITTED_PASSTHROUGH_FB = -1000118003,
215 XR_ERROR_INSUFFICIENT_RESOURCES_PASSTHROUGH_FB = -1000118004,
216 XR_ERROR_UNKNOWN_PASSTHROUGH_FB = -1000118050,
217 XR_ERROR_RENDER_MODEL_KEY_INVALID_FB = -1000119000,
218 XR_RENDER_MODEL_UNAVAILABLE_FB = 1000119020,
219 XR_ERROR_MARKER_NOT_TRACKED_VARJO = -1000124000,
220 XR_ERROR_MARKER_ID_INVALID_VARJO = -1000124001,
221 XR_ERROR_MARKER_DETECTOR_PERMISSION_DENIED_ML = -1000138000,
222 XR_ERROR_MARKER_DETECTOR_LOCATE_FAILED_ML = -1000138001,
223 XR_ERROR_MARKER_DETECTOR_INVALID_DATA_QUERY_ML = -1000138002,
224 XR_ERROR_MARKER_DETECTOR_INVALID_CREATE_INFO_ML = -1000138003,
225 XR_ERROR_MARKER_INVALID_ML = -1000138004,
226 XR_ERROR_LOCALIZATION_MAP_INCOMPATIBLE_ML = -1000139000,
227 XR_ERROR_LOCALIZATION_MAP_UNAVAILABLE_ML = -1000139001,
228 XR_ERROR_LOCALIZATION_MAP_FAIL_ML = -1000139002,
229 XR_ERROR_LOCALIZATION_MAP_IMPORT_EXPORT_PERMISSION_DENIED_ML = -1000139003,
230 XR_ERROR_LOCALIZATION_MAP_PERMISSION_DENIED_ML = -1000139004,
231 XR_ERROR_LOCALIZATION_MAP_ALREADY_EXISTS_ML = -1000139005,
232 XR_ERROR_LOCALIZATION_MAP_CANNOT_EXPORT_CLOUD_MAP_ML = -1000139006,
233 XR_ERROR_SPATIAL_ANCHOR_NAME_NOT_FOUND_MSFT = -1000142001,
234 XR_ERROR_SPATIAL_ANCHOR_NAME_INVALID_MSFT = -1000142002,
235 XR_SCENE_MARKER_DATA_NOT_STRING_MSFT = 1000147000,
236 XR_ERROR_SPACE_MAPPING_INSUFFICIENT_FB = -1000169000,
237 XR_ERROR_SPACE_LOCALIZATION_FAILED_FB = -1000169001,
238 XR_ERROR_SPACE_NETWORK_TIMEOUT_FB = -1000169002,
239 XR_ERROR_SPACE_NETWORK_REQUEST_FAILED_FB = -1000169003,
240 XR_ERROR_SPACE_CLOUD_STORAGE_DISABLED_FB = -1000169004,
241 XR_ERROR_PASSTHROUGH_COLOR_LUT_BUFFER_SIZE_MISMATCH_META = -1000266000,
242 XR_ERROR_HINT_ALREADY_SET_QCOM = -1000306000,
243 XR_ERROR_NOT_AN_ANCHOR_HTC = -1000319000,
244 XR_ERROR_SPACE_NOT_LOCATABLE_EXT = -1000429000,
245 XR_ERROR_PLANE_DETECTION_PERMISSION_DENIED_EXT = -1000429001,
246 XR_RESULT_MAX_ENUM = 0x7FFFFFFF
247} XrResult;
248
249typedef enum XrStructureType {
250 XR_TYPE_UNKNOWN = 0,
251 XR_TYPE_API_LAYER_PROPERTIES = 1,
252 XR_TYPE_EXTENSION_PROPERTIES = 2,
253 XR_TYPE_INSTANCE_CREATE_INFO = 3,
254 XR_TYPE_SYSTEM_GET_INFO = 4,
255 XR_TYPE_SYSTEM_PROPERTIES = 5,
256 XR_TYPE_VIEW_LOCATE_INFO = 6,
257 XR_TYPE_VIEW = 7,
258 XR_TYPE_SESSION_CREATE_INFO = 8,
259 XR_TYPE_SWAPCHAIN_CREATE_INFO = 9,
260 XR_TYPE_SESSION_BEGIN_INFO = 10,
261 XR_TYPE_VIEW_STATE = 11,
262 XR_TYPE_FRAME_END_INFO = 12,
263 XR_TYPE_HAPTIC_VIBRATION = 13,
264 XR_TYPE_EVENT_DATA_BUFFER = 16,
265 XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING = 17,
266 XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED = 18,
267 XR_TYPE_ACTION_STATE_BOOLEAN = 23,
268 XR_TYPE_ACTION_STATE_FLOAT = 24,
269 XR_TYPE_ACTION_STATE_VECTOR2F = 25,
270 XR_TYPE_ACTION_STATE_POSE = 27,
271 XR_TYPE_ACTION_SET_CREATE_INFO = 28,
272 XR_TYPE_ACTION_CREATE_INFO = 29,
273 XR_TYPE_INSTANCE_PROPERTIES = 32,
274 XR_TYPE_FRAME_WAIT_INFO = 33,
275 XR_TYPE_COMPOSITION_LAYER_PROJECTION = 35,
276 XR_TYPE_COMPOSITION_LAYER_QUAD = 36,
277 XR_TYPE_REFERENCE_SPACE_CREATE_INFO = 37,
278 XR_TYPE_ACTION_SPACE_CREATE_INFO = 38,
279 XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING = 40,
280 XR_TYPE_VIEW_CONFIGURATION_VIEW = 41,
281 XR_TYPE_SPACE_LOCATION = 42,
282 XR_TYPE_SPACE_VELOCITY = 43,
283 XR_TYPE_FRAME_STATE = 44,
284 XR_TYPE_VIEW_CONFIGURATION_PROPERTIES = 45,
285 XR_TYPE_FRAME_BEGIN_INFO = 46,
286 XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW = 48,
287 XR_TYPE_EVENT_DATA_EVENTS_LOST = 49,
288 XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING = 51,
289 XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED = 52,
290 XR_TYPE_INTERACTION_PROFILE_STATE = 53,
291 XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO = 55,
292 XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO = 56,
293 XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO = 57,
294 XR_TYPE_ACTION_STATE_GET_INFO = 58,
295 XR_TYPE_HAPTIC_ACTION_INFO = 59,
296 XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO = 60,
297 XR_TYPE_ACTIONS_SYNC_INFO = 61,
298 XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO = 62,
299 XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO = 63,
300 XR_TYPE_COMPOSITION_LAYER_CUBE_KHR = 1000006000,
301 XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR = 1000008000,
302 XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR = 1000010000,
303 XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR = 1000014000,
304 XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT = 1000015000,
305 XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR = 1000017000,
306 XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR = 1000018000,
307 XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000019000,
308 XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000019001,
309 XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000019002,
310 XR_TYPE_DEBUG_UTILS_LABEL_EXT = 1000019003,
311 XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR = 1000023000,
312 XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR = 1000023001,
313 XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR = 1000023002,
314 XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR = 1000023003,
315 XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR = 1000023004,
316 XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR = 1000023005,
317 XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR = 1000024001,
318 XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR = 1000024002,
319 XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR = 1000024003,
320 XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR = 1000025000,
321 XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR = 1000025001,
322 XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR = 1000025002,
323 XR_TYPE_GRAPHICS_BINDING_D3D11_KHR = 1000027000,
324 XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR = 1000027001,
325 XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR = 1000027002,
326 XR_TYPE_GRAPHICS_BINDING_D3D12_KHR = 1000028000,
327 XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR = 1000028001,
328 XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR = 1000028002,
329 XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT = 1000030000,
330 XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT = 1000030001,
331 XR_TYPE_VISIBILITY_MASK_KHR = 1000031000,
332 XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR = 1000031001,
333 XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX = 1000033000,
334 XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX = 1000033003,
335 XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR = 1000034000,
336 XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT = 1000039000,
337 XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT = 1000039001,
338 XR_TYPE_COMPOSITION_LAYER_IMAGE_LAYOUT_FB = 1000040000,
339 XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB = 1000041001,
340 XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT = 1000046000,
341 XR_TYPE_GRAPHICS_BINDING_EGL_MNDX = 1000048004,
342 XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT = 1000049000,
343 XR_TYPE_SPATIAL_GRAPH_STATIC_NODE_BINDING_CREATE_INFO_MSFT = 1000049001,
344 XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_GET_INFO_MSFT = 1000049002,
345 XR_TYPE_SPATIAL_GRAPH_NODE_BINDING_PROPERTIES_MSFT = 1000049003,
346 XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT = 1000051000,
347 XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT = 1000051001,
348 XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT = 1000051002,
349 XR_TYPE_HAND_JOINT_LOCATIONS_EXT = 1000051003,
350 XR_TYPE_HAND_JOINT_VELOCITIES_EXT = 1000051004,
351 XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT = 1000052000,
352 XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT = 1000052001,
353 XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT = 1000052002,
354 XR_TYPE_HAND_MESH_MSFT = 1000052003,
355 XR_TYPE_HAND_POSE_TYPE_INFO_MSFT = 1000052004,
356 XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT = 1000053000,
357 XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT = 1000053001,
358 XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT = 1000053002,
359 XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT = 1000053003,
360 XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT = 1000053004,
361 XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT = 1000053005,
362 XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT = 1000055000,
363 XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT = 1000055001,
364 XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT = 1000055002,
365 XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT = 1000055003,
366 XR_TYPE_CONTROLLER_MODEL_STATE_MSFT = 1000055004,
367 XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC = 1000059000,
368 XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT = 1000063000,
369 XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT = 1000066000,
370 XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT = 1000066001,
371 XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB = 1000070000,
372 XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB = 1000072000,
373 XR_TYPE_BODY_TRACKER_CREATE_INFO_FB = 1000076001,
374 XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB = 1000076002,
375 XR_TYPE_SYSTEM_BODY_TRACKING_PROPERTIES_FB = 1000076004,
376 XR_TYPE_BODY_JOINT_LOCATIONS_FB = 1000076005,
377 XR_TYPE_BODY_SKELETON_FB = 1000076006,
378 XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT = 1000078000,
379 XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE = 1000079000,
380 XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT = 1000080000,
381 XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR = 1000089000,
382 XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR = 1000090000,
383 XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR = 1000090001,
384 XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR = 1000090003,
385 XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR = 1000091000,
386 XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT = 1000097000,
387 XR_TYPE_SCENE_CREATE_INFO_MSFT = 1000097001,
388 XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT = 1000097002,
389 XR_TYPE_VISUAL_MESH_COMPUTE_LOD_INFO_MSFT = 1000097003,
390 XR_TYPE_SCENE_COMPONENTS_MSFT = 1000097004,
391 XR_TYPE_SCENE_COMPONENTS_GET_INFO_MSFT = 1000097005,
392 XR_TYPE_SCENE_COMPONENT_LOCATIONS_MSFT = 1000097006,
393 XR_TYPE_SCENE_COMPONENTS_LOCATE_INFO_MSFT = 1000097007,
394 XR_TYPE_SCENE_OBJECTS_MSFT = 1000097008,
395 XR_TYPE_SCENE_COMPONENT_PARENT_FILTER_INFO_MSFT = 1000097009,
396 XR_TYPE_SCENE_OBJECT_TYPES_FILTER_INFO_MSFT = 1000097010,
397 XR_TYPE_SCENE_PLANES_MSFT = 1000097011,
398 XR_TYPE_SCENE_PLANE_ALIGNMENT_FILTER_INFO_MSFT = 1000097012,
399 XR_TYPE_SCENE_MESHES_MSFT = 1000097013,
400 XR_TYPE_SCENE_MESH_BUFFERS_GET_INFO_MSFT = 1000097014,
401 XR_TYPE_SCENE_MESH_BUFFERS_MSFT = 1000097015,
402 XR_TYPE_SCENE_MESH_VERTEX_BUFFER_MSFT = 1000097016,
403 XR_TYPE_SCENE_MESH_INDICES_UINT32_MSFT = 1000097017,
404 XR_TYPE_SCENE_MESH_INDICES_UINT16_MSFT = 1000097018,
405 XR_TYPE_SERIALIZED_SCENE_FRAGMENT_DATA_GET_INFO_MSFT = 1000098000,
406 XR_TYPE_SCENE_DESERIALIZE_INFO_MSFT = 1000098001,
407 XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB = 1000101000,
408 XR_TYPE_VIVE_TRACKER_PATHS_HTCX = 1000103000,
409 XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX = 1000103001,
410 XR_TYPE_SYSTEM_FACIAL_TRACKING_PROPERTIES_HTC = 1000104000,
411 XR_TYPE_FACIAL_TRACKER_CREATE_INFO_HTC = 1000104001,
412 XR_TYPE_FACIAL_EXPRESSIONS_HTC = 1000104002,
413 XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB = 1000108000,
414 XR_TYPE_HAND_TRACKING_MESH_FB = 1000110001,
415 XR_TYPE_HAND_TRACKING_SCALE_FB = 1000110003,
416 XR_TYPE_HAND_TRACKING_AIM_STATE_FB = 1000111001,
417 XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB = 1000112000,
418 XR_TYPE_SYSTEM_SPATIAL_ENTITY_PROPERTIES_FB = 1000113004,
419 XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_FB = 1000113003,
420 XR_TYPE_SPACE_COMPONENT_STATUS_SET_INFO_FB = 1000113007,
421 XR_TYPE_SPACE_COMPONENT_STATUS_FB = 1000113001,
422 XR_TYPE_EVENT_DATA_SPATIAL_ANCHOR_CREATE_COMPLETE_FB = 1000113005,
423 XR_TYPE_EVENT_DATA_SPACE_SET_STATUS_COMPLETE_FB = 1000113006,
424 XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB = 1000114000,
425 XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB = 1000114001,
426 XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB = 1000114002,
427 XR_TYPE_FOVEATION_LEVEL_PROFILE_CREATE_INFO_FB = 1000115000,
428 XR_TYPE_KEYBOARD_SPACE_CREATE_INFO_FB = 1000116009,
429 XR_TYPE_KEYBOARD_TRACKING_QUERY_FB = 1000116004,
430 XR_TYPE_SYSTEM_KEYBOARD_TRACKING_PROPERTIES_FB = 1000116002,
431 XR_TYPE_TRIANGLE_MESH_CREATE_INFO_FB = 1000117001,
432 XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES_FB = 1000118000,
433 XR_TYPE_PASSTHROUGH_CREATE_INFO_FB = 1000118001,
434 XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_FB = 1000118002,
435 XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_FB = 1000118003,
436 XR_TYPE_GEOMETRY_INSTANCE_CREATE_INFO_FB = 1000118004,
437 XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB = 1000118005,
438 XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES2_FB = 1000118006,
439 XR_TYPE_PASSTHROUGH_STYLE_FB = 1000118020,
440 XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB = 1000118021,
441 XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB = 1000118022,
442 XR_TYPE_PASSTHROUGH_BRIGHTNESS_CONTRAST_SATURATION_FB = 1000118023,
443 XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB = 1000118030,
444 XR_TYPE_RENDER_MODEL_PATH_INFO_FB = 1000119000,
445 XR_TYPE_RENDER_MODEL_PROPERTIES_FB = 1000119001,
446 XR_TYPE_RENDER_MODEL_BUFFER_FB = 1000119002,
447 XR_TYPE_RENDER_MODEL_LOAD_INFO_FB = 1000119003,
448 XR_TYPE_SYSTEM_RENDER_MODEL_PROPERTIES_FB = 1000119004,
449 XR_TYPE_RENDER_MODEL_CAPABILITIES_REQUEST_FB = 1000119005,
450 XR_TYPE_BINDING_MODIFICATIONS_KHR = 1000120000,
451 XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO = 1000121000,
452 XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO = 1000121001,
453 XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO = 1000121002,
454 XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO = 1000122000,
455 XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO = 1000124000,
456 XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO = 1000124001,
457 XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO = 1000124002,
458 XR_TYPE_FRAME_END_INFO_ML = 1000135000,
459 XR_TYPE_GLOBAL_DIMMER_FRAME_END_INFO_ML = 1000136000,
460 XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML = 1000137000,
461 XR_TYPE_SYSTEM_MARKER_UNDERSTANDING_PROPERTIES_ML = 1000138000,
462 XR_TYPE_MARKER_DETECTOR_CREATE_INFO_ML = 1000138001,
463 XR_TYPE_MARKER_DETECTOR_ARUCO_INFO_ML = 1000138002,
464 XR_TYPE_MARKER_DETECTOR_SIZE_INFO_ML = 1000138003,
465 XR_TYPE_MARKER_DETECTOR_APRIL_TAG_INFO_ML = 1000138004,
466 XR_TYPE_MARKER_DETECTOR_CUSTOM_PROFILE_INFO_ML = 1000138005,
467 XR_TYPE_MARKER_DETECTOR_SNAPSHOT_INFO_ML = 1000138006,
468 XR_TYPE_MARKER_DETECTOR_STATE_ML = 1000138007,
469 XR_TYPE_MARKER_SPACE_CREATE_INFO_ML = 1000138008,
470 XR_TYPE_LOCALIZATION_MAP_ML = 1000139000,
471 XR_TYPE_EVENT_DATA_LOCALIZATION_CHANGED_ML = 1000139001,
472 XR_TYPE_MAP_LOCALIZATION_REQUEST_INFO_ML = 1000139002,
473 XR_TYPE_LOCALIZATION_MAP_IMPORT_INFO_ML = 1000139003,
474 XR_TYPE_LOCALIZATION_ENABLE_EVENTS_INFO_ML = 1000139004,
475 XR_TYPE_EVENT_DATA_HEADSET_FIT_CHANGED_ML = 1000472000,
476 XR_TYPE_EVENT_DATA_EYE_CALIBRATION_CHANGED_ML = 1000472001,
477 XR_TYPE_USER_CALIBRATION_ENABLE_EVENTS_INFO_ML = 1000472002,
478 XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT = 1000142000,
479 XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT = 1000142001,
480 XR_TYPE_SCENE_MARKERS_MSFT = 1000147000,
481 XR_TYPE_SCENE_MARKER_TYPE_FILTER_MSFT = 1000147001,
482 XR_TYPE_SCENE_MARKER_QR_CODES_MSFT = 1000147002,
483 XR_TYPE_SPACE_QUERY_INFO_FB = 1000156001,
484 XR_TYPE_SPACE_QUERY_RESULTS_FB = 1000156002,
485 XR_TYPE_SPACE_STORAGE_LOCATION_FILTER_INFO_FB = 1000156003,
486 XR_TYPE_SPACE_UUID_FILTER_INFO_FB = 1000156054,
487 XR_TYPE_SPACE_COMPONENT_FILTER_INFO_FB = 1000156052,
488 XR_TYPE_EVENT_DATA_SPACE_QUERY_RESULTS_AVAILABLE_FB = 1000156103,
489 XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB = 1000156104,
490 XR_TYPE_SPACE_SAVE_INFO_FB = 1000158000,
491 XR_TYPE_SPACE_ERASE_INFO_FB = 1000158001,
492 XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB = 1000158106,
493 XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB = 1000158107,
494 XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB = 1000160000,
495 XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB = 1000161000,
496 XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB = 1000162000,
497 XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB = 1000163000,
498 XR_TYPE_SPACE_SHARE_INFO_FB = 1000169001,
499 XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB = 1000169002,
500 XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB = 1000171000,
501 XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB = 1000171001,
502 XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB = 1000173001,
503 XR_TYPE_SEMANTIC_LABELS_FB = 1000175000,
504 XR_TYPE_ROOM_LAYOUT_FB = 1000175001,
505 XR_TYPE_BOUNDARY_2D_FB = 1000175002,
506 XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB = 1000175010,
507 XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE = 1000196000,
508 XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB = 1000198001,
509 XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB = 1000198050,
510 XR_TYPE_SPACE_CONTAINER_FB = 1000199000,
511 XR_TYPE_FOVEATION_EYE_TRACKED_PROFILE_CREATE_INFO_META = 1000200000,
512 XR_TYPE_FOVEATION_EYE_TRACKED_STATE_META = 1000200001,
513 XR_TYPE_SYSTEM_FOVEATION_EYE_TRACKED_PROPERTIES_META = 1000200002,
514 XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_FB = 1000201004,
515 XR_TYPE_FACE_TRACKER_CREATE_INFO_FB = 1000201005,
516 XR_TYPE_FACE_EXPRESSION_INFO_FB = 1000201002,
517 XR_TYPE_FACE_EXPRESSION_WEIGHTS_FB = 1000201006,
518 XR_TYPE_EYE_TRACKER_CREATE_INFO_FB = 1000202001,
519 XR_TYPE_EYE_GAZES_INFO_FB = 1000202002,
520 XR_TYPE_EYE_GAZES_FB = 1000202003,
521 XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_FB = 1000202004,
522 XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB = 1000203002,
523 XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB = 1000204000,
524 XR_TYPE_HAPTIC_PCM_VIBRATION_FB = 1000209001,
525 XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB = 1000209002,
526 XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB = 1000212000,
527 XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META = 1000216000,
528 XR_TYPE_PASSTHROUGH_PREFERENCES_META = 1000217000,
529 XR_TYPE_SYSTEM_VIRTUAL_KEYBOARD_PROPERTIES_META = 1000219001,
530 XR_TYPE_VIRTUAL_KEYBOARD_CREATE_INFO_META = 1000219002,
531 XR_TYPE_VIRTUAL_KEYBOARD_SPACE_CREATE_INFO_META = 1000219003,
532 XR_TYPE_VIRTUAL_KEYBOARD_LOCATION_INFO_META = 1000219004,
533 XR_TYPE_VIRTUAL_KEYBOARD_MODEL_VISIBILITY_SET_INFO_META = 1000219005,
534 XR_TYPE_VIRTUAL_KEYBOARD_ANIMATION_STATE_META = 1000219006,
535 XR_TYPE_VIRTUAL_KEYBOARD_MODEL_ANIMATION_STATES_META = 1000219007,
536 XR_TYPE_VIRTUAL_KEYBOARD_TEXTURE_DATA_META = 1000219009,
537 XR_TYPE_VIRTUAL_KEYBOARD_INPUT_INFO_META = 1000219010,
538 XR_TYPE_VIRTUAL_KEYBOARD_TEXT_CONTEXT_CHANGE_INFO_META = 1000219011,
539 XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_COMMIT_TEXT_META = 1000219014,
540 XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_BACKSPACE_META = 1000219015,
541 XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_ENTER_META = 1000219016,
542 XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_SHOWN_META = 1000219017,
543 XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_HIDDEN_META = 1000219018,
544 XR_TYPE_EXTERNAL_CAMERA_OCULUS = 1000226000,
545 XR_TYPE_VULKAN_SWAPCHAIN_CREATE_INFO_META = 1000227000,
546 XR_TYPE_PERFORMANCE_METRICS_STATE_META = 1000232001,
547 XR_TYPE_PERFORMANCE_METRICS_COUNTER_META = 1000232002,
548 XR_TYPE_SPACE_LIST_SAVE_INFO_FB = 1000238000,
549 XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB = 1000238001,
550 XR_TYPE_SPACE_USER_CREATE_INFO_FB = 1000241001,
551 XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META = 1000245000,
552 XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META = 1000254000,
553 XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META = 1000254001,
554 XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META = 1000266000,
555 XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META = 1000266001,
556 XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META = 1000266002,
557 XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META = 1000266100,
558 XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META = 1000266101,
559 XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META = 1000269001,
560 XR_TYPE_SPACE_TRIANGLE_MESH_META = 1000269002,
561 XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB = 1000287013,
562 XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB = 1000287014,
563 XR_TYPE_FACE_EXPRESSION_INFO2_FB = 1000287015,
564 XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB = 1000287016,
565 XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC = 1000317001,
566 XR_TYPE_PASSTHROUGH_COLOR_HTC = 1000317002,
567 XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC = 1000317003,
568 XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_HTC = 1000317004,
569 XR_TYPE_FOVEATION_APPLY_INFO_HTC = 1000318000,
570 XR_TYPE_FOVEATION_DYNAMIC_MODE_INFO_HTC = 1000318001,
571 XR_TYPE_FOVEATION_CUSTOM_MODE_INFO_HTC = 1000318002,
572 XR_TYPE_SYSTEM_ANCHOR_PROPERTIES_HTC = 1000319000,
573 XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_HTC = 1000319001,
574 XR_TYPE_ACTIVE_ACTION_SET_PRIORITIES_EXT = 1000373000,
575 XR_TYPE_SYSTEM_FORCE_FEEDBACK_CURL_PROPERTIES_MNDX = 1000375000,
576 XR_TYPE_FORCE_FEEDBACK_CURL_APPLY_LOCATIONS_MNDX = 1000375001,
577 XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXT = 1000428000,
578 XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT = 1000428001,
579 XR_TYPE_PLANE_DETECTOR_CREATE_INFO_EXT = 1000429001,
580 XR_TYPE_PLANE_DETECTOR_BEGIN_INFO_EXT = 1000429002,
581 XR_TYPE_PLANE_DETECTOR_GET_INFO_EXT = 1000429003,
582 XR_TYPE_PLANE_DETECTOR_LOCATIONS_EXT = 1000429004,
583 XR_TYPE_PLANE_DETECTOR_LOCATION_EXT = 1000429005,
584 XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT = 1000429006,
585 XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT = 1000429007,
586 XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT = 1000470000,
587 XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT = 1000470001,
588 XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR,
589 XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR = XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR,
590 XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN2_KHR = XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR,
591 XR_TYPE_DEVICE_PCM_SAMPLE_RATE_GET_INFO_FB = XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB,
592 XR_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
593} XrStructureType;
594
595typedef enum XrFormFactor {
596 XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY = 1,
597 XR_FORM_FACTOR_HANDHELD_DISPLAY = 2,
598 XR_FORM_FACTOR_MAX_ENUM = 0x7FFFFFFF
599} XrFormFactor;
600
601typedef enum XrViewConfigurationType {
602 XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO = 1,
603 XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO = 2,
604 XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO = 1000037000,
605 XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT = 1000054000,
606 XR_VIEW_CONFIGURATION_TYPE_MAX_ENUM = 0x7FFFFFFF
607} XrViewConfigurationType;
608
609typedef enum XrEnvironmentBlendMode {
610 XR_ENVIRONMENT_BLEND_MODE_OPAQUE = 1,
611 XR_ENVIRONMENT_BLEND_MODE_ADDITIVE = 2,
612 XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND = 3,
613 XR_ENVIRONMENT_BLEND_MODE_MAX_ENUM = 0x7FFFFFFF
614} XrEnvironmentBlendMode;
615
616typedef enum XrReferenceSpaceType {
617 XR_REFERENCE_SPACE_TYPE_VIEW = 1,
618 XR_REFERENCE_SPACE_TYPE_LOCAL = 2,
619 XR_REFERENCE_SPACE_TYPE_STAGE = 3,
620 XR_REFERENCE_SPACE_TYPE_UNBOUNDED_MSFT = 1000038000,
621 XR_REFERENCE_SPACE_TYPE_COMBINED_EYE_VARJO = 1000121000,
622 XR_REFERENCE_SPACE_TYPE_LOCALIZATION_MAP_ML = 1000139000,
623 XR_REFERENCE_SPACE_TYPE_LOCAL_FLOOR_EXT = 1000426000,
624 XR_REFERENCE_SPACE_TYPE_MAX_ENUM = 0x7FFFFFFF
625} XrReferenceSpaceType;
626
627typedef enum XrActionType {
628 XR_ACTION_TYPE_BOOLEAN_INPUT = 1,
629 XR_ACTION_TYPE_FLOAT_INPUT = 2,
630 XR_ACTION_TYPE_VECTOR2F_INPUT = 3,
631 XR_ACTION_TYPE_POSE_INPUT = 4,
632 XR_ACTION_TYPE_VIBRATION_OUTPUT = 100,
633 XR_ACTION_TYPE_MAX_ENUM = 0x7FFFFFFF
634} XrActionType;
635
636typedef enum XrEyeVisibility {
637 XR_EYE_VISIBILITY_BOTH = 0,
638 XR_EYE_VISIBILITY_LEFT = 1,
639 XR_EYE_VISIBILITY_RIGHT = 2,
640 XR_EYE_VISIBILITY_MAX_ENUM = 0x7FFFFFFF
641} XrEyeVisibility;
642
643typedef enum XrSessionState {
644 XR_SESSION_STATE_UNKNOWN = 0,
645 XR_SESSION_STATE_IDLE = 1,
646 XR_SESSION_STATE_READY = 2,
647 XR_SESSION_STATE_SYNCHRONIZED = 3,
648 XR_SESSION_STATE_VISIBLE = 4,
649 XR_SESSION_STATE_FOCUSED = 5,
650 XR_SESSION_STATE_STOPPING = 6,
651 XR_SESSION_STATE_LOSS_PENDING = 7,
652 XR_SESSION_STATE_EXITING = 8,
653 XR_SESSION_STATE_MAX_ENUM = 0x7FFFFFFF
654} XrSessionState;
655
656typedef enum XrObjectType {
657 XR_OBJECT_TYPE_UNKNOWN = 0,
658 XR_OBJECT_TYPE_INSTANCE = 1,
659 XR_OBJECT_TYPE_SESSION = 2,
660 XR_OBJECT_TYPE_SWAPCHAIN = 3,
661 XR_OBJECT_TYPE_SPACE = 4,
662 XR_OBJECT_TYPE_ACTION_SET = 5,
663 XR_OBJECT_TYPE_ACTION = 6,
664 XR_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000019000,
665 XR_OBJECT_TYPE_SPATIAL_ANCHOR_MSFT = 1000039000,
666 XR_OBJECT_TYPE_SPATIAL_GRAPH_NODE_BINDING_MSFT = 1000049000,
667 XR_OBJECT_TYPE_HAND_TRACKER_EXT = 1000051000,
668 XR_OBJECT_TYPE_BODY_TRACKER_FB = 1000076000,
669 XR_OBJECT_TYPE_SCENE_OBSERVER_MSFT = 1000097000,
670 XR_OBJECT_TYPE_SCENE_MSFT = 1000097001,
671 XR_OBJECT_TYPE_FACIAL_TRACKER_HTC = 1000104000,
672 XR_OBJECT_TYPE_FOVEATION_PROFILE_FB = 1000114000,
673 XR_OBJECT_TYPE_TRIANGLE_MESH_FB = 1000117000,
674 XR_OBJECT_TYPE_PASSTHROUGH_FB = 1000118000,
675 XR_OBJECT_TYPE_PASSTHROUGH_LAYER_FB = 1000118002,
676 XR_OBJECT_TYPE_GEOMETRY_INSTANCE_FB = 1000118004,
677 XR_OBJECT_TYPE_MARKER_DETECTOR_ML = 1000138000,
678 XR_OBJECT_TYPE_EXPORTED_LOCALIZATION_MAP_ML = 1000139000,
679 XR_OBJECT_TYPE_SPATIAL_ANCHOR_STORE_CONNECTION_MSFT = 1000142000,
680 XR_OBJECT_TYPE_FACE_TRACKER_FB = 1000201000,
681 XR_OBJECT_TYPE_EYE_TRACKER_FB = 1000202000,
682 XR_OBJECT_TYPE_VIRTUAL_KEYBOARD_META = 1000219000,
683 XR_OBJECT_TYPE_SPACE_USER_FB = 1000241000,
684 XR_OBJECT_TYPE_PASSTHROUGH_COLOR_LUT_META = 1000266000,
685 XR_OBJECT_TYPE_FACE_TRACKER2_FB = 1000287012,
686 XR_OBJECT_TYPE_PASSTHROUGH_HTC = 1000317000,
687 XR_OBJECT_TYPE_PLANE_DETECTOR_EXT = 1000429000,
688 XR_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
689} XrObjectType;
690typedef XrFlags64 XrInstanceCreateFlags;
691
692// Flag bits for XrInstanceCreateFlags
693
694typedef XrFlags64 XrSessionCreateFlags;
695
696// Flag bits for XrSessionCreateFlags
697
698typedef XrFlags64 XrSpaceVelocityFlags;
699
700// Flag bits for XrSpaceVelocityFlags
701static const XrSpaceVelocityFlags XR_SPACE_VELOCITY_LINEAR_VALID_BIT = 0x00000001;
702static const XrSpaceVelocityFlags XR_SPACE_VELOCITY_ANGULAR_VALID_BIT = 0x00000002;
703
704typedef XrFlags64 XrSpaceLocationFlags;
705
706// Flag bits for XrSpaceLocationFlags
707static const XrSpaceLocationFlags XR_SPACE_LOCATION_ORIENTATION_VALID_BIT = 0x00000001;
708static const XrSpaceLocationFlags XR_SPACE_LOCATION_POSITION_VALID_BIT = 0x00000002;
709static const XrSpaceLocationFlags XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT = 0x00000004;
710static const XrSpaceLocationFlags XR_SPACE_LOCATION_POSITION_TRACKED_BIT = 0x00000008;
711
712typedef XrFlags64 XrSwapchainCreateFlags;
713
714// Flag bits for XrSwapchainCreateFlags
715static const XrSwapchainCreateFlags XR_SWAPCHAIN_CREATE_PROTECTED_CONTENT_BIT = 0x00000001;
716static const XrSwapchainCreateFlags XR_SWAPCHAIN_CREATE_STATIC_IMAGE_BIT = 0x00000002;
717
718typedef XrFlags64 XrSwapchainUsageFlags;
719
720// Flag bits for XrSwapchainUsageFlags
721static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT = 0x00000001;
722static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000002;
723static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_UNORDERED_ACCESS_BIT = 0x00000004;
724static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_TRANSFER_SRC_BIT = 0x00000008;
725static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_TRANSFER_DST_BIT = 0x00000010;
726static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_SAMPLED_BIT = 0x00000020;
727static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_MUTABLE_FORMAT_BIT = 0x00000040;
728static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_MND = 0x00000080;
729static const XrSwapchainUsageFlags XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_KHR = 0x00000080; // alias of XR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_MND
730
731typedef XrFlags64 XrCompositionLayerFlags;
732
733// Flag bits for XrCompositionLayerFlags
734static const XrCompositionLayerFlags XR_COMPOSITION_LAYER_CORRECT_CHROMATIC_ABERRATION_BIT = 0x00000001;
735static const XrCompositionLayerFlags XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT = 0x00000002;
736static const XrCompositionLayerFlags XR_COMPOSITION_LAYER_UNPREMULTIPLIED_ALPHA_BIT = 0x00000004;
737
738typedef XrFlags64 XrViewStateFlags;
739
740// Flag bits for XrViewStateFlags
741static const XrViewStateFlags XR_VIEW_STATE_ORIENTATION_VALID_BIT = 0x00000001;
742static const XrViewStateFlags XR_VIEW_STATE_POSITION_VALID_BIT = 0x00000002;
743static const XrViewStateFlags XR_VIEW_STATE_ORIENTATION_TRACKED_BIT = 0x00000004;
744static const XrViewStateFlags XR_VIEW_STATE_POSITION_TRACKED_BIT = 0x00000008;
745
746typedef XrFlags64 XrInputSourceLocalizedNameFlags;
747
748// Flag bits for XrInputSourceLocalizedNameFlags
749static const XrInputSourceLocalizedNameFlags XR_INPUT_SOURCE_LOCALIZED_NAME_USER_PATH_BIT = 0x00000001;
750static const XrInputSourceLocalizedNameFlags XR_INPUT_SOURCE_LOCALIZED_NAME_INTERACTION_PROFILE_BIT = 0x00000002;
751static const XrInputSourceLocalizedNameFlags XR_INPUT_SOURCE_LOCALIZED_NAME_COMPONENT_BIT = 0x00000004;
752
753typedef void (XRAPI_PTR *PFN_xrVoidFunction)(void);
754typedef struct XrApiLayerProperties {
755 XrStructureType type;
756 void* XR_MAY_ALIAS next;
757 char layerName[XR_MAX_API_LAYER_NAME_SIZE];
758 XrVersion specVersion;
759 uint32_t layerVersion;
760 char description[XR_MAX_API_LAYER_DESCRIPTION_SIZE];
761} XrApiLayerProperties;
762
763typedef struct XrExtensionProperties {
764 XrStructureType type;
765 void* XR_MAY_ALIAS next;
766 char extensionName[XR_MAX_EXTENSION_NAME_SIZE];
767 uint32_t extensionVersion;
768} XrExtensionProperties;
769
770typedef struct XrApplicationInfo {
771 char applicationName[XR_MAX_APPLICATION_NAME_SIZE];
772 uint32_t applicationVersion;
773 char engineName[XR_MAX_ENGINE_NAME_SIZE];
774 uint32_t engineVersion;
775 XrVersion apiVersion;
776} XrApplicationInfo;
777
778typedef struct XrInstanceCreateInfo {
779 XrStructureType type;
780 const void* XR_MAY_ALIAS next;
781 XrInstanceCreateFlags createFlags;
782 XrApplicationInfo applicationInfo;
783 uint32_t enabledApiLayerCount;
784 const char* const* enabledApiLayerNames;
785 uint32_t enabledExtensionCount;
786 const char* const* enabledExtensionNames;
787} XrInstanceCreateInfo;
788
789typedef struct XrInstanceProperties {
790 XrStructureType type;
791 void* XR_MAY_ALIAS next;
792 XrVersion runtimeVersion;
793 char runtimeName[XR_MAX_RUNTIME_NAME_SIZE];
794} XrInstanceProperties;
795
796typedef struct XrEventDataBuffer {
797 XrStructureType type;
798 const void* XR_MAY_ALIAS next;
799 uint8_t varying[4000];
800} XrEventDataBuffer;
801
802typedef struct XrSystemGetInfo {
803 XrStructureType type;
804 const void* XR_MAY_ALIAS next;
805 XrFormFactor formFactor;
806} XrSystemGetInfo;
807
808typedef struct XrSystemGraphicsProperties {
809 uint32_t maxSwapchainImageHeight;
810 uint32_t maxSwapchainImageWidth;
811 uint32_t maxLayerCount;
812} XrSystemGraphicsProperties;
813
814typedef struct XrSystemTrackingProperties {
815 XrBool32 orientationTracking;
816 XrBool32 positionTracking;
817} XrSystemTrackingProperties;
818
819typedef struct XrSystemProperties {
820 XrStructureType type;
821 void* XR_MAY_ALIAS next;
822 XrSystemId systemId;
823 uint32_t vendorId;
824 char systemName[XR_MAX_SYSTEM_NAME_SIZE];
825 XrSystemGraphicsProperties graphicsProperties;
826 XrSystemTrackingProperties trackingProperties;
827} XrSystemProperties;
828
829typedef struct XrSessionCreateInfo {
830 XrStructureType type;
831 const void* XR_MAY_ALIAS next;
832 XrSessionCreateFlags createFlags;
833 XrSystemId systemId;
834} XrSessionCreateInfo;
835
836typedef struct XrVector3f {
837 float x;
838 float y;
839 float z;
840} XrVector3f;
841
842// XrSpaceVelocity extends XrSpaceLocation
843typedef struct XrSpaceVelocity {
844 XrStructureType type;
845 void* XR_MAY_ALIAS next;
846 XrSpaceVelocityFlags velocityFlags;
847 XrVector3f linearVelocity;
848 XrVector3f angularVelocity;
849} XrSpaceVelocity;
850
851typedef struct XrQuaternionf {
852 float x;
853 float y;
854 float z;
855 float w;
856} XrQuaternionf;
857
858typedef struct XrPosef {
859 XrQuaternionf orientation;
860 XrVector3f position;
861} XrPosef;
862
863typedef struct XrReferenceSpaceCreateInfo {
864 XrStructureType type;
865 const void* XR_MAY_ALIAS next;
866 XrReferenceSpaceType referenceSpaceType;
867 XrPosef poseInReferenceSpace;
868} XrReferenceSpaceCreateInfo;
869
870typedef struct XrExtent2Df {
871 float width;
872 float height;
873} XrExtent2Df;
874
875typedef struct XrActionSpaceCreateInfo {
876 XrStructureType type;
877 const void* XR_MAY_ALIAS next;
878 XrAction action;
879 XrPath subactionPath;
880 XrPosef poseInActionSpace;
881} XrActionSpaceCreateInfo;
882
883typedef struct XrSpaceLocation {
884 XrStructureType type;
885 void* XR_MAY_ALIAS next;
886 XrSpaceLocationFlags locationFlags;
887 XrPosef pose;
888} XrSpaceLocation;
889
890typedef struct XrViewConfigurationProperties {
891 XrStructureType type;
892 void* XR_MAY_ALIAS next;
893 XrViewConfigurationType viewConfigurationType;
894 XrBool32 fovMutable;
895} XrViewConfigurationProperties;
896
897typedef struct XrViewConfigurationView {
898 XrStructureType type;
899 void* XR_MAY_ALIAS next;
900 uint32_t recommendedImageRectWidth;
901 uint32_t maxImageRectWidth;
902 uint32_t recommendedImageRectHeight;
903 uint32_t maxImageRectHeight;
904 uint32_t recommendedSwapchainSampleCount;
905 uint32_t maxSwapchainSampleCount;
906} XrViewConfigurationView;
907
908typedef struct XrSwapchainCreateInfo {
909 XrStructureType type;
910 const void* XR_MAY_ALIAS next;
911 XrSwapchainCreateFlags createFlags;
912 XrSwapchainUsageFlags usageFlags;
913 int64_t format;
914 uint32_t sampleCount;
915 uint32_t width;
916 uint32_t height;
917 uint32_t faceCount;
918 uint32_t arraySize;
919 uint32_t mipCount;
920} XrSwapchainCreateInfo;
921
922typedef struct XR_MAY_ALIAS XrSwapchainImageBaseHeader {
923 XrStructureType type;
924 void* XR_MAY_ALIAS next;
925} XrSwapchainImageBaseHeader;
926
927typedef struct XrSwapchainImageAcquireInfo {
928 XrStructureType type;
929 const void* XR_MAY_ALIAS next;
930} XrSwapchainImageAcquireInfo;
931
932typedef struct XrSwapchainImageWaitInfo {
933 XrStructureType type;
934 const void* XR_MAY_ALIAS next;
935 XrDuration timeout;
936} XrSwapchainImageWaitInfo;
937
938typedef struct XrSwapchainImageReleaseInfo {
939 XrStructureType type;
940 const void* XR_MAY_ALIAS next;
941} XrSwapchainImageReleaseInfo;
942
943typedef struct XrSessionBeginInfo {
944 XrStructureType type;
945 const void* XR_MAY_ALIAS next;
946 XrViewConfigurationType primaryViewConfigurationType;
947} XrSessionBeginInfo;
948
949typedef struct XrFrameWaitInfo {
950 XrStructureType type;
951 const void* XR_MAY_ALIAS next;
952} XrFrameWaitInfo;
953
954typedef struct XrFrameState {
955 XrStructureType type;
956 void* XR_MAY_ALIAS next;
957 XrTime predictedDisplayTime;
958 XrDuration predictedDisplayPeriod;
959 XrBool32 shouldRender;
960} XrFrameState;
961
962typedef struct XrFrameBeginInfo {
963 XrStructureType type;
964 const void* XR_MAY_ALIAS next;
965} XrFrameBeginInfo;
966
967typedef struct XR_MAY_ALIAS XrCompositionLayerBaseHeader {
968 XrStructureType type;
969 const void* XR_MAY_ALIAS next;
970 XrCompositionLayerFlags layerFlags;
971 XrSpace space;
972} XrCompositionLayerBaseHeader;
973
974typedef struct XrFrameEndInfo {
975 XrStructureType type;
976 const void* XR_MAY_ALIAS next;
977 XrTime displayTime;
978 XrEnvironmentBlendMode environmentBlendMode;
979 uint32_t layerCount;
980 const XrCompositionLayerBaseHeader* const* layers;
981} XrFrameEndInfo;
982
983typedef struct XrViewLocateInfo {
984 XrStructureType type;
985 const void* XR_MAY_ALIAS next;
986 XrViewConfigurationType viewConfigurationType;
987 XrTime displayTime;
988 XrSpace space;
989} XrViewLocateInfo;
990
991typedef struct XrViewState {
992 XrStructureType type;
993 void* XR_MAY_ALIAS next;
994 XrViewStateFlags viewStateFlags;
995} XrViewState;
996
997typedef struct XrFovf {
998 float angleLeft;
999 float angleRight;
1000 float angleUp;
1001 float angleDown;
1002} XrFovf;
1003
1004typedef struct XrView {
1005 XrStructureType type;
1006 void* XR_MAY_ALIAS next;
1007 XrPosef pose;
1008 XrFovf fov;
1009} XrView;
1010
1011typedef struct XrActionSetCreateInfo {
1012 XrStructureType type;
1013 const void* XR_MAY_ALIAS next;
1014 char actionSetName[XR_MAX_ACTION_SET_NAME_SIZE];
1015 char localizedActionSetName[XR_MAX_LOCALIZED_ACTION_SET_NAME_SIZE];
1016 uint32_t priority;
1017} XrActionSetCreateInfo;
1018
1019typedef struct XrActionCreateInfo {
1020 XrStructureType type;
1021 const void* XR_MAY_ALIAS next;
1022 char actionName[XR_MAX_ACTION_NAME_SIZE];
1023 XrActionType actionType;
1024 uint32_t countSubactionPaths;
1025 const XrPath* subactionPaths;
1026 char localizedActionName[XR_MAX_LOCALIZED_ACTION_NAME_SIZE];
1027} XrActionCreateInfo;
1028
1029typedef struct XrActionSuggestedBinding {
1030 XrAction action;
1031 XrPath binding;
1032} XrActionSuggestedBinding;
1033
1034typedef struct XrInteractionProfileSuggestedBinding {
1035 XrStructureType type;
1036 const void* XR_MAY_ALIAS next;
1037 XrPath interactionProfile;
1038 uint32_t countSuggestedBindings;
1039 const XrActionSuggestedBinding* suggestedBindings;
1040} XrInteractionProfileSuggestedBinding;
1041
1042typedef struct XrSessionActionSetsAttachInfo {
1043 XrStructureType type;
1044 const void* XR_MAY_ALIAS next;
1045 uint32_t countActionSets;
1046 const XrActionSet* actionSets;
1047} XrSessionActionSetsAttachInfo;
1048
1049typedef struct XrInteractionProfileState {
1050 XrStructureType type;
1051 void* XR_MAY_ALIAS next;
1052 XrPath interactionProfile;
1053} XrInteractionProfileState;
1054
1055typedef struct XrActionStateGetInfo {
1056 XrStructureType type;
1057 const void* XR_MAY_ALIAS next;
1058 XrAction action;
1059 XrPath subactionPath;
1060} XrActionStateGetInfo;
1061
1062typedef struct XrActionStateBoolean {
1063 XrStructureType type;
1064 void* XR_MAY_ALIAS next;
1065 XrBool32 currentState;
1066 XrBool32 changedSinceLastSync;
1067 XrTime lastChangeTime;
1068 XrBool32 isActive;
1069} XrActionStateBoolean;
1070
1071typedef struct XrActionStateFloat {
1072 XrStructureType type;
1073 void* XR_MAY_ALIAS next;
1074 float currentState;
1075 XrBool32 changedSinceLastSync;
1076 XrTime lastChangeTime;
1077 XrBool32 isActive;
1078} XrActionStateFloat;
1079
1080typedef struct XrVector2f {
1081 float x;
1082 float y;
1083} XrVector2f;
1084
1085typedef struct XrActionStateVector2f {
1086 XrStructureType type;
1087 void* XR_MAY_ALIAS next;
1088 XrVector2f currentState;
1089 XrBool32 changedSinceLastSync;
1090 XrTime lastChangeTime;
1091 XrBool32 isActive;
1092} XrActionStateVector2f;
1093
1094typedef struct XrActionStatePose {
1095 XrStructureType type;
1096 void* XR_MAY_ALIAS next;
1097 XrBool32 isActive;
1098} XrActionStatePose;
1099
1100typedef struct XrActiveActionSet {
1101 XrActionSet actionSet;
1102 XrPath subactionPath;
1103} XrActiveActionSet;
1104
1105typedef struct XrActionsSyncInfo {
1106 XrStructureType type;
1107 const void* XR_MAY_ALIAS next;
1108 uint32_t countActiveActionSets;
1109 const XrActiveActionSet* activeActionSets;
1110} XrActionsSyncInfo;
1111
1112typedef struct XrBoundSourcesForActionEnumerateInfo {
1113 XrStructureType type;
1114 const void* XR_MAY_ALIAS next;
1115 XrAction action;
1116} XrBoundSourcesForActionEnumerateInfo;
1117
1118typedef struct XrInputSourceLocalizedNameGetInfo {
1119 XrStructureType type;
1120 const void* XR_MAY_ALIAS next;
1121 XrPath sourcePath;
1122 XrInputSourceLocalizedNameFlags whichComponents;
1123} XrInputSourceLocalizedNameGetInfo;
1124
1125typedef struct XrHapticActionInfo {
1126 XrStructureType type;
1127 const void* XR_MAY_ALIAS next;
1128 XrAction action;
1129 XrPath subactionPath;
1130} XrHapticActionInfo;
1131
1132typedef struct XR_MAY_ALIAS XrHapticBaseHeader {
1133 XrStructureType type;
1134 const void* XR_MAY_ALIAS next;
1135} XrHapticBaseHeader;
1136
1137typedef struct XR_MAY_ALIAS XrBaseInStructure {
1138 XrStructureType type;
1139 const struct XrBaseInStructure* next;
1140} XrBaseInStructure;
1141
1142typedef struct XR_MAY_ALIAS XrBaseOutStructure {
1143 XrStructureType type;
1144 struct XrBaseOutStructure* next;
1145} XrBaseOutStructure;
1146
1147typedef struct XrOffset2Di {
1148 int32_t x;
1149 int32_t y;
1150} XrOffset2Di;
1151
1152typedef struct XrExtent2Di {
1153 int32_t width;
1154 int32_t height;
1155} XrExtent2Di;
1156
1157typedef struct XrRect2Di {
1158 XrOffset2Di offset;
1159 XrExtent2Di extent;
1160} XrRect2Di;
1161
1162typedef struct XrSwapchainSubImage {
1163 XrSwapchain swapchain;
1164 XrRect2Di imageRect;
1165 uint32_t imageArrayIndex;
1166} XrSwapchainSubImage;
1167
1168typedef struct XrCompositionLayerProjectionView {
1169 XrStructureType type;
1170 const void* XR_MAY_ALIAS next;
1171 XrPosef pose;
1172 XrFovf fov;
1173 XrSwapchainSubImage subImage;
1174} XrCompositionLayerProjectionView;
1175
1176typedef struct XrCompositionLayerProjection {
1177 XrStructureType type;
1178 const void* XR_MAY_ALIAS next;
1179 XrCompositionLayerFlags layerFlags;
1180 XrSpace space;
1181 uint32_t viewCount;
1182 const XrCompositionLayerProjectionView* views;
1183} XrCompositionLayerProjection;
1184
1185typedef struct XrCompositionLayerQuad {
1186 XrStructureType type;
1187 const void* XR_MAY_ALIAS next;
1188 XrCompositionLayerFlags layerFlags;
1189 XrSpace space;
1190 XrEyeVisibility eyeVisibility;
1191 XrSwapchainSubImage subImage;
1192 XrPosef pose;
1193 XrExtent2Df size;
1194} XrCompositionLayerQuad;
1195
1196typedef struct XR_MAY_ALIAS XrEventDataBaseHeader {
1197 XrStructureType type;
1198 const void* XR_MAY_ALIAS next;
1199} XrEventDataBaseHeader;
1200
1201typedef struct XrEventDataEventsLost {
1202 XrStructureType type;
1203 const void* XR_MAY_ALIAS next;
1204 uint32_t lostEventCount;
1205} XrEventDataEventsLost;
1206
1207typedef struct XrEventDataInstanceLossPending {
1208 XrStructureType type;
1209 const void* XR_MAY_ALIAS next;
1210 XrTime lossTime;
1211} XrEventDataInstanceLossPending;
1212
1213typedef struct XrEventDataSessionStateChanged {
1214 XrStructureType type;
1215 const void* XR_MAY_ALIAS next;
1216 XrSession session;
1217 XrSessionState state;
1218 XrTime time;
1219} XrEventDataSessionStateChanged;
1220
1221typedef struct XrEventDataReferenceSpaceChangePending {
1222 XrStructureType type;
1223 const void* XR_MAY_ALIAS next;
1224 XrSession session;
1225 XrReferenceSpaceType referenceSpaceType;
1226 XrTime changeTime;
1227 XrBool32 poseValid;
1228 XrPosef poseInPreviousSpace;
1229} XrEventDataReferenceSpaceChangePending;
1230
1231typedef struct XrEventDataInteractionProfileChanged {
1232 XrStructureType type;
1233 const void* XR_MAY_ALIAS next;
1234 XrSession session;
1235} XrEventDataInteractionProfileChanged;
1236
1237typedef struct XrHapticVibration {
1238 XrStructureType type;
1239 const void* XR_MAY_ALIAS next;
1240 XrDuration duration;
1241 float frequency;
1242 float amplitude;
1243} XrHapticVibration;
1244
1245typedef struct XrOffset2Df {
1246 float x;
1247 float y;
1248} XrOffset2Df;
1249
1250typedef struct XrRect2Df {
1251 XrOffset2Df offset;
1252 XrExtent2Df extent;
1253} XrRect2Df;
1254
1255typedef struct XrVector4f {
1256 float x;
1257 float y;
1258 float z;
1259 float w;
1260} XrVector4f;
1261
1262typedef struct XrColor4f {
1263 float r;
1264 float g;
1265 float b;
1266 float a;
1267} XrColor4f;
1268
1269typedef XrResult (XRAPI_PTR *PFN_xrGetInstanceProcAddr)(XrInstance instance, const char* name, PFN_xrVoidFunction* function);
1270typedef XrResult (XRAPI_PTR *PFN_xrEnumerateApiLayerProperties)(uint32_t propertyCapacityInput, uint32_t* propertyCountOutput, XrApiLayerProperties* properties);
1271typedef XrResult (XRAPI_PTR *PFN_xrEnumerateInstanceExtensionProperties)(const char* layerName, uint32_t propertyCapacityInput, uint32_t* propertyCountOutput, XrExtensionProperties* properties);
1272typedef XrResult (XRAPI_PTR *PFN_xrCreateInstance)(const XrInstanceCreateInfo* createInfo, XrInstance* instance);
1273typedef XrResult (XRAPI_PTR *PFN_xrDestroyInstance)(XrInstance instance);
1274typedef XrResult (XRAPI_PTR *PFN_xrGetInstanceProperties)(XrInstance instance, XrInstanceProperties* instanceProperties);
1275typedef XrResult (XRAPI_PTR *PFN_xrPollEvent)(XrInstance instance, XrEventDataBuffer* eventData);
1276typedef XrResult (XRAPI_PTR *PFN_xrResultToString)(XrInstance instance, XrResult value, char buffer[XR_MAX_RESULT_STRING_SIZE]);
1277typedef XrResult (XRAPI_PTR *PFN_xrStructureTypeToString)(XrInstance instance, XrStructureType value, char buffer[XR_MAX_STRUCTURE_NAME_SIZE]);
1278typedef XrResult (XRAPI_PTR *PFN_xrGetSystem)(XrInstance instance, const XrSystemGetInfo* getInfo, XrSystemId* systemId);
1279typedef XrResult (XRAPI_PTR *PFN_xrGetSystemProperties)(XrInstance instance, XrSystemId systemId, XrSystemProperties* properties);
1280typedef XrResult (XRAPI_PTR *PFN_xrEnumerateEnvironmentBlendModes)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t environmentBlendModeCapacityInput, uint32_t* environmentBlendModeCountOutput, XrEnvironmentBlendMode* environmentBlendModes);
1281typedef XrResult (XRAPI_PTR *PFN_xrCreateSession)(XrInstance instance, const XrSessionCreateInfo* createInfo, XrSession* session);
1282typedef XrResult (XRAPI_PTR *PFN_xrDestroySession)(XrSession session);
1283typedef XrResult (XRAPI_PTR *PFN_xrEnumerateReferenceSpaces)(XrSession session, uint32_t spaceCapacityInput, uint32_t* spaceCountOutput, XrReferenceSpaceType* spaces);
1284typedef XrResult (XRAPI_PTR *PFN_xrCreateReferenceSpace)(XrSession session, const XrReferenceSpaceCreateInfo* createInfo, XrSpace* space);
1285typedef XrResult (XRAPI_PTR *PFN_xrGetReferenceSpaceBoundsRect)(XrSession session, XrReferenceSpaceType referenceSpaceType, XrExtent2Df* bounds);
1286typedef XrResult (XRAPI_PTR *PFN_xrCreateActionSpace)(XrSession session, const XrActionSpaceCreateInfo* createInfo, XrSpace* space);
1287typedef XrResult (XRAPI_PTR *PFN_xrLocateSpace)(XrSpace space, XrSpace baseSpace, XrTime time, XrSpaceLocation* location);
1288typedef XrResult (XRAPI_PTR *PFN_xrDestroySpace)(XrSpace space);
1289typedef XrResult (XRAPI_PTR *PFN_xrEnumerateViewConfigurations)(XrInstance instance, XrSystemId systemId, uint32_t viewConfigurationTypeCapacityInput, uint32_t* viewConfigurationTypeCountOutput, XrViewConfigurationType* viewConfigurationTypes);
1290typedef XrResult (XRAPI_PTR *PFN_xrGetViewConfigurationProperties)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, XrViewConfigurationProperties* configurationProperties);
1291typedef XrResult (XRAPI_PTR *PFN_xrEnumerateViewConfigurationViews)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t viewCapacityInput, uint32_t* viewCountOutput, XrViewConfigurationView* views);
1292typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSwapchainFormats)(XrSession session, uint32_t formatCapacityInput, uint32_t* formatCountOutput, int64_t* formats);
1293typedef XrResult (XRAPI_PTR *PFN_xrCreateSwapchain)(XrSession session, const XrSwapchainCreateInfo* createInfo, XrSwapchain* swapchain);
1294typedef XrResult (XRAPI_PTR *PFN_xrDestroySwapchain)(XrSwapchain swapchain);
1295typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSwapchainImages)(XrSwapchain swapchain, uint32_t imageCapacityInput, uint32_t* imageCountOutput, XrSwapchainImageBaseHeader* images);
1296typedef XrResult (XRAPI_PTR *PFN_xrAcquireSwapchainImage)(XrSwapchain swapchain, const XrSwapchainImageAcquireInfo* acquireInfo, uint32_t* index);
1297typedef XrResult (XRAPI_PTR *PFN_xrWaitSwapchainImage)(XrSwapchain swapchain, const XrSwapchainImageWaitInfo* waitInfo);
1298typedef XrResult (XRAPI_PTR *PFN_xrReleaseSwapchainImage)(XrSwapchain swapchain, const XrSwapchainImageReleaseInfo* releaseInfo);
1299typedef XrResult (XRAPI_PTR *PFN_xrBeginSession)(XrSession session, const XrSessionBeginInfo* beginInfo);
1300typedef XrResult (XRAPI_PTR *PFN_xrEndSession)(XrSession session);
1301typedef XrResult (XRAPI_PTR *PFN_xrRequestExitSession)(XrSession session);
1302typedef XrResult (XRAPI_PTR *PFN_xrWaitFrame)(XrSession session, const XrFrameWaitInfo* frameWaitInfo, XrFrameState* frameState);
1303typedef XrResult (XRAPI_PTR *PFN_xrBeginFrame)(XrSession session, const XrFrameBeginInfo* frameBeginInfo);
1304typedef XrResult (XRAPI_PTR *PFN_xrEndFrame)(XrSession session, const XrFrameEndInfo* frameEndInfo);
1305typedef XrResult (XRAPI_PTR *PFN_xrLocateViews)(XrSession session, const XrViewLocateInfo* viewLocateInfo, XrViewState* viewState, uint32_t viewCapacityInput, uint32_t* viewCountOutput, XrView* views);
1306typedef XrResult (XRAPI_PTR *PFN_xrStringToPath)(XrInstance instance, const char* pathString, XrPath* path);
1307typedef XrResult (XRAPI_PTR *PFN_xrPathToString)(XrInstance instance, XrPath path, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer);
1308typedef XrResult (XRAPI_PTR *PFN_xrCreateActionSet)(XrInstance instance, const XrActionSetCreateInfo* createInfo, XrActionSet* actionSet);
1309typedef XrResult (XRAPI_PTR *PFN_xrDestroyActionSet)(XrActionSet actionSet);
1310typedef XrResult (XRAPI_PTR *PFN_xrCreateAction)(XrActionSet actionSet, const XrActionCreateInfo* createInfo, XrAction* action);
1311typedef XrResult (XRAPI_PTR *PFN_xrDestroyAction)(XrAction action);
1312typedef XrResult (XRAPI_PTR *PFN_xrSuggestInteractionProfileBindings)(XrInstance instance, const XrInteractionProfileSuggestedBinding* suggestedBindings);
1313typedef XrResult (XRAPI_PTR *PFN_xrAttachSessionActionSets)(XrSession session, const XrSessionActionSetsAttachInfo* attachInfo);
1314typedef XrResult (XRAPI_PTR *PFN_xrGetCurrentInteractionProfile)(XrSession session, XrPath topLevelUserPath, XrInteractionProfileState* interactionProfile);
1315typedef XrResult (XRAPI_PTR *PFN_xrGetActionStateBoolean)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStateBoolean* state);
1316typedef XrResult (XRAPI_PTR *PFN_xrGetActionStateFloat)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStateFloat* state);
1317typedef XrResult (XRAPI_PTR *PFN_xrGetActionStateVector2f)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStateVector2f* state);
1318typedef XrResult (XRAPI_PTR *PFN_xrGetActionStatePose)(XrSession session, const XrActionStateGetInfo* getInfo, XrActionStatePose* state);
1319typedef XrResult (XRAPI_PTR *PFN_xrSyncActions)(XrSession session, const XrActionsSyncInfo* syncInfo);
1320typedef XrResult (XRAPI_PTR *PFN_xrEnumerateBoundSourcesForAction)(XrSession session, const XrBoundSourcesForActionEnumerateInfo* enumerateInfo, uint32_t sourceCapacityInput, uint32_t* sourceCountOutput, XrPath* sources);
1321typedef XrResult (XRAPI_PTR *PFN_xrGetInputSourceLocalizedName)(XrSession session, const XrInputSourceLocalizedNameGetInfo* getInfo, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer);
1322typedef XrResult (XRAPI_PTR *PFN_xrApplyHapticFeedback)(XrSession session, const XrHapticActionInfo* hapticActionInfo, const XrHapticBaseHeader* hapticFeedback);
1323typedef XrResult (XRAPI_PTR *PFN_xrStopHapticFeedback)(XrSession session, const XrHapticActionInfo* hapticActionInfo);
1324
1325#ifndef XR_NO_PROTOTYPES
1326XRAPI_ATTR XrResult XRAPI_CALL xrGetInstanceProcAddr(
1327 XrInstance instance,
1328 const char* name,
1329 PFN_xrVoidFunction* function);
1330
1331XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateApiLayerProperties(
1332 uint32_t propertyCapacityInput,
1333 uint32_t* propertyCountOutput,
1334 XrApiLayerProperties* properties);
1335
1336XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateInstanceExtensionProperties(
1337 const char* layerName,
1338 uint32_t propertyCapacityInput,
1339 uint32_t* propertyCountOutput,
1340 XrExtensionProperties* properties);
1341
1342XRAPI_ATTR XrResult XRAPI_CALL xrCreateInstance(
1343 const XrInstanceCreateInfo* createInfo,
1344 XrInstance* instance);
1345
1346XRAPI_ATTR XrResult XRAPI_CALL xrDestroyInstance(
1347 XrInstance instance);
1348
1349XRAPI_ATTR XrResult XRAPI_CALL xrGetInstanceProperties(
1350 XrInstance instance,
1351 XrInstanceProperties* instanceProperties);
1352
1353XRAPI_ATTR XrResult XRAPI_CALL xrPollEvent(
1354 XrInstance instance,
1355 XrEventDataBuffer* eventData);
1356
1357XRAPI_ATTR XrResult XRAPI_CALL xrResultToString(
1358 XrInstance instance,
1359 XrResult value,
1360 char buffer[XR_MAX_RESULT_STRING_SIZE]);
1361
1362XRAPI_ATTR XrResult XRAPI_CALL xrStructureTypeToString(
1363 XrInstance instance,
1364 XrStructureType value,
1365 char buffer[XR_MAX_STRUCTURE_NAME_SIZE]);
1366
1367XRAPI_ATTR XrResult XRAPI_CALL xrGetSystem(
1368 XrInstance instance,
1369 const XrSystemGetInfo* getInfo,
1370 XrSystemId* systemId);
1371
1372XRAPI_ATTR XrResult XRAPI_CALL xrGetSystemProperties(
1373 XrInstance instance,
1374 XrSystemId systemId,
1375 XrSystemProperties* properties);
1376
1377XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateEnvironmentBlendModes(
1378 XrInstance instance,
1379 XrSystemId systemId,
1380 XrViewConfigurationType viewConfigurationType,
1381 uint32_t environmentBlendModeCapacityInput,
1382 uint32_t* environmentBlendModeCountOutput,
1383 XrEnvironmentBlendMode* environmentBlendModes);
1384
1385XRAPI_ATTR XrResult XRAPI_CALL xrCreateSession(
1386 XrInstance instance,
1387 const XrSessionCreateInfo* createInfo,
1388 XrSession* session);
1389
1390XRAPI_ATTR XrResult XRAPI_CALL xrDestroySession(
1391 XrSession session);
1392
1393XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateReferenceSpaces(
1394 XrSession session,
1395 uint32_t spaceCapacityInput,
1396 uint32_t* spaceCountOutput,
1397 XrReferenceSpaceType* spaces);
1398
1399XRAPI_ATTR XrResult XRAPI_CALL xrCreateReferenceSpace(
1400 XrSession session,
1401 const XrReferenceSpaceCreateInfo* createInfo,
1402 XrSpace* space);
1403
1404XRAPI_ATTR XrResult XRAPI_CALL xrGetReferenceSpaceBoundsRect(
1405 XrSession session,
1406 XrReferenceSpaceType referenceSpaceType,
1407 XrExtent2Df* bounds);
1408
1409XRAPI_ATTR XrResult XRAPI_CALL xrCreateActionSpace(
1410 XrSession session,
1411 const XrActionSpaceCreateInfo* createInfo,
1412 XrSpace* space);
1413
1414XRAPI_ATTR XrResult XRAPI_CALL xrLocateSpace(
1415 XrSpace space,
1416 XrSpace baseSpace,
1417 XrTime time,
1418 XrSpaceLocation* location);
1419
1420XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpace(
1421 XrSpace space);
1422
1423XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateViewConfigurations(
1424 XrInstance instance,
1425 XrSystemId systemId,
1426 uint32_t viewConfigurationTypeCapacityInput,
1427 uint32_t* viewConfigurationTypeCountOutput,
1428 XrViewConfigurationType* viewConfigurationTypes);
1429
1430XRAPI_ATTR XrResult XRAPI_CALL xrGetViewConfigurationProperties(
1431 XrInstance instance,
1432 XrSystemId systemId,
1433 XrViewConfigurationType viewConfigurationType,
1434 XrViewConfigurationProperties* configurationProperties);
1435
1436XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateViewConfigurationViews(
1437 XrInstance instance,
1438 XrSystemId systemId,
1439 XrViewConfigurationType viewConfigurationType,
1440 uint32_t viewCapacityInput,
1441 uint32_t* viewCountOutput,
1442 XrViewConfigurationView* views);
1443
1444XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSwapchainFormats(
1445 XrSession session,
1446 uint32_t formatCapacityInput,
1447 uint32_t* formatCountOutput,
1448 int64_t* formats);
1449
1450XRAPI_ATTR XrResult XRAPI_CALL xrCreateSwapchain(
1451 XrSession session,
1452 const XrSwapchainCreateInfo* createInfo,
1453 XrSwapchain* swapchain);
1454
1455XRAPI_ATTR XrResult XRAPI_CALL xrDestroySwapchain(
1456 XrSwapchain swapchain);
1457
1458XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSwapchainImages(
1459 XrSwapchain swapchain,
1460 uint32_t imageCapacityInput,
1461 uint32_t* imageCountOutput,
1462 XrSwapchainImageBaseHeader* images);
1463
1464XRAPI_ATTR XrResult XRAPI_CALL xrAcquireSwapchainImage(
1465 XrSwapchain swapchain,
1466 const XrSwapchainImageAcquireInfo* acquireInfo,
1467 uint32_t* index);
1468
1469XRAPI_ATTR XrResult XRAPI_CALL xrWaitSwapchainImage(
1470 XrSwapchain swapchain,
1471 const XrSwapchainImageWaitInfo* waitInfo);
1472
1473XRAPI_ATTR XrResult XRAPI_CALL xrReleaseSwapchainImage(
1474 XrSwapchain swapchain,
1475 const XrSwapchainImageReleaseInfo* releaseInfo);
1476
1477XRAPI_ATTR XrResult XRAPI_CALL xrBeginSession(
1478 XrSession session,
1479 const XrSessionBeginInfo* beginInfo);
1480
1481XRAPI_ATTR XrResult XRAPI_CALL xrEndSession(
1482 XrSession session);
1483
1484XRAPI_ATTR XrResult XRAPI_CALL xrRequestExitSession(
1485 XrSession session);
1486
1487XRAPI_ATTR XrResult XRAPI_CALL xrWaitFrame(
1488 XrSession session,
1489 const XrFrameWaitInfo* frameWaitInfo,
1490 XrFrameState* frameState);
1491
1492XRAPI_ATTR XrResult XRAPI_CALL xrBeginFrame(
1493 XrSession session,
1494 const XrFrameBeginInfo* frameBeginInfo);
1495
1496XRAPI_ATTR XrResult XRAPI_CALL xrEndFrame(
1497 XrSession session,
1498 const XrFrameEndInfo* frameEndInfo);
1499
1500XRAPI_ATTR XrResult XRAPI_CALL xrLocateViews(
1501 XrSession session,
1502 const XrViewLocateInfo* viewLocateInfo,
1503 XrViewState* viewState,
1504 uint32_t viewCapacityInput,
1505 uint32_t* viewCountOutput,
1506 XrView* views);
1507
1508XRAPI_ATTR XrResult XRAPI_CALL xrStringToPath(
1509 XrInstance instance,
1510 const char* pathString,
1511 XrPath* path);
1512
1513XRAPI_ATTR XrResult XRAPI_CALL xrPathToString(
1514 XrInstance instance,
1515 XrPath path,
1516 uint32_t bufferCapacityInput,
1517 uint32_t* bufferCountOutput,
1518 char* buffer);
1519
1520XRAPI_ATTR XrResult XRAPI_CALL xrCreateActionSet(
1521 XrInstance instance,
1522 const XrActionSetCreateInfo* createInfo,
1523 XrActionSet* actionSet);
1524
1525XRAPI_ATTR XrResult XRAPI_CALL xrDestroyActionSet(
1526 XrActionSet actionSet);
1527
1528XRAPI_ATTR XrResult XRAPI_CALL xrCreateAction(
1529 XrActionSet actionSet,
1530 const XrActionCreateInfo* createInfo,
1531 XrAction* action);
1532
1533XRAPI_ATTR XrResult XRAPI_CALL xrDestroyAction(
1534 XrAction action);
1535
1536XRAPI_ATTR XrResult XRAPI_CALL xrSuggestInteractionProfileBindings(
1537 XrInstance instance,
1538 const XrInteractionProfileSuggestedBinding* suggestedBindings);
1539
1540XRAPI_ATTR XrResult XRAPI_CALL xrAttachSessionActionSets(
1541 XrSession session,
1542 const XrSessionActionSetsAttachInfo* attachInfo);
1543
1544XRAPI_ATTR XrResult XRAPI_CALL xrGetCurrentInteractionProfile(
1545 XrSession session,
1546 XrPath topLevelUserPath,
1547 XrInteractionProfileState* interactionProfile);
1548
1549XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStateBoolean(
1550 XrSession session,
1551 const XrActionStateGetInfo* getInfo,
1552 XrActionStateBoolean* state);
1553
1554XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStateFloat(
1555 XrSession session,
1556 const XrActionStateGetInfo* getInfo,
1557 XrActionStateFloat* state);
1558
1559XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStateVector2f(
1560 XrSession session,
1561 const XrActionStateGetInfo* getInfo,
1562 XrActionStateVector2f* state);
1563
1564XRAPI_ATTR XrResult XRAPI_CALL xrGetActionStatePose(
1565 XrSession session,
1566 const XrActionStateGetInfo* getInfo,
1567 XrActionStatePose* state);
1568
1569XRAPI_ATTR XrResult XRAPI_CALL xrSyncActions(
1570 XrSession session,
1571 const XrActionsSyncInfo* syncInfo);
1572
1573XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateBoundSourcesForAction(
1574 XrSession session,
1575 const XrBoundSourcesForActionEnumerateInfo* enumerateInfo,
1576 uint32_t sourceCapacityInput,
1577 uint32_t* sourceCountOutput,
1578 XrPath* sources);
1579
1580XRAPI_ATTR XrResult XRAPI_CALL xrGetInputSourceLocalizedName(
1581 XrSession session,
1582 const XrInputSourceLocalizedNameGetInfo* getInfo,
1583 uint32_t bufferCapacityInput,
1584 uint32_t* bufferCountOutput,
1585 char* buffer);
1586
1587XRAPI_ATTR XrResult XRAPI_CALL xrApplyHapticFeedback(
1588 XrSession session,
1589 const XrHapticActionInfo* hapticActionInfo,
1590 const XrHapticBaseHeader* hapticFeedback);
1591
1592XRAPI_ATTR XrResult XRAPI_CALL xrStopHapticFeedback(
1593 XrSession session,
1594 const XrHapticActionInfo* hapticActionInfo);
1595#endif /* !XR_NO_PROTOTYPES */
1596
1597
1598#define XR_KHR_composition_layer_cube 1
1599#define XR_KHR_composition_layer_cube_SPEC_VERSION 8
1600#define XR_KHR_COMPOSITION_LAYER_CUBE_EXTENSION_NAME "XR_KHR_composition_layer_cube"
1601typedef struct XrCompositionLayerCubeKHR {
1602 XrStructureType type;
1603 const void* XR_MAY_ALIAS next;
1604 XrCompositionLayerFlags layerFlags;
1605 XrSpace space;
1606 XrEyeVisibility eyeVisibility;
1607 XrSwapchain swapchain;
1608 uint32_t imageArrayIndex;
1609 XrQuaternionf orientation;
1610} XrCompositionLayerCubeKHR;
1611
1612
1613
1614#define XR_KHR_composition_layer_depth 1
1615#define XR_KHR_composition_layer_depth_SPEC_VERSION 6
1616#define XR_KHR_COMPOSITION_LAYER_DEPTH_EXTENSION_NAME "XR_KHR_composition_layer_depth"
1617// XrCompositionLayerDepthInfoKHR extends XrCompositionLayerProjectionView
1618typedef struct XrCompositionLayerDepthInfoKHR {
1619 XrStructureType type;
1620 const void* XR_MAY_ALIAS next;
1621 XrSwapchainSubImage subImage;
1622 float minDepth;
1623 float maxDepth;
1624 float nearZ;
1625 float farZ;
1626} XrCompositionLayerDepthInfoKHR;
1627
1628
1629
1630#define XR_KHR_composition_layer_cylinder 1
1631#define XR_KHR_composition_layer_cylinder_SPEC_VERSION 4
1632#define XR_KHR_COMPOSITION_LAYER_CYLINDER_EXTENSION_NAME "XR_KHR_composition_layer_cylinder"
1633typedef struct XrCompositionLayerCylinderKHR {
1634 XrStructureType type;
1635 const void* XR_MAY_ALIAS next;
1636 XrCompositionLayerFlags layerFlags;
1637 XrSpace space;
1638 XrEyeVisibility eyeVisibility;
1639 XrSwapchainSubImage subImage;
1640 XrPosef pose;
1641 float radius;
1642 float centralAngle;
1643 float aspectRatio;
1644} XrCompositionLayerCylinderKHR;
1645
1646
1647
1648#define XR_KHR_composition_layer_equirect 1
1649#define XR_KHR_composition_layer_equirect_SPEC_VERSION 3
1650#define XR_KHR_COMPOSITION_LAYER_EQUIRECT_EXTENSION_NAME "XR_KHR_composition_layer_equirect"
1651typedef struct XrCompositionLayerEquirectKHR {
1652 XrStructureType type;
1653 const void* XR_MAY_ALIAS next;
1654 XrCompositionLayerFlags layerFlags;
1655 XrSpace space;
1656 XrEyeVisibility eyeVisibility;
1657 XrSwapchainSubImage subImage;
1658 XrPosef pose;
1659 float radius;
1660 XrVector2f scale;
1661 XrVector2f bias;
1662} XrCompositionLayerEquirectKHR;
1663
1664
1665
1666#define XR_KHR_visibility_mask 1
1667#define XR_KHR_visibility_mask_SPEC_VERSION 2
1668#define XR_KHR_VISIBILITY_MASK_EXTENSION_NAME "XR_KHR_visibility_mask"
1669
1670typedef enum XrVisibilityMaskTypeKHR {
1671 XR_VISIBILITY_MASK_TYPE_HIDDEN_TRIANGLE_MESH_KHR = 1,
1672 XR_VISIBILITY_MASK_TYPE_VISIBLE_TRIANGLE_MESH_KHR = 2,
1673 XR_VISIBILITY_MASK_TYPE_LINE_LOOP_KHR = 3,
1674 XR_VISIBILITY_MASK_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
1675} XrVisibilityMaskTypeKHR;
1676typedef struct XrVisibilityMaskKHR {
1677 XrStructureType type;
1678 void* XR_MAY_ALIAS next;
1679 uint32_t vertexCapacityInput;
1680 uint32_t vertexCountOutput;
1681 XrVector2f* vertices;
1682 uint32_t indexCapacityInput;
1683 uint32_t indexCountOutput;
1684 uint32_t* indices;
1685} XrVisibilityMaskKHR;
1686
1687typedef struct XrEventDataVisibilityMaskChangedKHR {
1688 XrStructureType type;
1689 const void* XR_MAY_ALIAS next;
1690 XrSession session;
1691 XrViewConfigurationType viewConfigurationType;
1692 uint32_t viewIndex;
1693} XrEventDataVisibilityMaskChangedKHR;
1694
1695typedef XrResult (XRAPI_PTR *PFN_xrGetVisibilityMaskKHR)(XrSession session, XrViewConfigurationType viewConfigurationType, uint32_t viewIndex, XrVisibilityMaskTypeKHR visibilityMaskType, XrVisibilityMaskKHR* visibilityMask);
1696
1697#ifndef XR_NO_PROTOTYPES
1698#ifdef XR_EXTENSION_PROTOTYPES
1699XRAPI_ATTR XrResult XRAPI_CALL xrGetVisibilityMaskKHR(
1700 XrSession session,
1701 XrViewConfigurationType viewConfigurationType,
1702 uint32_t viewIndex,
1703 XrVisibilityMaskTypeKHR visibilityMaskType,
1704 XrVisibilityMaskKHR* visibilityMask);
1705#endif /* XR_EXTENSION_PROTOTYPES */
1706#endif /* !XR_NO_PROTOTYPES */
1707
1708
1709#define XR_KHR_composition_layer_color_scale_bias 1
1710#define XR_KHR_composition_layer_color_scale_bias_SPEC_VERSION 5
1711#define XR_KHR_COMPOSITION_LAYER_COLOR_SCALE_BIAS_EXTENSION_NAME "XR_KHR_composition_layer_color_scale_bias"
1712// XrCompositionLayerColorScaleBiasKHR extends XrCompositionLayerBaseHeader
1713typedef struct XrCompositionLayerColorScaleBiasKHR {
1714 XrStructureType type;
1715 const void* XR_MAY_ALIAS next;
1716 XrColor4f colorScale;
1717 XrColor4f colorBias;
1718} XrCompositionLayerColorScaleBiasKHR;
1719
1720
1721
1722#define XR_KHR_loader_init 1
1723#define XR_KHR_loader_init_SPEC_VERSION 2
1724#define XR_KHR_LOADER_INIT_EXTENSION_NAME "XR_KHR_loader_init"
1725typedef struct XR_MAY_ALIAS XrLoaderInitInfoBaseHeaderKHR {
1726 XrStructureType type;
1727 const void* XR_MAY_ALIAS next;
1728} XrLoaderInitInfoBaseHeaderKHR;
1729
1730typedef XrResult (XRAPI_PTR *PFN_xrInitializeLoaderKHR)(const XrLoaderInitInfoBaseHeaderKHR* loaderInitInfo);
1731
1732#ifndef XR_NO_PROTOTYPES
1733#ifdef XR_EXTENSION_PROTOTYPES
1734XRAPI_ATTR XrResult XRAPI_CALL xrInitializeLoaderKHR(
1735 const XrLoaderInitInfoBaseHeaderKHR* loaderInitInfo);
1736#endif /* XR_EXTENSION_PROTOTYPES */
1737#endif /* !XR_NO_PROTOTYPES */
1738
1739
1740#define XR_KHR_composition_layer_equirect2 1
1741#define XR_KHR_composition_layer_equirect2_SPEC_VERSION 1
1742#define XR_KHR_COMPOSITION_LAYER_EQUIRECT2_EXTENSION_NAME "XR_KHR_composition_layer_equirect2"
1743typedef struct XrCompositionLayerEquirect2KHR {
1744 XrStructureType type;
1745 const void* XR_MAY_ALIAS next;
1746 XrCompositionLayerFlags layerFlags;
1747 XrSpace space;
1748 XrEyeVisibility eyeVisibility;
1749 XrSwapchainSubImage subImage;
1750 XrPosef pose;
1751 float radius;
1752 float centralHorizontalAngle;
1753 float upperVerticalAngle;
1754 float lowerVerticalAngle;
1755} XrCompositionLayerEquirect2KHR;
1756
1757
1758
1759#define XR_KHR_binding_modification 1
1760#define XR_KHR_binding_modification_SPEC_VERSION 1
1761#define XR_KHR_BINDING_MODIFICATION_EXTENSION_NAME "XR_KHR_binding_modification"
1762typedef struct XR_MAY_ALIAS XrBindingModificationBaseHeaderKHR {
1763 XrStructureType type;
1764 const void* XR_MAY_ALIAS next;
1765} XrBindingModificationBaseHeaderKHR;
1766
1767// XrBindingModificationsKHR extends XrInteractionProfileSuggestedBinding
1768typedef struct XrBindingModificationsKHR {
1769 XrStructureType type;
1770 const void* XR_MAY_ALIAS next;
1771 uint32_t bindingModificationCount;
1772 const XrBindingModificationBaseHeaderKHR* const* bindingModifications;
1773} XrBindingModificationsKHR;
1774
1775
1776
1777#define XR_KHR_swapchain_usage_input_attachment_bit 1
1778#define XR_KHR_swapchain_usage_input_attachment_bit_SPEC_VERSION 3
1779#define XR_KHR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_EXTENSION_NAME "XR_KHR_swapchain_usage_input_attachment_bit"
1780
1781
1782#define XR_EXT_performance_settings 1
1783#define XR_EXT_performance_settings_SPEC_VERSION 4
1784#define XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME "XR_EXT_performance_settings"
1785
1786typedef enum XrPerfSettingsDomainEXT {
1787 XR_PERF_SETTINGS_DOMAIN_CPU_EXT = 1,
1788 XR_PERF_SETTINGS_DOMAIN_GPU_EXT = 2,
1789 XR_PERF_SETTINGS_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
1790} XrPerfSettingsDomainEXT;
1791
1792typedef enum XrPerfSettingsSubDomainEXT {
1793 XR_PERF_SETTINGS_SUB_DOMAIN_COMPOSITING_EXT = 1,
1794 XR_PERF_SETTINGS_SUB_DOMAIN_RENDERING_EXT = 2,
1795 XR_PERF_SETTINGS_SUB_DOMAIN_THERMAL_EXT = 3,
1796 XR_PERF_SETTINGS_SUB_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
1797} XrPerfSettingsSubDomainEXT;
1798
1799typedef enum XrPerfSettingsLevelEXT {
1800 XR_PERF_SETTINGS_LEVEL_POWER_SAVINGS_EXT = 0,
1801 XR_PERF_SETTINGS_LEVEL_SUSTAINED_LOW_EXT = 25,
1802 XR_PERF_SETTINGS_LEVEL_SUSTAINED_HIGH_EXT = 50,
1803 XR_PERF_SETTINGS_LEVEL_BOOST_EXT = 75,
1804 XR_PERF_SETTINGS_LEVEL_MAX_ENUM_EXT = 0x7FFFFFFF
1805} XrPerfSettingsLevelEXT;
1806
1807typedef enum XrPerfSettingsNotificationLevelEXT {
1808 XR_PERF_SETTINGS_NOTIF_LEVEL_NORMAL_EXT = 0,
1809 XR_PERF_SETTINGS_NOTIF_LEVEL_WARNING_EXT = 25,
1810 XR_PERF_SETTINGS_NOTIF_LEVEL_IMPAIRED_EXT = 75,
1811 XR_PERF_SETTINGS_NOTIFICATION_LEVEL_MAX_ENUM_EXT = 0x7FFFFFFF
1812} XrPerfSettingsNotificationLevelEXT;
1813typedef struct XrEventDataPerfSettingsEXT {
1814 XrStructureType type;
1815 const void* XR_MAY_ALIAS next;
1816 XrPerfSettingsDomainEXT domain;
1817 XrPerfSettingsSubDomainEXT subDomain;
1818 XrPerfSettingsNotificationLevelEXT fromLevel;
1819 XrPerfSettingsNotificationLevelEXT toLevel;
1820} XrEventDataPerfSettingsEXT;
1821
1822typedef XrResult (XRAPI_PTR *PFN_xrPerfSettingsSetPerformanceLevelEXT)(XrSession session, XrPerfSettingsDomainEXT domain, XrPerfSettingsLevelEXT level);
1823
1824#ifndef XR_NO_PROTOTYPES
1825#ifdef XR_EXTENSION_PROTOTYPES
1826XRAPI_ATTR XrResult XRAPI_CALL xrPerfSettingsSetPerformanceLevelEXT(
1827 XrSession session,
1828 XrPerfSettingsDomainEXT domain,
1829 XrPerfSettingsLevelEXT level);
1830#endif /* XR_EXTENSION_PROTOTYPES */
1831#endif /* !XR_NO_PROTOTYPES */
1832
1833
1834#define XR_EXT_thermal_query 1
1835#define XR_EXT_thermal_query_SPEC_VERSION 2
1836#define XR_EXT_THERMAL_QUERY_EXTENSION_NAME "XR_EXT_thermal_query"
1837typedef XrResult (XRAPI_PTR *PFN_xrThermalGetTemperatureTrendEXT)(XrSession session, XrPerfSettingsDomainEXT domain, XrPerfSettingsNotificationLevelEXT* notificationLevel, float* tempHeadroom, float* tempSlope);
1838
1839#ifndef XR_NO_PROTOTYPES
1840#ifdef XR_EXTENSION_PROTOTYPES
1841XRAPI_ATTR XrResult XRAPI_CALL xrThermalGetTemperatureTrendEXT(
1842 XrSession session,
1843 XrPerfSettingsDomainEXT domain,
1844 XrPerfSettingsNotificationLevelEXT* notificationLevel,
1845 float* tempHeadroom,
1846 float* tempSlope);
1847#endif /* XR_EXTENSION_PROTOTYPES */
1848#endif /* !XR_NO_PROTOTYPES */
1849
1850
1851#define XR_EXT_debug_utils 1
1852XR_DEFINE_HANDLE(XrDebugUtilsMessengerEXT)
1853#define XR_EXT_debug_utils_SPEC_VERSION 5
1854#define XR_EXT_DEBUG_UTILS_EXTENSION_NAME "XR_EXT_debug_utils"
1855typedef XrFlags64 XrDebugUtilsMessageSeverityFlagsEXT;
1856
1857// Flag bits for XrDebugUtilsMessageSeverityFlagsEXT
1858static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001;
1859static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010;
1860static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100;
1861static const XrDebugUtilsMessageSeverityFlagsEXT XR_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000;
1862
1863typedef XrFlags64 XrDebugUtilsMessageTypeFlagsEXT;
1864
1865// Flag bits for XrDebugUtilsMessageTypeFlagsEXT
1866static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001;
1867static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002;
1868static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004;
1869static const XrDebugUtilsMessageTypeFlagsEXT XR_DEBUG_UTILS_MESSAGE_TYPE_CONFORMANCE_BIT_EXT = 0x00000008;
1870
1871typedef struct XrDebugUtilsObjectNameInfoEXT {
1872 XrStructureType type;
1873 const void* XR_MAY_ALIAS next;
1874 XrObjectType objectType;
1875 uint64_t objectHandle;
1876 const char* objectName;
1877} XrDebugUtilsObjectNameInfoEXT;
1878
1879typedef struct XrDebugUtilsLabelEXT {
1880 XrStructureType type;
1881 const void* XR_MAY_ALIAS next;
1882 const char* labelName;
1883} XrDebugUtilsLabelEXT;
1884
1885typedef struct XrDebugUtilsMessengerCallbackDataEXT {
1886 XrStructureType type;
1887 const void* XR_MAY_ALIAS next;
1888 const char* messageId;
1889 const char* functionName;
1890 const char* message;
1891 uint32_t objectCount;
1892 XrDebugUtilsObjectNameInfoEXT* objects;
1893 uint32_t sessionLabelCount;
1894 XrDebugUtilsLabelEXT* sessionLabels;
1895} XrDebugUtilsMessengerCallbackDataEXT;
1896
1897typedef XrBool32 (XRAPI_PTR *PFN_xrDebugUtilsMessengerCallbackEXT)(
1898 XrDebugUtilsMessageSeverityFlagsEXT messageSeverity,
1899 XrDebugUtilsMessageTypeFlagsEXT messageTypes,
1900 const XrDebugUtilsMessengerCallbackDataEXT* callbackData,
1901 void* userData);
1902
1903
1904// XrDebugUtilsMessengerCreateInfoEXT extends XrInstanceCreateInfo
1905typedef struct XrDebugUtilsMessengerCreateInfoEXT {
1906 XrStructureType type;
1907 const void* XR_MAY_ALIAS next;
1908 XrDebugUtilsMessageSeverityFlagsEXT messageSeverities;
1909 XrDebugUtilsMessageTypeFlagsEXT messageTypes;
1910 PFN_xrDebugUtilsMessengerCallbackEXT userCallback;
1911 void* XR_MAY_ALIAS userData;
1912} XrDebugUtilsMessengerCreateInfoEXT;
1913
1914typedef XrResult (XRAPI_PTR *PFN_xrSetDebugUtilsObjectNameEXT)(XrInstance instance, const XrDebugUtilsObjectNameInfoEXT* nameInfo);
1915typedef XrResult (XRAPI_PTR *PFN_xrCreateDebugUtilsMessengerEXT)(XrInstance instance, const XrDebugUtilsMessengerCreateInfoEXT* createInfo, XrDebugUtilsMessengerEXT* messenger);
1916typedef XrResult (XRAPI_PTR *PFN_xrDestroyDebugUtilsMessengerEXT)(XrDebugUtilsMessengerEXT messenger);
1917typedef XrResult (XRAPI_PTR *PFN_xrSubmitDebugUtilsMessageEXT)(XrInstance instance, XrDebugUtilsMessageSeverityFlagsEXT messageSeverity, XrDebugUtilsMessageTypeFlagsEXT messageTypes, const XrDebugUtilsMessengerCallbackDataEXT* callbackData);
1918typedef XrResult (XRAPI_PTR *PFN_xrSessionBeginDebugUtilsLabelRegionEXT)(XrSession session, const XrDebugUtilsLabelEXT* labelInfo);
1919typedef XrResult (XRAPI_PTR *PFN_xrSessionEndDebugUtilsLabelRegionEXT)(XrSession session);
1920typedef XrResult (XRAPI_PTR *PFN_xrSessionInsertDebugUtilsLabelEXT)(XrSession session, const XrDebugUtilsLabelEXT* labelInfo);
1921
1922#ifndef XR_NO_PROTOTYPES
1923#ifdef XR_EXTENSION_PROTOTYPES
1924XRAPI_ATTR XrResult XRAPI_CALL xrSetDebugUtilsObjectNameEXT(
1925 XrInstance instance,
1926 const XrDebugUtilsObjectNameInfoEXT* nameInfo);
1927
1928XRAPI_ATTR XrResult XRAPI_CALL xrCreateDebugUtilsMessengerEXT(
1929 XrInstance instance,
1930 const XrDebugUtilsMessengerCreateInfoEXT* createInfo,
1931 XrDebugUtilsMessengerEXT* messenger);
1932
1933XRAPI_ATTR XrResult XRAPI_CALL xrDestroyDebugUtilsMessengerEXT(
1934 XrDebugUtilsMessengerEXT messenger);
1935
1936XRAPI_ATTR XrResult XRAPI_CALL xrSubmitDebugUtilsMessageEXT(
1937 XrInstance instance,
1938 XrDebugUtilsMessageSeverityFlagsEXT messageSeverity,
1939 XrDebugUtilsMessageTypeFlagsEXT messageTypes,
1940 const XrDebugUtilsMessengerCallbackDataEXT* callbackData);
1941
1942XRAPI_ATTR XrResult XRAPI_CALL xrSessionBeginDebugUtilsLabelRegionEXT(
1943 XrSession session,
1944 const XrDebugUtilsLabelEXT* labelInfo);
1945
1946XRAPI_ATTR XrResult XRAPI_CALL xrSessionEndDebugUtilsLabelRegionEXT(
1947 XrSession session);
1948
1949XRAPI_ATTR XrResult XRAPI_CALL xrSessionInsertDebugUtilsLabelEXT(
1950 XrSession session,
1951 const XrDebugUtilsLabelEXT* labelInfo);
1952#endif /* XR_EXTENSION_PROTOTYPES */
1953#endif /* !XR_NO_PROTOTYPES */
1954
1955
1956#define XR_EXT_eye_gaze_interaction 1
1957#define XR_EXT_eye_gaze_interaction_SPEC_VERSION 2
1958#define XR_EXT_EYE_GAZE_INTERACTION_EXTENSION_NAME "XR_EXT_eye_gaze_interaction"
1959// XrSystemEyeGazeInteractionPropertiesEXT extends XrSystemProperties
1960typedef struct XrSystemEyeGazeInteractionPropertiesEXT {
1961 XrStructureType type;
1962 void* XR_MAY_ALIAS next;
1963 XrBool32 supportsEyeGazeInteraction;
1964} XrSystemEyeGazeInteractionPropertiesEXT;
1965
1966// XrEyeGazeSampleTimeEXT extends XrSpaceLocation
1967typedef struct XrEyeGazeSampleTimeEXT {
1968 XrStructureType type;
1969 void* XR_MAY_ALIAS next;
1970 XrTime time;
1971} XrEyeGazeSampleTimeEXT;
1972
1973
1974
1975#define XR_EXTX_overlay 1
1976#define XR_EXTX_overlay_SPEC_VERSION 5
1977#define XR_EXTX_OVERLAY_EXTENSION_NAME "XR_EXTX_overlay"
1978typedef XrFlags64 XrOverlaySessionCreateFlagsEXTX;
1979
1980// Flag bits for XrOverlaySessionCreateFlagsEXTX
1981
1982typedef XrFlags64 XrOverlayMainSessionFlagsEXTX;
1983
1984// Flag bits for XrOverlayMainSessionFlagsEXTX
1985static const XrOverlayMainSessionFlagsEXTX XR_OVERLAY_MAIN_SESSION_ENABLED_COMPOSITION_LAYER_INFO_DEPTH_BIT_EXTX = 0x00000001;
1986
1987// XrSessionCreateInfoOverlayEXTX extends XrSessionCreateInfo
1988typedef struct XrSessionCreateInfoOverlayEXTX {
1989 XrStructureType type;
1990 const void* XR_MAY_ALIAS next;
1991 XrOverlaySessionCreateFlagsEXTX createFlags;
1992 uint32_t sessionLayersPlacement;
1993} XrSessionCreateInfoOverlayEXTX;
1994
1995typedef struct XrEventDataMainSessionVisibilityChangedEXTX {
1996 XrStructureType type;
1997 const void* XR_MAY_ALIAS next;
1998 XrBool32 visible;
1999 XrOverlayMainSessionFlagsEXTX flags;
2000} XrEventDataMainSessionVisibilityChangedEXTX;
2001
2002
2003
2004#define XR_VARJO_quad_views 1
2005#define XR_VARJO_quad_views_SPEC_VERSION 1
2006#define XR_VARJO_QUAD_VIEWS_EXTENSION_NAME "XR_VARJO_quad_views"
2007
2008
2009#define XR_MSFT_unbounded_reference_space 1
2010#define XR_MSFT_unbounded_reference_space_SPEC_VERSION 1
2011#define XR_MSFT_UNBOUNDED_REFERENCE_SPACE_EXTENSION_NAME "XR_MSFT_unbounded_reference_space"
2012
2013
2014#define XR_MSFT_spatial_anchor 1
2015XR_DEFINE_HANDLE(XrSpatialAnchorMSFT)
2016#define XR_MSFT_spatial_anchor_SPEC_VERSION 2
2017#define XR_MSFT_SPATIAL_ANCHOR_EXTENSION_NAME "XR_MSFT_spatial_anchor"
2018typedef struct XrSpatialAnchorCreateInfoMSFT {
2019 XrStructureType type;
2020 const void* XR_MAY_ALIAS next;
2021 XrSpace space;
2022 XrPosef pose;
2023 XrTime time;
2024} XrSpatialAnchorCreateInfoMSFT;
2025
2026typedef struct XrSpatialAnchorSpaceCreateInfoMSFT {
2027 XrStructureType type;
2028 const void* XR_MAY_ALIAS next;
2029 XrSpatialAnchorMSFT anchor;
2030 XrPosef poseInAnchorSpace;
2031} XrSpatialAnchorSpaceCreateInfoMSFT;
2032
2033typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorMSFT)(XrSession session, const XrSpatialAnchorCreateInfoMSFT* createInfo, XrSpatialAnchorMSFT* anchor);
2034typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorSpaceMSFT)(XrSession session, const XrSpatialAnchorSpaceCreateInfoMSFT* createInfo, XrSpace* space);
2035typedef XrResult (XRAPI_PTR *PFN_xrDestroySpatialAnchorMSFT)(XrSpatialAnchorMSFT anchor);
2036
2037#ifndef XR_NO_PROTOTYPES
2038#ifdef XR_EXTENSION_PROTOTYPES
2039XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorMSFT(
2040 XrSession session,
2041 const XrSpatialAnchorCreateInfoMSFT* createInfo,
2042 XrSpatialAnchorMSFT* anchor);
2043
2044XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorSpaceMSFT(
2045 XrSession session,
2046 const XrSpatialAnchorSpaceCreateInfoMSFT* createInfo,
2047 XrSpace* space);
2048
2049XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpatialAnchorMSFT(
2050 XrSpatialAnchorMSFT anchor);
2051#endif /* XR_EXTENSION_PROTOTYPES */
2052#endif /* !XR_NO_PROTOTYPES */
2053
2054
2055#define XR_FB_composition_layer_image_layout 1
2056#define XR_FB_composition_layer_image_layout_SPEC_VERSION 1
2057#define XR_FB_COMPOSITION_LAYER_IMAGE_LAYOUT_EXTENSION_NAME "XR_FB_composition_layer_image_layout"
2058typedef XrFlags64 XrCompositionLayerImageLayoutFlagsFB;
2059
2060// Flag bits for XrCompositionLayerImageLayoutFlagsFB
2061static const XrCompositionLayerImageLayoutFlagsFB XR_COMPOSITION_LAYER_IMAGE_LAYOUT_VERTICAL_FLIP_BIT_FB = 0x00000001;
2062
2063// XrCompositionLayerImageLayoutFB extends XrCompositionLayerBaseHeader
2064typedef struct XrCompositionLayerImageLayoutFB {
2065 XrStructureType type;
2066 void* XR_MAY_ALIAS next;
2067 XrCompositionLayerImageLayoutFlagsFB flags;
2068} XrCompositionLayerImageLayoutFB;
2069
2070
2071
2072#define XR_FB_composition_layer_alpha_blend 1
2073#define XR_FB_composition_layer_alpha_blend_SPEC_VERSION 2
2074#define XR_FB_COMPOSITION_LAYER_ALPHA_BLEND_EXTENSION_NAME "XR_FB_composition_layer_alpha_blend"
2075
2076typedef enum XrBlendFactorFB {
2077 XR_BLEND_FACTOR_ZERO_FB = 0,
2078 XR_BLEND_FACTOR_ONE_FB = 1,
2079 XR_BLEND_FACTOR_SRC_ALPHA_FB = 2,
2080 XR_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA_FB = 3,
2081 XR_BLEND_FACTOR_DST_ALPHA_FB = 4,
2082 XR_BLEND_FACTOR_ONE_MINUS_DST_ALPHA_FB = 5,
2083 XR_BLEND_FACTOR_MAX_ENUM_FB = 0x7FFFFFFF
2084} XrBlendFactorFB;
2085// XrCompositionLayerAlphaBlendFB extends XrCompositionLayerBaseHeader
2086typedef struct XrCompositionLayerAlphaBlendFB {
2087 XrStructureType type;
2088 void* XR_MAY_ALIAS next;
2089 XrBlendFactorFB srcFactorColor;
2090 XrBlendFactorFB dstFactorColor;
2091 XrBlendFactorFB srcFactorAlpha;
2092 XrBlendFactorFB dstFactorAlpha;
2093} XrCompositionLayerAlphaBlendFB;
2094
2095
2096
2097#define XR_MND_headless 1
2098#define XR_MND_headless_SPEC_VERSION 2
2099#define XR_MND_HEADLESS_EXTENSION_NAME "XR_MND_headless"
2100
2101
2102#define XR_OCULUS_android_session_state_enable 1
2103#define XR_OCULUS_android_session_state_enable_SPEC_VERSION 1
2104#define XR_OCULUS_ANDROID_SESSION_STATE_ENABLE_EXTENSION_NAME "XR_OCULUS_android_session_state_enable"
2105
2106
2107#define XR_EXT_view_configuration_depth_range 1
2108#define XR_EXT_view_configuration_depth_range_SPEC_VERSION 1
2109#define XR_EXT_VIEW_CONFIGURATION_DEPTH_RANGE_EXTENSION_NAME "XR_EXT_view_configuration_depth_range"
2110// XrViewConfigurationDepthRangeEXT extends XrViewConfigurationView
2111typedef struct XrViewConfigurationDepthRangeEXT {
2112 XrStructureType type;
2113 void* XR_MAY_ALIAS next;
2114 float recommendedNearZ;
2115 float minNearZ;
2116 float recommendedFarZ;
2117 float maxFarZ;
2118} XrViewConfigurationDepthRangeEXT;
2119
2120
2121
2122#define XR_EXT_conformance_automation 1
2123#define XR_EXT_conformance_automation_SPEC_VERSION 3
2124#define XR_EXT_CONFORMANCE_AUTOMATION_EXTENSION_NAME "XR_EXT_conformance_automation"
2125typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceActiveEXT)(XrSession session, XrPath interactionProfile, XrPath topLevelPath, XrBool32 isActive);
2126typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceStateBoolEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrBool32 state);
2127typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceStateFloatEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, float state);
2128typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceStateVector2fEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrVector2f state);
2129typedef XrResult (XRAPI_PTR *PFN_xrSetInputDeviceLocationEXT)(XrSession session, XrPath topLevelPath, XrPath inputSourcePath, XrSpace space, XrPosef pose);
2130
2131#ifndef XR_NO_PROTOTYPES
2132#ifdef XR_EXTENSION_PROTOTYPES
2133XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceActiveEXT(
2134 XrSession session,
2135 XrPath interactionProfile,
2136 XrPath topLevelPath,
2137 XrBool32 isActive);
2138
2139XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceStateBoolEXT(
2140 XrSession session,
2141 XrPath topLevelPath,
2142 XrPath inputSourcePath,
2143 XrBool32 state);
2144
2145XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceStateFloatEXT(
2146 XrSession session,
2147 XrPath topLevelPath,
2148 XrPath inputSourcePath,
2149 float state);
2150
2151XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceStateVector2fEXT(
2152 XrSession session,
2153 XrPath topLevelPath,
2154 XrPath inputSourcePath,
2155 XrVector2f state);
2156
2157XRAPI_ATTR XrResult XRAPI_CALL xrSetInputDeviceLocationEXT(
2158 XrSession session,
2159 XrPath topLevelPath,
2160 XrPath inputSourcePath,
2161 XrSpace space,
2162 XrPosef pose);
2163#endif /* XR_EXTENSION_PROTOTYPES */
2164#endif /* !XR_NO_PROTOTYPES */
2165
2166
2167#define XR_MSFT_spatial_graph_bridge 1
2168XR_DEFINE_HANDLE(XrSpatialGraphNodeBindingMSFT)
2169#define XR_GUID_SIZE_MSFT 16
2170#define XR_MSFT_spatial_graph_bridge_SPEC_VERSION 2
2171#define XR_MSFT_SPATIAL_GRAPH_BRIDGE_EXTENSION_NAME "XR_MSFT_spatial_graph_bridge"
2172
2173typedef enum XrSpatialGraphNodeTypeMSFT {
2174 XR_SPATIAL_GRAPH_NODE_TYPE_STATIC_MSFT = 1,
2175 XR_SPATIAL_GRAPH_NODE_TYPE_DYNAMIC_MSFT = 2,
2176 XR_SPATIAL_GRAPH_NODE_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2177} XrSpatialGraphNodeTypeMSFT;
2178typedef struct XrSpatialGraphNodeSpaceCreateInfoMSFT {
2179 XrStructureType type;
2180 const void* XR_MAY_ALIAS next;
2181 XrSpatialGraphNodeTypeMSFT nodeType;
2182 uint8_t nodeId[XR_GUID_SIZE_MSFT];
2183 XrPosef pose;
2184} XrSpatialGraphNodeSpaceCreateInfoMSFT;
2185
2186typedef struct XrSpatialGraphStaticNodeBindingCreateInfoMSFT {
2187 XrStructureType type;
2188 const void* XR_MAY_ALIAS next;
2189 XrSpace space;
2190 XrPosef poseInSpace;
2191 XrTime time;
2192} XrSpatialGraphStaticNodeBindingCreateInfoMSFT;
2193
2194typedef struct XrSpatialGraphNodeBindingPropertiesGetInfoMSFT {
2195 XrStructureType type;
2196 const void* XR_MAY_ALIAS next;
2197} XrSpatialGraphNodeBindingPropertiesGetInfoMSFT;
2198
2199typedef struct XrSpatialGraphNodeBindingPropertiesMSFT {
2200 XrStructureType type;
2201 void* XR_MAY_ALIAS next;
2202 uint8_t nodeId[XR_GUID_SIZE_MSFT];
2203 XrPosef poseInNodeSpace;
2204} XrSpatialGraphNodeBindingPropertiesMSFT;
2205
2206typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialGraphNodeSpaceMSFT)(XrSession session, const XrSpatialGraphNodeSpaceCreateInfoMSFT* createInfo, XrSpace* space);
2207typedef XrResult (XRAPI_PTR *PFN_xrTryCreateSpatialGraphStaticNodeBindingMSFT)(XrSession session, const XrSpatialGraphStaticNodeBindingCreateInfoMSFT* createInfo, XrSpatialGraphNodeBindingMSFT* nodeBinding);
2208typedef XrResult (XRAPI_PTR *PFN_xrDestroySpatialGraphNodeBindingMSFT)(XrSpatialGraphNodeBindingMSFT nodeBinding);
2209typedef XrResult (XRAPI_PTR *PFN_xrGetSpatialGraphNodeBindingPropertiesMSFT)(XrSpatialGraphNodeBindingMSFT nodeBinding, const XrSpatialGraphNodeBindingPropertiesGetInfoMSFT* getInfo, XrSpatialGraphNodeBindingPropertiesMSFT* properties);
2210
2211#ifndef XR_NO_PROTOTYPES
2212#ifdef XR_EXTENSION_PROTOTYPES
2213XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialGraphNodeSpaceMSFT(
2214 XrSession session,
2215 const XrSpatialGraphNodeSpaceCreateInfoMSFT* createInfo,
2216 XrSpace* space);
2217
2218XRAPI_ATTR XrResult XRAPI_CALL xrTryCreateSpatialGraphStaticNodeBindingMSFT(
2219 XrSession session,
2220 const XrSpatialGraphStaticNodeBindingCreateInfoMSFT* createInfo,
2221 XrSpatialGraphNodeBindingMSFT* nodeBinding);
2222
2223XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpatialGraphNodeBindingMSFT(
2224 XrSpatialGraphNodeBindingMSFT nodeBinding);
2225
2226XRAPI_ATTR XrResult XRAPI_CALL xrGetSpatialGraphNodeBindingPropertiesMSFT(
2227 XrSpatialGraphNodeBindingMSFT nodeBinding,
2228 const XrSpatialGraphNodeBindingPropertiesGetInfoMSFT* getInfo,
2229 XrSpatialGraphNodeBindingPropertiesMSFT* properties);
2230#endif /* XR_EXTENSION_PROTOTYPES */
2231#endif /* !XR_NO_PROTOTYPES */
2232
2233
2234#define XR_MSFT_hand_interaction 1
2235#define XR_MSFT_hand_interaction_SPEC_VERSION 1
2236#define XR_MSFT_HAND_INTERACTION_EXTENSION_NAME "XR_MSFT_hand_interaction"
2237
2238
2239#define XR_EXT_hand_tracking 1
2240
2241#define XR_HAND_JOINT_COUNT_EXT 26
2242
2243XR_DEFINE_HANDLE(XrHandTrackerEXT)
2244#define XR_EXT_hand_tracking_SPEC_VERSION 4
2245#define XR_EXT_HAND_TRACKING_EXTENSION_NAME "XR_EXT_hand_tracking"
2246
2247typedef enum XrHandEXT {
2248 XR_HAND_LEFT_EXT = 1,
2249 XR_HAND_RIGHT_EXT = 2,
2250 XR_HAND_MAX_ENUM_EXT = 0x7FFFFFFF
2251} XrHandEXT;
2252
2253typedef enum XrHandJointEXT {
2254 XR_HAND_JOINT_PALM_EXT = 0,
2255 XR_HAND_JOINT_WRIST_EXT = 1,
2256 XR_HAND_JOINT_THUMB_METACARPAL_EXT = 2,
2257 XR_HAND_JOINT_THUMB_PROXIMAL_EXT = 3,
2258 XR_HAND_JOINT_THUMB_DISTAL_EXT = 4,
2259 XR_HAND_JOINT_THUMB_TIP_EXT = 5,
2260 XR_HAND_JOINT_INDEX_METACARPAL_EXT = 6,
2261 XR_HAND_JOINT_INDEX_PROXIMAL_EXT = 7,
2262 XR_HAND_JOINT_INDEX_INTERMEDIATE_EXT = 8,
2263 XR_HAND_JOINT_INDEX_DISTAL_EXT = 9,
2264 XR_HAND_JOINT_INDEX_TIP_EXT = 10,
2265 XR_HAND_JOINT_MIDDLE_METACARPAL_EXT = 11,
2266 XR_HAND_JOINT_MIDDLE_PROXIMAL_EXT = 12,
2267 XR_HAND_JOINT_MIDDLE_INTERMEDIATE_EXT = 13,
2268 XR_HAND_JOINT_MIDDLE_DISTAL_EXT = 14,
2269 XR_HAND_JOINT_MIDDLE_TIP_EXT = 15,
2270 XR_HAND_JOINT_RING_METACARPAL_EXT = 16,
2271 XR_HAND_JOINT_RING_PROXIMAL_EXT = 17,
2272 XR_HAND_JOINT_RING_INTERMEDIATE_EXT = 18,
2273 XR_HAND_JOINT_RING_DISTAL_EXT = 19,
2274 XR_HAND_JOINT_RING_TIP_EXT = 20,
2275 XR_HAND_JOINT_LITTLE_METACARPAL_EXT = 21,
2276 XR_HAND_JOINT_LITTLE_PROXIMAL_EXT = 22,
2277 XR_HAND_JOINT_LITTLE_INTERMEDIATE_EXT = 23,
2278 XR_HAND_JOINT_LITTLE_DISTAL_EXT = 24,
2279 XR_HAND_JOINT_LITTLE_TIP_EXT = 25,
2280 XR_HAND_JOINT_MAX_ENUM_EXT = 0x7FFFFFFF
2281} XrHandJointEXT;
2282
2283typedef enum XrHandJointSetEXT {
2284 XR_HAND_JOINT_SET_DEFAULT_EXT = 0,
2285 XR_HAND_JOINT_SET_HAND_WITH_FOREARM_ULTRALEAP = 1000149000,
2286 XR_HAND_JOINT_SET_MAX_ENUM_EXT = 0x7FFFFFFF
2287} XrHandJointSetEXT;
2288// XrSystemHandTrackingPropertiesEXT extends XrSystemProperties
2289typedef struct XrSystemHandTrackingPropertiesEXT {
2290 XrStructureType type;
2291 void* XR_MAY_ALIAS next;
2292 XrBool32 supportsHandTracking;
2293} XrSystemHandTrackingPropertiesEXT;
2294
2295typedef struct XrHandTrackerCreateInfoEXT {
2296 XrStructureType type;
2297 const void* XR_MAY_ALIAS next;
2298 XrHandEXT hand;
2299 XrHandJointSetEXT handJointSet;
2300} XrHandTrackerCreateInfoEXT;
2301
2302typedef struct XrHandJointsLocateInfoEXT {
2303 XrStructureType type;
2304 const void* XR_MAY_ALIAS next;
2305 XrSpace baseSpace;
2306 XrTime time;
2307} XrHandJointsLocateInfoEXT;
2308
2309typedef struct XrHandJointLocationEXT {
2310 XrSpaceLocationFlags locationFlags;
2311 XrPosef pose;
2312 float radius;
2313} XrHandJointLocationEXT;
2314
2315typedef struct XrHandJointVelocityEXT {
2316 XrSpaceVelocityFlags velocityFlags;
2317 XrVector3f linearVelocity;
2318 XrVector3f angularVelocity;
2319} XrHandJointVelocityEXT;
2320
2321typedef struct XrHandJointLocationsEXT {
2322 XrStructureType type;
2323 void* XR_MAY_ALIAS next;
2324 XrBool32 isActive;
2325 uint32_t jointCount;
2326 XrHandJointLocationEXT* jointLocations;
2327} XrHandJointLocationsEXT;
2328
2329// XrHandJointVelocitiesEXT extends XrHandJointLocationsEXT
2330typedef struct XrHandJointVelocitiesEXT {
2331 XrStructureType type;
2332 void* XR_MAY_ALIAS next;
2333 uint32_t jointCount;
2334 XrHandJointVelocityEXT* jointVelocities;
2335} XrHandJointVelocitiesEXT;
2336
2337typedef XrResult (XRAPI_PTR *PFN_xrCreateHandTrackerEXT)(XrSession session, const XrHandTrackerCreateInfoEXT* createInfo, XrHandTrackerEXT* handTracker);
2338typedef XrResult (XRAPI_PTR *PFN_xrDestroyHandTrackerEXT)(XrHandTrackerEXT handTracker);
2339typedef XrResult (XRAPI_PTR *PFN_xrLocateHandJointsEXT)(XrHandTrackerEXT handTracker, const XrHandJointsLocateInfoEXT* locateInfo, XrHandJointLocationsEXT* locations);
2340
2341#ifndef XR_NO_PROTOTYPES
2342#ifdef XR_EXTENSION_PROTOTYPES
2343XRAPI_ATTR XrResult XRAPI_CALL xrCreateHandTrackerEXT(
2344 XrSession session,
2345 const XrHandTrackerCreateInfoEXT* createInfo,
2346 XrHandTrackerEXT* handTracker);
2347
2348XRAPI_ATTR XrResult XRAPI_CALL xrDestroyHandTrackerEXT(
2349 XrHandTrackerEXT handTracker);
2350
2351XRAPI_ATTR XrResult XRAPI_CALL xrLocateHandJointsEXT(
2352 XrHandTrackerEXT handTracker,
2353 const XrHandJointsLocateInfoEXT* locateInfo,
2354 XrHandJointLocationsEXT* locations);
2355#endif /* XR_EXTENSION_PROTOTYPES */
2356#endif /* !XR_NO_PROTOTYPES */
2357
2358
2359#define XR_MSFT_hand_tracking_mesh 1
2360#define XR_MSFT_hand_tracking_mesh_SPEC_VERSION 4
2361#define XR_MSFT_HAND_TRACKING_MESH_EXTENSION_NAME "XR_MSFT_hand_tracking_mesh"
2362
2363typedef enum XrHandPoseTypeMSFT {
2364 XR_HAND_POSE_TYPE_TRACKED_MSFT = 0,
2365 XR_HAND_POSE_TYPE_REFERENCE_OPEN_PALM_MSFT = 1,
2366 XR_HAND_POSE_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2367} XrHandPoseTypeMSFT;
2368// XrSystemHandTrackingMeshPropertiesMSFT extends XrSystemProperties
2369typedef struct XrSystemHandTrackingMeshPropertiesMSFT {
2370 XrStructureType type;
2371 void* XR_MAY_ALIAS next;
2372 XrBool32 supportsHandTrackingMesh;
2373 uint32_t maxHandMeshIndexCount;
2374 uint32_t maxHandMeshVertexCount;
2375} XrSystemHandTrackingMeshPropertiesMSFT;
2376
2377typedef struct XrHandMeshSpaceCreateInfoMSFT {
2378 XrStructureType type;
2379 const void* XR_MAY_ALIAS next;
2380 XrHandPoseTypeMSFT handPoseType;
2381 XrPosef poseInHandMeshSpace;
2382} XrHandMeshSpaceCreateInfoMSFT;
2383
2384typedef struct XrHandMeshUpdateInfoMSFT {
2385 XrStructureType type;
2386 const void* XR_MAY_ALIAS next;
2387 XrTime time;
2388 XrHandPoseTypeMSFT handPoseType;
2389} XrHandMeshUpdateInfoMSFT;
2390
2391typedef struct XrHandMeshIndexBufferMSFT {
2392 uint32_t indexBufferKey;
2393 uint32_t indexCapacityInput;
2394 uint32_t indexCountOutput;
2395 uint32_t* indices;
2396} XrHandMeshIndexBufferMSFT;
2397
2398typedef struct XrHandMeshVertexMSFT {
2399 XrVector3f position;
2400 XrVector3f normal;
2401} XrHandMeshVertexMSFT;
2402
2403typedef struct XrHandMeshVertexBufferMSFT {
2404 XrTime vertexUpdateTime;
2405 uint32_t vertexCapacityInput;
2406 uint32_t vertexCountOutput;
2407 XrHandMeshVertexMSFT* vertices;
2408} XrHandMeshVertexBufferMSFT;
2409
2410typedef struct XrHandMeshMSFT {
2411 XrStructureType type;
2412 void* XR_MAY_ALIAS next;
2413 XrBool32 isActive;
2414 XrBool32 indexBufferChanged;
2415 XrBool32 vertexBufferChanged;
2416 XrHandMeshIndexBufferMSFT indexBuffer;
2417 XrHandMeshVertexBufferMSFT vertexBuffer;
2418} XrHandMeshMSFT;
2419
2420// XrHandPoseTypeInfoMSFT extends XrHandTrackerCreateInfoEXT
2421typedef struct XrHandPoseTypeInfoMSFT {
2422 XrStructureType type;
2423 const void* XR_MAY_ALIAS next;
2424 XrHandPoseTypeMSFT handPoseType;
2425} XrHandPoseTypeInfoMSFT;
2426
2427typedef XrResult (XRAPI_PTR *PFN_xrCreateHandMeshSpaceMSFT)(XrHandTrackerEXT handTracker, const XrHandMeshSpaceCreateInfoMSFT* createInfo, XrSpace* space);
2428typedef XrResult (XRAPI_PTR *PFN_xrUpdateHandMeshMSFT)(XrHandTrackerEXT handTracker, const XrHandMeshUpdateInfoMSFT* updateInfo, XrHandMeshMSFT* handMesh);
2429
2430#ifndef XR_NO_PROTOTYPES
2431#ifdef XR_EXTENSION_PROTOTYPES
2432XRAPI_ATTR XrResult XRAPI_CALL xrCreateHandMeshSpaceMSFT(
2433 XrHandTrackerEXT handTracker,
2434 const XrHandMeshSpaceCreateInfoMSFT* createInfo,
2435 XrSpace* space);
2436
2437XRAPI_ATTR XrResult XRAPI_CALL xrUpdateHandMeshMSFT(
2438 XrHandTrackerEXT handTracker,
2439 const XrHandMeshUpdateInfoMSFT* updateInfo,
2440 XrHandMeshMSFT* handMesh);
2441#endif /* XR_EXTENSION_PROTOTYPES */
2442#endif /* !XR_NO_PROTOTYPES */
2443
2444
2445#define XR_MSFT_secondary_view_configuration 1
2446#define XR_MSFT_secondary_view_configuration_SPEC_VERSION 1
2447#define XR_MSFT_SECONDARY_VIEW_CONFIGURATION_EXTENSION_NAME "XR_MSFT_secondary_view_configuration"
2448// XrSecondaryViewConfigurationSessionBeginInfoMSFT extends XrSessionBeginInfo
2449typedef struct XrSecondaryViewConfigurationSessionBeginInfoMSFT {
2450 XrStructureType type;
2451 const void* XR_MAY_ALIAS next;
2452 uint32_t viewConfigurationCount;
2453 const XrViewConfigurationType* enabledViewConfigurationTypes;
2454} XrSecondaryViewConfigurationSessionBeginInfoMSFT;
2455
2456typedef struct XrSecondaryViewConfigurationStateMSFT {
2457 XrStructureType type;
2458 void* XR_MAY_ALIAS next;
2459 XrViewConfigurationType viewConfigurationType;
2460 XrBool32 active;
2461} XrSecondaryViewConfigurationStateMSFT;
2462
2463// XrSecondaryViewConfigurationFrameStateMSFT extends XrFrameState
2464typedef struct XrSecondaryViewConfigurationFrameStateMSFT {
2465 XrStructureType type;
2466 void* XR_MAY_ALIAS next;
2467 uint32_t viewConfigurationCount;
2468 XrSecondaryViewConfigurationStateMSFT* viewConfigurationStates;
2469} XrSecondaryViewConfigurationFrameStateMSFT;
2470
2471typedef struct XrSecondaryViewConfigurationLayerInfoMSFT {
2472 XrStructureType type;
2473 const void* XR_MAY_ALIAS next;
2474 XrViewConfigurationType viewConfigurationType;
2475 XrEnvironmentBlendMode environmentBlendMode;
2476 uint32_t layerCount;
2477 const XrCompositionLayerBaseHeader* const* layers;
2478} XrSecondaryViewConfigurationLayerInfoMSFT;
2479
2480// XrSecondaryViewConfigurationFrameEndInfoMSFT extends XrFrameEndInfo
2481typedef struct XrSecondaryViewConfigurationFrameEndInfoMSFT {
2482 XrStructureType type;
2483 const void* XR_MAY_ALIAS next;
2484 uint32_t viewConfigurationCount;
2485 const XrSecondaryViewConfigurationLayerInfoMSFT* viewConfigurationLayersInfo;
2486} XrSecondaryViewConfigurationFrameEndInfoMSFT;
2487
2488// XrSecondaryViewConfigurationSwapchainCreateInfoMSFT extends XrSwapchainCreateInfo
2489typedef struct XrSecondaryViewConfigurationSwapchainCreateInfoMSFT {
2490 XrStructureType type;
2491 const void* XR_MAY_ALIAS next;
2492 XrViewConfigurationType viewConfigurationType;
2493} XrSecondaryViewConfigurationSwapchainCreateInfoMSFT;
2494
2495
2496
2497#define XR_MSFT_first_person_observer 1
2498#define XR_MSFT_first_person_observer_SPEC_VERSION 1
2499#define XR_MSFT_FIRST_PERSON_OBSERVER_EXTENSION_NAME "XR_MSFT_first_person_observer"
2500
2501
2502#define XR_MSFT_controller_model 1
2503
2504#define XR_NULL_CONTROLLER_MODEL_KEY_MSFT 0
2505
2506XR_DEFINE_ATOM(XrControllerModelKeyMSFT)
2507#define XR_MAX_CONTROLLER_MODEL_NODE_NAME_SIZE_MSFT 64
2508#define XR_MSFT_controller_model_SPEC_VERSION 2
2509#define XR_MSFT_CONTROLLER_MODEL_EXTENSION_NAME "XR_MSFT_controller_model"
2510typedef struct XrControllerModelKeyStateMSFT {
2511 XrStructureType type;
2512 void* XR_MAY_ALIAS next;
2513 XrControllerModelKeyMSFT modelKey;
2514} XrControllerModelKeyStateMSFT;
2515
2516typedef struct XrControllerModelNodePropertiesMSFT {
2517 XrStructureType type;
2518 void* XR_MAY_ALIAS next;
2519 char parentNodeName[XR_MAX_CONTROLLER_MODEL_NODE_NAME_SIZE_MSFT];
2520 char nodeName[XR_MAX_CONTROLLER_MODEL_NODE_NAME_SIZE_MSFT];
2521} XrControllerModelNodePropertiesMSFT;
2522
2523typedef struct XrControllerModelPropertiesMSFT {
2524 XrStructureType type;
2525 void* XR_MAY_ALIAS next;
2526 uint32_t nodeCapacityInput;
2527 uint32_t nodeCountOutput;
2528 XrControllerModelNodePropertiesMSFT* nodeProperties;
2529} XrControllerModelPropertiesMSFT;
2530
2531typedef struct XrControllerModelNodeStateMSFT {
2532 XrStructureType type;
2533 void* XR_MAY_ALIAS next;
2534 XrPosef nodePose;
2535} XrControllerModelNodeStateMSFT;
2536
2537typedef struct XrControllerModelStateMSFT {
2538 XrStructureType type;
2539 void* XR_MAY_ALIAS next;
2540 uint32_t nodeCapacityInput;
2541 uint32_t nodeCountOutput;
2542 XrControllerModelNodeStateMSFT* nodeStates;
2543} XrControllerModelStateMSFT;
2544
2545typedef XrResult (XRAPI_PTR *PFN_xrGetControllerModelKeyMSFT)(XrSession session, XrPath topLevelUserPath, XrControllerModelKeyStateMSFT* controllerModelKeyState);
2546typedef XrResult (XRAPI_PTR *PFN_xrLoadControllerModelMSFT)(XrSession session, XrControllerModelKeyMSFT modelKey, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, uint8_t* buffer);
2547typedef XrResult (XRAPI_PTR *PFN_xrGetControllerModelPropertiesMSFT)(XrSession session, XrControllerModelKeyMSFT modelKey, XrControllerModelPropertiesMSFT* properties);
2548typedef XrResult (XRAPI_PTR *PFN_xrGetControllerModelStateMSFT)(XrSession session, XrControllerModelKeyMSFT modelKey, XrControllerModelStateMSFT* state);
2549
2550#ifndef XR_NO_PROTOTYPES
2551#ifdef XR_EXTENSION_PROTOTYPES
2552XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerModelKeyMSFT(
2553 XrSession session,
2554 XrPath topLevelUserPath,
2555 XrControllerModelKeyStateMSFT* controllerModelKeyState);
2556
2557XRAPI_ATTR XrResult XRAPI_CALL xrLoadControllerModelMSFT(
2558 XrSession session,
2559 XrControllerModelKeyMSFT modelKey,
2560 uint32_t bufferCapacityInput,
2561 uint32_t* bufferCountOutput,
2562 uint8_t* buffer);
2563
2564XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerModelPropertiesMSFT(
2565 XrSession session,
2566 XrControllerModelKeyMSFT modelKey,
2567 XrControllerModelPropertiesMSFT* properties);
2568
2569XRAPI_ATTR XrResult XRAPI_CALL xrGetControllerModelStateMSFT(
2570 XrSession session,
2571 XrControllerModelKeyMSFT modelKey,
2572 XrControllerModelStateMSFT* state);
2573#endif /* XR_EXTENSION_PROTOTYPES */
2574#endif /* !XR_NO_PROTOTYPES */
2575
2576
2577#define XR_EXT_win32_appcontainer_compatible 1
2578#define XR_EXT_win32_appcontainer_compatible_SPEC_VERSION 1
2579#define XR_EXT_WIN32_APPCONTAINER_COMPATIBLE_EXTENSION_NAME "XR_EXT_win32_appcontainer_compatible"
2580
2581
2582#define XR_EPIC_view_configuration_fov 1
2583#define XR_EPIC_view_configuration_fov_SPEC_VERSION 2
2584#define XR_EPIC_VIEW_CONFIGURATION_FOV_EXTENSION_NAME "XR_EPIC_view_configuration_fov"
2585// XrViewConfigurationViewFovEPIC extends XrViewConfigurationView
2586typedef struct XrViewConfigurationViewFovEPIC {
2587 XrStructureType type;
2588 const void* XR_MAY_ALIAS next;
2589 XrFovf recommendedFov;
2590 XrFovf maxMutableFov;
2591} XrViewConfigurationViewFovEPIC;
2592
2593
2594
2595#define XR_MSFT_composition_layer_reprojection 1
2596#define XR_MSFT_composition_layer_reprojection_SPEC_VERSION 1
2597#define XR_MSFT_COMPOSITION_LAYER_REPROJECTION_EXTENSION_NAME "XR_MSFT_composition_layer_reprojection"
2598
2599typedef enum XrReprojectionModeMSFT {
2600 XR_REPROJECTION_MODE_DEPTH_MSFT = 1,
2601 XR_REPROJECTION_MODE_PLANAR_FROM_DEPTH_MSFT = 2,
2602 XR_REPROJECTION_MODE_PLANAR_MANUAL_MSFT = 3,
2603 XR_REPROJECTION_MODE_ORIENTATION_ONLY_MSFT = 4,
2604 XR_REPROJECTION_MODE_MAX_ENUM_MSFT = 0x7FFFFFFF
2605} XrReprojectionModeMSFT;
2606// XrCompositionLayerReprojectionInfoMSFT extends XrCompositionLayerProjection
2607typedef struct XrCompositionLayerReprojectionInfoMSFT {
2608 XrStructureType type;
2609 const void* XR_MAY_ALIAS next;
2610 XrReprojectionModeMSFT reprojectionMode;
2611} XrCompositionLayerReprojectionInfoMSFT;
2612
2613// XrCompositionLayerReprojectionPlaneOverrideMSFT extends XrCompositionLayerProjection
2614typedef struct XrCompositionLayerReprojectionPlaneOverrideMSFT {
2615 XrStructureType type;
2616 const void* XR_MAY_ALIAS next;
2617 XrVector3f position;
2618 XrVector3f normal;
2619 XrVector3f velocity;
2620} XrCompositionLayerReprojectionPlaneOverrideMSFT;
2621
2622typedef XrResult (XRAPI_PTR *PFN_xrEnumerateReprojectionModesMSFT)(XrInstance instance, XrSystemId systemId, XrViewConfigurationType viewConfigurationType, uint32_t modeCapacityInput, uint32_t* modeCountOutput, XrReprojectionModeMSFT* modes);
2623
2624#ifndef XR_NO_PROTOTYPES
2625#ifdef XR_EXTENSION_PROTOTYPES
2626XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateReprojectionModesMSFT(
2627 XrInstance instance,
2628 XrSystemId systemId,
2629 XrViewConfigurationType viewConfigurationType,
2630 uint32_t modeCapacityInput,
2631 uint32_t* modeCountOutput,
2632 XrReprojectionModeMSFT* modes);
2633#endif /* XR_EXTENSION_PROTOTYPES */
2634#endif /* !XR_NO_PROTOTYPES */
2635
2636
2637#define XR_HUAWEI_controller_interaction 1
2638#define XR_HUAWEI_controller_interaction_SPEC_VERSION 1
2639#define XR_HUAWEI_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HUAWEI_controller_interaction"
2640
2641
2642#define XR_FB_swapchain_update_state 1
2643#define XR_FB_swapchain_update_state_SPEC_VERSION 3
2644#define XR_FB_SWAPCHAIN_UPDATE_STATE_EXTENSION_NAME "XR_FB_swapchain_update_state"
2645typedef struct XR_MAY_ALIAS XrSwapchainStateBaseHeaderFB {
2646 XrStructureType type;
2647 void* XR_MAY_ALIAS next;
2648} XrSwapchainStateBaseHeaderFB;
2649
2650typedef XrResult (XRAPI_PTR *PFN_xrUpdateSwapchainFB)(XrSwapchain swapchain, const XrSwapchainStateBaseHeaderFB* state);
2651typedef XrResult (XRAPI_PTR *PFN_xrGetSwapchainStateFB)(XrSwapchain swapchain, XrSwapchainStateBaseHeaderFB* state);
2652
2653#ifndef XR_NO_PROTOTYPES
2654#ifdef XR_EXTENSION_PROTOTYPES
2655XRAPI_ATTR XrResult XRAPI_CALL xrUpdateSwapchainFB(
2656 XrSwapchain swapchain,
2657 const XrSwapchainStateBaseHeaderFB* state);
2658
2659XRAPI_ATTR XrResult XRAPI_CALL xrGetSwapchainStateFB(
2660 XrSwapchain swapchain,
2661 XrSwapchainStateBaseHeaderFB* state);
2662#endif /* XR_EXTENSION_PROTOTYPES */
2663#endif /* !XR_NO_PROTOTYPES */
2664
2665
2666#define XR_FB_composition_layer_secure_content 1
2667#define XR_FB_composition_layer_secure_content_SPEC_VERSION 1
2668#define XR_FB_COMPOSITION_LAYER_SECURE_CONTENT_EXTENSION_NAME "XR_FB_composition_layer_secure_content"
2669typedef XrFlags64 XrCompositionLayerSecureContentFlagsFB;
2670
2671// Flag bits for XrCompositionLayerSecureContentFlagsFB
2672static const XrCompositionLayerSecureContentFlagsFB XR_COMPOSITION_LAYER_SECURE_CONTENT_EXCLUDE_LAYER_BIT_FB = 0x00000001;
2673static const XrCompositionLayerSecureContentFlagsFB XR_COMPOSITION_LAYER_SECURE_CONTENT_REPLACE_LAYER_BIT_FB = 0x00000002;
2674
2675// XrCompositionLayerSecureContentFB extends XrCompositionLayerBaseHeader
2676typedef struct XrCompositionLayerSecureContentFB {
2677 XrStructureType type;
2678 const void* XR_MAY_ALIAS next;
2679 XrCompositionLayerSecureContentFlagsFB flags;
2680} XrCompositionLayerSecureContentFB;
2681
2682
2683
2684#define XR_FB_body_tracking 1
2685XR_DEFINE_HANDLE(XrBodyTrackerFB)
2686#define XR_FB_body_tracking_SPEC_VERSION 1
2687#define XR_FB_BODY_TRACKING_EXTENSION_NAME "XR_FB_body_tracking"
2688
2689typedef enum XrBodyJointFB {
2690 XR_BODY_JOINT_ROOT_FB = 0,
2691 XR_BODY_JOINT_HIPS_FB = 1,
2692 XR_BODY_JOINT_SPINE_LOWER_FB = 2,
2693 XR_BODY_JOINT_SPINE_MIDDLE_FB = 3,
2694 XR_BODY_JOINT_SPINE_UPPER_FB = 4,
2695 XR_BODY_JOINT_CHEST_FB = 5,
2696 XR_BODY_JOINT_NECK_FB = 6,
2697 XR_BODY_JOINT_HEAD_FB = 7,
2698 XR_BODY_JOINT_LEFT_SHOULDER_FB = 8,
2699 XR_BODY_JOINT_LEFT_SCAPULA_FB = 9,
2700 XR_BODY_JOINT_LEFT_ARM_UPPER_FB = 10,
2701 XR_BODY_JOINT_LEFT_ARM_LOWER_FB = 11,
2702 XR_BODY_JOINT_LEFT_HAND_WRIST_TWIST_FB = 12,
2703 XR_BODY_JOINT_RIGHT_SHOULDER_FB = 13,
2704 XR_BODY_JOINT_RIGHT_SCAPULA_FB = 14,
2705 XR_BODY_JOINT_RIGHT_ARM_UPPER_FB = 15,
2706 XR_BODY_JOINT_RIGHT_ARM_LOWER_FB = 16,
2707 XR_BODY_JOINT_RIGHT_HAND_WRIST_TWIST_FB = 17,
2708 XR_BODY_JOINT_LEFT_HAND_PALM_FB = 18,
2709 XR_BODY_JOINT_LEFT_HAND_WRIST_FB = 19,
2710 XR_BODY_JOINT_LEFT_HAND_THUMB_METACARPAL_FB = 20,
2711 XR_BODY_JOINT_LEFT_HAND_THUMB_PROXIMAL_FB = 21,
2712 XR_BODY_JOINT_LEFT_HAND_THUMB_DISTAL_FB = 22,
2713 XR_BODY_JOINT_LEFT_HAND_THUMB_TIP_FB = 23,
2714 XR_BODY_JOINT_LEFT_HAND_INDEX_METACARPAL_FB = 24,
2715 XR_BODY_JOINT_LEFT_HAND_INDEX_PROXIMAL_FB = 25,
2716 XR_BODY_JOINT_LEFT_HAND_INDEX_INTERMEDIATE_FB = 26,
2717 XR_BODY_JOINT_LEFT_HAND_INDEX_DISTAL_FB = 27,
2718 XR_BODY_JOINT_LEFT_HAND_INDEX_TIP_FB = 28,
2719 XR_BODY_JOINT_LEFT_HAND_MIDDLE_METACARPAL_FB = 29,
2720 XR_BODY_JOINT_LEFT_HAND_MIDDLE_PROXIMAL_FB = 30,
2721 XR_BODY_JOINT_LEFT_HAND_MIDDLE_INTERMEDIATE_FB = 31,
2722 XR_BODY_JOINT_LEFT_HAND_MIDDLE_DISTAL_FB = 32,
2723 XR_BODY_JOINT_LEFT_HAND_MIDDLE_TIP_FB = 33,
2724 XR_BODY_JOINT_LEFT_HAND_RING_METACARPAL_FB = 34,
2725 XR_BODY_JOINT_LEFT_HAND_RING_PROXIMAL_FB = 35,
2726 XR_BODY_JOINT_LEFT_HAND_RING_INTERMEDIATE_FB = 36,
2727 XR_BODY_JOINT_LEFT_HAND_RING_DISTAL_FB = 37,
2728 XR_BODY_JOINT_LEFT_HAND_RING_TIP_FB = 38,
2729 XR_BODY_JOINT_LEFT_HAND_LITTLE_METACARPAL_FB = 39,
2730 XR_BODY_JOINT_LEFT_HAND_LITTLE_PROXIMAL_FB = 40,
2731 XR_BODY_JOINT_LEFT_HAND_LITTLE_INTERMEDIATE_FB = 41,
2732 XR_BODY_JOINT_LEFT_HAND_LITTLE_DISTAL_FB = 42,
2733 XR_BODY_JOINT_LEFT_HAND_LITTLE_TIP_FB = 43,
2734 XR_BODY_JOINT_RIGHT_HAND_PALM_FB = 44,
2735 XR_BODY_JOINT_RIGHT_HAND_WRIST_FB = 45,
2736 XR_BODY_JOINT_RIGHT_HAND_THUMB_METACARPAL_FB = 46,
2737 XR_BODY_JOINT_RIGHT_HAND_THUMB_PROXIMAL_FB = 47,
2738 XR_BODY_JOINT_RIGHT_HAND_THUMB_DISTAL_FB = 48,
2739 XR_BODY_JOINT_RIGHT_HAND_THUMB_TIP_FB = 49,
2740 XR_BODY_JOINT_RIGHT_HAND_INDEX_METACARPAL_FB = 50,
2741 XR_BODY_JOINT_RIGHT_HAND_INDEX_PROXIMAL_FB = 51,
2742 XR_BODY_JOINT_RIGHT_HAND_INDEX_INTERMEDIATE_FB = 52,
2743 XR_BODY_JOINT_RIGHT_HAND_INDEX_DISTAL_FB = 53,
2744 XR_BODY_JOINT_RIGHT_HAND_INDEX_TIP_FB = 54,
2745 XR_BODY_JOINT_RIGHT_HAND_MIDDLE_METACARPAL_FB = 55,
2746 XR_BODY_JOINT_RIGHT_HAND_MIDDLE_PROXIMAL_FB = 56,
2747 XR_BODY_JOINT_RIGHT_HAND_MIDDLE_INTERMEDIATE_FB = 57,
2748 XR_BODY_JOINT_RIGHT_HAND_MIDDLE_DISTAL_FB = 58,
2749 XR_BODY_JOINT_RIGHT_HAND_MIDDLE_TIP_FB = 59,
2750 XR_BODY_JOINT_RIGHT_HAND_RING_METACARPAL_FB = 60,
2751 XR_BODY_JOINT_RIGHT_HAND_RING_PROXIMAL_FB = 61,
2752 XR_BODY_JOINT_RIGHT_HAND_RING_INTERMEDIATE_FB = 62,
2753 XR_BODY_JOINT_RIGHT_HAND_RING_DISTAL_FB = 63,
2754 XR_BODY_JOINT_RIGHT_HAND_RING_TIP_FB = 64,
2755 XR_BODY_JOINT_RIGHT_HAND_LITTLE_METACARPAL_FB = 65,
2756 XR_BODY_JOINT_RIGHT_HAND_LITTLE_PROXIMAL_FB = 66,
2757 XR_BODY_JOINT_RIGHT_HAND_LITTLE_INTERMEDIATE_FB = 67,
2758 XR_BODY_JOINT_RIGHT_HAND_LITTLE_DISTAL_FB = 68,
2759 XR_BODY_JOINT_RIGHT_HAND_LITTLE_TIP_FB = 69,
2760 XR_BODY_JOINT_COUNT_FB = 70,
2761 XR_BODY_JOINT_NONE_FB = -1,
2762 XR_BODY_JOINT_MAX_ENUM_FB = 0x7FFFFFFF
2763} XrBodyJointFB;
2764
2765typedef enum XrBodyJointSetFB {
2766 XR_BODY_JOINT_SET_DEFAULT_FB = 0,
2767 XR_BODY_JOINT_SET_MAX_ENUM_FB = 0x7FFFFFFF
2768} XrBodyJointSetFB;
2769typedef struct XrBodyJointLocationFB {
2770 XrSpaceLocationFlags locationFlags;
2771 XrPosef pose;
2772} XrBodyJointLocationFB;
2773
2774// XrSystemBodyTrackingPropertiesFB extends XrSystemProperties
2775typedef struct XrSystemBodyTrackingPropertiesFB {
2776 XrStructureType type;
2777 void* XR_MAY_ALIAS next;
2778 XrBool32 supportsBodyTracking;
2779} XrSystemBodyTrackingPropertiesFB;
2780
2781typedef struct XrBodyTrackerCreateInfoFB {
2782 XrStructureType type;
2783 const void* XR_MAY_ALIAS next;
2784 XrBodyJointSetFB bodyJointSet;
2785} XrBodyTrackerCreateInfoFB;
2786
2787typedef struct XrBodySkeletonJointFB {
2788 int32_t joint;
2789 int32_t parentJoint;
2790 XrPosef pose;
2791} XrBodySkeletonJointFB;
2792
2793typedef struct XrBodySkeletonFB {
2794 XrStructureType type;
2795 void* XR_MAY_ALIAS next;
2796 uint32_t jointCount;
2797 XrBodySkeletonJointFB* joints;
2798} XrBodySkeletonFB;
2799
2800typedef struct XrBodyJointsLocateInfoFB {
2801 XrStructureType type;
2802 const void* XR_MAY_ALIAS next;
2803 XrSpace baseSpace;
2804 XrTime time;
2805} XrBodyJointsLocateInfoFB;
2806
2807typedef struct XrBodyJointLocationsFB {
2808 XrStructureType type;
2809 void* XR_MAY_ALIAS next;
2810 XrBool32 isActive;
2811 float confidence;
2812 uint32_t jointCount;
2813 XrBodyJointLocationFB* jointLocations;
2814 uint32_t skeletonChangedCount;
2815 XrTime time;
2816} XrBodyJointLocationsFB;
2817
2818typedef XrResult (XRAPI_PTR *PFN_xrCreateBodyTrackerFB)(XrSession session, const XrBodyTrackerCreateInfoFB* createInfo, XrBodyTrackerFB* bodyTracker);
2819typedef XrResult (XRAPI_PTR *PFN_xrDestroyBodyTrackerFB)(XrBodyTrackerFB bodyTracker);
2820typedef XrResult (XRAPI_PTR *PFN_xrLocateBodyJointsFB)(XrBodyTrackerFB bodyTracker, const XrBodyJointsLocateInfoFB* locateInfo, XrBodyJointLocationsFB* locations);
2821typedef XrResult (XRAPI_PTR *PFN_xrGetBodySkeletonFB)(XrBodyTrackerFB bodyTracker, XrBodySkeletonFB* skeleton);
2822
2823#ifndef XR_NO_PROTOTYPES
2824#ifdef XR_EXTENSION_PROTOTYPES
2825XRAPI_ATTR XrResult XRAPI_CALL xrCreateBodyTrackerFB(
2826 XrSession session,
2827 const XrBodyTrackerCreateInfoFB* createInfo,
2828 XrBodyTrackerFB* bodyTracker);
2829
2830XRAPI_ATTR XrResult XRAPI_CALL xrDestroyBodyTrackerFB(
2831 XrBodyTrackerFB bodyTracker);
2832
2833XRAPI_ATTR XrResult XRAPI_CALL xrLocateBodyJointsFB(
2834 XrBodyTrackerFB bodyTracker,
2835 const XrBodyJointsLocateInfoFB* locateInfo,
2836 XrBodyJointLocationsFB* locations);
2837
2838XRAPI_ATTR XrResult XRAPI_CALL xrGetBodySkeletonFB(
2839 XrBodyTrackerFB bodyTracker,
2840 XrBodySkeletonFB* skeleton);
2841#endif /* XR_EXTENSION_PROTOTYPES */
2842#endif /* !XR_NO_PROTOTYPES */
2843
2844
2845#define XR_EXT_dpad_binding 1
2846#define XR_EXT_dpad_binding_SPEC_VERSION 1
2847#define XR_EXT_DPAD_BINDING_EXTENSION_NAME "XR_EXT_dpad_binding"
2848typedef struct XrInteractionProfileDpadBindingEXT {
2849 XrStructureType type;
2850 const void* XR_MAY_ALIAS next;
2851 XrPath binding;
2852 XrActionSet actionSet;
2853 float forceThreshold;
2854 float forceThresholdReleased;
2855 float centerRegion;
2856 float wedgeAngle;
2857 XrBool32 isSticky;
2858 const XrHapticBaseHeader* onHaptic;
2859 const XrHapticBaseHeader* offHaptic;
2860} XrInteractionProfileDpadBindingEXT;
2861
2862
2863
2864#define XR_VALVE_analog_threshold 1
2865#define XR_VALVE_analog_threshold_SPEC_VERSION 2
2866#define XR_VALVE_ANALOG_THRESHOLD_EXTENSION_NAME "XR_VALVE_analog_threshold"
2867typedef struct XrInteractionProfileAnalogThresholdVALVE {
2868 XrStructureType type;
2869 const void* XR_MAY_ALIAS next;
2870 XrAction action;
2871 XrPath binding;
2872 float onThreshold;
2873 float offThreshold;
2874 const XrHapticBaseHeader* onHaptic;
2875 const XrHapticBaseHeader* offHaptic;
2876} XrInteractionProfileAnalogThresholdVALVE;
2877
2878
2879
2880#define XR_EXT_hand_joints_motion_range 1
2881#define XR_EXT_hand_joints_motion_range_SPEC_VERSION 1
2882#define XR_EXT_HAND_JOINTS_MOTION_RANGE_EXTENSION_NAME "XR_EXT_hand_joints_motion_range"
2883
2884typedef enum XrHandJointsMotionRangeEXT {
2885 XR_HAND_JOINTS_MOTION_RANGE_UNOBSTRUCTED_EXT = 1,
2886 XR_HAND_JOINTS_MOTION_RANGE_CONFORMING_TO_CONTROLLER_EXT = 2,
2887 XR_HAND_JOINTS_MOTION_RANGE_MAX_ENUM_EXT = 0x7FFFFFFF
2888} XrHandJointsMotionRangeEXT;
2889// XrHandJointsMotionRangeInfoEXT extends XrHandJointsLocateInfoEXT
2890typedef struct XrHandJointsMotionRangeInfoEXT {
2891 XrStructureType type;
2892 const void* XR_MAY_ALIAS next;
2893 XrHandJointsMotionRangeEXT handJointsMotionRange;
2894} XrHandJointsMotionRangeInfoEXT;
2895
2896
2897
2898#define XR_EXT_samsung_odyssey_controller 1
2899#define XR_EXT_samsung_odyssey_controller_SPEC_VERSION 1
2900#define XR_EXT_SAMSUNG_ODYSSEY_CONTROLLER_EXTENSION_NAME "XR_EXT_samsung_odyssey_controller"
2901
2902
2903#define XR_EXT_hp_mixed_reality_controller 1
2904#define XR_EXT_hp_mixed_reality_controller_SPEC_VERSION 1
2905#define XR_EXT_HP_MIXED_REALITY_CONTROLLER_EXTENSION_NAME "XR_EXT_hp_mixed_reality_controller"
2906
2907
2908#define XR_MND_swapchain_usage_input_attachment_bit 1
2909#define XR_MND_swapchain_usage_input_attachment_bit_SPEC_VERSION 2
2910#define XR_MND_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT_EXTENSION_NAME "XR_MND_swapchain_usage_input_attachment_bit"
2911
2912
2913#define XR_MSFT_scene_understanding 1
2914
2915 XR_DEFINE_HANDLE(XrSceneObserverMSFT)
2916
2917
2918 XR_DEFINE_HANDLE(XrSceneMSFT)
2919
2920#define XR_MSFT_scene_understanding_SPEC_VERSION 2
2921#define XR_MSFT_SCENE_UNDERSTANDING_EXTENSION_NAME "XR_MSFT_scene_understanding"
2922
2923typedef enum XrSceneComputeFeatureMSFT {
2924 XR_SCENE_COMPUTE_FEATURE_PLANE_MSFT = 1,
2925 XR_SCENE_COMPUTE_FEATURE_PLANE_MESH_MSFT = 2,
2926 XR_SCENE_COMPUTE_FEATURE_VISUAL_MESH_MSFT = 3,
2927 XR_SCENE_COMPUTE_FEATURE_COLLIDER_MESH_MSFT = 4,
2928 XR_SCENE_COMPUTE_FEATURE_SERIALIZE_SCENE_MSFT = 1000098000,
2929 XR_SCENE_COMPUTE_FEATURE_MARKER_MSFT = 1000147000,
2930 XR_SCENE_COMPUTE_FEATURE_MAX_ENUM_MSFT = 0x7FFFFFFF
2931} XrSceneComputeFeatureMSFT;
2932
2933typedef enum XrSceneComputeConsistencyMSFT {
2934 XR_SCENE_COMPUTE_CONSISTENCY_SNAPSHOT_COMPLETE_MSFT = 1,
2935 XR_SCENE_COMPUTE_CONSISTENCY_SNAPSHOT_INCOMPLETE_FAST_MSFT = 2,
2936 XR_SCENE_COMPUTE_CONSISTENCY_OCCLUSION_OPTIMIZED_MSFT = 3,
2937 XR_SCENE_COMPUTE_CONSISTENCY_MAX_ENUM_MSFT = 0x7FFFFFFF
2938} XrSceneComputeConsistencyMSFT;
2939
2940typedef enum XrMeshComputeLodMSFT {
2941 XR_MESH_COMPUTE_LOD_COARSE_MSFT = 1,
2942 XR_MESH_COMPUTE_LOD_MEDIUM_MSFT = 2,
2943 XR_MESH_COMPUTE_LOD_FINE_MSFT = 3,
2944 XR_MESH_COMPUTE_LOD_UNLIMITED_MSFT = 4,
2945 XR_MESH_COMPUTE_LOD_MAX_ENUM_MSFT = 0x7FFFFFFF
2946} XrMeshComputeLodMSFT;
2947
2948typedef enum XrSceneComponentTypeMSFT {
2949 XR_SCENE_COMPONENT_TYPE_INVALID_MSFT = -1,
2950 XR_SCENE_COMPONENT_TYPE_OBJECT_MSFT = 1,
2951 XR_SCENE_COMPONENT_TYPE_PLANE_MSFT = 2,
2952 XR_SCENE_COMPONENT_TYPE_VISUAL_MESH_MSFT = 3,
2953 XR_SCENE_COMPONENT_TYPE_COLLIDER_MESH_MSFT = 4,
2954 XR_SCENE_COMPONENT_TYPE_SERIALIZED_SCENE_FRAGMENT_MSFT = 1000098000,
2955 XR_SCENE_COMPONENT_TYPE_MARKER_MSFT = 1000147000,
2956 XR_SCENE_COMPONENT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2957} XrSceneComponentTypeMSFT;
2958
2959typedef enum XrSceneObjectTypeMSFT {
2960 XR_SCENE_OBJECT_TYPE_UNCATEGORIZED_MSFT = -1,
2961 XR_SCENE_OBJECT_TYPE_BACKGROUND_MSFT = 1,
2962 XR_SCENE_OBJECT_TYPE_WALL_MSFT = 2,
2963 XR_SCENE_OBJECT_TYPE_FLOOR_MSFT = 3,
2964 XR_SCENE_OBJECT_TYPE_CEILING_MSFT = 4,
2965 XR_SCENE_OBJECT_TYPE_PLATFORM_MSFT = 5,
2966 XR_SCENE_OBJECT_TYPE_INFERRED_MSFT = 6,
2967 XR_SCENE_OBJECT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2968} XrSceneObjectTypeMSFT;
2969
2970typedef enum XrScenePlaneAlignmentTypeMSFT {
2971 XR_SCENE_PLANE_ALIGNMENT_TYPE_NON_ORTHOGONAL_MSFT = 0,
2972 XR_SCENE_PLANE_ALIGNMENT_TYPE_HORIZONTAL_MSFT = 1,
2973 XR_SCENE_PLANE_ALIGNMENT_TYPE_VERTICAL_MSFT = 2,
2974 XR_SCENE_PLANE_ALIGNMENT_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
2975} XrScenePlaneAlignmentTypeMSFT;
2976
2977typedef enum XrSceneComputeStateMSFT {
2978 XR_SCENE_COMPUTE_STATE_NONE_MSFT = 0,
2979 XR_SCENE_COMPUTE_STATE_UPDATING_MSFT = 1,
2980 XR_SCENE_COMPUTE_STATE_COMPLETED_MSFT = 2,
2981 XR_SCENE_COMPUTE_STATE_COMPLETED_WITH_ERROR_MSFT = 3,
2982 XR_SCENE_COMPUTE_STATE_MAX_ENUM_MSFT = 0x7FFFFFFF
2983} XrSceneComputeStateMSFT;
2984typedef struct XrUuidMSFT {
2985 uint8_t bytes[16];
2986} XrUuidMSFT;
2987
2988typedef struct XrSceneObserverCreateInfoMSFT {
2989 XrStructureType type;
2990 const void* XR_MAY_ALIAS next;
2991} XrSceneObserverCreateInfoMSFT;
2992
2993typedef struct XrSceneCreateInfoMSFT {
2994 XrStructureType type;
2995 const void* XR_MAY_ALIAS next;
2996} XrSceneCreateInfoMSFT;
2997
2998typedef struct XrSceneSphereBoundMSFT {
2999 XrVector3f center;
3000 float radius;
3001} XrSceneSphereBoundMSFT;
3002
3003typedef struct XrSceneOrientedBoxBoundMSFT {
3004 XrPosef pose;
3005 XrVector3f extents;
3006} XrSceneOrientedBoxBoundMSFT;
3007
3008typedef struct XrSceneFrustumBoundMSFT {
3009 XrPosef pose;
3010 XrFovf fov;
3011 float farDistance;
3012} XrSceneFrustumBoundMSFT;
3013
3014typedef struct XrSceneBoundsMSFT {
3015 XrSpace space;
3016 XrTime time;
3017 uint32_t sphereCount;
3018 const XrSceneSphereBoundMSFT* spheres;
3019 uint32_t boxCount;
3020 const XrSceneOrientedBoxBoundMSFT* boxes;
3021 uint32_t frustumCount;
3022 const XrSceneFrustumBoundMSFT* frustums;
3023} XrSceneBoundsMSFT;
3024
3025typedef struct XrNewSceneComputeInfoMSFT {
3026 XrStructureType type;
3027 const void* XR_MAY_ALIAS next;
3028 uint32_t requestedFeatureCount;
3029 const XrSceneComputeFeatureMSFT* requestedFeatures;
3030 XrSceneComputeConsistencyMSFT consistency;
3031 XrSceneBoundsMSFT bounds;
3032} XrNewSceneComputeInfoMSFT;
3033
3034// XrVisualMeshComputeLodInfoMSFT extends XrNewSceneComputeInfoMSFT
3035typedef struct XrVisualMeshComputeLodInfoMSFT {
3036 XrStructureType type;
3037 const void* XR_MAY_ALIAS next;
3038 XrMeshComputeLodMSFT lod;
3039} XrVisualMeshComputeLodInfoMSFT;
3040
3041typedef struct XrSceneComponentMSFT {
3042 XrSceneComponentTypeMSFT componentType;
3043 XrUuidMSFT id;
3044 XrUuidMSFT parentId;
3045 XrTime updateTime;
3046} XrSceneComponentMSFT;
3047
3048typedef struct XrSceneComponentsMSFT {
3049 XrStructureType type;
3050 void* XR_MAY_ALIAS next;
3051 uint32_t componentCapacityInput;
3052 uint32_t componentCountOutput;
3053 XrSceneComponentMSFT* components;
3054} XrSceneComponentsMSFT;
3055
3056typedef struct XrSceneComponentsGetInfoMSFT {
3057 XrStructureType type;
3058 const void* XR_MAY_ALIAS next;
3059 XrSceneComponentTypeMSFT componentType;
3060} XrSceneComponentsGetInfoMSFT;
3061
3062typedef struct XrSceneComponentLocationMSFT {
3063 XrSpaceLocationFlags flags;
3064 XrPosef pose;
3065} XrSceneComponentLocationMSFT;
3066
3067typedef struct XrSceneComponentLocationsMSFT {
3068 XrStructureType type;
3069 void* XR_MAY_ALIAS next;
3070 uint32_t locationCount;
3071 XrSceneComponentLocationMSFT* locations;
3072} XrSceneComponentLocationsMSFT;
3073
3074typedef struct XrSceneComponentsLocateInfoMSFT {
3075 XrStructureType type;
3076 const void* XR_MAY_ALIAS next;
3077 XrSpace baseSpace;
3078 XrTime time;
3079 uint32_t componentIdCount;
3080 const XrUuidMSFT* componentIds;
3081} XrSceneComponentsLocateInfoMSFT;
3082
3083typedef struct XrSceneObjectMSFT {
3084 XrSceneObjectTypeMSFT objectType;
3085} XrSceneObjectMSFT;
3086
3087// XrSceneObjectsMSFT extends XrSceneComponentsMSFT
3088typedef struct XrSceneObjectsMSFT {
3089 XrStructureType type;
3090 void* XR_MAY_ALIAS next;
3091 uint32_t sceneObjectCount;
3092 XrSceneObjectMSFT* sceneObjects;
3093} XrSceneObjectsMSFT;
3094
3095// XrSceneComponentParentFilterInfoMSFT extends XrSceneComponentsGetInfoMSFT
3096typedef struct XrSceneComponentParentFilterInfoMSFT {
3097 XrStructureType type;
3098 const void* XR_MAY_ALIAS next;
3099 XrUuidMSFT parentId;
3100} XrSceneComponentParentFilterInfoMSFT;
3101
3102// XrSceneObjectTypesFilterInfoMSFT extends XrSceneComponentsGetInfoMSFT
3103typedef struct XrSceneObjectTypesFilterInfoMSFT {
3104 XrStructureType type;
3105 const void* XR_MAY_ALIAS next;
3106 uint32_t objectTypeCount;
3107 const XrSceneObjectTypeMSFT* objectTypes;
3108} XrSceneObjectTypesFilterInfoMSFT;
3109
3110typedef struct XrScenePlaneMSFT {
3111 XrScenePlaneAlignmentTypeMSFT alignment;
3112 XrExtent2Df size;
3113 uint64_t meshBufferId;
3114 XrBool32 supportsIndicesUint16;
3115} XrScenePlaneMSFT;
3116
3117// XrScenePlanesMSFT extends XrSceneComponentsMSFT
3118typedef struct XrScenePlanesMSFT {
3119 XrStructureType type;
3120 void* XR_MAY_ALIAS next;
3121 uint32_t scenePlaneCount;
3122 XrScenePlaneMSFT* scenePlanes;
3123} XrScenePlanesMSFT;
3124
3125// XrScenePlaneAlignmentFilterInfoMSFT extends XrSceneComponentsGetInfoMSFT
3126typedef struct XrScenePlaneAlignmentFilterInfoMSFT {
3127 XrStructureType type;
3128 const void* XR_MAY_ALIAS next;
3129 uint32_t alignmentCount;
3130 const XrScenePlaneAlignmentTypeMSFT* alignments;
3131} XrScenePlaneAlignmentFilterInfoMSFT;
3132
3133typedef struct XrSceneMeshMSFT {
3134 uint64_t meshBufferId;
3135 XrBool32 supportsIndicesUint16;
3136} XrSceneMeshMSFT;
3137
3138// XrSceneMeshesMSFT extends XrSceneComponentsMSFT
3139typedef struct XrSceneMeshesMSFT {
3140 XrStructureType type;
3141 void* XR_MAY_ALIAS next;
3142 uint32_t sceneMeshCount;
3143 XrSceneMeshMSFT* sceneMeshes;
3144} XrSceneMeshesMSFT;
3145
3146typedef struct XrSceneMeshBuffersGetInfoMSFT {
3147 XrStructureType type;
3148 const void* XR_MAY_ALIAS next;
3149 uint64_t meshBufferId;
3150} XrSceneMeshBuffersGetInfoMSFT;
3151
3152typedef struct XrSceneMeshBuffersMSFT {
3153 XrStructureType type;
3154 void* XR_MAY_ALIAS next;
3155} XrSceneMeshBuffersMSFT;
3156
3157typedef struct XrSceneMeshVertexBufferMSFT {
3158 XrStructureType type;
3159 void* XR_MAY_ALIAS next;
3160 uint32_t vertexCapacityInput;
3161 uint32_t vertexCountOutput;
3162 XrVector3f* vertices;
3163} XrSceneMeshVertexBufferMSFT;
3164
3165typedef struct XrSceneMeshIndicesUint32MSFT {
3166 XrStructureType type;
3167 void* XR_MAY_ALIAS next;
3168 uint32_t indexCapacityInput;
3169 uint32_t indexCountOutput;
3170 uint32_t* indices;
3171} XrSceneMeshIndicesUint32MSFT;
3172
3173typedef struct XrSceneMeshIndicesUint16MSFT {
3174 XrStructureType type;
3175 void* XR_MAY_ALIAS next;
3176 uint32_t indexCapacityInput;
3177 uint32_t indexCountOutput;
3178 uint16_t* indices;
3179} XrSceneMeshIndicesUint16MSFT;
3180
3181typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSceneComputeFeaturesMSFT)(XrInstance instance, XrSystemId systemId, uint32_t featureCapacityInput, uint32_t* featureCountOutput, XrSceneComputeFeatureMSFT* features);
3182typedef XrResult (XRAPI_PTR *PFN_xrCreateSceneObserverMSFT)(XrSession session, const XrSceneObserverCreateInfoMSFT* createInfo, XrSceneObserverMSFT* sceneObserver);
3183typedef XrResult (XRAPI_PTR *PFN_xrDestroySceneObserverMSFT)(XrSceneObserverMSFT sceneObserver);
3184typedef XrResult (XRAPI_PTR *PFN_xrCreateSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrSceneCreateInfoMSFT* createInfo, XrSceneMSFT* scene);
3185typedef XrResult (XRAPI_PTR *PFN_xrDestroySceneMSFT)(XrSceneMSFT scene);
3186typedef XrResult (XRAPI_PTR *PFN_xrComputeNewSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrNewSceneComputeInfoMSFT* computeInfo);
3187typedef XrResult (XRAPI_PTR *PFN_xrGetSceneComputeStateMSFT)(XrSceneObserverMSFT sceneObserver, XrSceneComputeStateMSFT* state);
3188typedef XrResult (XRAPI_PTR *PFN_xrGetSceneComponentsMSFT)(XrSceneMSFT scene, const XrSceneComponentsGetInfoMSFT* getInfo, XrSceneComponentsMSFT* components);
3189typedef XrResult (XRAPI_PTR *PFN_xrLocateSceneComponentsMSFT)(XrSceneMSFT scene, const XrSceneComponentsLocateInfoMSFT* locateInfo, XrSceneComponentLocationsMSFT* locations);
3190typedef XrResult (XRAPI_PTR *PFN_xrGetSceneMeshBuffersMSFT)(XrSceneMSFT scene, const XrSceneMeshBuffersGetInfoMSFT* getInfo, XrSceneMeshBuffersMSFT* buffers);
3191
3192#ifndef XR_NO_PROTOTYPES
3193#ifdef XR_EXTENSION_PROTOTYPES
3194XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSceneComputeFeaturesMSFT(
3195 XrInstance instance,
3196 XrSystemId systemId,
3197 uint32_t featureCapacityInput,
3198 uint32_t* featureCountOutput,
3199 XrSceneComputeFeatureMSFT* features);
3200
3201XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneObserverMSFT(
3202 XrSession session,
3203 const XrSceneObserverCreateInfoMSFT* createInfo,
3204 XrSceneObserverMSFT* sceneObserver);
3205
3206XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneObserverMSFT(
3207 XrSceneObserverMSFT sceneObserver);
3208
3209XRAPI_ATTR XrResult XRAPI_CALL xrCreateSceneMSFT(
3210 XrSceneObserverMSFT sceneObserver,
3211 const XrSceneCreateInfoMSFT* createInfo,
3212 XrSceneMSFT* scene);
3213
3214XRAPI_ATTR XrResult XRAPI_CALL xrDestroySceneMSFT(
3215 XrSceneMSFT scene);
3216
3217XRAPI_ATTR XrResult XRAPI_CALL xrComputeNewSceneMSFT(
3218 XrSceneObserverMSFT sceneObserver,
3219 const XrNewSceneComputeInfoMSFT* computeInfo);
3220
3221XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneComputeStateMSFT(
3222 XrSceneObserverMSFT sceneObserver,
3223 XrSceneComputeStateMSFT* state);
3224
3225XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneComponentsMSFT(
3226 XrSceneMSFT scene,
3227 const XrSceneComponentsGetInfoMSFT* getInfo,
3228 XrSceneComponentsMSFT* components);
3229
3230XRAPI_ATTR XrResult XRAPI_CALL xrLocateSceneComponentsMSFT(
3231 XrSceneMSFT scene,
3232 const XrSceneComponentsLocateInfoMSFT* locateInfo,
3233 XrSceneComponentLocationsMSFT* locations);
3234
3235XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMeshBuffersMSFT(
3236 XrSceneMSFT scene,
3237 const XrSceneMeshBuffersGetInfoMSFT* getInfo,
3238 XrSceneMeshBuffersMSFT* buffers);
3239#endif /* XR_EXTENSION_PROTOTYPES */
3240#endif /* !XR_NO_PROTOTYPES */
3241
3242
3243#define XR_MSFT_scene_understanding_serialization 1
3244#define XR_MSFT_scene_understanding_serialization_SPEC_VERSION 2
3245#define XR_MSFT_SCENE_UNDERSTANDING_SERIALIZATION_EXTENSION_NAME "XR_MSFT_scene_understanding_serialization"
3246typedef struct XrSerializedSceneFragmentDataGetInfoMSFT {
3247 XrStructureType type;
3248 const void* XR_MAY_ALIAS next;
3249 XrUuidMSFT sceneFragmentId;
3250} XrSerializedSceneFragmentDataGetInfoMSFT;
3251
3252typedef struct XrDeserializeSceneFragmentMSFT {
3253 uint32_t bufferSize;
3254 const uint8_t* buffer;
3255} XrDeserializeSceneFragmentMSFT;
3256
3257typedef struct XrSceneDeserializeInfoMSFT {
3258 XrStructureType type;
3259 const void* XR_MAY_ALIAS next;
3260 uint32_t fragmentCount;
3261 const XrDeserializeSceneFragmentMSFT* fragments;
3262} XrSceneDeserializeInfoMSFT;
3263
3264typedef XrResult (XRAPI_PTR *PFN_xrDeserializeSceneMSFT)(XrSceneObserverMSFT sceneObserver, const XrSceneDeserializeInfoMSFT* deserializeInfo);
3265typedef XrResult (XRAPI_PTR *PFN_xrGetSerializedSceneFragmentDataMSFT)(XrSceneMSFT scene, const XrSerializedSceneFragmentDataGetInfoMSFT* getInfo, uint32_t countInput, uint32_t* readOutput, uint8_t* buffer);
3266
3267#ifndef XR_NO_PROTOTYPES
3268#ifdef XR_EXTENSION_PROTOTYPES
3269XRAPI_ATTR XrResult XRAPI_CALL xrDeserializeSceneMSFT(
3270 XrSceneObserverMSFT sceneObserver,
3271 const XrSceneDeserializeInfoMSFT* deserializeInfo);
3272
3273XRAPI_ATTR XrResult XRAPI_CALL xrGetSerializedSceneFragmentDataMSFT(
3274 XrSceneMSFT scene,
3275 const XrSerializedSceneFragmentDataGetInfoMSFT* getInfo,
3276 uint32_t countInput,
3277 uint32_t* readOutput,
3278 uint8_t* buffer);
3279#endif /* XR_EXTENSION_PROTOTYPES */
3280#endif /* !XR_NO_PROTOTYPES */
3281
3282
3283#define XR_FB_display_refresh_rate 1
3284#define XR_FB_display_refresh_rate_SPEC_VERSION 1
3285#define XR_FB_DISPLAY_REFRESH_RATE_EXTENSION_NAME "XR_FB_display_refresh_rate"
3286typedef struct XrEventDataDisplayRefreshRateChangedFB {
3287 XrStructureType type;
3288 const void* XR_MAY_ALIAS next;
3289 float fromDisplayRefreshRate;
3290 float toDisplayRefreshRate;
3291} XrEventDataDisplayRefreshRateChangedFB;
3292
3293typedef XrResult (XRAPI_PTR *PFN_xrEnumerateDisplayRefreshRatesFB)(XrSession session, uint32_t displayRefreshRateCapacityInput, uint32_t* displayRefreshRateCountOutput, float* displayRefreshRates);
3294typedef XrResult (XRAPI_PTR *PFN_xrGetDisplayRefreshRateFB)(XrSession session, float* displayRefreshRate);
3295typedef XrResult (XRAPI_PTR *PFN_xrRequestDisplayRefreshRateFB)(XrSession session, float displayRefreshRate);
3296
3297#ifndef XR_NO_PROTOTYPES
3298#ifdef XR_EXTENSION_PROTOTYPES
3299XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateDisplayRefreshRatesFB(
3300 XrSession session,
3301 uint32_t displayRefreshRateCapacityInput,
3302 uint32_t* displayRefreshRateCountOutput,
3303 float* displayRefreshRates);
3304
3305XRAPI_ATTR XrResult XRAPI_CALL xrGetDisplayRefreshRateFB(
3306 XrSession session,
3307 float* displayRefreshRate);
3308
3309XRAPI_ATTR XrResult XRAPI_CALL xrRequestDisplayRefreshRateFB(
3310 XrSession session,
3311 float displayRefreshRate);
3312#endif /* XR_EXTENSION_PROTOTYPES */
3313#endif /* !XR_NO_PROTOTYPES */
3314
3315
3316#define XR_HTC_vive_cosmos_controller_interaction 1
3317#define XR_HTC_vive_cosmos_controller_interaction_SPEC_VERSION 1
3318#define XR_HTC_VIVE_COSMOS_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_cosmos_controller_interaction"
3319
3320
3321#define XR_HTCX_vive_tracker_interaction 1
3322#define XR_HTCX_vive_tracker_interaction_SPEC_VERSION 3
3323#define XR_HTCX_VIVE_TRACKER_INTERACTION_EXTENSION_NAME "XR_HTCX_vive_tracker_interaction"
3324typedef struct XrViveTrackerPathsHTCX {
3325 XrStructureType type;
3326 void* XR_MAY_ALIAS next;
3327 XrPath persistentPath;
3328 XrPath rolePath;
3329} XrViveTrackerPathsHTCX;
3330
3331typedef struct XrEventDataViveTrackerConnectedHTCX {
3332 XrStructureType type;
3333 const void* XR_MAY_ALIAS next;
3334 XrViveTrackerPathsHTCX* paths;
3335} XrEventDataViveTrackerConnectedHTCX;
3336
3337typedef XrResult (XRAPI_PTR *PFN_xrEnumerateViveTrackerPathsHTCX)(XrInstance instance, uint32_t pathCapacityInput, uint32_t* pathCountOutput, XrViveTrackerPathsHTCX* paths);
3338
3339#ifndef XR_NO_PROTOTYPES
3340#ifdef XR_EXTENSION_PROTOTYPES
3341XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateViveTrackerPathsHTCX(
3342 XrInstance instance,
3343 uint32_t pathCapacityInput,
3344 uint32_t* pathCountOutput,
3345 XrViveTrackerPathsHTCX* paths);
3346#endif /* XR_EXTENSION_PROTOTYPES */
3347#endif /* !XR_NO_PROTOTYPES */
3348
3349
3350#define XR_HTC_facial_tracking 1
3351
3352#define XR_FACIAL_EXPRESSION_EYE_COUNT_HTC 14
3353
3354
3355#define XR_FACIAL_EXPRESSION_LIP_COUNT_HTC 37
3356
3357XR_DEFINE_HANDLE(XrFacialTrackerHTC)
3358#define XR_HTC_facial_tracking_SPEC_VERSION 2
3359#define XR_HTC_FACIAL_TRACKING_EXTENSION_NAME "XR_HTC_facial_tracking"
3360
3361typedef enum XrEyeExpressionHTC {
3362 XR_EYE_EXPRESSION_LEFT_BLINK_HTC = 0,
3363 XR_EYE_EXPRESSION_LEFT_WIDE_HTC = 1,
3364 XR_EYE_EXPRESSION_RIGHT_BLINK_HTC = 2,
3365 XR_EYE_EXPRESSION_RIGHT_WIDE_HTC = 3,
3366 XR_EYE_EXPRESSION_LEFT_SQUEEZE_HTC = 4,
3367 XR_EYE_EXPRESSION_RIGHT_SQUEEZE_HTC = 5,
3368 XR_EYE_EXPRESSION_LEFT_DOWN_HTC = 6,
3369 XR_EYE_EXPRESSION_RIGHT_DOWN_HTC = 7,
3370 XR_EYE_EXPRESSION_LEFT_OUT_HTC = 8,
3371 XR_EYE_EXPRESSION_RIGHT_IN_HTC = 9,
3372 XR_EYE_EXPRESSION_LEFT_IN_HTC = 10,
3373 XR_EYE_EXPRESSION_RIGHT_OUT_HTC = 11,
3374 XR_EYE_EXPRESSION_LEFT_UP_HTC = 12,
3375 XR_EYE_EXPRESSION_RIGHT_UP_HTC = 13,
3376 XR_EYE_EXPRESSION_MAX_ENUM_HTC = 0x7FFFFFFF
3377} XrEyeExpressionHTC;
3378
3379typedef enum XrLipExpressionHTC {
3380 XR_LIP_EXPRESSION_JAW_RIGHT_HTC = 0,
3381 XR_LIP_EXPRESSION_JAW_LEFT_HTC = 1,
3382 XR_LIP_EXPRESSION_JAW_FORWARD_HTC = 2,
3383 XR_LIP_EXPRESSION_JAW_OPEN_HTC = 3,
3384 XR_LIP_EXPRESSION_MOUTH_APE_SHAPE_HTC = 4,
3385 XR_LIP_EXPRESSION_MOUTH_UPPER_RIGHT_HTC = 5,
3386 XR_LIP_EXPRESSION_MOUTH_UPPER_LEFT_HTC = 6,
3387 XR_LIP_EXPRESSION_MOUTH_LOWER_RIGHT_HTC = 7,
3388 XR_LIP_EXPRESSION_MOUTH_LOWER_LEFT_HTC = 8,
3389 XR_LIP_EXPRESSION_MOUTH_UPPER_OVERTURN_HTC = 9,
3390 XR_LIP_EXPRESSION_MOUTH_LOWER_OVERTURN_HTC = 10,
3391 XR_LIP_EXPRESSION_MOUTH_POUT_HTC = 11,
3392 XR_LIP_EXPRESSION_MOUTH_SMILE_RIGHT_HTC = 12,
3393 XR_LIP_EXPRESSION_MOUTH_SMILE_LEFT_HTC = 13,
3394 XR_LIP_EXPRESSION_MOUTH_SAD_RIGHT_HTC = 14,
3395 XR_LIP_EXPRESSION_MOUTH_SAD_LEFT_HTC = 15,
3396 XR_LIP_EXPRESSION_CHEEK_PUFF_RIGHT_HTC = 16,
3397 XR_LIP_EXPRESSION_CHEEK_PUFF_LEFT_HTC = 17,
3398 XR_LIP_EXPRESSION_CHEEK_SUCK_HTC = 18,
3399 XR_LIP_EXPRESSION_MOUTH_UPPER_UPRIGHT_HTC = 19,
3400 XR_LIP_EXPRESSION_MOUTH_UPPER_UPLEFT_HTC = 20,
3401 XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNRIGHT_HTC = 21,
3402 XR_LIP_EXPRESSION_MOUTH_LOWER_DOWNLEFT_HTC = 22,
3403 XR_LIP_EXPRESSION_MOUTH_UPPER_INSIDE_HTC = 23,
3404 XR_LIP_EXPRESSION_MOUTH_LOWER_INSIDE_HTC = 24,
3405 XR_LIP_EXPRESSION_MOUTH_LOWER_OVERLAY_HTC = 25,
3406 XR_LIP_EXPRESSION_TONGUE_LONGSTEP1_HTC = 26,
3407 XR_LIP_EXPRESSION_TONGUE_LEFT_HTC = 27,
3408 XR_LIP_EXPRESSION_TONGUE_RIGHT_HTC = 28,
3409 XR_LIP_EXPRESSION_TONGUE_UP_HTC = 29,
3410 XR_LIP_EXPRESSION_TONGUE_DOWN_HTC = 30,
3411 XR_LIP_EXPRESSION_TONGUE_ROLL_HTC = 31,
3412 XR_LIP_EXPRESSION_TONGUE_LONGSTEP2_HTC = 32,
3413 XR_LIP_EXPRESSION_TONGUE_UPRIGHT_MORPH_HTC = 33,
3414 XR_LIP_EXPRESSION_TONGUE_UPLEFT_MORPH_HTC = 34,
3415 XR_LIP_EXPRESSION_TONGUE_DOWNRIGHT_MORPH_HTC = 35,
3416 XR_LIP_EXPRESSION_TONGUE_DOWNLEFT_MORPH_HTC = 36,
3417 XR_LIP_EXPRESSION_MAX_ENUM_HTC = 0x7FFFFFFF
3418} XrLipExpressionHTC;
3419
3420typedef enum XrFacialTrackingTypeHTC {
3421 XR_FACIAL_TRACKING_TYPE_EYE_DEFAULT_HTC = 1,
3422 XR_FACIAL_TRACKING_TYPE_LIP_DEFAULT_HTC = 2,
3423 XR_FACIAL_TRACKING_TYPE_MAX_ENUM_HTC = 0x7FFFFFFF
3424} XrFacialTrackingTypeHTC;
3425// XrSystemFacialTrackingPropertiesHTC extends XrSystemProperties
3426typedef struct XrSystemFacialTrackingPropertiesHTC {
3427 XrStructureType type;
3428 void* XR_MAY_ALIAS next;
3429 XrBool32 supportEyeFacialTracking;
3430 XrBool32 supportLipFacialTracking;
3431} XrSystemFacialTrackingPropertiesHTC;
3432
3433typedef struct XrFacialExpressionsHTC {
3434 XrStructureType type;
3435 const void* XR_MAY_ALIAS next;
3436 XrBool32 isActive;
3437 XrTime sampleTime;
3438 uint32_t expressionCount;
3439 float* expressionWeightings;
3440} XrFacialExpressionsHTC;
3441
3442typedef struct XrFacialTrackerCreateInfoHTC {
3443 XrStructureType type;
3444 const void* XR_MAY_ALIAS next;
3445 XrFacialTrackingTypeHTC facialTrackingType;
3446} XrFacialTrackerCreateInfoHTC;
3447
3448typedef XrResult (XRAPI_PTR *PFN_xrCreateFacialTrackerHTC)(XrSession session, const XrFacialTrackerCreateInfoHTC* createInfo, XrFacialTrackerHTC* facialTracker);
3449typedef XrResult (XRAPI_PTR *PFN_xrDestroyFacialTrackerHTC)(XrFacialTrackerHTC facialTracker);
3450typedef XrResult (XRAPI_PTR *PFN_xrGetFacialExpressionsHTC)(XrFacialTrackerHTC facialTracker, XrFacialExpressionsHTC* facialExpressions);
3451
3452#ifndef XR_NO_PROTOTYPES
3453#ifdef XR_EXTENSION_PROTOTYPES
3454XRAPI_ATTR XrResult XRAPI_CALL xrCreateFacialTrackerHTC(
3455 XrSession session,
3456 const XrFacialTrackerCreateInfoHTC* createInfo,
3457 XrFacialTrackerHTC* facialTracker);
3458
3459XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFacialTrackerHTC(
3460 XrFacialTrackerHTC facialTracker);
3461
3462XRAPI_ATTR XrResult XRAPI_CALL xrGetFacialExpressionsHTC(
3463 XrFacialTrackerHTC facialTracker,
3464 XrFacialExpressionsHTC* facialExpressions);
3465#endif /* XR_EXTENSION_PROTOTYPES */
3466#endif /* !XR_NO_PROTOTYPES */
3467
3468
3469#define XR_HTC_vive_focus3_controller_interaction 1
3470#define XR_HTC_vive_focus3_controller_interaction_SPEC_VERSION 2
3471#define XR_HTC_VIVE_FOCUS3_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_focus3_controller_interaction"
3472
3473
3474#define XR_HTC_hand_interaction 1
3475#define XR_HTC_hand_interaction_SPEC_VERSION 1
3476#define XR_HTC_HAND_INTERACTION_EXTENSION_NAME "XR_HTC_hand_interaction"
3477
3478
3479#define XR_HTC_vive_wrist_tracker_interaction 1
3480#define XR_HTC_vive_wrist_tracker_interaction_SPEC_VERSION 1
3481#define XR_HTC_VIVE_WRIST_TRACKER_INTERACTION_EXTENSION_NAME "XR_HTC_vive_wrist_tracker_interaction"
3482
3483
3484#define XR_FB_color_space 1
3485#define XR_FB_color_space_SPEC_VERSION 3
3486#define XR_FB_COLOR_SPACE_EXTENSION_NAME "XR_FB_color_space"
3487
3488typedef enum XrColorSpaceFB {
3489 XR_COLOR_SPACE_UNMANAGED_FB = 0,
3490 XR_COLOR_SPACE_REC2020_FB = 1,
3491 XR_COLOR_SPACE_REC709_FB = 2,
3492 XR_COLOR_SPACE_RIFT_CV1_FB = 3,
3493 XR_COLOR_SPACE_RIFT_S_FB = 4,
3494 XR_COLOR_SPACE_QUEST_FB = 5,
3495 XR_COLOR_SPACE_P3_FB = 6,
3496 XR_COLOR_SPACE_ADOBE_RGB_FB = 7,
3497 XR_COLOR_SPACE_MAX_ENUM_FB = 0x7FFFFFFF
3498} XrColorSpaceFB;
3499// XrSystemColorSpacePropertiesFB extends XrSystemProperties
3500typedef struct XrSystemColorSpacePropertiesFB {
3501 XrStructureType type;
3502 void* XR_MAY_ALIAS next;
3503 XrColorSpaceFB colorSpace;
3504} XrSystemColorSpacePropertiesFB;
3505
3506typedef XrResult (XRAPI_PTR *PFN_xrEnumerateColorSpacesFB)(XrSession session, uint32_t colorSpaceCapacityInput, uint32_t* colorSpaceCountOutput, XrColorSpaceFB* colorSpaces);
3507typedef XrResult (XRAPI_PTR *PFN_xrSetColorSpaceFB)(XrSession session, const XrColorSpaceFB colorSpace);
3508
3509#ifndef XR_NO_PROTOTYPES
3510#ifdef XR_EXTENSION_PROTOTYPES
3511XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateColorSpacesFB(
3512 XrSession session,
3513 uint32_t colorSpaceCapacityInput,
3514 uint32_t* colorSpaceCountOutput,
3515 XrColorSpaceFB* colorSpaces);
3516
3517XRAPI_ATTR XrResult XRAPI_CALL xrSetColorSpaceFB(
3518 XrSession session,
3519 const XrColorSpaceFB colorSpace);
3520#endif /* XR_EXTENSION_PROTOTYPES */
3521#endif /* !XR_NO_PROTOTYPES */
3522
3523
3524#define XR_FB_hand_tracking_mesh 1
3525#define XR_FB_hand_tracking_mesh_SPEC_VERSION 3
3526#define XR_FB_HAND_TRACKING_MESH_EXTENSION_NAME "XR_FB_hand_tracking_mesh"
3527typedef struct XrVector4sFB {
3528 int16_t x;
3529 int16_t y;
3530 int16_t z;
3531 int16_t w;
3532} XrVector4sFB;
3533
3534typedef struct XrHandTrackingMeshFB {
3535 XrStructureType type;
3536 void* XR_MAY_ALIAS next;
3537 uint32_t jointCapacityInput;
3538 uint32_t jointCountOutput;
3539 XrPosef* jointBindPoses;
3540 float* jointRadii;
3541 XrHandJointEXT* jointParents;
3542 uint32_t vertexCapacityInput;
3543 uint32_t vertexCountOutput;
3544 XrVector3f* vertexPositions;
3545 XrVector3f* vertexNormals;
3546 XrVector2f* vertexUVs;
3547 XrVector4sFB* vertexBlendIndices;
3548 XrVector4f* vertexBlendWeights;
3549 uint32_t indexCapacityInput;
3550 uint32_t indexCountOutput;
3551 int16_t* indices;
3552} XrHandTrackingMeshFB;
3553
3554// XrHandTrackingScaleFB extends XrHandJointLocationsEXT
3555typedef struct XrHandTrackingScaleFB {
3556 XrStructureType type;
3557 void* XR_MAY_ALIAS next;
3558 float sensorOutput;
3559 float currentOutput;
3560 XrBool32 overrideHandScale;
3561 float overrideValueInput;
3562} XrHandTrackingScaleFB;
3563
3564typedef XrResult (XRAPI_PTR *PFN_xrGetHandMeshFB)(XrHandTrackerEXT handTracker, XrHandTrackingMeshFB* mesh);
3565
3566#ifndef XR_NO_PROTOTYPES
3567#ifdef XR_EXTENSION_PROTOTYPES
3568XRAPI_ATTR XrResult XRAPI_CALL xrGetHandMeshFB(
3569 XrHandTrackerEXT handTracker,
3570 XrHandTrackingMeshFB* mesh);
3571#endif /* XR_EXTENSION_PROTOTYPES */
3572#endif /* !XR_NO_PROTOTYPES */
3573
3574
3575#define XR_FB_hand_tracking_aim 1
3576#define XR_FB_hand_tracking_aim_SPEC_VERSION 2
3577#define XR_FB_HAND_TRACKING_AIM_EXTENSION_NAME "XR_FB_hand_tracking_aim"
3578typedef XrFlags64 XrHandTrackingAimFlagsFB;
3579
3580// Flag bits for XrHandTrackingAimFlagsFB
3581static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_COMPUTED_BIT_FB = 0x00000001;
3582static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_VALID_BIT_FB = 0x00000002;
3583static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_INDEX_PINCHING_BIT_FB = 0x00000004;
3584static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_MIDDLE_PINCHING_BIT_FB = 0x00000008;
3585static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_RING_PINCHING_BIT_FB = 0x00000010;
3586static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_LITTLE_PINCHING_BIT_FB = 0x00000020;
3587static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_SYSTEM_GESTURE_BIT_FB = 0x00000040;
3588static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_DOMINANT_HAND_BIT_FB = 0x00000080;
3589static const XrHandTrackingAimFlagsFB XR_HAND_TRACKING_AIM_MENU_PRESSED_BIT_FB = 0x00000100;
3590
3591// XrHandTrackingAimStateFB extends XrHandJointLocationsEXT
3592typedef struct XrHandTrackingAimStateFB {
3593 XrStructureType type;
3594 void* XR_MAY_ALIAS next;
3595 XrHandTrackingAimFlagsFB status;
3596 XrPosef aimPose;
3597 float pinchStrengthIndex;
3598 float pinchStrengthMiddle;
3599 float pinchStrengthRing;
3600 float pinchStrengthLittle;
3601} XrHandTrackingAimStateFB;
3602
3603
3604
3605#define XR_FB_hand_tracking_capsules 1
3606#define XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB 2
3607#define XR_HAND_TRACKING_CAPSULE_COUNT_FB 19
3608#define XR_FB_hand_tracking_capsules_SPEC_VERSION 3
3609#define XR_FB_HAND_TRACKING_CAPSULES_EXTENSION_NAME "XR_FB_hand_tracking_capsules"
3610#define XR_FB_HAND_TRACKING_CAPSULE_POINT_COUNT XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB
3611#define XR_FB_HAND_TRACKING_CAPSULE_COUNT XR_HAND_TRACKING_CAPSULE_COUNT_FB
3612typedef struct XrHandCapsuleFB {
3613 XrVector3f points[XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB];
3614 float radius;
3615 XrHandJointEXT joint;
3616} XrHandCapsuleFB;
3617
3618// XrHandTrackingCapsulesStateFB extends XrHandJointLocationsEXT
3619typedef struct XrHandTrackingCapsulesStateFB {
3620 XrStructureType type;
3621 void* XR_MAY_ALIAS next;
3622 XrHandCapsuleFB capsules[XR_HAND_TRACKING_CAPSULE_COUNT_FB];
3623} XrHandTrackingCapsulesStateFB;
3624
3625
3626
3627#define XR_FB_spatial_entity 1
3628XR_DEFINE_ATOM(XrAsyncRequestIdFB)
3629#define XR_UUID_SIZE_EXT 16
3630#define XR_FB_spatial_entity_SPEC_VERSION 3
3631#define XR_FB_SPATIAL_ENTITY_EXTENSION_NAME "XR_FB_spatial_entity"
3632
3633typedef enum XrSpaceComponentTypeFB {
3634 XR_SPACE_COMPONENT_TYPE_LOCATABLE_FB = 0,
3635 XR_SPACE_COMPONENT_TYPE_STORABLE_FB = 1,
3636 XR_SPACE_COMPONENT_TYPE_SHARABLE_FB = 2,
3637 XR_SPACE_COMPONENT_TYPE_BOUNDED_2D_FB = 3,
3638 XR_SPACE_COMPONENT_TYPE_BOUNDED_3D_FB = 4,
3639 XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB = 5,
3640 XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB = 6,
3641 XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB = 7,
3642 XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META = 1000269000,
3643 XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB = 0x7FFFFFFF
3644} XrSpaceComponentTypeFB;
3645// XrSystemSpatialEntityPropertiesFB extends XrSystemProperties
3646typedef struct XrSystemSpatialEntityPropertiesFB {
3647 XrStructureType type;
3648 const void* XR_MAY_ALIAS next;
3649 XrBool32 supportsSpatialEntity;
3650} XrSystemSpatialEntityPropertiesFB;
3651
3652typedef struct XrSpatialAnchorCreateInfoFB {
3653 XrStructureType type;
3654 const void* XR_MAY_ALIAS next;
3655 XrSpace space;
3656 XrPosef poseInSpace;
3657 XrTime time;
3658} XrSpatialAnchorCreateInfoFB;
3659
3660typedef struct XrSpaceComponentStatusSetInfoFB {
3661 XrStructureType type;
3662 const void* XR_MAY_ALIAS next;
3663 XrSpaceComponentTypeFB componentType;
3664 XrBool32 enabled;
3665 XrDuration timeout;
3666} XrSpaceComponentStatusSetInfoFB;
3667
3668typedef struct XrSpaceComponentStatusFB {
3669 XrStructureType type;
3670 void* XR_MAY_ALIAS next;
3671 XrBool32 enabled;
3672 XrBool32 changePending;
3673} XrSpaceComponentStatusFB;
3674
3675typedef struct XrUuidEXT {
3676 uint8_t data[XR_UUID_SIZE_EXT];
3677} XrUuidEXT;
3678
3679typedef struct XrEventDataSpatialAnchorCreateCompleteFB {
3680 XrStructureType type;
3681 const void* XR_MAY_ALIAS next;
3682 XrAsyncRequestIdFB requestId;
3683 XrResult result;
3684 XrSpace space;
3685 XrUuidEXT uuid;
3686} XrEventDataSpatialAnchorCreateCompleteFB;
3687
3688typedef struct XrEventDataSpaceSetStatusCompleteFB {
3689 XrStructureType type;
3690 const void* XR_MAY_ALIAS next;
3691 XrAsyncRequestIdFB requestId;
3692 XrResult result;
3693 XrSpace space;
3694 XrUuidEXT uuid;
3695 XrSpaceComponentTypeFB componentType;
3696 XrBool32 enabled;
3697} XrEventDataSpaceSetStatusCompleteFB;
3698
3699typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorFB)(XrSession session, const XrSpatialAnchorCreateInfoFB* info, XrAsyncRequestIdFB* requestId);
3700typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceUuidFB)(XrSpace space, XrUuidEXT* uuid);
3701typedef XrResult (XRAPI_PTR *PFN_xrEnumerateSpaceSupportedComponentsFB)(XrSpace space, uint32_t componentTypeCapacityInput, uint32_t* componentTypeCountOutput, XrSpaceComponentTypeFB* componentTypes);
3702typedef XrResult (XRAPI_PTR *PFN_xrSetSpaceComponentStatusFB)(XrSpace space, const XrSpaceComponentStatusSetInfoFB* info, XrAsyncRequestIdFB* requestId);
3703typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceComponentStatusFB)(XrSpace space, XrSpaceComponentTypeFB componentType, XrSpaceComponentStatusFB* status);
3704
3705#ifndef XR_NO_PROTOTYPES
3706#ifdef XR_EXTENSION_PROTOTYPES
3707XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFB(
3708 XrSession session,
3709 const XrSpatialAnchorCreateInfoFB* info,
3710 XrAsyncRequestIdFB* requestId);
3711
3712XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceUuidFB(
3713 XrSpace space,
3714 XrUuidEXT* uuid);
3715
3716XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateSpaceSupportedComponentsFB(
3717 XrSpace space,
3718 uint32_t componentTypeCapacityInput,
3719 uint32_t* componentTypeCountOutput,
3720 XrSpaceComponentTypeFB* componentTypes);
3721
3722XRAPI_ATTR XrResult XRAPI_CALL xrSetSpaceComponentStatusFB(
3723 XrSpace space,
3724 const XrSpaceComponentStatusSetInfoFB* info,
3725 XrAsyncRequestIdFB* requestId);
3726
3727XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceComponentStatusFB(
3728 XrSpace space,
3729 XrSpaceComponentTypeFB componentType,
3730 XrSpaceComponentStatusFB* status);
3731#endif /* XR_EXTENSION_PROTOTYPES */
3732#endif /* !XR_NO_PROTOTYPES */
3733
3734
3735#define XR_FB_foveation 1
3736XR_DEFINE_HANDLE(XrFoveationProfileFB)
3737#define XR_FB_foveation_SPEC_VERSION 1
3738#define XR_FB_FOVEATION_EXTENSION_NAME "XR_FB_foveation"
3739typedef XrFlags64 XrSwapchainCreateFoveationFlagsFB;
3740
3741// Flag bits for XrSwapchainCreateFoveationFlagsFB
3742static const XrSwapchainCreateFoveationFlagsFB XR_SWAPCHAIN_CREATE_FOVEATION_SCALED_BIN_BIT_FB = 0x00000001;
3743static const XrSwapchainCreateFoveationFlagsFB XR_SWAPCHAIN_CREATE_FOVEATION_FRAGMENT_DENSITY_MAP_BIT_FB = 0x00000002;
3744
3745typedef XrFlags64 XrSwapchainStateFoveationFlagsFB;
3746
3747// Flag bits for XrSwapchainStateFoveationFlagsFB
3748
3749typedef struct XrFoveationProfileCreateInfoFB {
3750 XrStructureType type;
3751 void* XR_MAY_ALIAS next;
3752} XrFoveationProfileCreateInfoFB;
3753
3754// XrSwapchainCreateInfoFoveationFB extends XrSwapchainCreateInfo
3755typedef struct XrSwapchainCreateInfoFoveationFB {
3756 XrStructureType type;
3757 void* XR_MAY_ALIAS next;
3758 XrSwapchainCreateFoveationFlagsFB flags;
3759} XrSwapchainCreateInfoFoveationFB;
3760
3761typedef struct XrSwapchainStateFoveationFB {
3762 XrStructureType type;
3763 void* XR_MAY_ALIAS next;
3764 XrSwapchainStateFoveationFlagsFB flags;
3765 XrFoveationProfileFB profile;
3766} XrSwapchainStateFoveationFB;
3767
3768typedef XrResult (XRAPI_PTR *PFN_xrCreateFoveationProfileFB)(XrSession session, const XrFoveationProfileCreateInfoFB* createInfo, XrFoveationProfileFB* profile);
3769typedef XrResult (XRAPI_PTR *PFN_xrDestroyFoveationProfileFB)(XrFoveationProfileFB profile);
3770
3771#ifndef XR_NO_PROTOTYPES
3772#ifdef XR_EXTENSION_PROTOTYPES
3773XRAPI_ATTR XrResult XRAPI_CALL xrCreateFoveationProfileFB(
3774 XrSession session,
3775 const XrFoveationProfileCreateInfoFB* createInfo,
3776 XrFoveationProfileFB* profile);
3777
3778XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFoveationProfileFB(
3779 XrFoveationProfileFB profile);
3780#endif /* XR_EXTENSION_PROTOTYPES */
3781#endif /* !XR_NO_PROTOTYPES */
3782
3783
3784#define XR_FB_foveation_configuration 1
3785#define XR_FB_foveation_configuration_SPEC_VERSION 1
3786#define XR_FB_FOVEATION_CONFIGURATION_EXTENSION_NAME "XR_FB_foveation_configuration"
3787
3788typedef enum XrFoveationLevelFB {
3789 XR_FOVEATION_LEVEL_NONE_FB = 0,
3790 XR_FOVEATION_LEVEL_LOW_FB = 1,
3791 XR_FOVEATION_LEVEL_MEDIUM_FB = 2,
3792 XR_FOVEATION_LEVEL_HIGH_FB = 3,
3793 XR_FOVEATION_LEVEL_MAX_ENUM_FB = 0x7FFFFFFF
3794} XrFoveationLevelFB;
3795
3796typedef enum XrFoveationDynamicFB {
3797 XR_FOVEATION_DYNAMIC_DISABLED_FB = 0,
3798 XR_FOVEATION_DYNAMIC_LEVEL_ENABLED_FB = 1,
3799 XR_FOVEATION_DYNAMIC_MAX_ENUM_FB = 0x7FFFFFFF
3800} XrFoveationDynamicFB;
3801// XrFoveationLevelProfileCreateInfoFB extends XrFoveationProfileCreateInfoFB
3802typedef struct XrFoveationLevelProfileCreateInfoFB {
3803 XrStructureType type;
3804 void* XR_MAY_ALIAS next;
3805 XrFoveationLevelFB level;
3806 float verticalOffset;
3807 XrFoveationDynamicFB dynamic;
3808} XrFoveationLevelProfileCreateInfoFB;
3809
3810
3811
3812#define XR_FB_keyboard_tracking 1
3813#define XR_MAX_KEYBOARD_TRACKING_NAME_SIZE_FB 128
3814#define XR_FB_keyboard_tracking_SPEC_VERSION 1
3815#define XR_FB_KEYBOARD_TRACKING_EXTENSION_NAME "XR_FB_keyboard_tracking"
3816typedef XrFlags64 XrKeyboardTrackingFlagsFB;
3817
3818// Flag bits for XrKeyboardTrackingFlagsFB
3819static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_EXISTS_BIT_FB = 0x00000001;
3820static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_LOCAL_BIT_FB = 0x00000002;
3821static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_REMOTE_BIT_FB = 0x00000004;
3822static const XrKeyboardTrackingFlagsFB XR_KEYBOARD_TRACKING_CONNECTED_BIT_FB = 0x00000008;
3823
3824typedef XrFlags64 XrKeyboardTrackingQueryFlagsFB;
3825
3826// Flag bits for XrKeyboardTrackingQueryFlagsFB
3827static const XrKeyboardTrackingQueryFlagsFB XR_KEYBOARD_TRACKING_QUERY_LOCAL_BIT_FB = 0x00000002;
3828static const XrKeyboardTrackingQueryFlagsFB XR_KEYBOARD_TRACKING_QUERY_REMOTE_BIT_FB = 0x00000004;
3829
3830// XrSystemKeyboardTrackingPropertiesFB extends XrSystemProperties
3831typedef struct XrSystemKeyboardTrackingPropertiesFB {
3832 XrStructureType type;
3833 void* XR_MAY_ALIAS next;
3834 XrBool32 supportsKeyboardTracking;
3835} XrSystemKeyboardTrackingPropertiesFB;
3836
3837typedef struct XrKeyboardTrackingDescriptionFB {
3838 uint64_t trackedKeyboardId;
3839 XrVector3f size;
3840 XrKeyboardTrackingFlagsFB flags;
3841 char name[XR_MAX_KEYBOARD_TRACKING_NAME_SIZE_FB];
3842} XrKeyboardTrackingDescriptionFB;
3843
3844typedef struct XrKeyboardSpaceCreateInfoFB {
3845 XrStructureType type;
3846 void* XR_MAY_ALIAS next;
3847 uint64_t trackedKeyboardId;
3848} XrKeyboardSpaceCreateInfoFB;
3849
3850typedef struct XrKeyboardTrackingQueryFB {
3851 XrStructureType type;
3852 void* XR_MAY_ALIAS next;
3853 XrKeyboardTrackingQueryFlagsFB flags;
3854} XrKeyboardTrackingQueryFB;
3855
3856typedef XrResult (XRAPI_PTR *PFN_xrQuerySystemTrackedKeyboardFB)(XrSession session, const XrKeyboardTrackingQueryFB* queryInfo, XrKeyboardTrackingDescriptionFB* keyboard);
3857typedef XrResult (XRAPI_PTR *PFN_xrCreateKeyboardSpaceFB)(XrSession session, const XrKeyboardSpaceCreateInfoFB* createInfo, XrSpace* keyboardSpace);
3858
3859#ifndef XR_NO_PROTOTYPES
3860#ifdef XR_EXTENSION_PROTOTYPES
3861XRAPI_ATTR XrResult XRAPI_CALL xrQuerySystemTrackedKeyboardFB(
3862 XrSession session,
3863 const XrKeyboardTrackingQueryFB* queryInfo,
3864 XrKeyboardTrackingDescriptionFB* keyboard);
3865
3866XRAPI_ATTR XrResult XRAPI_CALL xrCreateKeyboardSpaceFB(
3867 XrSession session,
3868 const XrKeyboardSpaceCreateInfoFB* createInfo,
3869 XrSpace* keyboardSpace);
3870#endif /* XR_EXTENSION_PROTOTYPES */
3871#endif /* !XR_NO_PROTOTYPES */
3872
3873
3874#define XR_FB_triangle_mesh 1
3875XR_DEFINE_HANDLE(XrTriangleMeshFB)
3876#define XR_FB_triangle_mesh_SPEC_VERSION 2
3877#define XR_FB_TRIANGLE_MESH_EXTENSION_NAME "XR_FB_triangle_mesh"
3878
3879typedef enum XrWindingOrderFB {
3880 XR_WINDING_ORDER_UNKNOWN_FB = 0,
3881 XR_WINDING_ORDER_CW_FB = 1,
3882 XR_WINDING_ORDER_CCW_FB = 2,
3883 XR_WINDING_ORDER_MAX_ENUM_FB = 0x7FFFFFFF
3884} XrWindingOrderFB;
3885typedef XrFlags64 XrTriangleMeshFlagsFB;
3886
3887// Flag bits for XrTriangleMeshFlagsFB
3888static const XrTriangleMeshFlagsFB XR_TRIANGLE_MESH_MUTABLE_BIT_FB = 0x00000001;
3889
3890typedef struct XrTriangleMeshCreateInfoFB {
3891 XrStructureType type;
3892 const void* XR_MAY_ALIAS next;
3893 XrTriangleMeshFlagsFB flags;
3894 XrWindingOrderFB windingOrder;
3895 uint32_t vertexCount;
3896 const XrVector3f* vertexBuffer;
3897 uint32_t triangleCount;
3898 const uint32_t* indexBuffer;
3899} XrTriangleMeshCreateInfoFB;
3900
3901typedef XrResult (XRAPI_PTR *PFN_xrCreateTriangleMeshFB)(XrSession session, const XrTriangleMeshCreateInfoFB* createInfo, XrTriangleMeshFB* outTriangleMesh);
3902typedef XrResult (XRAPI_PTR *PFN_xrDestroyTriangleMeshFB)(XrTriangleMeshFB mesh);
3903typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshGetVertexBufferFB)(XrTriangleMeshFB mesh, XrVector3f** outVertexBuffer);
3904typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshGetIndexBufferFB)(XrTriangleMeshFB mesh, uint32_t** outIndexBuffer);
3905typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshBeginUpdateFB)(XrTriangleMeshFB mesh);
3906typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshEndUpdateFB)(XrTriangleMeshFB mesh, uint32_t vertexCount, uint32_t triangleCount);
3907typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshBeginVertexBufferUpdateFB)(XrTriangleMeshFB mesh, uint32_t* outVertexCount);
3908typedef XrResult (XRAPI_PTR *PFN_xrTriangleMeshEndVertexBufferUpdateFB)(XrTriangleMeshFB mesh);
3909
3910#ifndef XR_NO_PROTOTYPES
3911#ifdef XR_EXTENSION_PROTOTYPES
3912XRAPI_ATTR XrResult XRAPI_CALL xrCreateTriangleMeshFB(
3913 XrSession session,
3914 const XrTriangleMeshCreateInfoFB* createInfo,
3915 XrTriangleMeshFB* outTriangleMesh);
3916
3917XRAPI_ATTR XrResult XRAPI_CALL xrDestroyTriangleMeshFB(
3918 XrTriangleMeshFB mesh);
3919
3920XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshGetVertexBufferFB(
3921 XrTriangleMeshFB mesh,
3922 XrVector3f** outVertexBuffer);
3923
3924XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshGetIndexBufferFB(
3925 XrTriangleMeshFB mesh,
3926 uint32_t** outIndexBuffer);
3927
3928XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshBeginUpdateFB(
3929 XrTriangleMeshFB mesh);
3930
3931XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshEndUpdateFB(
3932 XrTriangleMeshFB mesh,
3933 uint32_t vertexCount,
3934 uint32_t triangleCount);
3935
3936XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshBeginVertexBufferUpdateFB(
3937 XrTriangleMeshFB mesh,
3938 uint32_t* outVertexCount);
3939
3940XRAPI_ATTR XrResult XRAPI_CALL xrTriangleMeshEndVertexBufferUpdateFB(
3941 XrTriangleMeshFB mesh);
3942#endif /* XR_EXTENSION_PROTOTYPES */
3943#endif /* !XR_NO_PROTOTYPES */
3944
3945
3946#define XR_FB_passthrough 1
3947XR_DEFINE_HANDLE(XrPassthroughFB)
3948XR_DEFINE_HANDLE(XrPassthroughLayerFB)
3949XR_DEFINE_HANDLE(XrGeometryInstanceFB)
3950#define XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB 256
3951#define XR_FB_passthrough_SPEC_VERSION 3
3952#define XR_FB_PASSTHROUGH_EXTENSION_NAME "XR_FB_passthrough"
3953
3954typedef enum XrPassthroughLayerPurposeFB {
3955 XR_PASSTHROUGH_LAYER_PURPOSE_RECONSTRUCTION_FB = 0,
3956 XR_PASSTHROUGH_LAYER_PURPOSE_PROJECTED_FB = 1,
3957 XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_HANDS_FB = 1000203001,
3958 XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_MASKED_HANDS_FB = 1000203002,
3959 XR_PASSTHROUGH_LAYER_PURPOSE_MAX_ENUM_FB = 0x7FFFFFFF
3960} XrPassthroughLayerPurposeFB;
3961typedef XrFlags64 XrPassthroughCapabilityFlagsFB;
3962
3963// Flag bits for XrPassthroughCapabilityFlagsFB
3964static const XrPassthroughCapabilityFlagsFB XR_PASSTHROUGH_CAPABILITY_BIT_FB = 0x00000001;
3965static const XrPassthroughCapabilityFlagsFB XR_PASSTHROUGH_CAPABILITY_COLOR_BIT_FB = 0x00000002;
3966static const XrPassthroughCapabilityFlagsFB XR_PASSTHROUGH_CAPABILITY_LAYER_DEPTH_BIT_FB = 0x00000004;
3967
3968typedef XrFlags64 XrPassthroughFlagsFB;
3969
3970// Flag bits for XrPassthroughFlagsFB
3971static const XrPassthroughFlagsFB XR_PASSTHROUGH_IS_RUNNING_AT_CREATION_BIT_FB = 0x00000001;
3972static const XrPassthroughFlagsFB XR_PASSTHROUGH_LAYER_DEPTH_BIT_FB = 0x00000002;
3973
3974typedef XrFlags64 XrPassthroughStateChangedFlagsFB;
3975
3976// Flag bits for XrPassthroughStateChangedFlagsFB
3977static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_REINIT_REQUIRED_BIT_FB = 0x00000001;
3978static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_NON_RECOVERABLE_ERROR_BIT_FB = 0x00000002;
3979static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_RECOVERABLE_ERROR_BIT_FB = 0x00000004;
3980static const XrPassthroughStateChangedFlagsFB XR_PASSTHROUGH_STATE_CHANGED_RESTORED_ERROR_BIT_FB = 0x00000008;
3981
3982// XrSystemPassthroughPropertiesFB extends XrSystemProperties
3983typedef struct XrSystemPassthroughPropertiesFB {
3984 XrStructureType type;
3985 const void* XR_MAY_ALIAS next;
3986 XrBool32 supportsPassthrough;
3987} XrSystemPassthroughPropertiesFB;
3988
3989// XrSystemPassthroughProperties2FB extends XrSystemProperties
3990typedef struct XrSystemPassthroughProperties2FB {
3991 XrStructureType type;
3992 const void* XR_MAY_ALIAS next;
3993 XrPassthroughCapabilityFlagsFB capabilities;
3994} XrSystemPassthroughProperties2FB;
3995
3996typedef struct XrPassthroughCreateInfoFB {
3997 XrStructureType type;
3998 const void* XR_MAY_ALIAS next;
3999 XrPassthroughFlagsFB flags;
4000} XrPassthroughCreateInfoFB;
4001
4002typedef struct XrPassthroughLayerCreateInfoFB {
4003 XrStructureType type;
4004 const void* XR_MAY_ALIAS next;
4005 XrPassthroughFB passthrough;
4006 XrPassthroughFlagsFB flags;
4007 XrPassthroughLayerPurposeFB purpose;
4008} XrPassthroughLayerCreateInfoFB;
4009
4010// XrCompositionLayerPassthroughFB extends XrCompositionLayerBaseHeader
4011typedef struct XrCompositionLayerPassthroughFB {
4012 XrStructureType type;
4013 const void* XR_MAY_ALIAS next;
4014 XrCompositionLayerFlags flags;
4015 XrSpace space;
4016 XrPassthroughLayerFB layerHandle;
4017} XrCompositionLayerPassthroughFB;
4018
4019typedef struct XrGeometryInstanceCreateInfoFB {
4020 XrStructureType type;
4021 const void* XR_MAY_ALIAS next;
4022 XrPassthroughLayerFB layer;
4023 XrTriangleMeshFB mesh;
4024 XrSpace baseSpace;
4025 XrPosef pose;
4026 XrVector3f scale;
4027} XrGeometryInstanceCreateInfoFB;
4028
4029typedef struct XrGeometryInstanceTransformFB {
4030 XrStructureType type;
4031 const void* XR_MAY_ALIAS next;
4032 XrSpace baseSpace;
4033 XrTime time;
4034 XrPosef pose;
4035 XrVector3f scale;
4036} XrGeometryInstanceTransformFB;
4037
4038typedef struct XrPassthroughStyleFB {
4039 XrStructureType type;
4040 const void* XR_MAY_ALIAS next;
4041 float textureOpacityFactor;
4042 XrColor4f edgeColor;
4043} XrPassthroughStyleFB;
4044
4045// XrPassthroughColorMapMonoToRgbaFB extends XrPassthroughStyleFB
4046typedef struct XrPassthroughColorMapMonoToRgbaFB {
4047 XrStructureType type;
4048 const void* XR_MAY_ALIAS next;
4049 XrColor4f textureColorMap[XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB];
4050} XrPassthroughColorMapMonoToRgbaFB;
4051
4052// XrPassthroughColorMapMonoToMonoFB extends XrPassthroughStyleFB
4053typedef struct XrPassthroughColorMapMonoToMonoFB {
4054 XrStructureType type;
4055 const void* XR_MAY_ALIAS next;
4056 uint8_t textureColorMap[XR_PASSTHROUGH_COLOR_MAP_MONO_SIZE_FB];
4057} XrPassthroughColorMapMonoToMonoFB;
4058
4059// XrPassthroughBrightnessContrastSaturationFB extends XrPassthroughStyleFB
4060typedef struct XrPassthroughBrightnessContrastSaturationFB {
4061 XrStructureType type;
4062 const void* XR_MAY_ALIAS next;
4063 float brightness;
4064 float contrast;
4065 float saturation;
4066} XrPassthroughBrightnessContrastSaturationFB;
4067
4068typedef struct XrEventDataPassthroughStateChangedFB {
4069 XrStructureType type;
4070 const void* XR_MAY_ALIAS next;
4071 XrPassthroughStateChangedFlagsFB flags;
4072} XrEventDataPassthroughStateChangedFB;
4073
4074typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughFB)(XrSession session, const XrPassthroughCreateInfoFB* createInfo, XrPassthroughFB* outPassthrough);
4075typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughFB)(XrPassthroughFB passthrough);
4076typedef XrResult (XRAPI_PTR *PFN_xrPassthroughStartFB)(XrPassthroughFB passthrough);
4077typedef XrResult (XRAPI_PTR *PFN_xrPassthroughPauseFB)(XrPassthroughFB passthrough);
4078typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughLayerFB)(XrSession session, const XrPassthroughLayerCreateInfoFB* createInfo, XrPassthroughLayerFB* outLayer);
4079typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughLayerFB)(XrPassthroughLayerFB layer);
4080typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerPauseFB)(XrPassthroughLayerFB layer);
4081typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerResumeFB)(XrPassthroughLayerFB layer);
4082typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerSetStyleFB)(XrPassthroughLayerFB layer, const XrPassthroughStyleFB* style);
4083typedef XrResult (XRAPI_PTR *PFN_xrCreateGeometryInstanceFB)(XrSession session, const XrGeometryInstanceCreateInfoFB* createInfo, XrGeometryInstanceFB* outGeometryInstance);
4084typedef XrResult (XRAPI_PTR *PFN_xrDestroyGeometryInstanceFB)(XrGeometryInstanceFB instance);
4085typedef XrResult (XRAPI_PTR *PFN_xrGeometryInstanceSetTransformFB)(XrGeometryInstanceFB instance, const XrGeometryInstanceTransformFB* transformation);
4086
4087#ifndef XR_NO_PROTOTYPES
4088#ifdef XR_EXTENSION_PROTOTYPES
4089XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughFB(
4090 XrSession session,
4091 const XrPassthroughCreateInfoFB* createInfo,
4092 XrPassthroughFB* outPassthrough);
4093
4094XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughFB(
4095 XrPassthroughFB passthrough);
4096
4097XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughStartFB(
4098 XrPassthroughFB passthrough);
4099
4100XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughPauseFB(
4101 XrPassthroughFB passthrough);
4102
4103XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughLayerFB(
4104 XrSession session,
4105 const XrPassthroughLayerCreateInfoFB* createInfo,
4106 XrPassthroughLayerFB* outLayer);
4107
4108XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughLayerFB(
4109 XrPassthroughLayerFB layer);
4110
4111XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerPauseFB(
4112 XrPassthroughLayerFB layer);
4113
4114XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerResumeFB(
4115 XrPassthroughLayerFB layer);
4116
4117XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerSetStyleFB(
4118 XrPassthroughLayerFB layer,
4119 const XrPassthroughStyleFB* style);
4120
4121XRAPI_ATTR XrResult XRAPI_CALL xrCreateGeometryInstanceFB(
4122 XrSession session,
4123 const XrGeometryInstanceCreateInfoFB* createInfo,
4124 XrGeometryInstanceFB* outGeometryInstance);
4125
4126XRAPI_ATTR XrResult XRAPI_CALL xrDestroyGeometryInstanceFB(
4127 XrGeometryInstanceFB instance);
4128
4129XRAPI_ATTR XrResult XRAPI_CALL xrGeometryInstanceSetTransformFB(
4130 XrGeometryInstanceFB instance,
4131 const XrGeometryInstanceTransformFB* transformation);
4132#endif /* XR_EXTENSION_PROTOTYPES */
4133#endif /* !XR_NO_PROTOTYPES */
4134
4135
4136#define XR_FB_render_model 1
4137
4138#define XR_NULL_RENDER_MODEL_KEY_FB 0
4139
4140XR_DEFINE_ATOM(XrRenderModelKeyFB)
4141#define XR_MAX_RENDER_MODEL_NAME_SIZE_FB 64
4142#define XR_FB_render_model_SPEC_VERSION 4
4143#define XR_FB_RENDER_MODEL_EXTENSION_NAME "XR_FB_render_model"
4144typedef XrFlags64 XrRenderModelFlagsFB;
4145
4146// Flag bits for XrRenderModelFlagsFB
4147static const XrRenderModelFlagsFB XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_1_BIT_FB = 0x00000001;
4148static const XrRenderModelFlagsFB XR_RENDER_MODEL_SUPPORTS_GLTF_2_0_SUBSET_2_BIT_FB = 0x00000002;
4149
4150typedef struct XrRenderModelPathInfoFB {
4151 XrStructureType type;
4152 void* XR_MAY_ALIAS next;
4153 XrPath path;
4154} XrRenderModelPathInfoFB;
4155
4156typedef struct XrRenderModelPropertiesFB {
4157 XrStructureType type;
4158 void* XR_MAY_ALIAS next;
4159 uint32_t vendorId;
4160 char modelName[XR_MAX_RENDER_MODEL_NAME_SIZE_FB];
4161 XrRenderModelKeyFB modelKey;
4162 uint32_t modelVersion;
4163 XrRenderModelFlagsFB flags;
4164} XrRenderModelPropertiesFB;
4165
4166typedef struct XrRenderModelBufferFB {
4167 XrStructureType type;
4168 void* XR_MAY_ALIAS next;
4169 uint32_t bufferCapacityInput;
4170 uint32_t bufferCountOutput;
4171 uint8_t* buffer;
4172} XrRenderModelBufferFB;
4173
4174typedef struct XrRenderModelLoadInfoFB {
4175 XrStructureType type;
4176 void* XR_MAY_ALIAS next;
4177 XrRenderModelKeyFB modelKey;
4178} XrRenderModelLoadInfoFB;
4179
4180// XrSystemRenderModelPropertiesFB extends XrSystemProperties
4181typedef struct XrSystemRenderModelPropertiesFB {
4182 XrStructureType type;
4183 void* XR_MAY_ALIAS next;
4184 XrBool32 supportsRenderModelLoading;
4185} XrSystemRenderModelPropertiesFB;
4186
4187// XrRenderModelCapabilitiesRequestFB extends XrRenderModelPropertiesFB
4188typedef struct XrRenderModelCapabilitiesRequestFB {
4189 XrStructureType type;
4190 void* XR_MAY_ALIAS next;
4191 XrRenderModelFlagsFB flags;
4192} XrRenderModelCapabilitiesRequestFB;
4193
4194typedef XrResult (XRAPI_PTR *PFN_xrEnumerateRenderModelPathsFB)(XrSession session, uint32_t pathCapacityInput, uint32_t* pathCountOutput, XrRenderModelPathInfoFB* paths);
4195typedef XrResult (XRAPI_PTR *PFN_xrGetRenderModelPropertiesFB)(XrSession session, XrPath path, XrRenderModelPropertiesFB* properties);
4196typedef XrResult (XRAPI_PTR *PFN_xrLoadRenderModelFB)(XrSession session, const XrRenderModelLoadInfoFB* info, XrRenderModelBufferFB* buffer);
4197
4198#ifndef XR_NO_PROTOTYPES
4199#ifdef XR_EXTENSION_PROTOTYPES
4200XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateRenderModelPathsFB(
4201 XrSession session,
4202 uint32_t pathCapacityInput,
4203 uint32_t* pathCountOutput,
4204 XrRenderModelPathInfoFB* paths);
4205
4206XRAPI_ATTR XrResult XRAPI_CALL xrGetRenderModelPropertiesFB(
4207 XrSession session,
4208 XrPath path,
4209 XrRenderModelPropertiesFB* properties);
4210
4211XRAPI_ATTR XrResult XRAPI_CALL xrLoadRenderModelFB(
4212 XrSession session,
4213 const XrRenderModelLoadInfoFB* info,
4214 XrRenderModelBufferFB* buffer);
4215#endif /* XR_EXTENSION_PROTOTYPES */
4216#endif /* !XR_NO_PROTOTYPES */
4217
4218
4219#define XR_VARJO_foveated_rendering 1
4220#define XR_VARJO_foveated_rendering_SPEC_VERSION 3
4221#define XR_VARJO_FOVEATED_RENDERING_EXTENSION_NAME "XR_VARJO_foveated_rendering"
4222// XrViewLocateFoveatedRenderingVARJO extends XrViewLocateInfo
4223typedef struct XrViewLocateFoveatedRenderingVARJO {
4224 XrStructureType type;
4225 const void* XR_MAY_ALIAS next;
4226 XrBool32 foveatedRenderingActive;
4227} XrViewLocateFoveatedRenderingVARJO;
4228
4229// XrFoveatedViewConfigurationViewVARJO extends XrViewConfigurationView
4230typedef struct XrFoveatedViewConfigurationViewVARJO {
4231 XrStructureType type;
4232 void* XR_MAY_ALIAS next;
4233 XrBool32 foveatedRenderingActive;
4234} XrFoveatedViewConfigurationViewVARJO;
4235
4236// XrSystemFoveatedRenderingPropertiesVARJO extends XrSystemProperties
4237typedef struct XrSystemFoveatedRenderingPropertiesVARJO {
4238 XrStructureType type;
4239 void* XR_MAY_ALIAS next;
4240 XrBool32 supportsFoveatedRendering;
4241} XrSystemFoveatedRenderingPropertiesVARJO;
4242
4243
4244
4245#define XR_VARJO_composition_layer_depth_test 1
4246#define XR_VARJO_composition_layer_depth_test_SPEC_VERSION 2
4247#define XR_VARJO_COMPOSITION_LAYER_DEPTH_TEST_EXTENSION_NAME "XR_VARJO_composition_layer_depth_test"
4248// XrCompositionLayerDepthTestVARJO extends XrCompositionLayerProjection
4249typedef struct XrCompositionLayerDepthTestVARJO {
4250 XrStructureType type;
4251 const void* XR_MAY_ALIAS next;
4252 float depthTestRangeNearZ;
4253 float depthTestRangeFarZ;
4254} XrCompositionLayerDepthTestVARJO;
4255
4256
4257
4258#define XR_VARJO_environment_depth_estimation 1
4259#define XR_VARJO_environment_depth_estimation_SPEC_VERSION 1
4260#define XR_VARJO_ENVIRONMENT_DEPTH_ESTIMATION_EXTENSION_NAME "XR_VARJO_environment_depth_estimation"
4261typedef XrResult (XRAPI_PTR *PFN_xrSetEnvironmentDepthEstimationVARJO)(XrSession session, XrBool32 enabled);
4262
4263#ifndef XR_NO_PROTOTYPES
4264#ifdef XR_EXTENSION_PROTOTYPES
4265XRAPI_ATTR XrResult XRAPI_CALL xrSetEnvironmentDepthEstimationVARJO(
4266 XrSession session,
4267 XrBool32 enabled);
4268#endif /* XR_EXTENSION_PROTOTYPES */
4269#endif /* !XR_NO_PROTOTYPES */
4270
4271
4272#define XR_VARJO_marker_tracking 1
4273#define XR_VARJO_marker_tracking_SPEC_VERSION 1
4274#define XR_VARJO_MARKER_TRACKING_EXTENSION_NAME "XR_VARJO_marker_tracking"
4275// XrSystemMarkerTrackingPropertiesVARJO extends XrSystemProperties
4276typedef struct XrSystemMarkerTrackingPropertiesVARJO {
4277 XrStructureType type;
4278 void* XR_MAY_ALIAS next;
4279 XrBool32 supportsMarkerTracking;
4280} XrSystemMarkerTrackingPropertiesVARJO;
4281
4282typedef struct XrEventDataMarkerTrackingUpdateVARJO {
4283 XrStructureType type;
4284 const void* XR_MAY_ALIAS next;
4285 uint64_t markerId;
4286 XrBool32 isActive;
4287 XrBool32 isPredicted;
4288 XrTime time;
4289} XrEventDataMarkerTrackingUpdateVARJO;
4290
4291typedef struct XrMarkerSpaceCreateInfoVARJO {
4292 XrStructureType type;
4293 const void* XR_MAY_ALIAS next;
4294 uint64_t markerId;
4295 XrPosef poseInMarkerSpace;
4296} XrMarkerSpaceCreateInfoVARJO;
4297
4298typedef XrResult (XRAPI_PTR *PFN_xrSetMarkerTrackingVARJO)(XrSession session, XrBool32 enabled);
4299typedef XrResult (XRAPI_PTR *PFN_xrSetMarkerTrackingTimeoutVARJO)(XrSession session, uint64_t markerId, XrDuration timeout);
4300typedef XrResult (XRAPI_PTR *PFN_xrSetMarkerTrackingPredictionVARJO)(XrSession session, uint64_t markerId, XrBool32 enable);
4301typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerSizeVARJO)(XrSession session, uint64_t markerId, XrExtent2Df* size);
4302typedef XrResult (XRAPI_PTR *PFN_xrCreateMarkerSpaceVARJO)(XrSession session, const XrMarkerSpaceCreateInfoVARJO* createInfo, XrSpace* space);
4303
4304#ifndef XR_NO_PROTOTYPES
4305#ifdef XR_EXTENSION_PROTOTYPES
4306XRAPI_ATTR XrResult XRAPI_CALL xrSetMarkerTrackingVARJO(
4307 XrSession session,
4308 XrBool32 enabled);
4309
4310XRAPI_ATTR XrResult XRAPI_CALL xrSetMarkerTrackingTimeoutVARJO(
4311 XrSession session,
4312 uint64_t markerId,
4313 XrDuration timeout);
4314
4315XRAPI_ATTR XrResult XRAPI_CALL xrSetMarkerTrackingPredictionVARJO(
4316 XrSession session,
4317 uint64_t markerId,
4318 XrBool32 enable);
4319
4320XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerSizeVARJO(
4321 XrSession session,
4322 uint64_t markerId,
4323 XrExtent2Df* size);
4324
4325XRAPI_ATTR XrResult XRAPI_CALL xrCreateMarkerSpaceVARJO(
4326 XrSession session,
4327 const XrMarkerSpaceCreateInfoVARJO* createInfo,
4328 XrSpace* space);
4329#endif /* XR_EXTENSION_PROTOTYPES */
4330#endif /* !XR_NO_PROTOTYPES */
4331
4332
4333#define XR_VARJO_view_offset 1
4334#define XR_VARJO_view_offset_SPEC_VERSION 1
4335#define XR_VARJO_VIEW_OFFSET_EXTENSION_NAME "XR_VARJO_view_offset"
4336typedef XrResult (XRAPI_PTR *PFN_xrSetViewOffsetVARJO)(XrSession session, float offset);
4337
4338#ifndef XR_NO_PROTOTYPES
4339#ifdef XR_EXTENSION_PROTOTYPES
4340XRAPI_ATTR XrResult XRAPI_CALL xrSetViewOffsetVARJO(
4341 XrSession session,
4342 float offset);
4343#endif /* XR_EXTENSION_PROTOTYPES */
4344#endif /* !XR_NO_PROTOTYPES */
4345
4346
4347#define XR_VARJO_xr4_controller_interaction 1
4348#define XR_VARJO_xr4_controller_interaction_SPEC_VERSION 1
4349#define XR_VARJO_XR4_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_VARJO_xr4_controller_interaction"
4350
4351
4352#define XR_ML_ml2_controller_interaction 1
4353#define XR_ML_ml2_controller_interaction_SPEC_VERSION 1
4354#define XR_ML_ML2_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_ML_ml2_controller_interaction"
4355
4356
4357#define XR_ML_frame_end_info 1
4358#define XR_ML_frame_end_info_SPEC_VERSION 1
4359#define XR_ML_FRAME_END_INFO_EXTENSION_NAME "XR_ML_frame_end_info"
4360typedef XrFlags64 XrFrameEndInfoFlagsML;
4361
4362// Flag bits for XrFrameEndInfoFlagsML
4363static const XrFrameEndInfoFlagsML XR_FRAME_END_INFO_PROTECTED_BIT_ML = 0x00000001;
4364static const XrFrameEndInfoFlagsML XR_FRAME_END_INFO_VIGNETTE_BIT_ML = 0x00000002;
4365
4366// XrFrameEndInfoML extends XrFrameEndInfo
4367typedef struct XrFrameEndInfoML {
4368 XrStructureType type;
4369 const void* XR_MAY_ALIAS next;
4370 float focusDistance;
4371 XrFrameEndInfoFlagsML flags;
4372} XrFrameEndInfoML;
4373
4374
4375
4376#define XR_ML_global_dimmer 1
4377#define XR_ML_global_dimmer_SPEC_VERSION 1
4378#define XR_ML_GLOBAL_DIMMER_EXTENSION_NAME "XR_ML_global_dimmer"
4379typedef XrFlags64 XrGlobalDimmerFrameEndInfoFlagsML;
4380
4381// Flag bits for XrGlobalDimmerFrameEndInfoFlagsML
4382static const XrGlobalDimmerFrameEndInfoFlagsML XR_GLOBAL_DIMMER_FRAME_END_INFO_ENABLED_BIT_ML = 0x00000001;
4383
4384// XrGlobalDimmerFrameEndInfoML extends XrFrameEndInfo
4385typedef struct XrGlobalDimmerFrameEndInfoML {
4386 XrStructureType type;
4387 const void* XR_MAY_ALIAS next;
4388 float dimmerValue;
4389 XrGlobalDimmerFrameEndInfoFlagsML flags;
4390} XrGlobalDimmerFrameEndInfoML;
4391
4392
4393
4394#define XR_ML_marker_understanding 1
4395XR_DEFINE_ATOM(XrMarkerML)
4396XR_DEFINE_HANDLE(XrMarkerDetectorML)
4397#define XR_ML_marker_understanding_SPEC_VERSION 1
4398#define XR_ML_MARKER_UNDERSTANDING_EXTENSION_NAME "XR_ML_marker_understanding"
4399
4400typedef enum XrMarkerDetectorProfileML {
4401 XR_MARKER_DETECTOR_PROFILE_DEFAULT_ML = 0,
4402 XR_MARKER_DETECTOR_PROFILE_SPEED_ML = 1,
4403 XR_MARKER_DETECTOR_PROFILE_ACCURACY_ML = 2,
4404 XR_MARKER_DETECTOR_PROFILE_SMALL_TARGETS_ML = 3,
4405 XR_MARKER_DETECTOR_PROFILE_LARGE_FOV_ML = 4,
4406 XR_MARKER_DETECTOR_PROFILE_CUSTOM_ML = 5,
4407 XR_MARKER_DETECTOR_PROFILE_MAX_ENUM_ML = 0x7FFFFFFF
4408} XrMarkerDetectorProfileML;
4409
4410typedef enum XrMarkerTypeML {
4411 XR_MARKER_TYPE_ARUCO_ML = 0,
4412 XR_MARKER_TYPE_APRIL_TAG_ML = 1,
4413 XR_MARKER_TYPE_QR_ML = 2,
4414 XR_MARKER_TYPE_EAN_13_ML = 3,
4415 XR_MARKER_TYPE_UPC_A_ML = 4,
4416 XR_MARKER_TYPE_CODE_128_ML = 5,
4417 XR_MARKER_TYPE_MAX_ENUM_ML = 0x7FFFFFFF
4418} XrMarkerTypeML;
4419
4420typedef enum XrMarkerArucoDictML {
4421 XR_MARKER_ARUCO_DICT_4X4_50_ML = 0,
4422 XR_MARKER_ARUCO_DICT_4X4_100_ML = 1,
4423 XR_MARKER_ARUCO_DICT_4X4_250_ML = 2,
4424 XR_MARKER_ARUCO_DICT_4X4_1000_ML = 3,
4425 XR_MARKER_ARUCO_DICT_5X5_50_ML = 4,
4426 XR_MARKER_ARUCO_DICT_5X5_100_ML = 5,
4427 XR_MARKER_ARUCO_DICT_5X5_250_ML = 6,
4428 XR_MARKER_ARUCO_DICT_5X5_1000_ML = 7,
4429 XR_MARKER_ARUCO_DICT_6X6_50_ML = 8,
4430 XR_MARKER_ARUCO_DICT_6X6_100_ML = 9,
4431 XR_MARKER_ARUCO_DICT_6X6_250_ML = 10,
4432 XR_MARKER_ARUCO_DICT_6X6_1000_ML = 11,
4433 XR_MARKER_ARUCO_DICT_7X7_50_ML = 12,
4434 XR_MARKER_ARUCO_DICT_7X7_100_ML = 13,
4435 XR_MARKER_ARUCO_DICT_7X7_250_ML = 14,
4436 XR_MARKER_ARUCO_DICT_7X7_1000_ML = 15,
4437 XR_MARKER_ARUCO_DICT_MAX_ENUM_ML = 0x7FFFFFFF
4438} XrMarkerArucoDictML;
4439
4440typedef enum XrMarkerAprilTagDictML {
4441 XR_MARKER_APRIL_TAG_DICT_16H5_ML = 0,
4442 XR_MARKER_APRIL_TAG_DICT_25H9_ML = 1,
4443 XR_MARKER_APRIL_TAG_DICT_36H10_ML = 2,
4444 XR_MARKER_APRIL_TAG_DICT_36H11_ML = 3,
4445 XR_MARKER_APRIL_TAG_DICT_MAX_ENUM_ML = 0x7FFFFFFF
4446} XrMarkerAprilTagDictML;
4447
4448typedef enum XrMarkerDetectorFpsML {
4449 XR_MARKER_DETECTOR_FPS_LOW_ML = 0,
4450 XR_MARKER_DETECTOR_FPS_MEDIUM_ML = 1,
4451 XR_MARKER_DETECTOR_FPS_HIGH_ML = 2,
4452 XR_MARKER_DETECTOR_FPS_MAX_ML = 3,
4453 XR_MARKER_DETECTOR_FPS_MAX_ENUM_ML = 0x7FFFFFFF
4454} XrMarkerDetectorFpsML;
4455
4456typedef enum XrMarkerDetectorResolutionML {
4457 XR_MARKER_DETECTOR_RESOLUTION_LOW_ML = 0,
4458 XR_MARKER_DETECTOR_RESOLUTION_MEDIUM_ML = 1,
4459 XR_MARKER_DETECTOR_RESOLUTION_HIGH_ML = 2,
4460 XR_MARKER_DETECTOR_RESOLUTION_MAX_ENUM_ML = 0x7FFFFFFF
4461} XrMarkerDetectorResolutionML;
4462
4463typedef enum XrMarkerDetectorCameraML {
4464 XR_MARKER_DETECTOR_CAMERA_RGB_CAMERA_ML = 0,
4465 XR_MARKER_DETECTOR_CAMERA_WORLD_CAMERAS_ML = 1,
4466 XR_MARKER_DETECTOR_CAMERA_MAX_ENUM_ML = 0x7FFFFFFF
4467} XrMarkerDetectorCameraML;
4468
4469typedef enum XrMarkerDetectorCornerRefineMethodML {
4470 XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_NONE_ML = 0,
4471 XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_SUBPIX_ML = 1,
4472 XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_CONTOUR_ML = 2,
4473 XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_APRIL_TAG_ML = 3,
4474 XR_MARKER_DETECTOR_CORNER_REFINE_METHOD_MAX_ENUM_ML = 0x7FFFFFFF
4475} XrMarkerDetectorCornerRefineMethodML;
4476
4477typedef enum XrMarkerDetectorFullAnalysisIntervalML {
4478 XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MAX_ML = 0,
4479 XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_FAST_ML = 1,
4480 XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MEDIUM_ML = 2,
4481 XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_SLOW_ML = 3,
4482 XR_MARKER_DETECTOR_FULL_ANALYSIS_INTERVAL_MAX_ENUM_ML = 0x7FFFFFFF
4483} XrMarkerDetectorFullAnalysisIntervalML;
4484
4485typedef enum XrMarkerDetectorStatusML {
4486 XR_MARKER_DETECTOR_STATUS_PENDING_ML = 0,
4487 XR_MARKER_DETECTOR_STATUS_READY_ML = 1,
4488 XR_MARKER_DETECTOR_STATUS_ERROR_ML = 2,
4489 XR_MARKER_DETECTOR_STATUS_MAX_ENUM_ML = 0x7FFFFFFF
4490} XrMarkerDetectorStatusML;
4491// XrSystemMarkerUnderstandingPropertiesML extends XrSystemProperties
4492typedef struct XrSystemMarkerUnderstandingPropertiesML {
4493 XrStructureType type;
4494 void* XR_MAY_ALIAS next;
4495 XrBool32 supportsMarkerUnderstanding;
4496} XrSystemMarkerUnderstandingPropertiesML;
4497
4498typedef struct XrMarkerDetectorCreateInfoML {
4499 XrStructureType type;
4500 const void* XR_MAY_ALIAS next;
4501 XrMarkerDetectorProfileML profile;
4502 XrMarkerTypeML markerType;
4503} XrMarkerDetectorCreateInfoML;
4504
4505// XrMarkerDetectorArucoInfoML extends XrMarkerDetectorCreateInfoML
4506typedef struct XrMarkerDetectorArucoInfoML {
4507 XrStructureType type;
4508 const void* XR_MAY_ALIAS next;
4509 XrMarkerArucoDictML arucoDict;
4510} XrMarkerDetectorArucoInfoML;
4511
4512// XrMarkerDetectorSizeInfoML extends XrMarkerDetectorCreateInfoML
4513typedef struct XrMarkerDetectorSizeInfoML {
4514 XrStructureType type;
4515 const void* XR_MAY_ALIAS next;
4516 float markerLength;
4517} XrMarkerDetectorSizeInfoML;
4518
4519// XrMarkerDetectorAprilTagInfoML extends XrMarkerDetectorCreateInfoML
4520typedef struct XrMarkerDetectorAprilTagInfoML {
4521 XrStructureType type;
4522 const void* XR_MAY_ALIAS next;
4523 XrMarkerAprilTagDictML aprilTagDict;
4524} XrMarkerDetectorAprilTagInfoML;
4525
4526// XrMarkerDetectorCustomProfileInfoML extends XrMarkerDetectorCreateInfoML
4527typedef struct XrMarkerDetectorCustomProfileInfoML {
4528 XrStructureType type;
4529 const void* XR_MAY_ALIAS next;
4530 XrMarkerDetectorFpsML fpsHint;
4531 XrMarkerDetectorResolutionML resolutionHint;
4532 XrMarkerDetectorCameraML cameraHint;
4533 XrMarkerDetectorCornerRefineMethodML cornerRefineMethod;
4534 XrBool32 useEdgeRefinement;
4535 XrMarkerDetectorFullAnalysisIntervalML fullAnalysisIntervalHint;
4536} XrMarkerDetectorCustomProfileInfoML;
4537
4538typedef struct XrMarkerDetectorSnapshotInfoML {
4539 XrStructureType type;
4540 const void* XR_MAY_ALIAS next;
4541} XrMarkerDetectorSnapshotInfoML;
4542
4543typedef struct XrMarkerDetectorStateML {
4544 XrStructureType type;
4545 void* XR_MAY_ALIAS next;
4546 XrMarkerDetectorStatusML state;
4547} XrMarkerDetectorStateML;
4548
4549typedef struct XrMarkerSpaceCreateInfoML {
4550 XrStructureType type;
4551 const void* XR_MAY_ALIAS next;
4552 XrMarkerDetectorML markerDetector;
4553 XrMarkerML marker;
4554 XrPosef poseInMarkerSpace;
4555} XrMarkerSpaceCreateInfoML;
4556
4557typedef XrResult (XRAPI_PTR *PFN_xrCreateMarkerDetectorML)(XrSession session, const XrMarkerDetectorCreateInfoML* createInfo, XrMarkerDetectorML* markerDetector);
4558typedef XrResult (XRAPI_PTR *PFN_xrDestroyMarkerDetectorML)(XrMarkerDetectorML markerDetector);
4559typedef XrResult (XRAPI_PTR *PFN_xrSnapshotMarkerDetectorML)(XrMarkerDetectorML markerDetector, XrMarkerDetectorSnapshotInfoML* snapshotInfo);
4560typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerDetectorStateML)(XrMarkerDetectorML markerDetector, XrMarkerDetectorStateML* state);
4561typedef XrResult (XRAPI_PTR *PFN_xrGetMarkersML)(XrMarkerDetectorML markerDetector, uint32_t markerCapacityInput, uint32_t* markerCountOutput, XrMarkerML* markers);
4562typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerReprojectionErrorML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, float* reprojectionErrorMeters);
4563typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerLengthML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, float* meters);
4564typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerNumberML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, uint64_t* number);
4565typedef XrResult (XRAPI_PTR *PFN_xrGetMarkerStringML)(XrMarkerDetectorML markerDetector, XrMarkerML marker, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer);
4566typedef XrResult (XRAPI_PTR *PFN_xrCreateMarkerSpaceML)(XrSession session, const XrMarkerSpaceCreateInfoML* createInfo, XrSpace* space);
4567
4568#ifndef XR_NO_PROTOTYPES
4569#ifdef XR_EXTENSION_PROTOTYPES
4570XRAPI_ATTR XrResult XRAPI_CALL xrCreateMarkerDetectorML(
4571 XrSession session,
4572 const XrMarkerDetectorCreateInfoML* createInfo,
4573 XrMarkerDetectorML* markerDetector);
4574
4575XRAPI_ATTR XrResult XRAPI_CALL xrDestroyMarkerDetectorML(
4576 XrMarkerDetectorML markerDetector);
4577
4578XRAPI_ATTR XrResult XRAPI_CALL xrSnapshotMarkerDetectorML(
4579 XrMarkerDetectorML markerDetector,
4580 XrMarkerDetectorSnapshotInfoML* snapshotInfo);
4581
4582XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerDetectorStateML(
4583 XrMarkerDetectorML markerDetector,
4584 XrMarkerDetectorStateML* state);
4585
4586XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkersML(
4587 XrMarkerDetectorML markerDetector,
4588 uint32_t markerCapacityInput,
4589 uint32_t* markerCountOutput,
4590 XrMarkerML* markers);
4591
4592XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerReprojectionErrorML(
4593 XrMarkerDetectorML markerDetector,
4594 XrMarkerML marker,
4595 float* reprojectionErrorMeters);
4596
4597XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerLengthML(
4598 XrMarkerDetectorML markerDetector,
4599 XrMarkerML marker,
4600 float* meters);
4601
4602XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerNumberML(
4603 XrMarkerDetectorML markerDetector,
4604 XrMarkerML marker,
4605 uint64_t* number);
4606
4607XRAPI_ATTR XrResult XRAPI_CALL xrGetMarkerStringML(
4608 XrMarkerDetectorML markerDetector,
4609 XrMarkerML marker,
4610 uint32_t bufferCapacityInput,
4611 uint32_t* bufferCountOutput,
4612 char* buffer);
4613
4614XRAPI_ATTR XrResult XRAPI_CALL xrCreateMarkerSpaceML(
4615 XrSession session,
4616 const XrMarkerSpaceCreateInfoML* createInfo,
4617 XrSpace* space);
4618#endif /* XR_EXTENSION_PROTOTYPES */
4619#endif /* !XR_NO_PROTOTYPES */
4620
4621
4622#define XR_ML_localization_map 1
4623XR_DEFINE_HANDLE(XrExportedLocalizationMapML)
4624#define XR_MAX_LOCALIZATION_MAP_NAME_LENGTH_ML 64
4625#define XR_ML_localization_map_SPEC_VERSION 1
4626#define XR_ML_LOCALIZATION_MAP_EXTENSION_NAME "XR_ML_localization_map"
4627
4628typedef enum XrLocalizationMapStateML {
4629 XR_LOCALIZATION_MAP_STATE_NOT_LOCALIZED_ML = 0,
4630 XR_LOCALIZATION_MAP_STATE_LOCALIZED_ML = 1,
4631 XR_LOCALIZATION_MAP_STATE_LOCALIZATION_PENDING_ML = 2,
4632 XR_LOCALIZATION_MAP_STATE_LOCALIZATION_SLEEPING_BEFORE_RETRY_ML = 3,
4633 XR_LOCALIZATION_MAP_STATE_MAX_ENUM_ML = 0x7FFFFFFF
4634} XrLocalizationMapStateML;
4635
4636typedef enum XrLocalizationMapTypeML {
4637 XR_LOCALIZATION_MAP_TYPE_ON_DEVICE_ML = 0,
4638 XR_LOCALIZATION_MAP_TYPE_CLOUD_ML = 1,
4639 XR_LOCALIZATION_MAP_TYPE_MAX_ENUM_ML = 0x7FFFFFFF
4640} XrLocalizationMapTypeML;
4641
4642typedef enum XrLocalizationMapConfidenceML {
4643 XR_LOCALIZATION_MAP_CONFIDENCE_POOR_ML = 0,
4644 XR_LOCALIZATION_MAP_CONFIDENCE_FAIR_ML = 1,
4645 XR_LOCALIZATION_MAP_CONFIDENCE_GOOD_ML = 2,
4646 XR_LOCALIZATION_MAP_CONFIDENCE_EXCELLENT_ML = 3,
4647 XR_LOCALIZATION_MAP_CONFIDENCE_MAX_ENUM_ML = 0x7FFFFFFF
4648} XrLocalizationMapConfidenceML;
4649typedef XrFlags64 XrLocalizationMapErrorFlagsML;
4650
4651// Flag bits for XrLocalizationMapErrorFlagsML
4652static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_UNKNOWN_BIT_ML = 0x00000001;
4653static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_OUT_OF_MAPPED_AREA_BIT_ML = 0x00000002;
4654static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_LOW_FEATURE_COUNT_BIT_ML = 0x00000004;
4655static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_EXCESSIVE_MOTION_BIT_ML = 0x00000008;
4656static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_LOW_LIGHT_BIT_ML = 0x00000010;
4657static const XrLocalizationMapErrorFlagsML XR_LOCALIZATION_MAP_ERROR_HEADPOSE_BIT_ML = 0x00000020;
4658
4659typedef struct XrLocalizationMapML {
4660 XrStructureType type;
4661 void* XR_MAY_ALIAS next;
4662 char name[XR_MAX_LOCALIZATION_MAP_NAME_LENGTH_ML];
4663 XrUuidEXT mapUuid;
4664 XrLocalizationMapTypeML mapType;
4665} XrLocalizationMapML;
4666
4667typedef struct XrEventDataLocalizationChangedML {
4668 XrStructureType type;
4669 const void* XR_MAY_ALIAS next;
4670 XrSession session;
4671 XrLocalizationMapStateML state;
4672 XrLocalizationMapML map;
4673 XrLocalizationMapConfidenceML confidence;
4674 XrLocalizationMapErrorFlagsML errorFlags;
4675} XrEventDataLocalizationChangedML;
4676
4677typedef struct XrLocalizationMapQueryInfoBaseHeaderML {
4678 XrStructureType type;
4679 const void* XR_MAY_ALIAS next;
4680} XrLocalizationMapQueryInfoBaseHeaderML;
4681
4682typedef struct XrMapLocalizationRequestInfoML {
4683 XrStructureType type;
4684 const void* XR_MAY_ALIAS next;
4685 XrUuidEXT mapUuid;
4686} XrMapLocalizationRequestInfoML;
4687
4688typedef struct XrLocalizationMapImportInfoML {
4689 XrStructureType type;
4690 const void* XR_MAY_ALIAS next;
4691 uint32_t size;
4692 char* data;
4693} XrLocalizationMapImportInfoML;
4694
4695typedef struct XrLocalizationEnableEventsInfoML {
4696 XrStructureType type;
4697 const void* XR_MAY_ALIAS next;
4698 XrBool32 enabled;
4699} XrLocalizationEnableEventsInfoML;
4700
4701typedef XrResult (XRAPI_PTR *PFN_xrEnableLocalizationEventsML)(XrSession session, const XrLocalizationEnableEventsInfoML * info);
4702typedef XrResult (XRAPI_PTR *PFN_xrQueryLocalizationMapsML)(XrSession session, const XrLocalizationMapQueryInfoBaseHeaderML* queryInfo, uint32_t mapCapacityInput, uint32_t * mapCountOutput, XrLocalizationMapML* maps);
4703typedef XrResult (XRAPI_PTR *PFN_xrRequestMapLocalizationML)(XrSession session, const XrMapLocalizationRequestInfoML* requestInfo);
4704typedef XrResult (XRAPI_PTR *PFN_xrImportLocalizationMapML)(XrSession session, const XrLocalizationMapImportInfoML* importInfo, XrUuidEXT* mapUuid);
4705typedef XrResult (XRAPI_PTR *PFN_xrCreateExportedLocalizationMapML)(XrSession session, const XrUuidEXT* mapUuid, XrExportedLocalizationMapML* map);
4706typedef XrResult (XRAPI_PTR *PFN_xrDestroyExportedLocalizationMapML)(XrExportedLocalizationMapML map);
4707typedef XrResult (XRAPI_PTR *PFN_xrGetExportedLocalizationMapDataML)(XrExportedLocalizationMapML map, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer);
4708
4709#ifndef XR_NO_PROTOTYPES
4710#ifdef XR_EXTENSION_PROTOTYPES
4711XRAPI_ATTR XrResult XRAPI_CALL xrEnableLocalizationEventsML(
4712 XrSession session,
4713 const XrLocalizationEnableEventsInfoML * info);
4714
4715XRAPI_ATTR XrResult XRAPI_CALL xrQueryLocalizationMapsML(
4716 XrSession session,
4717 const XrLocalizationMapQueryInfoBaseHeaderML* queryInfo,
4718 uint32_t mapCapacityInput,
4719 uint32_t * mapCountOutput,
4720 XrLocalizationMapML* maps);
4721
4722XRAPI_ATTR XrResult XRAPI_CALL xrRequestMapLocalizationML(
4723 XrSession session,
4724 const XrMapLocalizationRequestInfoML* requestInfo);
4725
4726XRAPI_ATTR XrResult XRAPI_CALL xrImportLocalizationMapML(
4727 XrSession session,
4728 const XrLocalizationMapImportInfoML* importInfo,
4729 XrUuidEXT* mapUuid);
4730
4731XRAPI_ATTR XrResult XRAPI_CALL xrCreateExportedLocalizationMapML(
4732 XrSession session,
4733 const XrUuidEXT* mapUuid,
4734 XrExportedLocalizationMapML* map);
4735
4736XRAPI_ATTR XrResult XRAPI_CALL xrDestroyExportedLocalizationMapML(
4737 XrExportedLocalizationMapML map);
4738
4739XRAPI_ATTR XrResult XRAPI_CALL xrGetExportedLocalizationMapDataML(
4740 XrExportedLocalizationMapML map,
4741 uint32_t bufferCapacityInput,
4742 uint32_t* bufferCountOutput,
4743 char* buffer);
4744#endif /* XR_EXTENSION_PROTOTYPES */
4745#endif /* !XR_NO_PROTOTYPES */
4746
4747
4748#define XR_MSFT_spatial_anchor_persistence 1
4749XR_DEFINE_HANDLE(XrSpatialAnchorStoreConnectionMSFT)
4750#define XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_MSFT 256
4751#define XR_MSFT_spatial_anchor_persistence_SPEC_VERSION 2
4752#define XR_MSFT_SPATIAL_ANCHOR_PERSISTENCE_EXTENSION_NAME "XR_MSFT_spatial_anchor_persistence"
4753typedef struct XrSpatialAnchorPersistenceNameMSFT {
4754 char name[XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_MSFT];
4755} XrSpatialAnchorPersistenceNameMSFT;
4756
4757typedef struct XrSpatialAnchorPersistenceInfoMSFT {
4758 XrStructureType type;
4759 const void* XR_MAY_ALIAS next;
4760 XrSpatialAnchorPersistenceNameMSFT spatialAnchorPersistenceName;
4761 XrSpatialAnchorMSFT spatialAnchor;
4762} XrSpatialAnchorPersistenceInfoMSFT;
4763
4764typedef struct XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT {
4765 XrStructureType type;
4766 const void* XR_MAY_ALIAS next;
4767 XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore;
4768 XrSpatialAnchorPersistenceNameMSFT spatialAnchorPersistenceName;
4769} XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT;
4770
4771typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorStoreConnectionMSFT)(XrSession session, XrSpatialAnchorStoreConnectionMSFT* spatialAnchorStore);
4772typedef XrResult (XRAPI_PTR *PFN_xrDestroySpatialAnchorStoreConnectionMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore);
4773typedef XrResult (XRAPI_PTR *PFN_xrPersistSpatialAnchorMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, const XrSpatialAnchorPersistenceInfoMSFT* spatialAnchorPersistenceInfo);
4774typedef XrResult (XRAPI_PTR *PFN_xrEnumeratePersistedSpatialAnchorNamesMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, uint32_t spatialAnchorNameCapacityInput, uint32_t* spatialAnchorNameCountOutput, XrSpatialAnchorPersistenceNameMSFT* spatialAnchorNames);
4775typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorFromPersistedNameMSFT)(XrSession session, const XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT* spatialAnchorCreateInfo, XrSpatialAnchorMSFT* spatialAnchor);
4776typedef XrResult (XRAPI_PTR *PFN_xrUnpersistSpatialAnchorMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore, const XrSpatialAnchorPersistenceNameMSFT* spatialAnchorPersistenceName);
4777typedef XrResult (XRAPI_PTR *PFN_xrClearSpatialAnchorStoreMSFT)(XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore);
4778
4779#ifndef XR_NO_PROTOTYPES
4780#ifdef XR_EXTENSION_PROTOTYPES
4781XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorStoreConnectionMSFT(
4782 XrSession session,
4783 XrSpatialAnchorStoreConnectionMSFT* spatialAnchorStore);
4784
4785XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpatialAnchorStoreConnectionMSFT(
4786 XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore);
4787
4788XRAPI_ATTR XrResult XRAPI_CALL xrPersistSpatialAnchorMSFT(
4789 XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore,
4790 const XrSpatialAnchorPersistenceInfoMSFT* spatialAnchorPersistenceInfo);
4791
4792XRAPI_ATTR XrResult XRAPI_CALL xrEnumeratePersistedSpatialAnchorNamesMSFT(
4793 XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore,
4794 uint32_t spatialAnchorNameCapacityInput,
4795 uint32_t* spatialAnchorNameCountOutput,
4796 XrSpatialAnchorPersistenceNameMSFT* spatialAnchorNames);
4797
4798XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorFromPersistedNameMSFT(
4799 XrSession session,
4800 const XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT* spatialAnchorCreateInfo,
4801 XrSpatialAnchorMSFT* spatialAnchor);
4802
4803XRAPI_ATTR XrResult XRAPI_CALL xrUnpersistSpatialAnchorMSFT(
4804 XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore,
4805 const XrSpatialAnchorPersistenceNameMSFT* spatialAnchorPersistenceName);
4806
4807XRAPI_ATTR XrResult XRAPI_CALL xrClearSpatialAnchorStoreMSFT(
4808 XrSpatialAnchorStoreConnectionMSFT spatialAnchorStore);
4809#endif /* XR_EXTENSION_PROTOTYPES */
4810#endif /* !XR_NO_PROTOTYPES */
4811
4812
4813#define XR_MSFT_scene_marker 1
4814#define XR_MSFT_scene_marker_SPEC_VERSION 1
4815#define XR_MSFT_SCENE_MARKER_EXTENSION_NAME "XR_MSFT_scene_marker"
4816
4817typedef enum XrSceneMarkerTypeMSFT {
4818 XR_SCENE_MARKER_TYPE_QR_CODE_MSFT = 1,
4819 XR_SCENE_MARKER_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
4820} XrSceneMarkerTypeMSFT;
4821
4822typedef enum XrSceneMarkerQRCodeSymbolTypeMSFT {
4823 XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE_QR_CODE_MSFT = 1,
4824 XR_SCENE_MARKER_QR_CODE_SYMBOL_TYPE_MICRO_QR_CODE_MSFT = 2,
4825 XR_SCENE_MARKER_QRCODE_SYMBOL_TYPE_MAX_ENUM_MSFT = 0x7FFFFFFF
4826} XrSceneMarkerQRCodeSymbolTypeMSFT;
4827typedef struct XrSceneMarkerMSFT {
4828 XrSceneMarkerTypeMSFT markerType;
4829 XrTime lastSeenTime;
4830 XrOffset2Df center;
4831 XrExtent2Df size;
4832} XrSceneMarkerMSFT;
4833
4834// XrSceneMarkersMSFT extends XrSceneComponentsMSFT
4835typedef struct XrSceneMarkersMSFT {
4836 XrStructureType type;
4837 const void* XR_MAY_ALIAS next;
4838 uint32_t sceneMarkerCapacityInput;
4839 XrSceneMarkerMSFT* sceneMarkers;
4840} XrSceneMarkersMSFT;
4841
4842// XrSceneMarkerTypeFilterMSFT extends XrSceneComponentsGetInfoMSFT
4843typedef struct XrSceneMarkerTypeFilterMSFT {
4844 XrStructureType type;
4845 const void* XR_MAY_ALIAS next;
4846 uint32_t markerTypeCount;
4847 XrSceneMarkerTypeMSFT* markerTypes;
4848} XrSceneMarkerTypeFilterMSFT;
4849
4850typedef struct XrSceneMarkerQRCodeMSFT {
4851 XrSceneMarkerQRCodeSymbolTypeMSFT symbolType;
4852 uint8_t version;
4853} XrSceneMarkerQRCodeMSFT;
4854
4855// XrSceneMarkerQRCodesMSFT extends XrSceneComponentsMSFT
4856typedef struct XrSceneMarkerQRCodesMSFT {
4857 XrStructureType type;
4858 const void* XR_MAY_ALIAS next;
4859 uint32_t qrCodeCapacityInput;
4860 XrSceneMarkerQRCodeMSFT* qrCodes;
4861} XrSceneMarkerQRCodesMSFT;
4862
4863typedef XrResult (XRAPI_PTR *PFN_xrGetSceneMarkerRawDataMSFT)(XrSceneMSFT scene, const XrUuidMSFT* markerId, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, uint8_t* buffer);
4864typedef XrResult (XRAPI_PTR *PFN_xrGetSceneMarkerDecodedStringMSFT)(XrSceneMSFT scene, const XrUuidMSFT* markerId, uint32_t bufferCapacityInput, uint32_t* bufferCountOutput, char* buffer);
4865
4866#ifndef XR_NO_PROTOTYPES
4867#ifdef XR_EXTENSION_PROTOTYPES
4868XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMarkerRawDataMSFT(
4869 XrSceneMSFT scene,
4870 const XrUuidMSFT* markerId,
4871 uint32_t bufferCapacityInput,
4872 uint32_t* bufferCountOutput,
4873 uint8_t* buffer);
4874
4875XRAPI_ATTR XrResult XRAPI_CALL xrGetSceneMarkerDecodedStringMSFT(
4876 XrSceneMSFT scene,
4877 const XrUuidMSFT* markerId,
4878 uint32_t bufferCapacityInput,
4879 uint32_t* bufferCountOutput,
4880 char* buffer);
4881#endif /* XR_EXTENSION_PROTOTYPES */
4882#endif /* !XR_NO_PROTOTYPES */
4883
4884
4885#define XR_ULTRALEAP_hand_tracking_forearm 1
4886
4887#define XR_HAND_FOREARM_JOINT_COUNT_ULTRALEAP 27
4888
4889#define XR_ULTRALEAP_hand_tracking_forearm_SPEC_VERSION 1
4890#define XR_ULTRALEAP_HAND_TRACKING_FOREARM_EXTENSION_NAME "XR_ULTRALEAP_hand_tracking_forearm"
4891
4892typedef enum XrHandForearmJointULTRALEAP {
4893 XR_HAND_FOREARM_JOINT_PALM_ULTRALEAP = 0,
4894 XR_HAND_FOREARM_JOINT_WRIST_ULTRALEAP = 1,
4895 XR_HAND_FOREARM_JOINT_THUMB_METACARPAL_ULTRALEAP = 2,
4896 XR_HAND_FOREARM_JOINT_THUMB_PROXIMAL_ULTRALEAP = 3,
4897 XR_HAND_FOREARM_JOINT_THUMB_DISTAL_ULTRALEAP = 4,
4898 XR_HAND_FOREARM_JOINT_THUMB_TIP_ULTRALEAP = 5,
4899 XR_HAND_FOREARM_JOINT_INDEX_METACARPAL_ULTRALEAP = 6,
4900 XR_HAND_FOREARM_JOINT_INDEX_PROXIMAL_ULTRALEAP = 7,
4901 XR_HAND_FOREARM_JOINT_INDEX_INTERMEDIATE_ULTRALEAP = 8,
4902 XR_HAND_FOREARM_JOINT_INDEX_DISTAL_ULTRALEAP = 9,
4903 XR_HAND_FOREARM_JOINT_INDEX_TIP_ULTRALEAP = 10,
4904 XR_HAND_FOREARM_JOINT_MIDDLE_METACARPAL_ULTRALEAP = 11,
4905 XR_HAND_FOREARM_JOINT_MIDDLE_PROXIMAL_ULTRALEAP = 12,
4906 XR_HAND_FOREARM_JOINT_MIDDLE_INTERMEDIATE_ULTRALEAP = 13,
4907 XR_HAND_FOREARM_JOINT_MIDDLE_DISTAL_ULTRALEAP = 14,
4908 XR_HAND_FOREARM_JOINT_MIDDLE_TIP_ULTRALEAP = 15,
4909 XR_HAND_FOREARM_JOINT_RING_METACARPAL_ULTRALEAP = 16,
4910 XR_HAND_FOREARM_JOINT_RING_PROXIMAL_ULTRALEAP = 17,
4911 XR_HAND_FOREARM_JOINT_RING_INTERMEDIATE_ULTRALEAP = 18,
4912 XR_HAND_FOREARM_JOINT_RING_DISTAL_ULTRALEAP = 19,
4913 XR_HAND_FOREARM_JOINT_RING_TIP_ULTRALEAP = 20,
4914 XR_HAND_FOREARM_JOINT_LITTLE_METACARPAL_ULTRALEAP = 21,
4915 XR_HAND_FOREARM_JOINT_LITTLE_PROXIMAL_ULTRALEAP = 22,
4916 XR_HAND_FOREARM_JOINT_LITTLE_INTERMEDIATE_ULTRALEAP = 23,
4917 XR_HAND_FOREARM_JOINT_LITTLE_DISTAL_ULTRALEAP = 24,
4918 XR_HAND_FOREARM_JOINT_LITTLE_TIP_ULTRALEAP = 25,
4919 XR_HAND_FOREARM_JOINT_ELBOW_ULTRALEAP = 26,
4920 XR_HAND_FOREARM_JOINT_MAX_ENUM_ULTRALEAP = 0x7FFFFFFF
4921} XrHandForearmJointULTRALEAP;
4922
4923
4924#define XR_FB_spatial_entity_query 1
4925#define XR_FB_spatial_entity_query_SPEC_VERSION 1
4926#define XR_FB_SPATIAL_ENTITY_QUERY_EXTENSION_NAME "XR_FB_spatial_entity_query"
4927
4928typedef enum XrSpaceQueryActionFB {
4929 XR_SPACE_QUERY_ACTION_LOAD_FB = 0,
4930 XR_SPACE_QUERY_ACTION_MAX_ENUM_FB = 0x7FFFFFFF
4931} XrSpaceQueryActionFB;
4932
4933typedef enum XrSpaceStorageLocationFB {
4934 XR_SPACE_STORAGE_LOCATION_INVALID_FB = 0,
4935 XR_SPACE_STORAGE_LOCATION_LOCAL_FB = 1,
4936 XR_SPACE_STORAGE_LOCATION_CLOUD_FB = 2,
4937 XR_SPACE_STORAGE_LOCATION_MAX_ENUM_FB = 0x7FFFFFFF
4938} XrSpaceStorageLocationFB;
4939typedef struct XR_MAY_ALIAS XrSpaceQueryInfoBaseHeaderFB {
4940 XrStructureType type;
4941 const void* XR_MAY_ALIAS next;
4942} XrSpaceQueryInfoBaseHeaderFB;
4943
4944typedef struct XR_MAY_ALIAS XrSpaceFilterInfoBaseHeaderFB {
4945 XrStructureType type;
4946 const void* XR_MAY_ALIAS next;
4947} XrSpaceFilterInfoBaseHeaderFB;
4948
4949typedef struct XrSpaceQueryInfoFB {
4950 XrStructureType type;
4951 const void* XR_MAY_ALIAS next;
4952 XrSpaceQueryActionFB queryAction;
4953 uint32_t maxResultCount;
4954 XrDuration timeout;
4955 const XrSpaceFilterInfoBaseHeaderFB* filter;
4956 const XrSpaceFilterInfoBaseHeaderFB* excludeFilter;
4957} XrSpaceQueryInfoFB;
4958
4959// XrSpaceStorageLocationFilterInfoFB extends XrSpaceFilterInfoBaseHeaderFB
4960typedef struct XrSpaceStorageLocationFilterInfoFB {
4961 XrStructureType type;
4962 const void* XR_MAY_ALIAS next;
4963 XrSpaceStorageLocationFB location;
4964} XrSpaceStorageLocationFilterInfoFB;
4965
4966typedef struct XrSpaceUuidFilterInfoFB {
4967 XrStructureType type;
4968 const void* XR_MAY_ALIAS next;
4969 uint32_t uuidCount;
4970 XrUuidEXT* uuids;
4971} XrSpaceUuidFilterInfoFB;
4972
4973typedef struct XrSpaceComponentFilterInfoFB {
4974 XrStructureType type;
4975 const void* XR_MAY_ALIAS next;
4976 XrSpaceComponentTypeFB componentType;
4977} XrSpaceComponentFilterInfoFB;
4978
4979typedef struct XrSpaceQueryResultFB {
4980 XrSpace space;
4981 XrUuidEXT uuid;
4982} XrSpaceQueryResultFB;
4983
4984typedef struct XrSpaceQueryResultsFB {
4985 XrStructureType type;
4986 void* XR_MAY_ALIAS next;
4987 uint32_t resultCapacityInput;
4988 uint32_t resultCountOutput;
4989 XrSpaceQueryResultFB* results;
4990} XrSpaceQueryResultsFB;
4991
4992typedef struct XrEventDataSpaceQueryResultsAvailableFB {
4993 XrStructureType type;
4994 const void* XR_MAY_ALIAS next;
4995 XrAsyncRequestIdFB requestId;
4996} XrEventDataSpaceQueryResultsAvailableFB;
4997
4998typedef struct XrEventDataSpaceQueryCompleteFB {
4999 XrStructureType type;
5000 const void* XR_MAY_ALIAS next;
5001 XrAsyncRequestIdFB requestId;
5002 XrResult result;
5003} XrEventDataSpaceQueryCompleteFB;
5004
5005typedef XrResult (XRAPI_PTR *PFN_xrQuerySpacesFB)(XrSession session, const XrSpaceQueryInfoBaseHeaderFB* info, XrAsyncRequestIdFB* requestId);
5006typedef XrResult (XRAPI_PTR *PFN_xrRetrieveSpaceQueryResultsFB)(XrSession session, XrAsyncRequestIdFB requestId, XrSpaceQueryResultsFB* results);
5007
5008#ifndef XR_NO_PROTOTYPES
5009#ifdef XR_EXTENSION_PROTOTYPES
5010XRAPI_ATTR XrResult XRAPI_CALL xrQuerySpacesFB(
5011 XrSession session,
5012 const XrSpaceQueryInfoBaseHeaderFB* info,
5013 XrAsyncRequestIdFB* requestId);
5014
5015XRAPI_ATTR XrResult XRAPI_CALL xrRetrieveSpaceQueryResultsFB(
5016 XrSession session,
5017 XrAsyncRequestIdFB requestId,
5018 XrSpaceQueryResultsFB* results);
5019#endif /* XR_EXTENSION_PROTOTYPES */
5020#endif /* !XR_NO_PROTOTYPES */
5021
5022
5023#define XR_FB_spatial_entity_storage 1
5024#define XR_FB_spatial_entity_storage_SPEC_VERSION 1
5025#define XR_FB_SPATIAL_ENTITY_STORAGE_EXTENSION_NAME "XR_FB_spatial_entity_storage"
5026
5027typedef enum XrSpacePersistenceModeFB {
5028 XR_SPACE_PERSISTENCE_MODE_INVALID_FB = 0,
5029 XR_SPACE_PERSISTENCE_MODE_INDEFINITE_FB = 1,
5030 XR_SPACE_PERSISTENCE_MODE_MAX_ENUM_FB = 0x7FFFFFFF
5031} XrSpacePersistenceModeFB;
5032typedef struct XrSpaceSaveInfoFB {
5033 XrStructureType type;
5034 const void* XR_MAY_ALIAS next;
5035 XrSpace space;
5036 XrSpaceStorageLocationFB location;
5037 XrSpacePersistenceModeFB persistenceMode;
5038} XrSpaceSaveInfoFB;
5039
5040typedef struct XrSpaceEraseInfoFB {
5041 XrStructureType type;
5042 const void* XR_MAY_ALIAS next;
5043 XrSpace space;
5044 XrSpaceStorageLocationFB location;
5045} XrSpaceEraseInfoFB;
5046
5047typedef struct XrEventDataSpaceSaveCompleteFB {
5048 XrStructureType type;
5049 const void* XR_MAY_ALIAS next;
5050 XrAsyncRequestIdFB requestId;
5051 XrResult result;
5052 XrSpace space;
5053 XrUuidEXT uuid;
5054 XrSpaceStorageLocationFB location;
5055} XrEventDataSpaceSaveCompleteFB;
5056
5057typedef struct XrEventDataSpaceEraseCompleteFB {
5058 XrStructureType type;
5059 const void* XR_MAY_ALIAS next;
5060 XrAsyncRequestIdFB requestId;
5061 XrResult result;
5062 XrSpace space;
5063 XrUuidEXT uuid;
5064 XrSpaceStorageLocationFB location;
5065} XrEventDataSpaceEraseCompleteFB;
5066
5067typedef XrResult (XRAPI_PTR *PFN_xrSaveSpaceFB)(XrSession session, const XrSpaceSaveInfoFB* info, XrAsyncRequestIdFB* requestId);
5068typedef XrResult (XRAPI_PTR *PFN_xrEraseSpaceFB)(XrSession session, const XrSpaceEraseInfoFB* info, XrAsyncRequestIdFB* requestId);
5069
5070#ifndef XR_NO_PROTOTYPES
5071#ifdef XR_EXTENSION_PROTOTYPES
5072XRAPI_ATTR XrResult XRAPI_CALL xrSaveSpaceFB(
5073 XrSession session,
5074 const XrSpaceSaveInfoFB* info,
5075 XrAsyncRequestIdFB* requestId);
5076
5077XRAPI_ATTR XrResult XRAPI_CALL xrEraseSpaceFB(
5078 XrSession session,
5079 const XrSpaceEraseInfoFB* info,
5080 XrAsyncRequestIdFB* requestId);
5081#endif /* XR_EXTENSION_PROTOTYPES */
5082#endif /* !XR_NO_PROTOTYPES */
5083
5084
5085#define XR_FB_touch_controller_pro 1
5086#define XR_FB_touch_controller_pro_SPEC_VERSION 1
5087#define XR_FB_TOUCH_CONTROLLER_PRO_EXTENSION_NAME "XR_FB_touch_controller_pro"
5088
5089
5090#define XR_FB_spatial_entity_sharing 1
5091XR_DEFINE_HANDLE(XrSpaceUserFB)
5092#define XR_FB_spatial_entity_sharing_SPEC_VERSION 1
5093#define XR_FB_SPATIAL_ENTITY_SHARING_EXTENSION_NAME "XR_FB_spatial_entity_sharing"
5094typedef struct XrSpaceShareInfoFB {
5095 XrStructureType type;
5096 const void* XR_MAY_ALIAS next;
5097 uint32_t spaceCount;
5098 XrSpace* spaces;
5099 uint32_t userCount;
5100 XrSpaceUserFB* users;
5101} XrSpaceShareInfoFB;
5102
5103typedef struct XrEventDataSpaceShareCompleteFB {
5104 XrStructureType type;
5105 const void* XR_MAY_ALIAS next;
5106 XrAsyncRequestIdFB requestId;
5107 XrResult result;
5108} XrEventDataSpaceShareCompleteFB;
5109
5110typedef XrResult (XRAPI_PTR *PFN_xrShareSpacesFB)(XrSession session, const XrSpaceShareInfoFB* info, XrAsyncRequestIdFB* requestId);
5111
5112#ifndef XR_NO_PROTOTYPES
5113#ifdef XR_EXTENSION_PROTOTYPES
5114XRAPI_ATTR XrResult XRAPI_CALL xrShareSpacesFB(
5115 XrSession session,
5116 const XrSpaceShareInfoFB* info,
5117 XrAsyncRequestIdFB* requestId);
5118#endif /* XR_EXTENSION_PROTOTYPES */
5119#endif /* !XR_NO_PROTOTYPES */
5120
5121
5122#define XR_FB_space_warp 1
5123#define XR_FB_space_warp_SPEC_VERSION 2
5124#define XR_FB_SPACE_WARP_EXTENSION_NAME "XR_FB_space_warp"
5125typedef XrFlags64 XrCompositionLayerSpaceWarpInfoFlagsFB;
5126
5127// Flag bits for XrCompositionLayerSpaceWarpInfoFlagsFB
5128static const XrCompositionLayerSpaceWarpInfoFlagsFB XR_COMPOSITION_LAYER_SPACE_WARP_INFO_FRAME_SKIP_BIT_FB = 0x00000001;
5129
5130// XrCompositionLayerSpaceWarpInfoFB extends XrCompositionLayerProjectionView
5131typedef struct XrCompositionLayerSpaceWarpInfoFB {
5132 XrStructureType type;
5133 const void* XR_MAY_ALIAS next;
5134 XrCompositionLayerSpaceWarpInfoFlagsFB layerFlags;
5135 XrSwapchainSubImage motionVectorSubImage;
5136 XrPosef appSpaceDeltaPose;
5137 XrSwapchainSubImage depthSubImage;
5138 float minDepth;
5139 float maxDepth;
5140 float nearZ;
5141 float farZ;
5142} XrCompositionLayerSpaceWarpInfoFB;
5143
5144// XrSystemSpaceWarpPropertiesFB extends XrSystemProperties
5145typedef struct XrSystemSpaceWarpPropertiesFB {
5146 XrStructureType type;
5147 void* XR_MAY_ALIAS next;
5148 uint32_t recommendedMotionVectorImageRectWidth;
5149 uint32_t recommendedMotionVectorImageRectHeight;
5150} XrSystemSpaceWarpPropertiesFB;
5151
5152
5153
5154#define XR_FB_haptic_amplitude_envelope 1
5155
5156#define XR_MAX_HAPTIC_AMPLITUDE_ENVELOPE_SAMPLES_FB 4000u
5157
5158#define XR_FB_haptic_amplitude_envelope_SPEC_VERSION 1
5159#define XR_FB_HAPTIC_AMPLITUDE_ENVELOPE_EXTENSION_NAME "XR_FB_haptic_amplitude_envelope"
5160typedef struct XrHapticAmplitudeEnvelopeVibrationFB {
5161 XrStructureType type;
5162 const void* XR_MAY_ALIAS next;
5163 XrDuration duration;
5164 uint32_t amplitudeCount;
5165 const float* amplitudes;
5166} XrHapticAmplitudeEnvelopeVibrationFB;
5167
5168
5169
5170#define XR_FB_scene 1
5171#define XR_FB_scene_SPEC_VERSION 4
5172#define XR_FB_SCENE_EXTENSION_NAME "XR_FB_scene"
5173typedef XrFlags64 XrSemanticLabelsSupportFlagsFB;
5174
5175// Flag bits for XrSemanticLabelsSupportFlagsFB
5176static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_MULTIPLE_SEMANTIC_LABELS_BIT_FB = 0x00000001;
5177static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_DESK_TO_TABLE_MIGRATION_BIT_FB = 0x00000002;
5178static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_INVISIBLE_WALL_FACE_BIT_FB = 0x00000004;
5179
5180typedef struct XrExtent3DfFB {
5181 float width;
5182 float height;
5183 float depth;
5184} XrExtent3DfFB;
5185
5186typedef struct XrOffset3DfFB {
5187 float x;
5188 float y;
5189 float z;
5190} XrOffset3DfFB;
5191
5192typedef struct XrRect3DfFB {
5193 XrOffset3DfFB offset;
5194 XrExtent3DfFB extent;
5195} XrRect3DfFB;
5196
5197typedef struct XrSemanticLabelsFB {
5198 XrStructureType type;
5199 const void* XR_MAY_ALIAS next;
5200 uint32_t bufferCapacityInput;
5201 uint32_t bufferCountOutput;
5202 char* buffer;
5203} XrSemanticLabelsFB;
5204
5205typedef struct XrRoomLayoutFB {
5206 XrStructureType type;
5207 const void* XR_MAY_ALIAS next;
5208 XrUuidEXT floorUuid;
5209 XrUuidEXT ceilingUuid;
5210 uint32_t wallUuidCapacityInput;
5211 uint32_t wallUuidCountOutput;
5212 XrUuidEXT* wallUuids;
5213} XrRoomLayoutFB;
5214
5215typedef struct XrBoundary2DFB {
5216 XrStructureType type;
5217 const void* XR_MAY_ALIAS next;
5218 uint32_t vertexCapacityInput;
5219 uint32_t vertexCountOutput;
5220 XrVector2f* vertices;
5221} XrBoundary2DFB;
5222
5223typedef struct XrSemanticLabelsSupportInfoFB {
5224 XrStructureType type;
5225 const void* XR_MAY_ALIAS next;
5226 XrSemanticLabelsSupportFlagsFB flags;
5227 const char* recognizedLabels;
5228} XrSemanticLabelsSupportInfoFB;
5229
5230typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceBoundingBox2DFB)(XrSession session, XrSpace space, XrRect2Df* boundingBox2DOutput);
5231typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceBoundingBox3DFB)(XrSession session, XrSpace space, XrRect3DfFB* boundingBox3DOutput);
5232typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceSemanticLabelsFB)(XrSession session, XrSpace space, XrSemanticLabelsFB* semanticLabelsOutput);
5233typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceBoundary2DFB)(XrSession session, XrSpace space, XrBoundary2DFB* boundary2DOutput);
5234typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceRoomLayoutFB)(XrSession session, XrSpace space, XrRoomLayoutFB* roomLayoutOutput);
5235
5236#ifndef XR_NO_PROTOTYPES
5237#ifdef XR_EXTENSION_PROTOTYPES
5238XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceBoundingBox2DFB(
5239 XrSession session,
5240 XrSpace space,
5241 XrRect2Df* boundingBox2DOutput);
5242
5243XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceBoundingBox3DFB(
5244 XrSession session,
5245 XrSpace space,
5246 XrRect3DfFB* boundingBox3DOutput);
5247
5248XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceSemanticLabelsFB(
5249 XrSession session,
5250 XrSpace space,
5251 XrSemanticLabelsFB* semanticLabelsOutput);
5252
5253XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceBoundary2DFB(
5254 XrSession session,
5255 XrSpace space,
5256 XrBoundary2DFB* boundary2DOutput);
5257
5258XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceRoomLayoutFB(
5259 XrSession session,
5260 XrSpace space,
5261 XrRoomLayoutFB* roomLayoutOutput);
5262#endif /* XR_EXTENSION_PROTOTYPES */
5263#endif /* !XR_NO_PROTOTYPES */
5264
5265
5266#define XR_EXT_palm_pose 1
5267#define XR_EXT_palm_pose_SPEC_VERSION 2
5268#define XR_EXT_PALM_POSE_EXTENSION_NAME "XR_EXT_palm_pose"
5269
5270
5271#define XR_ALMALENCE_digital_lens_control 1
5272#define XR_ALMALENCE_digital_lens_control_SPEC_VERSION 1
5273#define XR_ALMALENCE_DIGITAL_LENS_CONTROL_EXTENSION_NAME "XR_ALMALENCE_digital_lens_control"
5274typedef XrFlags64 XrDigitalLensControlFlagsALMALENCE;
5275
5276// Flag bits for XrDigitalLensControlFlagsALMALENCE
5277static const XrDigitalLensControlFlagsALMALENCE XR_DIGITAL_LENS_CONTROL_PROCESSING_DISABLE_BIT_ALMALENCE = 0x00000001;
5278
5279typedef struct XrDigitalLensControlALMALENCE {
5280 XrStructureType type;
5281 const void* XR_MAY_ALIAS next;
5282 XrDigitalLensControlFlagsALMALENCE flags;
5283} XrDigitalLensControlALMALENCE;
5284
5285typedef XrResult (XRAPI_PTR *PFN_xrSetDigitalLensControlALMALENCE)(XrSession session, const XrDigitalLensControlALMALENCE* digitalLensControl);
5286
5287#ifndef XR_NO_PROTOTYPES
5288#ifdef XR_EXTENSION_PROTOTYPES
5289XRAPI_ATTR XrResult XRAPI_CALL xrSetDigitalLensControlALMALENCE(
5290 XrSession session,
5291 const XrDigitalLensControlALMALENCE* digitalLensControl);
5292#endif /* XR_EXTENSION_PROTOTYPES */
5293#endif /* !XR_NO_PROTOTYPES */
5294
5295
5296#define XR_FB_scene_capture 1
5297#define XR_FB_scene_capture_SPEC_VERSION 1
5298#define XR_FB_SCENE_CAPTURE_EXTENSION_NAME "XR_FB_scene_capture"
5299typedef struct XrEventDataSceneCaptureCompleteFB {
5300 XrStructureType type;
5301 const void* XR_MAY_ALIAS next;
5302 XrAsyncRequestIdFB requestId;
5303 XrResult result;
5304} XrEventDataSceneCaptureCompleteFB;
5305
5306typedef struct XrSceneCaptureRequestInfoFB {
5307 XrStructureType type;
5308 const void* XR_MAY_ALIAS next;
5309 uint32_t requestByteCount;
5310 const char* request;
5311} XrSceneCaptureRequestInfoFB;
5312
5313typedef XrResult (XRAPI_PTR *PFN_xrRequestSceneCaptureFB)(XrSession session, const XrSceneCaptureRequestInfoFB* info, XrAsyncRequestIdFB* requestId);
5314
5315#ifndef XR_NO_PROTOTYPES
5316#ifdef XR_EXTENSION_PROTOTYPES
5317XRAPI_ATTR XrResult XRAPI_CALL xrRequestSceneCaptureFB(
5318 XrSession session,
5319 const XrSceneCaptureRequestInfoFB* info,
5320 XrAsyncRequestIdFB* requestId);
5321#endif /* XR_EXTENSION_PROTOTYPES */
5322#endif /* !XR_NO_PROTOTYPES */
5323
5324
5325#define XR_FB_spatial_entity_container 1
5326#define XR_FB_spatial_entity_container_SPEC_VERSION 2
5327#define XR_FB_SPATIAL_ENTITY_CONTAINER_EXTENSION_NAME "XR_FB_spatial_entity_container"
5328typedef struct XrSpaceContainerFB {
5329 XrStructureType type;
5330 const void* XR_MAY_ALIAS next;
5331 uint32_t uuidCapacityInput;
5332 uint32_t uuidCountOutput;
5333 XrUuidEXT* uuids;
5334} XrSpaceContainerFB;
5335
5336typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceContainerFB)(XrSession session, XrSpace space, XrSpaceContainerFB* spaceContainerOutput);
5337
5338#ifndef XR_NO_PROTOTYPES
5339#ifdef XR_EXTENSION_PROTOTYPES
5340XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceContainerFB(
5341 XrSession session,
5342 XrSpace space,
5343 XrSpaceContainerFB* spaceContainerOutput);
5344#endif /* XR_EXTENSION_PROTOTYPES */
5345#endif /* !XR_NO_PROTOTYPES */
5346
5347
5348#define XR_META_foveation_eye_tracked 1
5349#define XR_FOVEATION_CENTER_SIZE_META 2
5350#define XR_META_foveation_eye_tracked_SPEC_VERSION 1
5351#define XR_META_FOVEATION_EYE_TRACKED_EXTENSION_NAME "XR_META_foveation_eye_tracked"
5352typedef XrFlags64 XrFoveationEyeTrackedProfileCreateFlagsMETA;
5353
5354// Flag bits for XrFoveationEyeTrackedProfileCreateFlagsMETA
5355
5356typedef XrFlags64 XrFoveationEyeTrackedStateFlagsMETA;
5357
5358// Flag bits for XrFoveationEyeTrackedStateFlagsMETA
5359static const XrFoveationEyeTrackedStateFlagsMETA XR_FOVEATION_EYE_TRACKED_STATE_VALID_BIT_META = 0x00000001;
5360
5361// XrFoveationEyeTrackedProfileCreateInfoMETA extends XrFoveationLevelProfileCreateInfoFB
5362typedef struct XrFoveationEyeTrackedProfileCreateInfoMETA {
5363 XrStructureType type;
5364 const void* XR_MAY_ALIAS next;
5365 XrFoveationEyeTrackedProfileCreateFlagsMETA flags;
5366} XrFoveationEyeTrackedProfileCreateInfoMETA;
5367
5368typedef struct XrFoveationEyeTrackedStateMETA {
5369 XrStructureType type;
5370 void* XR_MAY_ALIAS next;
5371 XrVector2f foveationCenter[XR_FOVEATION_CENTER_SIZE_META];
5372 XrFoveationEyeTrackedStateFlagsMETA flags;
5373} XrFoveationEyeTrackedStateMETA;
5374
5375// XrSystemFoveationEyeTrackedPropertiesMETA extends XrSystemProperties
5376typedef struct XrSystemFoveationEyeTrackedPropertiesMETA {
5377 XrStructureType type;
5378 void* XR_MAY_ALIAS next;
5379 XrBool32 supportsFoveationEyeTracked;
5380} XrSystemFoveationEyeTrackedPropertiesMETA;
5381
5382typedef XrResult (XRAPI_PTR *PFN_xrGetFoveationEyeTrackedStateMETA)(XrSession session, XrFoveationEyeTrackedStateMETA* foveationState);
5383
5384#ifndef XR_NO_PROTOTYPES
5385#ifdef XR_EXTENSION_PROTOTYPES
5386XRAPI_ATTR XrResult XRAPI_CALL xrGetFoveationEyeTrackedStateMETA(
5387 XrSession session,
5388 XrFoveationEyeTrackedStateMETA* foveationState);
5389#endif /* XR_EXTENSION_PROTOTYPES */
5390#endif /* !XR_NO_PROTOTYPES */
5391
5392
5393#define XR_FB_face_tracking 1
5394
5395#define XR_FACE_EXPRESSSION_SET_DEFAULT_FB XR_FACE_EXPRESSION_SET_DEFAULT_FB
5396
5397XR_DEFINE_HANDLE(XrFaceTrackerFB)
5398#define XR_FB_face_tracking_SPEC_VERSION 1
5399#define XR_FB_FACE_TRACKING_EXTENSION_NAME "XR_FB_face_tracking"
5400
5401typedef enum XrFaceExpressionFB {
5402 XR_FACE_EXPRESSION_BROW_LOWERER_L_FB = 0,
5403 XR_FACE_EXPRESSION_BROW_LOWERER_R_FB = 1,
5404 XR_FACE_EXPRESSION_CHEEK_PUFF_L_FB = 2,
5405 XR_FACE_EXPRESSION_CHEEK_PUFF_R_FB = 3,
5406 XR_FACE_EXPRESSION_CHEEK_RAISER_L_FB = 4,
5407 XR_FACE_EXPRESSION_CHEEK_RAISER_R_FB = 5,
5408 XR_FACE_EXPRESSION_CHEEK_SUCK_L_FB = 6,
5409 XR_FACE_EXPRESSION_CHEEK_SUCK_R_FB = 7,
5410 XR_FACE_EXPRESSION_CHIN_RAISER_B_FB = 8,
5411 XR_FACE_EXPRESSION_CHIN_RAISER_T_FB = 9,
5412 XR_FACE_EXPRESSION_DIMPLER_L_FB = 10,
5413 XR_FACE_EXPRESSION_DIMPLER_R_FB = 11,
5414 XR_FACE_EXPRESSION_EYES_CLOSED_L_FB = 12,
5415 XR_FACE_EXPRESSION_EYES_CLOSED_R_FB = 13,
5416 XR_FACE_EXPRESSION_EYES_LOOK_DOWN_L_FB = 14,
5417 XR_FACE_EXPRESSION_EYES_LOOK_DOWN_R_FB = 15,
5418 XR_FACE_EXPRESSION_EYES_LOOK_LEFT_L_FB = 16,
5419 XR_FACE_EXPRESSION_EYES_LOOK_LEFT_R_FB = 17,
5420 XR_FACE_EXPRESSION_EYES_LOOK_RIGHT_L_FB = 18,
5421 XR_FACE_EXPRESSION_EYES_LOOK_RIGHT_R_FB = 19,
5422 XR_FACE_EXPRESSION_EYES_LOOK_UP_L_FB = 20,
5423 XR_FACE_EXPRESSION_EYES_LOOK_UP_R_FB = 21,
5424 XR_FACE_EXPRESSION_INNER_BROW_RAISER_L_FB = 22,
5425 XR_FACE_EXPRESSION_INNER_BROW_RAISER_R_FB = 23,
5426 XR_FACE_EXPRESSION_JAW_DROP_FB = 24,
5427 XR_FACE_EXPRESSION_JAW_SIDEWAYS_LEFT_FB = 25,
5428 XR_FACE_EXPRESSION_JAW_SIDEWAYS_RIGHT_FB = 26,
5429 XR_FACE_EXPRESSION_JAW_THRUST_FB = 27,
5430 XR_FACE_EXPRESSION_LID_TIGHTENER_L_FB = 28,
5431 XR_FACE_EXPRESSION_LID_TIGHTENER_R_FB = 29,
5432 XR_FACE_EXPRESSION_LIP_CORNER_DEPRESSOR_L_FB = 30,
5433 XR_FACE_EXPRESSION_LIP_CORNER_DEPRESSOR_R_FB = 31,
5434 XR_FACE_EXPRESSION_LIP_CORNER_PULLER_L_FB = 32,
5435 XR_FACE_EXPRESSION_LIP_CORNER_PULLER_R_FB = 33,
5436 XR_FACE_EXPRESSION_LIP_FUNNELER_LB_FB = 34,
5437 XR_FACE_EXPRESSION_LIP_FUNNELER_LT_FB = 35,
5438 XR_FACE_EXPRESSION_LIP_FUNNELER_RB_FB = 36,
5439 XR_FACE_EXPRESSION_LIP_FUNNELER_RT_FB = 37,
5440 XR_FACE_EXPRESSION_LIP_PRESSOR_L_FB = 38,
5441 XR_FACE_EXPRESSION_LIP_PRESSOR_R_FB = 39,
5442 XR_FACE_EXPRESSION_LIP_PUCKER_L_FB = 40,
5443 XR_FACE_EXPRESSION_LIP_PUCKER_R_FB = 41,
5444 XR_FACE_EXPRESSION_LIP_STRETCHER_L_FB = 42,
5445 XR_FACE_EXPRESSION_LIP_STRETCHER_R_FB = 43,
5446 XR_FACE_EXPRESSION_LIP_SUCK_LB_FB = 44,
5447 XR_FACE_EXPRESSION_LIP_SUCK_LT_FB = 45,
5448 XR_FACE_EXPRESSION_LIP_SUCK_RB_FB = 46,
5449 XR_FACE_EXPRESSION_LIP_SUCK_RT_FB = 47,
5450 XR_FACE_EXPRESSION_LIP_TIGHTENER_L_FB = 48,
5451 XR_FACE_EXPRESSION_LIP_TIGHTENER_R_FB = 49,
5452 XR_FACE_EXPRESSION_LIPS_TOWARD_FB = 50,
5453 XR_FACE_EXPRESSION_LOWER_LIP_DEPRESSOR_L_FB = 51,
5454 XR_FACE_EXPRESSION_LOWER_LIP_DEPRESSOR_R_FB = 52,
5455 XR_FACE_EXPRESSION_MOUTH_LEFT_FB = 53,
5456 XR_FACE_EXPRESSION_MOUTH_RIGHT_FB = 54,
5457 XR_FACE_EXPRESSION_NOSE_WRINKLER_L_FB = 55,
5458 XR_FACE_EXPRESSION_NOSE_WRINKLER_R_FB = 56,
5459 XR_FACE_EXPRESSION_OUTER_BROW_RAISER_L_FB = 57,
5460 XR_FACE_EXPRESSION_OUTER_BROW_RAISER_R_FB = 58,
5461 XR_FACE_EXPRESSION_UPPER_LID_RAISER_L_FB = 59,
5462 XR_FACE_EXPRESSION_UPPER_LID_RAISER_R_FB = 60,
5463 XR_FACE_EXPRESSION_UPPER_LIP_RAISER_L_FB = 61,
5464 XR_FACE_EXPRESSION_UPPER_LIP_RAISER_R_FB = 62,
5465 XR_FACE_EXPRESSION_COUNT_FB = 63,
5466 XR_FACE_EXPRESSION_MAX_ENUM_FB = 0x7FFFFFFF
5467} XrFaceExpressionFB;
5468
5469typedef enum XrFaceExpressionSetFB {
5470 XR_FACE_EXPRESSION_SET_DEFAULT_FB = 0,
5471 XR_FACE_EXPRESSION_SET_MAX_ENUM_FB = 0x7FFFFFFF
5472} XrFaceExpressionSetFB;
5473
5474typedef enum XrFaceConfidenceFB {
5475 XR_FACE_CONFIDENCE_LOWER_FACE_FB = 0,
5476 XR_FACE_CONFIDENCE_UPPER_FACE_FB = 1,
5477 XR_FACE_CONFIDENCE_COUNT_FB = 2,
5478 XR_FACE_CONFIDENCE_MAX_ENUM_FB = 0x7FFFFFFF
5479} XrFaceConfidenceFB;
5480// XrSystemFaceTrackingPropertiesFB extends XrSystemProperties
5481typedef struct XrSystemFaceTrackingPropertiesFB {
5482 XrStructureType type;
5483 void* XR_MAY_ALIAS next;
5484 XrBool32 supportsFaceTracking;
5485} XrSystemFaceTrackingPropertiesFB;
5486
5487typedef struct XrFaceTrackerCreateInfoFB {
5488 XrStructureType type;
5489 const void* XR_MAY_ALIAS next;
5490 XrFaceExpressionSetFB faceExpressionSet;
5491} XrFaceTrackerCreateInfoFB;
5492
5493typedef struct XrFaceExpressionInfoFB {
5494 XrStructureType type;
5495 const void* XR_MAY_ALIAS next;
5496 XrTime time;
5497} XrFaceExpressionInfoFB;
5498
5499typedef struct XrFaceExpressionStatusFB {
5500 XrBool32 isValid;
5501 XrBool32 isEyeFollowingBlendshapesValid;
5502} XrFaceExpressionStatusFB;
5503
5504typedef struct XrFaceExpressionWeightsFB {
5505 XrStructureType type;
5506 void* XR_MAY_ALIAS next;
5507 uint32_t weightCount;
5508 float* weights;
5509 uint32_t confidenceCount;
5510 float* confidences;
5511 XrFaceExpressionStatusFB status;
5512 XrTime time;
5513} XrFaceExpressionWeightsFB;
5514
5515typedef XrResult (XRAPI_PTR *PFN_xrCreateFaceTrackerFB)(XrSession session, const XrFaceTrackerCreateInfoFB* createInfo, XrFaceTrackerFB* faceTracker);
5516typedef XrResult (XRAPI_PTR *PFN_xrDestroyFaceTrackerFB)(XrFaceTrackerFB faceTracker);
5517typedef XrResult (XRAPI_PTR *PFN_xrGetFaceExpressionWeightsFB)(XrFaceTrackerFB faceTracker, const XrFaceExpressionInfoFB* expressionInfo, XrFaceExpressionWeightsFB* expressionWeights);
5518
5519#ifndef XR_NO_PROTOTYPES
5520#ifdef XR_EXTENSION_PROTOTYPES
5521XRAPI_ATTR XrResult XRAPI_CALL xrCreateFaceTrackerFB(
5522 XrSession session,
5523 const XrFaceTrackerCreateInfoFB* createInfo,
5524 XrFaceTrackerFB* faceTracker);
5525
5526XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFaceTrackerFB(
5527 XrFaceTrackerFB faceTracker);
5528
5529XRAPI_ATTR XrResult XRAPI_CALL xrGetFaceExpressionWeightsFB(
5530 XrFaceTrackerFB faceTracker,
5531 const XrFaceExpressionInfoFB* expressionInfo,
5532 XrFaceExpressionWeightsFB* expressionWeights);
5533#endif /* XR_EXTENSION_PROTOTYPES */
5534#endif /* !XR_NO_PROTOTYPES */
5535
5536
5537#define XR_FB_eye_tracking_social 1
5538XR_DEFINE_HANDLE(XrEyeTrackerFB)
5539#define XR_FB_eye_tracking_social_SPEC_VERSION 1
5540#define XR_FB_EYE_TRACKING_SOCIAL_EXTENSION_NAME "XR_FB_eye_tracking_social"
5541
5542typedef enum XrEyePositionFB {
5543 XR_EYE_POSITION_LEFT_FB = 0,
5544 XR_EYE_POSITION_RIGHT_FB = 1,
5545 XR_EYE_POSITION_COUNT_FB = 2,
5546 XR_EYE_POSITION_MAX_ENUM_FB = 0x7FFFFFFF
5547} XrEyePositionFB;
5548typedef struct XrEyeGazeFB {
5549 XrBool32 isValid;
5550 XrPosef gazePose;
5551 float gazeConfidence;
5552} XrEyeGazeFB;
5553
5554typedef struct XrEyeTrackerCreateInfoFB {
5555 XrStructureType type;
5556 const void* XR_MAY_ALIAS next;
5557} XrEyeTrackerCreateInfoFB;
5558
5559typedef struct XrEyeGazesInfoFB {
5560 XrStructureType type;
5561 const void* XR_MAY_ALIAS next;
5562 XrSpace baseSpace;
5563 XrTime time;
5564} XrEyeGazesInfoFB;
5565
5566// XrSystemEyeTrackingPropertiesFB extends XrSystemProperties
5567typedef struct XrSystemEyeTrackingPropertiesFB {
5568 XrStructureType type;
5569 void* XR_MAY_ALIAS next;
5570 XrBool32 supportsEyeTracking;
5571} XrSystemEyeTrackingPropertiesFB;
5572
5573typedef struct XrEyeGazesFB {
5574 XrStructureType type;
5575 void* XR_MAY_ALIAS next;
5576 XrEyeGazeFB gaze[XR_EYE_POSITION_COUNT_FB];
5577 XrTime time;
5578} XrEyeGazesFB;
5579
5580typedef XrResult (XRAPI_PTR *PFN_xrCreateEyeTrackerFB)(XrSession session, const XrEyeTrackerCreateInfoFB* createInfo, XrEyeTrackerFB* eyeTracker);
5581typedef XrResult (XRAPI_PTR *PFN_xrDestroyEyeTrackerFB)(XrEyeTrackerFB eyeTracker);
5582typedef XrResult (XRAPI_PTR *PFN_xrGetEyeGazesFB)(XrEyeTrackerFB eyeTracker, const XrEyeGazesInfoFB* gazeInfo, XrEyeGazesFB* eyeGazes);
5583
5584#ifndef XR_NO_PROTOTYPES
5585#ifdef XR_EXTENSION_PROTOTYPES
5586XRAPI_ATTR XrResult XRAPI_CALL xrCreateEyeTrackerFB(
5587 XrSession session,
5588 const XrEyeTrackerCreateInfoFB* createInfo,
5589 XrEyeTrackerFB* eyeTracker);
5590
5591XRAPI_ATTR XrResult XRAPI_CALL xrDestroyEyeTrackerFB(
5592 XrEyeTrackerFB eyeTracker);
5593
5594XRAPI_ATTR XrResult XRAPI_CALL xrGetEyeGazesFB(
5595 XrEyeTrackerFB eyeTracker,
5596 const XrEyeGazesInfoFB* gazeInfo,
5597 XrEyeGazesFB* eyeGazes);
5598#endif /* XR_EXTENSION_PROTOTYPES */
5599#endif /* !XR_NO_PROTOTYPES */
5600
5601
5602#define XR_FB_passthrough_keyboard_hands 1
5603#define XR_FB_passthrough_keyboard_hands_SPEC_VERSION 2
5604#define XR_FB_PASSTHROUGH_KEYBOARD_HANDS_EXTENSION_NAME "XR_FB_passthrough_keyboard_hands"
5605typedef struct XrPassthroughKeyboardHandsIntensityFB {
5606 XrStructureType type;
5607 const void* XR_MAY_ALIAS next;
5608 float leftHandIntensity;
5609 float rightHandIntensity;
5610} XrPassthroughKeyboardHandsIntensityFB;
5611
5612typedef XrResult (XRAPI_PTR *PFN_xrPassthroughLayerSetKeyboardHandsIntensityFB)(XrPassthroughLayerFB layer, const XrPassthroughKeyboardHandsIntensityFB* intensity);
5613
5614#ifndef XR_NO_PROTOTYPES
5615#ifdef XR_EXTENSION_PROTOTYPES
5616XRAPI_ATTR XrResult XRAPI_CALL xrPassthroughLayerSetKeyboardHandsIntensityFB(
5617 XrPassthroughLayerFB layer,
5618 const XrPassthroughKeyboardHandsIntensityFB* intensity);
5619#endif /* XR_EXTENSION_PROTOTYPES */
5620#endif /* !XR_NO_PROTOTYPES */
5621
5622
5623#define XR_FB_composition_layer_settings 1
5624#define XR_FB_composition_layer_settings_SPEC_VERSION 1
5625#define XR_FB_COMPOSITION_LAYER_SETTINGS_EXTENSION_NAME "XR_FB_composition_layer_settings"
5626typedef XrFlags64 XrCompositionLayerSettingsFlagsFB;
5627
5628// Flag bits for XrCompositionLayerSettingsFlagsFB
5629static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SUPER_SAMPLING_BIT_FB = 0x00000001;
5630static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SUPER_SAMPLING_BIT_FB = 0x00000002;
5631static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB = 0x00000004;
5632static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB = 0x00000008;
5633static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_AUTO_LAYER_FILTER_BIT_META = 0x00000020;
5634
5635// XrCompositionLayerSettingsFB extends XrCompositionLayerBaseHeader
5636typedef struct XrCompositionLayerSettingsFB {
5637 XrStructureType type;
5638 const void* XR_MAY_ALIAS next;
5639 XrCompositionLayerSettingsFlagsFB layerFlags;
5640} XrCompositionLayerSettingsFB;
5641
5642
5643
5644#define XR_FB_touch_controller_proximity 1
5645#define XR_FB_touch_controller_proximity_SPEC_VERSION 1
5646#define XR_FB_TOUCH_CONTROLLER_PROXIMITY_EXTENSION_NAME "XR_FB_touch_controller_proximity"
5647
5648
5649#define XR_FB_haptic_pcm 1
5650
5651#define XR_MAX_HAPTIC_PCM_BUFFER_SIZE_FB 4000
5652
5653#define XR_FB_haptic_pcm_SPEC_VERSION 1
5654#define XR_FB_HAPTIC_PCM_EXTENSION_NAME "XR_FB_haptic_pcm"
5655typedef struct XrHapticPcmVibrationFB {
5656 XrStructureType type;
5657 const void* XR_MAY_ALIAS next;
5658 uint32_t bufferSize;
5659 const float* buffer;
5660 float sampleRate;
5661 XrBool32 append;
5662 uint32_t* samplesConsumed;
5663} XrHapticPcmVibrationFB;
5664
5665typedef struct XrDevicePcmSampleRateStateFB {
5666 XrStructureType type;
5667 void* XR_MAY_ALIAS next;
5668 float sampleRate;
5669} XrDevicePcmSampleRateStateFB;
5670
5671typedef XrDevicePcmSampleRateStateFB XrDevicePcmSampleRateGetInfoFB;
5672
5673typedef XrResult (XRAPI_PTR *PFN_xrGetDeviceSampleRateFB)(XrSession session, const XrHapticActionInfo* hapticActionInfo, XrDevicePcmSampleRateGetInfoFB* deviceSampleRate);
5674
5675#ifndef XR_NO_PROTOTYPES
5676#ifdef XR_EXTENSION_PROTOTYPES
5677XRAPI_ATTR XrResult XRAPI_CALL xrGetDeviceSampleRateFB(
5678 XrSession session,
5679 const XrHapticActionInfo* hapticActionInfo,
5680 XrDevicePcmSampleRateGetInfoFB* deviceSampleRate);
5681#endif /* XR_EXTENSION_PROTOTYPES */
5682#endif /* !XR_NO_PROTOTYPES */
5683
5684
5685#define XR_FB_composition_layer_depth_test 1
5686#define XR_FB_composition_layer_depth_test_SPEC_VERSION 1
5687#define XR_FB_COMPOSITION_LAYER_DEPTH_TEST_EXTENSION_NAME "XR_FB_composition_layer_depth_test"
5688
5689typedef enum XrCompareOpFB {
5690 XR_COMPARE_OP_NEVER_FB = 0,
5691 XR_COMPARE_OP_LESS_FB = 1,
5692 XR_COMPARE_OP_EQUAL_FB = 2,
5693 XR_COMPARE_OP_LESS_OR_EQUAL_FB = 3,
5694 XR_COMPARE_OP_GREATER_FB = 4,
5695 XR_COMPARE_OP_NOT_EQUAL_FB = 5,
5696 XR_COMPARE_OP_GREATER_OR_EQUAL_FB = 6,
5697 XR_COMPARE_OP_ALWAYS_FB = 7,
5698 XR_COMPARE_OP_MAX_ENUM_FB = 0x7FFFFFFF
5699} XrCompareOpFB;
5700// XrCompositionLayerDepthTestFB extends XrCompositionLayerBaseHeader
5701typedef struct XrCompositionLayerDepthTestFB {
5702 XrStructureType type;
5703 const void* XR_MAY_ALIAS next;
5704 XrBool32 depthMask;
5705 XrCompareOpFB compareOp;
5706} XrCompositionLayerDepthTestFB;
5707
5708
5709
5710#define XR_META_local_dimming 1
5711#define XR_META_local_dimming_SPEC_VERSION 1
5712#define XR_META_LOCAL_DIMMING_EXTENSION_NAME "XR_META_local_dimming"
5713
5714typedef enum XrLocalDimmingModeMETA {
5715 XR_LOCAL_DIMMING_MODE_OFF_META = 0,
5716 XR_LOCAL_DIMMING_MODE_ON_META = 1,
5717 XR_LOCAL_DIMMING_MODE_MAX_ENUM_META = 0x7FFFFFFF
5718} XrLocalDimmingModeMETA;
5719// XrLocalDimmingFrameEndInfoMETA extends XrFrameEndInfo
5720typedef struct XrLocalDimmingFrameEndInfoMETA {
5721 XrStructureType type;
5722 const void* XR_MAY_ALIAS next;
5723 XrLocalDimmingModeMETA localDimmingMode;
5724} XrLocalDimmingFrameEndInfoMETA;
5725
5726
5727
5728#define XR_META_passthrough_preferences 1
5729#define XR_META_passthrough_preferences_SPEC_VERSION 1
5730#define XR_META_PASSTHROUGH_PREFERENCES_EXTENSION_NAME "XR_META_passthrough_preferences"
5731typedef XrFlags64 XrPassthroughPreferenceFlagsMETA;
5732
5733// Flag bits for XrPassthroughPreferenceFlagsMETA
5734static const XrPassthroughPreferenceFlagsMETA XR_PASSTHROUGH_PREFERENCE_DEFAULT_TO_ACTIVE_BIT_META = 0x00000001;
5735
5736typedef struct XrPassthroughPreferencesMETA {
5737 XrStructureType type;
5738 const void* XR_MAY_ALIAS next;
5739 XrPassthroughPreferenceFlagsMETA flags;
5740} XrPassthroughPreferencesMETA;
5741
5742typedef XrResult (XRAPI_PTR *PFN_xrGetPassthroughPreferencesMETA)(XrSession session, XrPassthroughPreferencesMETA* preferences);
5743
5744#ifndef XR_NO_PROTOTYPES
5745#ifdef XR_EXTENSION_PROTOTYPES
5746XRAPI_ATTR XrResult XRAPI_CALL xrGetPassthroughPreferencesMETA(
5747 XrSession session,
5748 XrPassthroughPreferencesMETA* preferences);
5749#endif /* XR_EXTENSION_PROTOTYPES */
5750#endif /* !XR_NO_PROTOTYPES */
5751
5752
5753#define XR_META_virtual_keyboard 1
5754XR_DEFINE_HANDLE(XrVirtualKeyboardMETA)
5755#define XR_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE_META 3992
5756#define XR_META_virtual_keyboard_SPEC_VERSION 1
5757#define XR_META_VIRTUAL_KEYBOARD_EXTENSION_NAME "XR_META_virtual_keyboard"
5758
5759typedef enum XrVirtualKeyboardLocationTypeMETA {
5760 XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_CUSTOM_META = 0,
5761 XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_FAR_META = 1,
5762 XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_DIRECT_META = 2,
5763 XR_VIRTUAL_KEYBOARD_LOCATION_TYPE_MAX_ENUM_META = 0x7FFFFFFF
5764} XrVirtualKeyboardLocationTypeMETA;
5765
5766typedef enum XrVirtualKeyboardInputSourceMETA {
5767 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_LEFT_META = 1,
5768 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_RAY_RIGHT_META = 2,
5769 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_LEFT_META = 3,
5770 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_RAY_RIGHT_META = 4,
5771 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_LEFT_META = 5,
5772 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_CONTROLLER_DIRECT_RIGHT_META = 6,
5773 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_LEFT_META = 7,
5774 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_HAND_DIRECT_INDEX_TIP_RIGHT_META = 8,
5775 XR_VIRTUAL_KEYBOARD_INPUT_SOURCE_MAX_ENUM_META = 0x7FFFFFFF
5776} XrVirtualKeyboardInputSourceMETA;
5777typedef XrFlags64 XrVirtualKeyboardInputStateFlagsMETA;
5778
5779// Flag bits for XrVirtualKeyboardInputStateFlagsMETA
5780static const XrVirtualKeyboardInputStateFlagsMETA XR_VIRTUAL_KEYBOARD_INPUT_STATE_PRESSED_BIT_META = 0x00000001;
5781
5782// XrSystemVirtualKeyboardPropertiesMETA extends XrSystemProperties
5783typedef struct XrSystemVirtualKeyboardPropertiesMETA {
5784 XrStructureType type;
5785 void* XR_MAY_ALIAS next;
5786 XrBool32 supportsVirtualKeyboard;
5787} XrSystemVirtualKeyboardPropertiesMETA;
5788
5789typedef struct XrVirtualKeyboardCreateInfoMETA {
5790 XrStructureType type;
5791 const void* XR_MAY_ALIAS next;
5792} XrVirtualKeyboardCreateInfoMETA;
5793
5794typedef struct XrVirtualKeyboardSpaceCreateInfoMETA {
5795 XrStructureType type;
5796 const void* XR_MAY_ALIAS next;
5797 XrVirtualKeyboardLocationTypeMETA locationType;
5798 XrSpace space;
5799 XrPosef poseInSpace;
5800} XrVirtualKeyboardSpaceCreateInfoMETA;
5801
5802typedef struct XrVirtualKeyboardLocationInfoMETA {
5803 XrStructureType type;
5804 const void* XR_MAY_ALIAS next;
5805 XrVirtualKeyboardLocationTypeMETA locationType;
5806 XrSpace space;
5807 XrPosef poseInSpace;
5808 float scale;
5809} XrVirtualKeyboardLocationInfoMETA;
5810
5811typedef struct XrVirtualKeyboardModelVisibilitySetInfoMETA {
5812 XrStructureType type;
5813 const void* XR_MAY_ALIAS next;
5814 XrBool32 visible;
5815} XrVirtualKeyboardModelVisibilitySetInfoMETA;
5816
5817typedef struct XrVirtualKeyboardAnimationStateMETA {
5818 XrStructureType type;
5819 void* XR_MAY_ALIAS next;
5820 int32_t animationIndex;
5821 float fraction;
5822} XrVirtualKeyboardAnimationStateMETA;
5823
5824typedef struct XrVirtualKeyboardModelAnimationStatesMETA {
5825 XrStructureType type;
5826 void* XR_MAY_ALIAS next;
5827 uint32_t stateCapacityInput;
5828 uint32_t stateCountOutput;
5829 XrVirtualKeyboardAnimationStateMETA* states;
5830} XrVirtualKeyboardModelAnimationStatesMETA;
5831
5832typedef struct XrVirtualKeyboardTextureDataMETA {
5833 XrStructureType type;
5834 void* XR_MAY_ALIAS next;
5835 uint32_t textureWidth;
5836 uint32_t textureHeight;
5837 uint32_t bufferCapacityInput;
5838 uint32_t bufferCountOutput;
5839 uint8_t* buffer;
5840} XrVirtualKeyboardTextureDataMETA;
5841
5842typedef struct XrVirtualKeyboardInputInfoMETA {
5843 XrStructureType type;
5844 const void* XR_MAY_ALIAS next;
5845 XrVirtualKeyboardInputSourceMETA inputSource;
5846 XrSpace inputSpace;
5847 XrPosef inputPoseInSpace;
5848 XrVirtualKeyboardInputStateFlagsMETA inputState;
5849} XrVirtualKeyboardInputInfoMETA;
5850
5851typedef struct XrVirtualKeyboardTextContextChangeInfoMETA {
5852 XrStructureType type;
5853 const void* XR_MAY_ALIAS next;
5854 const char* textContext;
5855} XrVirtualKeyboardTextContextChangeInfoMETA;
5856
5857typedef struct XrEventDataVirtualKeyboardCommitTextMETA {
5858 XrStructureType type;
5859 const void* XR_MAY_ALIAS next;
5860 XrVirtualKeyboardMETA keyboard;
5861 char text[XR_MAX_VIRTUAL_KEYBOARD_COMMIT_TEXT_SIZE_META];
5862} XrEventDataVirtualKeyboardCommitTextMETA;
5863
5864typedef struct XrEventDataVirtualKeyboardBackspaceMETA {
5865 XrStructureType type;
5866 const void* XR_MAY_ALIAS next;
5867 XrVirtualKeyboardMETA keyboard;
5868} XrEventDataVirtualKeyboardBackspaceMETA;
5869
5870typedef struct XrEventDataVirtualKeyboardEnterMETA {
5871 XrStructureType type;
5872 const void* XR_MAY_ALIAS next;
5873 XrVirtualKeyboardMETA keyboard;
5874} XrEventDataVirtualKeyboardEnterMETA;
5875
5876typedef struct XrEventDataVirtualKeyboardShownMETA {
5877 XrStructureType type;
5878 const void* XR_MAY_ALIAS next;
5879 XrVirtualKeyboardMETA keyboard;
5880} XrEventDataVirtualKeyboardShownMETA;
5881
5882typedef struct XrEventDataVirtualKeyboardHiddenMETA {
5883 XrStructureType type;
5884 const void* XR_MAY_ALIAS next;
5885 XrVirtualKeyboardMETA keyboard;
5886} XrEventDataVirtualKeyboardHiddenMETA;
5887
5888typedef XrResult (XRAPI_PTR *PFN_xrCreateVirtualKeyboardMETA)(XrSession session, const XrVirtualKeyboardCreateInfoMETA* createInfo, XrVirtualKeyboardMETA* keyboard);
5889typedef XrResult (XRAPI_PTR *PFN_xrDestroyVirtualKeyboardMETA)(XrVirtualKeyboardMETA keyboard);
5890typedef XrResult (XRAPI_PTR *PFN_xrCreateVirtualKeyboardSpaceMETA)(XrSession session, XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardSpaceCreateInfoMETA* createInfo, XrSpace* keyboardSpace);
5891typedef XrResult (XRAPI_PTR *PFN_xrSuggestVirtualKeyboardLocationMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardLocationInfoMETA* locationInfo);
5892typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardScaleMETA)(XrVirtualKeyboardMETA keyboard, float* scale);
5893typedef XrResult (XRAPI_PTR *PFN_xrSetVirtualKeyboardModelVisibilityMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardModelVisibilitySetInfoMETA* modelVisibility);
5894typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardModelAnimationStatesMETA)(XrVirtualKeyboardMETA keyboard, XrVirtualKeyboardModelAnimationStatesMETA* animationStates);
5895typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardDirtyTexturesMETA)(XrVirtualKeyboardMETA keyboard, uint32_t textureIdCapacityInput, uint32_t* textureIdCountOutput, uint64_t* textureIds);
5896typedef XrResult (XRAPI_PTR *PFN_xrGetVirtualKeyboardTextureDataMETA)(XrVirtualKeyboardMETA keyboard, uint64_t textureId, XrVirtualKeyboardTextureDataMETA* textureData);
5897typedef XrResult (XRAPI_PTR *PFN_xrSendVirtualKeyboardInputMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardInputInfoMETA* info, XrPosef* interactorRootPose);
5898typedef XrResult (XRAPI_PTR *PFN_xrChangeVirtualKeyboardTextContextMETA)(XrVirtualKeyboardMETA keyboard, const XrVirtualKeyboardTextContextChangeInfoMETA* changeInfo);
5899
5900#ifndef XR_NO_PROTOTYPES
5901#ifdef XR_EXTENSION_PROTOTYPES
5902XRAPI_ATTR XrResult XRAPI_CALL xrCreateVirtualKeyboardMETA(
5903 XrSession session,
5904 const XrVirtualKeyboardCreateInfoMETA* createInfo,
5905 XrVirtualKeyboardMETA* keyboard);
5906
5907XRAPI_ATTR XrResult XRAPI_CALL xrDestroyVirtualKeyboardMETA(
5908 XrVirtualKeyboardMETA keyboard);
5909
5910XRAPI_ATTR XrResult XRAPI_CALL xrCreateVirtualKeyboardSpaceMETA(
5911 XrSession session,
5912 XrVirtualKeyboardMETA keyboard,
5913 const XrVirtualKeyboardSpaceCreateInfoMETA* createInfo,
5914 XrSpace* keyboardSpace);
5915
5916XRAPI_ATTR XrResult XRAPI_CALL xrSuggestVirtualKeyboardLocationMETA(
5917 XrVirtualKeyboardMETA keyboard,
5918 const XrVirtualKeyboardLocationInfoMETA* locationInfo);
5919
5920XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardScaleMETA(
5921 XrVirtualKeyboardMETA keyboard,
5922 float* scale);
5923
5924XRAPI_ATTR XrResult XRAPI_CALL xrSetVirtualKeyboardModelVisibilityMETA(
5925 XrVirtualKeyboardMETA keyboard,
5926 const XrVirtualKeyboardModelVisibilitySetInfoMETA* modelVisibility);
5927
5928XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardModelAnimationStatesMETA(
5929 XrVirtualKeyboardMETA keyboard,
5930 XrVirtualKeyboardModelAnimationStatesMETA* animationStates);
5931
5932XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardDirtyTexturesMETA(
5933 XrVirtualKeyboardMETA keyboard,
5934 uint32_t textureIdCapacityInput,
5935 uint32_t* textureIdCountOutput,
5936 uint64_t* textureIds);
5937
5938XRAPI_ATTR XrResult XRAPI_CALL xrGetVirtualKeyboardTextureDataMETA(
5939 XrVirtualKeyboardMETA keyboard,
5940 uint64_t textureId,
5941 XrVirtualKeyboardTextureDataMETA* textureData);
5942
5943XRAPI_ATTR XrResult XRAPI_CALL xrSendVirtualKeyboardInputMETA(
5944 XrVirtualKeyboardMETA keyboard,
5945 const XrVirtualKeyboardInputInfoMETA* info,
5946 XrPosef* interactorRootPose);
5947
5948XRAPI_ATTR XrResult XRAPI_CALL xrChangeVirtualKeyboardTextContextMETA(
5949 XrVirtualKeyboardMETA keyboard,
5950 const XrVirtualKeyboardTextContextChangeInfoMETA* changeInfo);
5951#endif /* XR_EXTENSION_PROTOTYPES */
5952#endif /* !XR_NO_PROTOTYPES */
5953
5954
5955#define XR_OCULUS_external_camera 1
5956#define XR_MAX_EXTERNAL_CAMERA_NAME_SIZE_OCULUS 32
5957#define XR_OCULUS_external_camera_SPEC_VERSION 1
5958#define XR_OCULUS_EXTERNAL_CAMERA_EXTENSION_NAME "XR_OCULUS_external_camera"
5959
5960typedef enum XrExternalCameraAttachedToDeviceOCULUS {
5961 XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_NONE_OCULUS = 0,
5962 XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_HMD_OCULUS = 1,
5963 XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_LTOUCH_OCULUS = 2,
5964 XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_RTOUCH_OCULUS = 3,
5965 XR_EXTERNAL_CAMERA_ATTACHED_TO_DEVICE_MAX_ENUM_OCULUS = 0x7FFFFFFF
5966} XrExternalCameraAttachedToDeviceOCULUS;
5967typedef XrFlags64 XrExternalCameraStatusFlagsOCULUS;
5968
5969// Flag bits for XrExternalCameraStatusFlagsOCULUS
5970static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CONNECTED_BIT_OCULUS = 0x00000001;
5971static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CALIBRATING_BIT_OCULUS = 0x00000002;
5972static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CALIBRATION_FAILED_BIT_OCULUS = 0x00000004;
5973static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CALIBRATED_BIT_OCULUS = 0x00000008;
5974static const XrExternalCameraStatusFlagsOCULUS XR_EXTERNAL_CAMERA_STATUS_CAPTURING_BIT_OCULUS = 0x00000010;
5975
5976typedef struct XrExternalCameraIntrinsicsOCULUS {
5977 XrTime lastChangeTime;
5978 XrFovf fov;
5979 float virtualNearPlaneDistance;
5980 float virtualFarPlaneDistance;
5981 XrExtent2Di imageSensorPixelResolution;
5982} XrExternalCameraIntrinsicsOCULUS;
5983
5984typedef struct XrExternalCameraExtrinsicsOCULUS {
5985 XrTime lastChangeTime;
5986 XrExternalCameraStatusFlagsOCULUS cameraStatusFlags;
5987 XrExternalCameraAttachedToDeviceOCULUS attachedToDevice;
5988 XrPosef relativePose;
5989} XrExternalCameraExtrinsicsOCULUS;
5990
5991typedef struct XrExternalCameraOCULUS {
5992 XrStructureType type;
5993 const void* XR_MAY_ALIAS next;
5994 char name[XR_MAX_EXTERNAL_CAMERA_NAME_SIZE_OCULUS];
5995 XrExternalCameraIntrinsicsOCULUS intrinsics;
5996 XrExternalCameraExtrinsicsOCULUS extrinsics;
5997} XrExternalCameraOCULUS;
5998
5999typedef XrResult (XRAPI_PTR *PFN_xrEnumerateExternalCamerasOCULUS)(XrSession session, uint32_t cameraCapacityInput, uint32_t* cameraCountOutput, XrExternalCameraOCULUS* cameras);
6000
6001#ifndef XR_NO_PROTOTYPES
6002#ifdef XR_EXTENSION_PROTOTYPES
6003XRAPI_ATTR XrResult XRAPI_CALL xrEnumerateExternalCamerasOCULUS(
6004 XrSession session,
6005 uint32_t cameraCapacityInput,
6006 uint32_t* cameraCountOutput,
6007 XrExternalCameraOCULUS* cameras);
6008#endif /* XR_EXTENSION_PROTOTYPES */
6009#endif /* !XR_NO_PROTOTYPES */
6010
6011
6012#define XR_META_performance_metrics 1
6013#define XR_META_performance_metrics_SPEC_VERSION 2
6014#define XR_META_PERFORMANCE_METRICS_EXTENSION_NAME "XR_META_performance_metrics"
6015
6016typedef enum XrPerformanceMetricsCounterUnitMETA {
6017 XR_PERFORMANCE_METRICS_COUNTER_UNIT_GENERIC_META = 0,
6018 XR_PERFORMANCE_METRICS_COUNTER_UNIT_PERCENTAGE_META = 1,
6019 XR_PERFORMANCE_METRICS_COUNTER_UNIT_MILLISECONDS_META = 2,
6020 XR_PERFORMANCE_METRICS_COUNTER_UNIT_BYTES_META = 3,
6021 XR_PERFORMANCE_METRICS_COUNTER_UNIT_HERTZ_META = 4,
6022 XR_PERFORMANCE_METRICS_COUNTER_UNIT_MAX_ENUM_META = 0x7FFFFFFF
6023} XrPerformanceMetricsCounterUnitMETA;
6024typedef XrFlags64 XrPerformanceMetricsCounterFlagsMETA;
6025
6026// Flag bits for XrPerformanceMetricsCounterFlagsMETA
6027static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_ANY_VALUE_VALID_BIT_META = 0x00000001;
6028static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_UINT_VALUE_VALID_BIT_META = 0x00000002;
6029static const XrPerformanceMetricsCounterFlagsMETA XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_META = 0x00000004;
6030
6031typedef struct XrPerformanceMetricsStateMETA {
6032 XrStructureType type;
6033 const void* XR_MAY_ALIAS next;
6034 XrBool32 enabled;
6035} XrPerformanceMetricsStateMETA;
6036
6037typedef struct XrPerformanceMetricsCounterMETA {
6038 XrStructureType type;
6039 const void* XR_MAY_ALIAS next;
6040 XrPerformanceMetricsCounterFlagsMETA counterFlags;
6041 XrPerformanceMetricsCounterUnitMETA counterUnit;
6042 uint32_t uintValue;
6043 float floatValue;
6044} XrPerformanceMetricsCounterMETA;
6045
6046typedef XrResult (XRAPI_PTR *PFN_xrEnumeratePerformanceMetricsCounterPathsMETA)(XrInstance instance, uint32_t counterPathCapacityInput, uint32_t* counterPathCountOutput, XrPath* counterPaths);
6047typedef XrResult (XRAPI_PTR *PFN_xrSetPerformanceMetricsStateMETA)(XrSession session, const XrPerformanceMetricsStateMETA* state);
6048typedef XrResult (XRAPI_PTR *PFN_xrGetPerformanceMetricsStateMETA)(XrSession session, XrPerformanceMetricsStateMETA* state);
6049typedef XrResult (XRAPI_PTR *PFN_xrQueryPerformanceMetricsCounterMETA)(XrSession session, XrPath counterPath, XrPerformanceMetricsCounterMETA* counter);
6050
6051#ifndef XR_NO_PROTOTYPES
6052#ifdef XR_EXTENSION_PROTOTYPES
6053XRAPI_ATTR XrResult XRAPI_CALL xrEnumeratePerformanceMetricsCounterPathsMETA(
6054 XrInstance instance,
6055 uint32_t counterPathCapacityInput,
6056 uint32_t* counterPathCountOutput,
6057 XrPath* counterPaths);
6058
6059XRAPI_ATTR XrResult XRAPI_CALL xrSetPerformanceMetricsStateMETA(
6060 XrSession session,
6061 const XrPerformanceMetricsStateMETA* state);
6062
6063XRAPI_ATTR XrResult XRAPI_CALL xrGetPerformanceMetricsStateMETA(
6064 XrSession session,
6065 XrPerformanceMetricsStateMETA* state);
6066
6067XRAPI_ATTR XrResult XRAPI_CALL xrQueryPerformanceMetricsCounterMETA(
6068 XrSession session,
6069 XrPath counterPath,
6070 XrPerformanceMetricsCounterMETA* counter);
6071#endif /* XR_EXTENSION_PROTOTYPES */
6072#endif /* !XR_NO_PROTOTYPES */
6073
6074
6075#define XR_FB_spatial_entity_storage_batch 1
6076#define XR_FB_spatial_entity_storage_batch_SPEC_VERSION 1
6077#define XR_FB_SPATIAL_ENTITY_STORAGE_BATCH_EXTENSION_NAME "XR_FB_spatial_entity_storage_batch"
6078typedef struct XrSpaceListSaveInfoFB {
6079 XrStructureType type;
6080 const void* XR_MAY_ALIAS next;
6081 uint32_t spaceCount;
6082 XrSpace* spaces;
6083 XrSpaceStorageLocationFB location;
6084} XrSpaceListSaveInfoFB;
6085
6086typedef struct XrEventDataSpaceListSaveCompleteFB {
6087 XrStructureType type;
6088 const void* XR_MAY_ALIAS next;
6089 XrAsyncRequestIdFB requestId;
6090 XrResult result;
6091} XrEventDataSpaceListSaveCompleteFB;
6092
6093typedef XrResult (XRAPI_PTR *PFN_xrSaveSpaceListFB)(XrSession session, const XrSpaceListSaveInfoFB* info, XrAsyncRequestIdFB* requestId);
6094
6095#ifndef XR_NO_PROTOTYPES
6096#ifdef XR_EXTENSION_PROTOTYPES
6097XRAPI_ATTR XrResult XRAPI_CALL xrSaveSpaceListFB(
6098 XrSession session,
6099 const XrSpaceListSaveInfoFB* info,
6100 XrAsyncRequestIdFB* requestId);
6101#endif /* XR_EXTENSION_PROTOTYPES */
6102#endif /* !XR_NO_PROTOTYPES */
6103
6104
6105#define XR_FB_spatial_entity_user 1
6106typedef uint64_t XrSpaceUserIdFB;
6107#define XR_FB_spatial_entity_user_SPEC_VERSION 1
6108#define XR_FB_SPATIAL_ENTITY_USER_EXTENSION_NAME "XR_FB_spatial_entity_user"
6109typedef struct XrSpaceUserCreateInfoFB {
6110 XrStructureType type;
6111 const void* XR_MAY_ALIAS next;
6112 XrSpaceUserIdFB userId;
6113} XrSpaceUserCreateInfoFB;
6114
6115typedef XrResult (XRAPI_PTR *PFN_xrCreateSpaceUserFB)(XrSession session, const XrSpaceUserCreateInfoFB* info, XrSpaceUserFB* user);
6116typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceUserIdFB)(XrSpaceUserFB user, XrSpaceUserIdFB* userId);
6117typedef XrResult (XRAPI_PTR *PFN_xrDestroySpaceUserFB)(XrSpaceUserFB user);
6118
6119#ifndef XR_NO_PROTOTYPES
6120#ifdef XR_EXTENSION_PROTOTYPES
6121XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpaceUserFB(
6122 XrSession session,
6123 const XrSpaceUserCreateInfoFB* info,
6124 XrSpaceUserFB* user);
6125
6126XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceUserIdFB(
6127 XrSpaceUserFB user,
6128 XrSpaceUserIdFB* userId);
6129
6130XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpaceUserFB(
6131 XrSpaceUserFB user);
6132#endif /* XR_EXTENSION_PROTOTYPES */
6133#endif /* !XR_NO_PROTOTYPES */
6134
6135
6136#define XR_META_headset_id 1
6137#define XR_META_headset_id_SPEC_VERSION 2
6138#define XR_META_HEADSET_ID_EXTENSION_NAME "XR_META_headset_id"
6139// XrSystemHeadsetIdPropertiesMETA extends XrSystemProperties
6140typedef struct XrSystemHeadsetIdPropertiesMETA {
6141 XrStructureType type;
6142 void* XR_MAY_ALIAS next;
6143 XrUuidEXT id;
6144} XrSystemHeadsetIdPropertiesMETA;
6145
6146
6147
6148#define XR_META_recommended_layer_resolution 1
6149#define XR_META_recommended_layer_resolution_SPEC_VERSION 1
6150#define XR_META_RECOMMENDED_LAYER_RESOLUTION_EXTENSION_NAME "XR_META_recommended_layer_resolution"
6151typedef struct XrRecommendedLayerResolutionMETA {
6152 XrStructureType type;
6153 void* XR_MAY_ALIAS next;
6154 XrExtent2Di recommendedImageDimensions;
6155 XrBool32 isValid;
6156} XrRecommendedLayerResolutionMETA;
6157
6158typedef struct XrRecommendedLayerResolutionGetInfoMETA {
6159 XrStructureType type;
6160 const void* XR_MAY_ALIAS next;
6161 const XrCompositionLayerBaseHeader* layer;
6162 XrTime predictedDisplayTime;
6163} XrRecommendedLayerResolutionGetInfoMETA;
6164
6165typedef XrResult (XRAPI_PTR *PFN_xrGetRecommendedLayerResolutionMETA)(XrSession session, const XrRecommendedLayerResolutionGetInfoMETA* info, XrRecommendedLayerResolutionMETA* resolution);
6166
6167#ifndef XR_NO_PROTOTYPES
6168#ifdef XR_EXTENSION_PROTOTYPES
6169XRAPI_ATTR XrResult XRAPI_CALL xrGetRecommendedLayerResolutionMETA(
6170 XrSession session,
6171 const XrRecommendedLayerResolutionGetInfoMETA* info,
6172 XrRecommendedLayerResolutionMETA* resolution);
6173#endif /* XR_EXTENSION_PROTOTYPES */
6174#endif /* !XR_NO_PROTOTYPES */
6175
6176
6177#define XR_META_passthrough_color_lut 1
6178XR_DEFINE_HANDLE(XrPassthroughColorLutMETA)
6179#define XR_META_passthrough_color_lut_SPEC_VERSION 1
6180#define XR_META_PASSTHROUGH_COLOR_LUT_EXTENSION_NAME "XR_META_passthrough_color_lut"
6181
6182typedef enum XrPassthroughColorLutChannelsMETA {
6183 XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGB_META = 1,
6184 XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGBA_META = 2,
6185 XR_PASSTHROUGH_COLOR_LUT_CHANNELS_MAX_ENUM_META = 0x7FFFFFFF
6186} XrPassthroughColorLutChannelsMETA;
6187typedef struct XrPassthroughColorLutDataMETA {
6188 uint32_t bufferSize;
6189 const uint8_t* buffer;
6190} XrPassthroughColorLutDataMETA;
6191
6192typedef struct XrPassthroughColorLutCreateInfoMETA {
6193 XrStructureType type;
6194 const void* XR_MAY_ALIAS next;
6195 XrPassthroughColorLutChannelsMETA channels;
6196 uint32_t resolution;
6197 XrPassthroughColorLutDataMETA data;
6198} XrPassthroughColorLutCreateInfoMETA;
6199
6200typedef struct XrPassthroughColorLutUpdateInfoMETA {
6201 XrStructureType type;
6202 const void* XR_MAY_ALIAS next;
6203 XrPassthroughColorLutDataMETA data;
6204} XrPassthroughColorLutUpdateInfoMETA;
6205
6206// XrPassthroughColorMapLutMETA extends XrPassthroughStyleFB
6207typedef struct XrPassthroughColorMapLutMETA {
6208 XrStructureType type;
6209 const void* XR_MAY_ALIAS next;
6210 XrPassthroughColorLutMETA colorLut;
6211 float weight;
6212} XrPassthroughColorMapLutMETA;
6213
6214// XrPassthroughColorMapInterpolatedLutMETA extends XrPassthroughStyleFB
6215typedef struct XrPassthroughColorMapInterpolatedLutMETA {
6216 XrStructureType type;
6217 const void* XR_MAY_ALIAS next;
6218 XrPassthroughColorLutMETA sourceColorLut;
6219 XrPassthroughColorLutMETA targetColorLut;
6220 float weight;
6221} XrPassthroughColorMapInterpolatedLutMETA;
6222
6223// XrSystemPassthroughColorLutPropertiesMETA extends XrSystemProperties
6224typedef struct XrSystemPassthroughColorLutPropertiesMETA {
6225 XrStructureType type;
6226 const void* XR_MAY_ALIAS next;
6227 uint32_t maxColorLutResolution;
6228} XrSystemPassthroughColorLutPropertiesMETA;
6229
6230typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughColorLutMETA)(XrPassthroughFB passthrough, const XrPassthroughColorLutCreateInfoMETA* createInfo, XrPassthroughColorLutMETA* colorLut);
6231typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughColorLutMETA)(XrPassthroughColorLutMETA colorLut);
6232typedef XrResult (XRAPI_PTR *PFN_xrUpdatePassthroughColorLutMETA)(XrPassthroughColorLutMETA colorLut, const XrPassthroughColorLutUpdateInfoMETA* updateInfo);
6233
6234#ifndef XR_NO_PROTOTYPES
6235#ifdef XR_EXTENSION_PROTOTYPES
6236XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughColorLutMETA(
6237 XrPassthroughFB passthrough,
6238 const XrPassthroughColorLutCreateInfoMETA* createInfo,
6239 XrPassthroughColorLutMETA* colorLut);
6240
6241XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughColorLutMETA(
6242 XrPassthroughColorLutMETA colorLut);
6243
6244XRAPI_ATTR XrResult XRAPI_CALL xrUpdatePassthroughColorLutMETA(
6245 XrPassthroughColorLutMETA colorLut,
6246 const XrPassthroughColorLutUpdateInfoMETA* updateInfo);
6247#endif /* XR_EXTENSION_PROTOTYPES */
6248#endif /* !XR_NO_PROTOTYPES */
6249
6250
6251#define XR_META_spatial_entity_mesh 1
6252#define XR_META_spatial_entity_mesh_SPEC_VERSION 1
6253#define XR_META_SPATIAL_ENTITY_MESH_EXTENSION_NAME "XR_META_spatial_entity_mesh"
6254typedef struct XrSpaceTriangleMeshGetInfoMETA {
6255 XrStructureType type;
6256 const void* XR_MAY_ALIAS next;
6257} XrSpaceTriangleMeshGetInfoMETA;
6258
6259typedef struct XrSpaceTriangleMeshMETA {
6260 XrStructureType type;
6261 void* XR_MAY_ALIAS next;
6262 uint32_t vertexCapacityInput;
6263 uint32_t vertexCountOutput;
6264 XrVector3f* vertices;
6265 uint32_t indexCapacityInput;
6266 uint32_t indexCountOutput;
6267 uint32_t* indices;
6268} XrSpaceTriangleMeshMETA;
6269
6270typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceTriangleMeshMETA)(XrSpace space, const XrSpaceTriangleMeshGetInfoMETA* getInfo, XrSpaceTriangleMeshMETA* triangleMeshOutput);
6271
6272#ifndef XR_NO_PROTOTYPES
6273#ifdef XR_EXTENSION_PROTOTYPES
6274XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceTriangleMeshMETA(
6275 XrSpace space,
6276 const XrSpaceTriangleMeshGetInfoMETA* getInfo,
6277 XrSpaceTriangleMeshMETA* triangleMeshOutput);
6278#endif /* XR_EXTENSION_PROTOTYPES */
6279#endif /* !XR_NO_PROTOTYPES */
6280
6281
6282#define XR_META_automatic_layer_filter 1
6283#define XR_META_automatic_layer_filter_SPEC_VERSION 1
6284#define XR_META_AUTOMATIC_LAYER_FILTER_EXTENSION_NAME "XR_META_automatic_layer_filter"
6285
6286
6287#define XR_META_touch_controller_plus 1
6288#define XR_META_touch_controller_plus_SPEC_VERSION 1
6289#define XR_META_TOUCH_CONTROLLER_PLUS_EXTENSION_NAME "XR_META_touch_controller_plus"
6290
6291
6292#define XR_FB_face_tracking2 1
6293XR_DEFINE_HANDLE(XrFaceTracker2FB)
6294#define XR_FB_face_tracking2_SPEC_VERSION 1
6295#define XR_FB_FACE_TRACKING2_EXTENSION_NAME "XR_FB_face_tracking2"
6296
6297typedef enum XrFaceExpression2FB {
6298 XR_FACE_EXPRESSION2_BROW_LOWERER_L_FB = 0,
6299 XR_FACE_EXPRESSION2_BROW_LOWERER_R_FB = 1,
6300 XR_FACE_EXPRESSION2_CHEEK_PUFF_L_FB = 2,
6301 XR_FACE_EXPRESSION2_CHEEK_PUFF_R_FB = 3,
6302 XR_FACE_EXPRESSION2_CHEEK_RAISER_L_FB = 4,
6303 XR_FACE_EXPRESSION2_CHEEK_RAISER_R_FB = 5,
6304 XR_FACE_EXPRESSION2_CHEEK_SUCK_L_FB = 6,
6305 XR_FACE_EXPRESSION2_CHEEK_SUCK_R_FB = 7,
6306 XR_FACE_EXPRESSION2_CHIN_RAISER_B_FB = 8,
6307 XR_FACE_EXPRESSION2_CHIN_RAISER_T_FB = 9,
6308 XR_FACE_EXPRESSION2_DIMPLER_L_FB = 10,
6309 XR_FACE_EXPRESSION2_DIMPLER_R_FB = 11,
6310 XR_FACE_EXPRESSION2_EYES_CLOSED_L_FB = 12,
6311 XR_FACE_EXPRESSION2_EYES_CLOSED_R_FB = 13,
6312 XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_L_FB = 14,
6313 XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_R_FB = 15,
6314 XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_L_FB = 16,
6315 XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_R_FB = 17,
6316 XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_L_FB = 18,
6317 XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_R_FB = 19,
6318 XR_FACE_EXPRESSION2_EYES_LOOK_UP_L_FB = 20,
6319 XR_FACE_EXPRESSION2_EYES_LOOK_UP_R_FB = 21,
6320 XR_FACE_EXPRESSION2_INNER_BROW_RAISER_L_FB = 22,
6321 XR_FACE_EXPRESSION2_INNER_BROW_RAISER_R_FB = 23,
6322 XR_FACE_EXPRESSION2_JAW_DROP_FB = 24,
6323 XR_FACE_EXPRESSION2_JAW_SIDEWAYS_LEFT_FB = 25,
6324 XR_FACE_EXPRESSION2_JAW_SIDEWAYS_RIGHT_FB = 26,
6325 XR_FACE_EXPRESSION2_JAW_THRUST_FB = 27,
6326 XR_FACE_EXPRESSION2_LID_TIGHTENER_L_FB = 28,
6327 XR_FACE_EXPRESSION2_LID_TIGHTENER_R_FB = 29,
6328 XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_L_FB = 30,
6329 XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_R_FB = 31,
6330 XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_L_FB = 32,
6331 XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_R_FB = 33,
6332 XR_FACE_EXPRESSION2_LIP_FUNNELER_LB_FB = 34,
6333 XR_FACE_EXPRESSION2_LIP_FUNNELER_LT_FB = 35,
6334 XR_FACE_EXPRESSION2_LIP_FUNNELER_RB_FB = 36,
6335 XR_FACE_EXPRESSION2_LIP_FUNNELER_RT_FB = 37,
6336 XR_FACE_EXPRESSION2_LIP_PRESSOR_L_FB = 38,
6337 XR_FACE_EXPRESSION2_LIP_PRESSOR_R_FB = 39,
6338 XR_FACE_EXPRESSION2_LIP_PUCKER_L_FB = 40,
6339 XR_FACE_EXPRESSION2_LIP_PUCKER_R_FB = 41,
6340 XR_FACE_EXPRESSION2_LIP_STRETCHER_L_FB = 42,
6341 XR_FACE_EXPRESSION2_LIP_STRETCHER_R_FB = 43,
6342 XR_FACE_EXPRESSION2_LIP_SUCK_LB_FB = 44,
6343 XR_FACE_EXPRESSION2_LIP_SUCK_LT_FB = 45,
6344 XR_FACE_EXPRESSION2_LIP_SUCK_RB_FB = 46,
6345 XR_FACE_EXPRESSION2_LIP_SUCK_RT_FB = 47,
6346 XR_FACE_EXPRESSION2_LIP_TIGHTENER_L_FB = 48,
6347 XR_FACE_EXPRESSION2_LIP_TIGHTENER_R_FB = 49,
6348 XR_FACE_EXPRESSION2_LIPS_TOWARD_FB = 50,
6349 XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_L_FB = 51,
6350 XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_R_FB = 52,
6351 XR_FACE_EXPRESSION2_MOUTH_LEFT_FB = 53,
6352 XR_FACE_EXPRESSION2_MOUTH_RIGHT_FB = 54,
6353 XR_FACE_EXPRESSION2_NOSE_WRINKLER_L_FB = 55,
6354 XR_FACE_EXPRESSION2_NOSE_WRINKLER_R_FB = 56,
6355 XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_L_FB = 57,
6356 XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_R_FB = 58,
6357 XR_FACE_EXPRESSION2_UPPER_LID_RAISER_L_FB = 59,
6358 XR_FACE_EXPRESSION2_UPPER_LID_RAISER_R_FB = 60,
6359 XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_L_FB = 61,
6360 XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_R_FB = 62,
6361 XR_FACE_EXPRESSION2_TONGUE_TIP_INTERDENTAL_FB = 63,
6362 XR_FACE_EXPRESSION2_TONGUE_TIP_ALVEOLAR_FB = 64,
6363 XR_FACE_EXPRESSION2_TONGUE_FRONT_DORSAL_PALATE_FB = 65,
6364 XR_FACE_EXPRESSION2_TONGUE_MID_DORSAL_PALATE_FB = 66,
6365 XR_FACE_EXPRESSION2_TONGUE_BACK_DORSAL_VELAR_FB = 67,
6366 XR_FACE_EXPRESSION2_TONGUE_OUT_FB = 68,
6367 XR_FACE_EXPRESSION2_TONGUE_RETREAT_FB = 69,
6368 XR_FACE_EXPRESSION2_COUNT_FB = 70,
6369 XR_FACE_EXPRESSION_2FB_MAX_ENUM_FB = 0x7FFFFFFF
6370} XrFaceExpression2FB;
6371
6372typedef enum XrFaceExpressionSet2FB {
6373 XR_FACE_EXPRESSION_SET2_DEFAULT_FB = 0,
6374 XR_FACE_EXPRESSION_SET_2FB_MAX_ENUM_FB = 0x7FFFFFFF
6375} XrFaceExpressionSet2FB;
6376
6377typedef enum XrFaceTrackingDataSource2FB {
6378 XR_FACE_TRACKING_DATA_SOURCE2_VISUAL_FB = 0,
6379 XR_FACE_TRACKING_DATA_SOURCE2_AUDIO_FB = 1,
6380 XR_FACE_TRACKING_DATA_SOURCE_2FB_MAX_ENUM_FB = 0x7FFFFFFF
6381} XrFaceTrackingDataSource2FB;
6382
6383typedef enum XrFaceConfidence2FB {
6384 XR_FACE_CONFIDENCE2_LOWER_FACE_FB = 0,
6385 XR_FACE_CONFIDENCE2_UPPER_FACE_FB = 1,
6386 XR_FACE_CONFIDENCE2_COUNT_FB = 2,
6387 XR_FACE_CONFIDENCE_2FB_MAX_ENUM_FB = 0x7FFFFFFF
6388} XrFaceConfidence2FB;
6389// XrSystemFaceTrackingProperties2FB extends XrSystemProperties
6390typedef struct XrSystemFaceTrackingProperties2FB {
6391 XrStructureType type;
6392 void* XR_MAY_ALIAS next;
6393 XrBool32 supportsVisualFaceTracking;
6394 XrBool32 supportsAudioFaceTracking;
6395} XrSystemFaceTrackingProperties2FB;
6396
6397typedef struct XrFaceTrackerCreateInfo2FB {
6398 XrStructureType type;
6399 const void* XR_MAY_ALIAS next;
6400 XrFaceExpressionSet2FB faceExpressionSet;
6401 uint32_t requestedDataSourceCount;
6402 XrFaceTrackingDataSource2FB* requestedDataSources;
6403} XrFaceTrackerCreateInfo2FB;
6404
6405typedef struct XrFaceExpressionInfo2FB {
6406 XrStructureType type;
6407 const void* XR_MAY_ALIAS next;
6408 XrTime time;
6409} XrFaceExpressionInfo2FB;
6410
6411typedef struct XrFaceExpressionWeights2FB {
6412 XrStructureType type;
6413 void* XR_MAY_ALIAS next;
6414 uint32_t weightCount;
6415 float* weights;
6416 uint32_t confidenceCount;
6417 float* confidences;
6418 XrBool32 isValid;
6419 XrBool32 isEyeFollowingBlendshapesValid;
6420 XrFaceTrackingDataSource2FB dataSource;
6421 XrTime time;
6422} XrFaceExpressionWeights2FB;
6423
6424typedef XrResult (XRAPI_PTR *PFN_xrCreateFaceTracker2FB)(XrSession session, const XrFaceTrackerCreateInfo2FB* createInfo, XrFaceTracker2FB* faceTracker);
6425typedef XrResult (XRAPI_PTR *PFN_xrDestroyFaceTracker2FB)(XrFaceTracker2FB faceTracker);
6426typedef XrResult (XRAPI_PTR *PFN_xrGetFaceExpressionWeights2FB)(XrFaceTracker2FB faceTracker, const XrFaceExpressionInfo2FB* expressionInfo, XrFaceExpressionWeights2FB* expressionWeights);
6427
6428#ifndef XR_NO_PROTOTYPES
6429#ifdef XR_EXTENSION_PROTOTYPES
6430XRAPI_ATTR XrResult XRAPI_CALL xrCreateFaceTracker2FB(
6431 XrSession session,
6432 const XrFaceTrackerCreateInfo2FB* createInfo,
6433 XrFaceTracker2FB* faceTracker);
6434
6435XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFaceTracker2FB(
6436 XrFaceTracker2FB faceTracker);
6437
6438XRAPI_ATTR XrResult XRAPI_CALL xrGetFaceExpressionWeights2FB(
6439 XrFaceTracker2FB faceTracker,
6440 const XrFaceExpressionInfo2FB* expressionInfo,
6441 XrFaceExpressionWeights2FB* expressionWeights);
6442#endif /* XR_EXTENSION_PROTOTYPES */
6443#endif /* !XR_NO_PROTOTYPES */
6444
6445
6446#define XR_EXT_uuid 1
6447#define XR_EXT_uuid_SPEC_VERSION 1
6448#define XR_EXT_UUID_EXTENSION_NAME "XR_EXT_uuid"
6449
6450
6451#define XR_EXT_hand_interaction 1
6452#define XR_EXT_hand_interaction_SPEC_VERSION 1
6453#define XR_EXT_HAND_INTERACTION_EXTENSION_NAME "XR_EXT_hand_interaction"
6454
6455
6456#define XR_QCOM_tracking_optimization_settings 1
6457#define XR_QCOM_tracking_optimization_settings_SPEC_VERSION 1
6458#define XR_QCOM_TRACKING_OPTIMIZATION_SETTINGS_EXTENSION_NAME "XR_QCOM_tracking_optimization_settings"
6459
6460typedef enum XrTrackingOptimizationSettingsDomainQCOM {
6461 XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_ALL_QCOM = 1,
6462 XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_MAX_ENUM_QCOM = 0x7FFFFFFF
6463} XrTrackingOptimizationSettingsDomainQCOM;
6464
6465typedef enum XrTrackingOptimizationSettingsHintQCOM {
6466 XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_NONE_QCOM = 0,
6467 XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_LONG_RANGE_PRIORIZATION_QCOM = 1,
6468 XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_CLOSE_RANGE_PRIORIZATION_QCOM = 2,
6469 XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_LOW_POWER_PRIORIZATION_QCOM = 3,
6470 XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_HIGH_POWER_PRIORIZATION_QCOM = 4,
6471 XR_TRACKING_OPTIMIZATION_SETTINGS_HINT_MAX_ENUM_QCOM = 0x7FFFFFFF
6472} XrTrackingOptimizationSettingsHintQCOM;
6473typedef XrResult (XRAPI_PTR *PFN_xrSetTrackingOptimizationSettingsHintQCOM)(XrSession session, XrTrackingOptimizationSettingsDomainQCOM domain, XrTrackingOptimizationSettingsHintQCOM hint);
6474
6475#ifndef XR_NO_PROTOTYPES
6476#ifdef XR_EXTENSION_PROTOTYPES
6477XRAPI_ATTR XrResult XRAPI_CALL xrSetTrackingOptimizationSettingsHintQCOM(
6478 XrSession session,
6479 XrTrackingOptimizationSettingsDomainQCOM domain,
6480 XrTrackingOptimizationSettingsHintQCOM hint);
6481#endif /* XR_EXTENSION_PROTOTYPES */
6482#endif /* !XR_NO_PROTOTYPES */
6483
6484
6485#define XR_HTC_passthrough 1
6486XR_DEFINE_HANDLE(XrPassthroughHTC)
6487#define XR_HTC_passthrough_SPEC_VERSION 1
6488#define XR_HTC_PASSTHROUGH_EXTENSION_NAME "XR_HTC_passthrough"
6489
6490typedef enum XrPassthroughFormHTC {
6491 XR_PASSTHROUGH_FORM_PLANAR_HTC = 0,
6492 XR_PASSTHROUGH_FORM_PROJECTED_HTC = 1,
6493 XR_PASSTHROUGH_FORM_MAX_ENUM_HTC = 0x7FFFFFFF
6494} XrPassthroughFormHTC;
6495typedef struct XrPassthroughCreateInfoHTC {
6496 XrStructureType type;
6497 const void* XR_MAY_ALIAS next;
6498 XrPassthroughFormHTC form;
6499} XrPassthroughCreateInfoHTC;
6500
6501typedef struct XrPassthroughColorHTC {
6502 XrStructureType type;
6503 const void* XR_MAY_ALIAS next;
6504 float alpha;
6505} XrPassthroughColorHTC;
6506
6507// XrPassthroughMeshTransformInfoHTC extends XrCompositionLayerPassthroughHTC
6508typedef struct XrPassthroughMeshTransformInfoHTC {
6509 XrStructureType type;
6510 const void* XR_MAY_ALIAS next;
6511 uint32_t vertexCount;
6512 const XrVector3f* vertices;
6513 uint32_t indexCount;
6514 const uint32_t* indices;
6515 XrSpace baseSpace;
6516 XrTime time;
6517 XrPosef pose;
6518 XrVector3f scale;
6519} XrPassthroughMeshTransformInfoHTC;
6520
6521typedef struct XrCompositionLayerPassthroughHTC {
6522 XrStructureType type;
6523 const void* XR_MAY_ALIAS next;
6524 XrCompositionLayerFlags layerFlags;
6525 XrSpace space;
6526 XrPassthroughHTC passthrough;
6527 XrPassthroughColorHTC color;
6528} XrCompositionLayerPassthroughHTC;
6529
6530typedef XrResult (XRAPI_PTR *PFN_xrCreatePassthroughHTC)(XrSession session, const XrPassthroughCreateInfoHTC* createInfo, XrPassthroughHTC* passthrough);
6531typedef XrResult (XRAPI_PTR *PFN_xrDestroyPassthroughHTC)(XrPassthroughHTC passthrough);
6532
6533#ifndef XR_NO_PROTOTYPES
6534#ifdef XR_EXTENSION_PROTOTYPES
6535XRAPI_ATTR XrResult XRAPI_CALL xrCreatePassthroughHTC(
6536 XrSession session,
6537 const XrPassthroughCreateInfoHTC* createInfo,
6538 XrPassthroughHTC* passthrough);
6539
6540XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPassthroughHTC(
6541 XrPassthroughHTC passthrough);
6542#endif /* XR_EXTENSION_PROTOTYPES */
6543#endif /* !XR_NO_PROTOTYPES */
6544
6545
6546#define XR_HTC_foveation 1
6547#define XR_HTC_foveation_SPEC_VERSION 1
6548#define XR_HTC_FOVEATION_EXTENSION_NAME "XR_HTC_foveation"
6549
6550typedef enum XrFoveationModeHTC {
6551 XR_FOVEATION_MODE_DISABLE_HTC = 0,
6552 XR_FOVEATION_MODE_FIXED_HTC = 1,
6553 XR_FOVEATION_MODE_DYNAMIC_HTC = 2,
6554 XR_FOVEATION_MODE_CUSTOM_HTC = 3,
6555 XR_FOVEATION_MODE_MAX_ENUM_HTC = 0x7FFFFFFF
6556} XrFoveationModeHTC;
6557
6558typedef enum XrFoveationLevelHTC {
6559 XR_FOVEATION_LEVEL_NONE_HTC = 0,
6560 XR_FOVEATION_LEVEL_LOW_HTC = 1,
6561 XR_FOVEATION_LEVEL_MEDIUM_HTC = 2,
6562 XR_FOVEATION_LEVEL_HIGH_HTC = 3,
6563 XR_FOVEATION_LEVEL_MAX_ENUM_HTC = 0x7FFFFFFF
6564} XrFoveationLevelHTC;
6565typedef XrFlags64 XrFoveationDynamicFlagsHTC;
6566
6567// Flag bits for XrFoveationDynamicFlagsHTC
6568static const XrFoveationDynamicFlagsHTC XR_FOVEATION_DYNAMIC_LEVEL_ENABLED_BIT_HTC = 0x00000001;
6569static const XrFoveationDynamicFlagsHTC XR_FOVEATION_DYNAMIC_CLEAR_FOV_ENABLED_BIT_HTC = 0x00000002;
6570static const XrFoveationDynamicFlagsHTC XR_FOVEATION_DYNAMIC_FOCAL_CENTER_OFFSET_ENABLED_BIT_HTC = 0x00000004;
6571
6572typedef struct XrFoveationApplyInfoHTC {
6573 XrStructureType type;
6574 const void* XR_MAY_ALIAS next;
6575 XrFoveationModeHTC mode;
6576 uint32_t subImageCount;
6577 XrSwapchainSubImage* subImages;
6578} XrFoveationApplyInfoHTC;
6579
6580typedef struct XrFoveationConfigurationHTC {
6581 XrFoveationLevelHTC level;
6582 float clearFovDegree;
6583 XrVector2f focalCenterOffset;
6584} XrFoveationConfigurationHTC;
6585
6586// XrFoveationDynamicModeInfoHTC extends XrFoveationApplyInfoHTC
6587typedef struct XrFoveationDynamicModeInfoHTC {
6588 XrStructureType type;
6589 const void* XR_MAY_ALIAS next;
6590 XrFoveationDynamicFlagsHTC dynamicFlags;
6591} XrFoveationDynamicModeInfoHTC;
6592
6593// XrFoveationCustomModeInfoHTC extends XrFoveationApplyInfoHTC
6594typedef struct XrFoveationCustomModeInfoHTC {
6595 XrStructureType type;
6596 const void* XR_MAY_ALIAS next;
6597 uint32_t configCount;
6598 const XrFoveationConfigurationHTC* configs;
6599} XrFoveationCustomModeInfoHTC;
6600
6601typedef XrResult (XRAPI_PTR *PFN_xrApplyFoveationHTC)(XrSession session, const XrFoveationApplyInfoHTC* applyInfo);
6602
6603#ifndef XR_NO_PROTOTYPES
6604#ifdef XR_EXTENSION_PROTOTYPES
6605XRAPI_ATTR XrResult XRAPI_CALL xrApplyFoveationHTC(
6606 XrSession session,
6607 const XrFoveationApplyInfoHTC* applyInfo);
6608#endif /* XR_EXTENSION_PROTOTYPES */
6609#endif /* !XR_NO_PROTOTYPES */
6610
6611
6612#define XR_HTC_anchor 1
6613#define XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_HTC 256
6614#define XR_HTC_anchor_SPEC_VERSION 1
6615#define XR_HTC_ANCHOR_EXTENSION_NAME "XR_HTC_anchor"
6616// XrSystemAnchorPropertiesHTC extends XrSystemProperties
6617typedef struct XrSystemAnchorPropertiesHTC {
6618 XrStructureType type;
6619 void* XR_MAY_ALIAS next;
6620 XrBool32 supportsAnchor;
6621} XrSystemAnchorPropertiesHTC;
6622
6623typedef struct XrSpatialAnchorNameHTC {
6624 char name[XR_MAX_SPATIAL_ANCHOR_NAME_SIZE_HTC];
6625} XrSpatialAnchorNameHTC;
6626
6627typedef struct XrSpatialAnchorCreateInfoHTC {
6628 XrStructureType type;
6629 const void* XR_MAY_ALIAS next;
6630 XrSpace space;
6631 XrPosef poseInSpace;
6632 XrSpatialAnchorNameHTC name;
6633} XrSpatialAnchorCreateInfoHTC;
6634
6635typedef XrResult (XRAPI_PTR *PFN_xrCreateSpatialAnchorHTC)(XrSession session, const XrSpatialAnchorCreateInfoHTC* createInfo, XrSpace* anchor);
6636typedef XrResult (XRAPI_PTR *PFN_xrGetSpatialAnchorNameHTC)(XrSpace anchor, XrSpatialAnchorNameHTC* name);
6637
6638#ifndef XR_NO_PROTOTYPES
6639#ifdef XR_EXTENSION_PROTOTYPES
6640XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpatialAnchorHTC(
6641 XrSession session,
6642 const XrSpatialAnchorCreateInfoHTC* createInfo,
6643 XrSpace* anchor);
6644
6645XRAPI_ATTR XrResult XRAPI_CALL xrGetSpatialAnchorNameHTC(
6646 XrSpace anchor,
6647 XrSpatialAnchorNameHTC* name);
6648#endif /* XR_EXTENSION_PROTOTYPES */
6649#endif /* !XR_NO_PROTOTYPES */
6650
6651
6652#define XR_EXT_active_action_set_priority 1
6653#define XR_EXT_active_action_set_priority_SPEC_VERSION 1
6654#define XR_EXT_ACTIVE_ACTION_SET_PRIORITY_EXTENSION_NAME "XR_EXT_active_action_set_priority"
6655typedef struct XrActiveActionSetPriorityEXT {
6656 XrActionSet actionSet;
6657 uint32_t priorityOverride;
6658} XrActiveActionSetPriorityEXT;
6659
6660// XrActiveActionSetPrioritiesEXT extends XrActionsSyncInfo
6661typedef struct XrActiveActionSetPrioritiesEXT {
6662 XrStructureType type;
6663 const void* XR_MAY_ALIAS next;
6664 uint32_t actionSetPriorityCount;
6665 const XrActiveActionSetPriorityEXT* actionSetPriorities;
6666} XrActiveActionSetPrioritiesEXT;
6667
6668
6669
6670#define XR_MNDX_force_feedback_curl 1
6671#define XR_MNDX_force_feedback_curl_SPEC_VERSION 1
6672#define XR_MNDX_FORCE_FEEDBACK_CURL_EXTENSION_NAME "XR_MNDX_force_feedback_curl"
6673
6674typedef enum XrForceFeedbackCurlLocationMNDX {
6675 XR_FORCE_FEEDBACK_CURL_LOCATION_THUMB_CURL_MNDX = 0,
6676 XR_FORCE_FEEDBACK_CURL_LOCATION_INDEX_CURL_MNDX = 1,
6677 XR_FORCE_FEEDBACK_CURL_LOCATION_MIDDLE_CURL_MNDX = 2,
6678 XR_FORCE_FEEDBACK_CURL_LOCATION_RING_CURL_MNDX = 3,
6679 XR_FORCE_FEEDBACK_CURL_LOCATION_LITTLE_CURL_MNDX = 4,
6680 XR_FORCE_FEEDBACK_CURL_LOCATION_MAX_ENUM_MNDX = 0x7FFFFFFF
6681} XrForceFeedbackCurlLocationMNDX;
6682// XrSystemForceFeedbackCurlPropertiesMNDX extends XrSystemProperties
6683typedef struct XrSystemForceFeedbackCurlPropertiesMNDX {
6684 XrStructureType type;
6685 void* XR_MAY_ALIAS next;
6686 XrBool32 supportsForceFeedbackCurl;
6687} XrSystemForceFeedbackCurlPropertiesMNDX;
6688
6689typedef struct XrForceFeedbackCurlApplyLocationMNDX {
6690 XrForceFeedbackCurlLocationMNDX location;
6691 float value;
6692} XrForceFeedbackCurlApplyLocationMNDX;
6693
6694typedef struct XrForceFeedbackCurlApplyLocationsMNDX {
6695 XrStructureType type;
6696 const void* XR_MAY_ALIAS next;
6697 uint32_t locationCount;
6698 XrForceFeedbackCurlApplyLocationMNDX* locations;
6699} XrForceFeedbackCurlApplyLocationsMNDX;
6700
6701typedef XrResult (XRAPI_PTR *PFN_xrApplyForceFeedbackCurlMNDX)(XrHandTrackerEXT handTracker, const XrForceFeedbackCurlApplyLocationsMNDX* locations);
6702
6703#ifndef XR_NO_PROTOTYPES
6704#ifdef XR_EXTENSION_PROTOTYPES
6705XRAPI_ATTR XrResult XRAPI_CALL xrApplyForceFeedbackCurlMNDX(
6706 XrHandTrackerEXT handTracker,
6707 const XrForceFeedbackCurlApplyLocationsMNDX* locations);
6708#endif /* XR_EXTENSION_PROTOTYPES */
6709#endif /* !XR_NO_PROTOTYPES */
6710
6711
6712#define XR_BD_controller_interaction 1
6713#define XR_BD_controller_interaction_SPEC_VERSION 2
6714#define XR_BD_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_BD_controller_interaction"
6715
6716
6717#define XR_EXT_local_floor 1
6718#define XR_EXT_local_floor_SPEC_VERSION 1
6719#define XR_EXT_LOCAL_FLOOR_EXTENSION_NAME "XR_EXT_local_floor"
6720
6721
6722#define XR_EXT_hand_tracking_data_source 1
6723#define XR_EXT_hand_tracking_data_source_SPEC_VERSION 1
6724#define XR_EXT_HAND_TRACKING_DATA_SOURCE_EXTENSION_NAME "XR_EXT_hand_tracking_data_source"
6725
6726typedef enum XrHandTrackingDataSourceEXT {
6727 XR_HAND_TRACKING_DATA_SOURCE_UNOBSTRUCTED_EXT = 1,
6728 XR_HAND_TRACKING_DATA_SOURCE_CONTROLLER_EXT = 2,
6729 XR_HAND_TRACKING_DATA_SOURCE_MAX_ENUM_EXT = 0x7FFFFFFF
6730} XrHandTrackingDataSourceEXT;
6731// XrHandTrackingDataSourceInfoEXT extends XrHandTrackerCreateInfoEXT
6732typedef struct XrHandTrackingDataSourceInfoEXT {
6733 XrStructureType type;
6734 const void* XR_MAY_ALIAS next;
6735 uint32_t requestedDataSourceCount;
6736 XrHandTrackingDataSourceEXT* requestedDataSources;
6737} XrHandTrackingDataSourceInfoEXT;
6738
6739// XrHandTrackingDataSourceStateEXT extends XrHandJointLocationsEXT
6740typedef struct XrHandTrackingDataSourceStateEXT {
6741 XrStructureType type;
6742 void* XR_MAY_ALIAS next;
6743 XrBool32 isActive;
6744 XrHandTrackingDataSourceEXT dataSource;
6745} XrHandTrackingDataSourceStateEXT;
6746
6747
6748
6749#define XR_EXT_plane_detection 1
6750XR_DEFINE_HANDLE(XrPlaneDetectorEXT)
6751#define XR_EXT_plane_detection_SPEC_VERSION 1
6752#define XR_EXT_PLANE_DETECTION_EXTENSION_NAME "XR_EXT_plane_detection"
6753
6754typedef enum XrPlaneDetectorOrientationEXT {
6755 XR_PLANE_DETECTOR_ORIENTATION_HORIZONTAL_UPWARD_EXT = 0,
6756 XR_PLANE_DETECTOR_ORIENTATION_HORIZONTAL_DOWNWARD_EXT = 1,
6757 XR_PLANE_DETECTOR_ORIENTATION_VERTICAL_EXT = 2,
6758 XR_PLANE_DETECTOR_ORIENTATION_ARBITRARY_EXT = 3,
6759 XR_PLANE_DETECTOR_ORIENTATION_MAX_ENUM_EXT = 0x7FFFFFFF
6760} XrPlaneDetectorOrientationEXT;
6761
6762typedef enum XrPlaneDetectorSemanticTypeEXT {
6763 XR_PLANE_DETECTOR_SEMANTIC_TYPE_UNDEFINED_EXT = 0,
6764 XR_PLANE_DETECTOR_SEMANTIC_TYPE_CEILING_EXT = 1,
6765 XR_PLANE_DETECTOR_SEMANTIC_TYPE_FLOOR_EXT = 2,
6766 XR_PLANE_DETECTOR_SEMANTIC_TYPE_WALL_EXT = 3,
6767 XR_PLANE_DETECTOR_SEMANTIC_TYPE_PLATFORM_EXT = 4,
6768 XR_PLANE_DETECTOR_SEMANTIC_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
6769} XrPlaneDetectorSemanticTypeEXT;
6770
6771typedef enum XrPlaneDetectionStateEXT {
6772 XR_PLANE_DETECTION_STATE_NONE_EXT = 0,
6773 XR_PLANE_DETECTION_STATE_PENDING_EXT = 1,
6774 XR_PLANE_DETECTION_STATE_DONE_EXT = 2,
6775 XR_PLANE_DETECTION_STATE_ERROR_EXT = 3,
6776 XR_PLANE_DETECTION_STATE_FATAL_EXT = 4,
6777 XR_PLANE_DETECTION_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
6778} XrPlaneDetectionStateEXT;
6779typedef XrFlags64 XrPlaneDetectionCapabilityFlagsEXT;
6780
6781// Flag bits for XrPlaneDetectionCapabilityFlagsEXT
6782static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_PLANE_DETECTION_BIT_EXT = 0x00000001;
6783static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_PLANE_HOLES_BIT_EXT = 0x00000002;
6784static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_CEILING_BIT_EXT = 0x00000004;
6785static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_FLOOR_BIT_EXT = 0x00000008;
6786static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_WALL_BIT_EXT = 0x00000010;
6787static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_SEMANTIC_PLATFORM_BIT_EXT = 0x00000020;
6788static const XrPlaneDetectionCapabilityFlagsEXT XR_PLANE_DETECTION_CAPABILITY_ORIENTATION_BIT_EXT = 0x00000040;
6789
6790typedef XrFlags64 XrPlaneDetectorFlagsEXT;
6791
6792// Flag bits for XrPlaneDetectorFlagsEXT
6793static const XrPlaneDetectorFlagsEXT XR_PLANE_DETECTOR_ENABLE_CONTOUR_BIT_EXT = 0x00000001;
6794
6795// XrSystemPlaneDetectionPropertiesEXT extends XrSystemProperties
6796typedef struct XrSystemPlaneDetectionPropertiesEXT {
6797 XrStructureType type;
6798 void* XR_MAY_ALIAS next;
6799 XrPlaneDetectionCapabilityFlagsEXT supportedFeatures;
6800} XrSystemPlaneDetectionPropertiesEXT;
6801
6802typedef struct XrPlaneDetectorCreateInfoEXT {
6803 XrStructureType type;
6804 const void* XR_MAY_ALIAS next;
6805 XrPlaneDetectorFlagsEXT flags;
6806} XrPlaneDetectorCreateInfoEXT;
6807
6808typedef struct XrExtent3DfEXT {
6809 float width;
6810 float height;
6811 float depth;
6812} XrExtent3DfEXT;
6813
6814typedef struct XrPlaneDetectorBeginInfoEXT {
6815 XrStructureType type;
6816 const void* XR_MAY_ALIAS next;
6817 XrSpace baseSpace;
6818 XrTime time;
6819 uint32_t orientationCount;
6820 const XrPlaneDetectorOrientationEXT* orientations;
6821 uint32_t semanticTypeCount;
6822 const XrPlaneDetectorSemanticTypeEXT* semanticTypes;
6823 uint32_t maxPlanes;
6824 float minArea;
6825 XrPosef boundingBoxPose;
6826 XrExtent3DfEXT boundingBoxExtent;
6827} XrPlaneDetectorBeginInfoEXT;
6828
6829typedef struct XrPlaneDetectorGetInfoEXT {
6830 XrStructureType type;
6831 const void* XR_MAY_ALIAS next;
6832 XrSpace baseSpace;
6833 XrTime time;
6834} XrPlaneDetectorGetInfoEXT;
6835
6836typedef struct XrPlaneDetectorLocationEXT {
6837 XrStructureType type;
6838 void* XR_MAY_ALIAS next;
6839 uint64_t planeId;
6840 XrSpaceLocationFlags locationFlags;
6841 XrPosef pose;
6842 XrExtent2Df extents;
6843 XrPlaneDetectorOrientationEXT orientation;
6844 XrPlaneDetectorSemanticTypeEXT semanticType;
6845 uint32_t polygonBufferCount;
6846} XrPlaneDetectorLocationEXT;
6847
6848typedef struct XrPlaneDetectorLocationsEXT {
6849 XrStructureType type;
6850 void* XR_MAY_ALIAS next;
6851 uint32_t planeLocationCapacityInput;
6852 uint32_t planeLocationCountOutput;
6853 XrPlaneDetectorLocationEXT* planeLocations;
6854} XrPlaneDetectorLocationsEXT;
6855
6856typedef struct XrPlaneDetectorPolygonBufferEXT {
6857 XrStructureType type;
6858 void* XR_MAY_ALIAS next;
6859 uint32_t vertexCapacityInput;
6860 uint32_t vertexCountOutput;
6861 XrVector2f* vertices;
6862} XrPlaneDetectorPolygonBufferEXT;
6863
6864typedef XrResult (XRAPI_PTR *PFN_xrCreatePlaneDetectorEXT)(XrSession session, const XrPlaneDetectorCreateInfoEXT* createInfo, XrPlaneDetectorEXT* planeDetector);
6865typedef XrResult (XRAPI_PTR *PFN_xrDestroyPlaneDetectorEXT)(XrPlaneDetectorEXT planeDetector);
6866typedef XrResult (XRAPI_PTR *PFN_xrBeginPlaneDetectionEXT)(XrPlaneDetectorEXT planeDetector, const XrPlaneDetectorBeginInfoEXT* beginInfo);
6867typedef XrResult (XRAPI_PTR *PFN_xrGetPlaneDetectionStateEXT)(XrPlaneDetectorEXT planeDetector, XrPlaneDetectionStateEXT* state);
6868typedef XrResult (XRAPI_PTR *PFN_xrGetPlaneDetectionsEXT)(XrPlaneDetectorEXT planeDetector, const XrPlaneDetectorGetInfoEXT* info, XrPlaneDetectorLocationsEXT* locations);
6869typedef XrResult (XRAPI_PTR *PFN_xrGetPlanePolygonBufferEXT)(XrPlaneDetectorEXT planeDetector, uint64_t planeId, uint32_t polygonBufferIndex, XrPlaneDetectorPolygonBufferEXT* polygonBuffer);
6870
6871#ifndef XR_NO_PROTOTYPES
6872#ifdef XR_EXTENSION_PROTOTYPES
6873XRAPI_ATTR XrResult XRAPI_CALL xrCreatePlaneDetectorEXT(
6874 XrSession session,
6875 const XrPlaneDetectorCreateInfoEXT* createInfo,
6876 XrPlaneDetectorEXT* planeDetector);
6877
6878XRAPI_ATTR XrResult XRAPI_CALL xrDestroyPlaneDetectorEXT(
6879 XrPlaneDetectorEXT planeDetector);
6880
6881XRAPI_ATTR XrResult XRAPI_CALL xrBeginPlaneDetectionEXT(
6882 XrPlaneDetectorEXT planeDetector,
6883 const XrPlaneDetectorBeginInfoEXT* beginInfo);
6884
6885XRAPI_ATTR XrResult XRAPI_CALL xrGetPlaneDetectionStateEXT(
6886 XrPlaneDetectorEXT planeDetector,
6887 XrPlaneDetectionStateEXT* state);
6888
6889XRAPI_ATTR XrResult XRAPI_CALL xrGetPlaneDetectionsEXT(
6890 XrPlaneDetectorEXT planeDetector,
6891 const XrPlaneDetectorGetInfoEXT* info,
6892 XrPlaneDetectorLocationsEXT* locations);
6893
6894XRAPI_ATTR XrResult XRAPI_CALL xrGetPlanePolygonBufferEXT(
6895 XrPlaneDetectorEXT planeDetector,
6896 uint64_t planeId,
6897 uint32_t polygonBufferIndex,
6898 XrPlaneDetectorPolygonBufferEXT* polygonBuffer);
6899#endif /* XR_EXTENSION_PROTOTYPES */
6900#endif /* !XR_NO_PROTOTYPES */
6901
6902
6903#define XR_OPPO_controller_interaction 1
6904#define XR_OPPO_controller_interaction_SPEC_VERSION 1
6905#define XR_OPPO_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_OPPO_controller_interaction"
6906
6907
6908#define XR_EXT_user_presence 1
6909#define XR_EXT_user_presence_SPEC_VERSION 1
6910#define XR_EXT_USER_PRESENCE_EXTENSION_NAME "XR_EXT_user_presence"
6911typedef struct XrEventDataUserPresenceChangedEXT {
6912 XrStructureType type;
6913 const void* XR_MAY_ALIAS next;
6914 XrSession session;
6915 XrBool32 isUserPresent;
6916} XrEventDataUserPresenceChangedEXT;
6917
6918// XrSystemUserPresencePropertiesEXT extends XrSystemProperties
6919typedef struct XrSystemUserPresencePropertiesEXT {
6920 XrStructureType type;
6921 void* XR_MAY_ALIAS next;
6922 XrBool32 supportsUserPresence;
6923} XrSystemUserPresencePropertiesEXT;
6924
6925
6926
6927#define XR_ML_user_calibration 1
6928#define XR_ML_user_calibration_SPEC_VERSION 1
6929#define XR_ML_USER_CALIBRATION_EXTENSION_NAME "XR_ML_user_calibration"
6930
6931typedef enum XrHeadsetFitStatusML {
6932 XR_HEADSET_FIT_STATUS_UNKNOWN_ML = 0,
6933 XR_HEADSET_FIT_STATUS_NOT_WORN_ML = 1,
6934 XR_HEADSET_FIT_STATUS_GOOD_FIT_ML = 2,
6935 XR_HEADSET_FIT_STATUS_BAD_FIT_ML = 3,
6936 XR_HEADSET_FIT_STATUS_MAX_ENUM_ML = 0x7FFFFFFF
6937} XrHeadsetFitStatusML;
6938
6939typedef enum XrEyeCalibrationStatusML {
6940 XR_EYE_CALIBRATION_STATUS_UNKNOWN_ML = 0,
6941 XR_EYE_CALIBRATION_STATUS_NONE_ML = 1,
6942 XR_EYE_CALIBRATION_STATUS_COARSE_ML = 2,
6943 XR_EYE_CALIBRATION_STATUS_FINE_ML = 3,
6944 XR_EYE_CALIBRATION_STATUS_MAX_ENUM_ML = 0x7FFFFFFF
6945} XrEyeCalibrationStatusML;
6946typedef struct XrEventDataHeadsetFitChangedML {
6947 XrStructureType type;
6948 const void* XR_MAY_ALIAS next;
6949 XrHeadsetFitStatusML status;
6950 XrTime time;
6951} XrEventDataHeadsetFitChangedML;
6952
6953typedef struct XrEventDataEyeCalibrationChangedML {
6954 XrStructureType type;
6955 const void* XR_MAY_ALIAS next;
6956 XrEyeCalibrationStatusML status;
6957} XrEventDataEyeCalibrationChangedML;
6958
6959typedef struct XrUserCalibrationEnableEventsInfoML {
6960 XrStructureType type;
6961 const void* XR_MAY_ALIAS next;
6962 XrBool32 enabled;
6963} XrUserCalibrationEnableEventsInfoML;
6964
6965typedef XrResult (XRAPI_PTR *PFN_xrEnableUserCalibrationEventsML)(XrInstance instance, const XrUserCalibrationEnableEventsInfoML* enableInfo);
6966
6967#ifndef XR_NO_PROTOTYPES
6968#ifdef XR_EXTENSION_PROTOTYPES
6969XRAPI_ATTR XrResult XRAPI_CALL xrEnableUserCalibrationEventsML(
6970 XrInstance instance,
6971 const XrUserCalibrationEnableEventsInfoML* enableInfo);
6972#endif /* XR_EXTENSION_PROTOTYPES */
6973#endif /* !XR_NO_PROTOTYPES */
6974
6975
6976#define XR_YVR_controller_interaction 1
6977#define XR_YVR_controller_interaction_SPEC_VERSION 1
6978#define XR_YVR_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_YVR_controller_interaction"
6979
6980#ifdef __cplusplus
6981}
6982#endif
6983
6984#endif
6985

source code of qtquick3d/src/3rdparty/openxr/include/openxr/openxr.h