Monado OpenXR Runtime
oxr_extension_support.h
Go to the documentation of this file.
1// Copyright 2019-2024, Collabora, Ltd.
2// SPDX-License-Identifier: BSL-1.0
3/*!
4 * @file
5 * @brief Macros for generating extension-related tables and code and
6 * inspecting Monado's extension support.
7 *
8 * MOSTLY GENERATED CODE - see below!
9 *
10 * To add support for a new extension, edit and run generate_oxr_ext_support.py,
11 * then run clang-format on this file. Two entire chunks of this file get
12 * replaced by that script: comments indicate where they are.
13 *
14 * @author Rylie Pavlik <rylie.pavlik@collabora.com>
15 */
16
17#pragma once
18
19#include "xrt/xrt_config_build.h"
21
22// beginning of GENERATED defines - do not modify - used by scripts
23
24/*
25 * XR_KHR_android_create_instance
26 */
27#if defined(XR_KHR_android_create_instance) && defined(XR_USE_PLATFORM_ANDROID)
28#define OXR_HAVE_KHR_android_create_instance
29#define OXR_EXTENSION_SUPPORT_KHR_android_create_instance(_) _(KHR_android_create_instance, KHR_ANDROID_CREATE_INSTANCE)
30#else
31#define OXR_EXTENSION_SUPPORT_KHR_android_create_instance(_)
32#endif
33
34
35/*
36 * XR_KHR_android_thread_settings
37 */
38#if defined(XR_KHR_android_thread_settings) && defined(XR_USE_PLATFORM_ANDROID)
39#define OXR_HAVE_KHR_android_thread_settings
40#define OXR_EXTENSION_SUPPORT_KHR_android_thread_settings(_) _(KHR_android_thread_settings, KHR_ANDROID_THREAD_SETTINGS)
41#else
42#define OXR_EXTENSION_SUPPORT_KHR_android_thread_settings(_)
43#endif
44
45
46/*
47 * XR_KHR_binding_modification
48 */
49#if defined(XR_KHR_binding_modification)
50#define OXR_HAVE_KHR_binding_modification
51#define OXR_EXTENSION_SUPPORT_KHR_binding_modification(_) _(KHR_binding_modification, KHR_BINDING_MODIFICATION)
52#else
53#define OXR_EXTENSION_SUPPORT_KHR_binding_modification(_)
54#endif
55
56
57/*
58 * XR_KHR_composition_layer_color_scale_bias
59 */
60#if defined(XR_KHR_composition_layer_color_scale_bias) && defined(XRT_FEATURE_OPENXR_LAYER_COLOR_SCALE_BIAS)
61#define OXR_HAVE_KHR_composition_layer_color_scale_bias
62#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_color_scale_bias(_) \
63 _(KHR_composition_layer_color_scale_bias, KHR_COMPOSITION_LAYER_COLOR_SCALE_BIAS)
64#else
65#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_color_scale_bias(_)
66#endif
67
68
69/*
70 * XR_KHR_composition_layer_cube
71 */
72#if defined(XR_KHR_composition_layer_cube) && defined(XRT_FEATURE_OPENXR_LAYER_CUBE)
73#define OXR_HAVE_KHR_composition_layer_cube
74#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_cube(_) _(KHR_composition_layer_cube, KHR_COMPOSITION_LAYER_CUBE)
75#else
76#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_cube(_)
77#endif
78
79
80/*
81 * XR_KHR_composition_layer_cylinder
82 */
83#if defined(XR_KHR_composition_layer_cylinder) && defined(XRT_FEATURE_OPENXR_LAYER_CYLINDER)
84#define OXR_HAVE_KHR_composition_layer_cylinder
85#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_cylinder(_) \
86 _(KHR_composition_layer_cylinder, KHR_COMPOSITION_LAYER_CYLINDER)
87#else
88#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_cylinder(_)
89#endif
90
91
92/*
93 * XR_KHR_composition_layer_depth
94 */
95#if defined(XR_KHR_composition_layer_depth) && defined(XRT_FEATURE_OPENXR_LAYER_DEPTH)
96#define OXR_HAVE_KHR_composition_layer_depth
97#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_depth(_) _(KHR_composition_layer_depth, KHR_COMPOSITION_LAYER_DEPTH)
98#else
99#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_depth(_)
100#endif
101
102
103/*
104 * XR_KHR_composition_layer_equirect
105 */
106#if defined(XR_KHR_composition_layer_equirect) && defined(XRT_FEATURE_OPENXR_LAYER_EQUIRECT1)
107#define OXR_HAVE_KHR_composition_layer_equirect
108#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_equirect(_) \
109 _(KHR_composition_layer_equirect, KHR_COMPOSITION_LAYER_EQUIRECT)
110#else
111#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_equirect(_)
112#endif
113
114
115/*
116 * XR_KHR_composition_layer_equirect2
117 */
118#if defined(XR_KHR_composition_layer_equirect2) && defined(XRT_FEATURE_OPENXR_LAYER_EQUIRECT2)
119#define OXR_HAVE_KHR_composition_layer_equirect2
120#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_equirect2(_) \
121 _(KHR_composition_layer_equirect2, KHR_COMPOSITION_LAYER_EQUIRECT2)
122#else
123#define OXR_EXTENSION_SUPPORT_KHR_composition_layer_equirect2(_)
124#endif
125
126
127/*
128 * XR_KHR_convert_timespec_time
129 */
130#if defined(XR_KHR_convert_timespec_time) && defined(XR_USE_TIMESPEC) && (!defined(XR_USE_PLATFORM_WIN32))
131#define OXR_HAVE_KHR_convert_timespec_time
132#define OXR_EXTENSION_SUPPORT_KHR_convert_timespec_time(_) _(KHR_convert_timespec_time, KHR_CONVERT_TIMESPEC_TIME)
133#else
134#define OXR_EXTENSION_SUPPORT_KHR_convert_timespec_time(_)
135#endif
136
137
138/*
139 * XR_KHR_D3D11_enable
140 */
141#if defined(XR_KHR_D3D11_enable) && defined(XR_USE_GRAPHICS_API_D3D11)
142#define OXR_HAVE_KHR_D3D11_enable
143#define OXR_EXTENSION_SUPPORT_KHR_D3D11_enable(_) _(KHR_D3D11_enable, KHR_D3D11_ENABLE)
144#else
145#define OXR_EXTENSION_SUPPORT_KHR_D3D11_enable(_)
146#endif
147
148
149/*
150 * XR_KHR_D3D12_enable
151 */
152#if defined(XR_KHR_D3D12_enable) && defined(XR_USE_GRAPHICS_API_D3D12)
153#define OXR_HAVE_KHR_D3D12_enable
154#define OXR_EXTENSION_SUPPORT_KHR_D3D12_enable(_) _(KHR_D3D12_enable, KHR_D3D12_ENABLE)
155#else
156#define OXR_EXTENSION_SUPPORT_KHR_D3D12_enable(_)
157#endif
158
159
160/*
161 * XR_KHR_extended_struct_name_lengths
162 */
163#if defined(XR_KHR_extended_struct_name_lengths)
164#define OXR_HAVE_KHR_extended_struct_name_lengths
165#define OXR_EXTENSION_SUPPORT_KHR_extended_struct_name_lengths(_) \
166 _(KHR_extended_struct_name_lengths, KHR_EXTENDED_STRUCT_NAME_LENGTHS)
167#else
168#define OXR_EXTENSION_SUPPORT_KHR_extended_struct_name_lengths(_)
169#endif
170
171
172/*
173 * XR_KHR_loader_init
174 */
175#if defined(XR_KHR_loader_init) && defined(XR_USE_PLATFORM_ANDROID)
176#define OXR_HAVE_KHR_loader_init
177#define OXR_EXTENSION_SUPPORT_KHR_loader_init(_) _(KHR_loader_init, KHR_LOADER_INIT)
178#else
179#define OXR_EXTENSION_SUPPORT_KHR_loader_init(_)
180#endif
181
182
183/*
184 * XR_KHR_loader_init_android
185 */
186#if defined(XR_KHR_loader_init_android) && defined(OXR_HAVE_KHR_loader_init) && defined(XR_USE_PLATFORM_ANDROID)
187#define OXR_HAVE_KHR_loader_init_android
188#define OXR_EXTENSION_SUPPORT_KHR_loader_init_android(_) _(KHR_loader_init_android, KHR_LOADER_INIT_ANDROID)
189#else
190#define OXR_EXTENSION_SUPPORT_KHR_loader_init_android(_)
191#endif
192
193
194/*
195 * XR_KHR_locate_spaces
196 */
197#if defined(XR_KHR_locate_spaces)
198#define OXR_HAVE_KHR_locate_spaces
199#define OXR_EXTENSION_SUPPORT_KHR_locate_spaces(_) _(KHR_locate_spaces, KHR_LOCATE_SPACES)
200#else
201#define OXR_EXTENSION_SUPPORT_KHR_locate_spaces(_)
202#endif
203
204
205/*
206 * XR_KHR_maintenance1
207 */
208#if defined(XR_KHR_maintenance1)
209#define OXR_HAVE_KHR_maintenance1
210#define OXR_EXTENSION_SUPPORT_KHR_maintenance1(_) _(KHR_maintenance1, KHR_MAINTENANCE1)
211#else
212#define OXR_EXTENSION_SUPPORT_KHR_maintenance1(_)
213#endif
214
215
216/*
217 * XR_KHR_opengl_enable
218 */
219#if defined(XR_KHR_opengl_enable) && defined(XR_USE_GRAPHICS_API_OPENGL)
220#define OXR_HAVE_KHR_opengl_enable
221#define OXR_EXTENSION_SUPPORT_KHR_opengl_enable(_) _(KHR_opengl_enable, KHR_OPENGL_ENABLE)
222#else
223#define OXR_EXTENSION_SUPPORT_KHR_opengl_enable(_)
224#endif
225
226
227/*
228 * XR_KHR_opengl_es_enable
229 */
230#if defined(XR_KHR_opengl_es_enable) && defined(XR_USE_GRAPHICS_API_OPENGL_ES)
231#define OXR_HAVE_KHR_opengl_es_enable
232#define OXR_EXTENSION_SUPPORT_KHR_opengl_es_enable(_) _(KHR_opengl_es_enable, KHR_OPENGL_ES_ENABLE)
233#else
234#define OXR_EXTENSION_SUPPORT_KHR_opengl_es_enable(_)
235#endif
236
237
238/*
239 * XR_KHR_swapchain_usage_input_attachment_bit
240 */
241#if defined(XR_KHR_swapchain_usage_input_attachment_bit)
242#define OXR_HAVE_KHR_swapchain_usage_input_attachment_bit
243#define OXR_EXTENSION_SUPPORT_KHR_swapchain_usage_input_attachment_bit(_) \
244 _(KHR_swapchain_usage_input_attachment_bit, KHR_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT)
245#else
246#define OXR_EXTENSION_SUPPORT_KHR_swapchain_usage_input_attachment_bit(_)
247#endif
248
249
250/*
251 * XR_KHR_visibility_mask
252 */
253#if defined(XR_KHR_visibility_mask) && defined(XRT_FEATURE_OPENXR_VISIBILITY_MASK)
254#define OXR_HAVE_KHR_visibility_mask
255#define OXR_EXTENSION_SUPPORT_KHR_visibility_mask(_) _(KHR_visibility_mask, KHR_VISIBILITY_MASK)
256#else
257#define OXR_EXTENSION_SUPPORT_KHR_visibility_mask(_)
258#endif
259
260
261/*
262 * XR_KHR_vulkan_enable
263 */
264#if defined(XR_KHR_vulkan_enable) && defined(XR_USE_GRAPHICS_API_VULKAN)
265#define OXR_HAVE_KHR_vulkan_enable
266#define OXR_EXTENSION_SUPPORT_KHR_vulkan_enable(_) _(KHR_vulkan_enable, KHR_VULKAN_ENABLE)
267#else
268#define OXR_EXTENSION_SUPPORT_KHR_vulkan_enable(_)
269#endif
270
271
272/*
273 * XR_KHR_vulkan_enable2
274 */
275#if defined(XR_KHR_vulkan_enable2) && defined(XR_USE_GRAPHICS_API_VULKAN)
276#define OXR_HAVE_KHR_vulkan_enable2
277#define OXR_EXTENSION_SUPPORT_KHR_vulkan_enable2(_) _(KHR_vulkan_enable2, KHR_VULKAN_ENABLE2)
278#else
279#define OXR_EXTENSION_SUPPORT_KHR_vulkan_enable2(_)
280#endif
281
282
283/*
284 * XR_KHR_vulkan_swapchain_format_list
285 */
286#if defined(XR_KHR_vulkan_swapchain_format_list) && defined(XR_USE_GRAPHICS_API_VULKAN) && \
287 defined(XRT_FEATURE_OPENXR_VULKAN_SWAPCHAIN_FORMAT_LIST)
288#define OXR_HAVE_KHR_vulkan_swapchain_format_list
289#define OXR_EXTENSION_SUPPORT_KHR_vulkan_swapchain_format_list(_) \
290 _(KHR_vulkan_swapchain_format_list, KHR_VULKAN_SWAPCHAIN_FORMAT_LIST)
291#else
292#define OXR_EXTENSION_SUPPORT_KHR_vulkan_swapchain_format_list(_)
293#endif
294
295
296/*
297 * XR_KHR_win32_convert_performance_counter_time
298 */
299#if defined(XR_KHR_win32_convert_performance_counter_time) && defined(XR_USE_PLATFORM_WIN32)
300#define OXR_HAVE_KHR_win32_convert_performance_counter_time
301#define OXR_EXTENSION_SUPPORT_KHR_win32_convert_performance_counter_time(_) \
302 _(KHR_win32_convert_performance_counter_time, KHR_WIN32_CONVERT_PERFORMANCE_COUNTER_TIME)
303#else
304#define OXR_EXTENSION_SUPPORT_KHR_win32_convert_performance_counter_time(_)
305#endif
306
307
308/*
309 * XR_EXT_active_action_set_priority
310 */
311#if defined(XR_EXT_active_action_set_priority) && defined(XRT_FEATURE_OPENXR_ACTIVE_ACTION_SET_PRIORITY)
312#define OXR_HAVE_EXT_active_action_set_priority
313#define OXR_EXTENSION_SUPPORT_EXT_active_action_set_priority(_) \
314 _(EXT_active_action_set_priority, EXT_ACTIVE_ACTION_SET_PRIORITY)
315#else
316#define OXR_EXTENSION_SUPPORT_EXT_active_action_set_priority(_)
317#endif
318
319
320/*
321 * XR_EXT_debug_utils
322 */
323#if defined(XR_EXT_debug_utils) && defined(XRT_FEATURE_OPENXR_DEBUG_UTILS)
324#define OXR_HAVE_EXT_debug_utils
325#define OXR_EXTENSION_SUPPORT_EXT_debug_utils(_) _(EXT_debug_utils, EXT_DEBUG_UTILS)
326#else
327#define OXR_EXTENSION_SUPPORT_EXT_debug_utils(_)
328#endif
329
330
331/*
332 * XR_EXT_dpad_binding
333 */
334#if defined(XR_EXT_dpad_binding)
335#define OXR_HAVE_EXT_dpad_binding
336#define OXR_EXTENSION_SUPPORT_EXT_dpad_binding(_) _(EXT_dpad_binding, EXT_DPAD_BINDING)
337#else
338#define OXR_EXTENSION_SUPPORT_EXT_dpad_binding(_)
339#endif
340
341
342/*
343 * XR_EXT_eye_gaze_interaction
344 */
345#if defined(XR_EXT_eye_gaze_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_EXT_EYE_GAZE)
346#define OXR_HAVE_EXT_eye_gaze_interaction
347#define OXR_EXTENSION_SUPPORT_EXT_eye_gaze_interaction(_) _(EXT_eye_gaze_interaction, EXT_EYE_GAZE_INTERACTION)
348#else
349#define OXR_EXTENSION_SUPPORT_EXT_eye_gaze_interaction(_)
350#endif
351
352
353/*
354 * XR_EXT_hand_interaction
355 */
356#if defined(XR_EXT_hand_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_EXT_HAND)
357#define OXR_HAVE_EXT_hand_interaction
358#define OXR_EXTENSION_SUPPORT_EXT_hand_interaction(_) _(EXT_hand_interaction, EXT_HAND_INTERACTION)
359#else
360#define OXR_EXTENSION_SUPPORT_EXT_hand_interaction(_)
361#endif
362
363
364/*
365 * XR_EXT_hand_tracking
366 */
367#if defined(XR_EXT_hand_tracking) && defined(XRT_FEATURE_OPENXR_HAND_TRACKING_EXT)
368#define OXR_HAVE_EXT_hand_tracking
369#define OXR_EXTENSION_SUPPORT_EXT_hand_tracking(_) _(EXT_hand_tracking, EXT_HAND_TRACKING)
370#else
371#define OXR_EXTENSION_SUPPORT_EXT_hand_tracking(_)
372#endif
373
374
375/*
376 * XR_EXT_hand_tracking_data_source
377 */
378#if defined(XR_EXT_hand_tracking_data_source) && defined(XRT_FEATURE_OPENXR_HAND_TRACKING_DATA_SOURCE_EXT)
379#define OXR_HAVE_EXT_hand_tracking_data_source
380#define OXR_EXTENSION_SUPPORT_EXT_hand_tracking_data_source(_) \
381 _(EXT_hand_tracking_data_source, EXT_HAND_TRACKING_DATA_SOURCE)
382#else
383#define OXR_EXTENSION_SUPPORT_EXT_hand_tracking_data_source(_)
384#endif
385
386
387/*
388 * XR_EXT_hp_mixed_reality_controller
389 */
390#if defined(XR_EXT_hp_mixed_reality_controller) && defined(XRT_FEATURE_OPENXR_INTERACTION_WINMR)
391#define OXR_HAVE_EXT_hp_mixed_reality_controller
392#define OXR_EXTENSION_SUPPORT_EXT_hp_mixed_reality_controller(_) \
393 _(EXT_hp_mixed_reality_controller, EXT_HP_MIXED_REALITY_CONTROLLER)
394#else
395#define OXR_EXTENSION_SUPPORT_EXT_hp_mixed_reality_controller(_)
396#endif
397
398
399/*
400 * XR_EXT_local_floor
401 */
402#if defined(XR_EXT_local_floor) && defined(XRT_FEATURE_OPENXR_SPACE_LOCAL_FLOOR)
403#define OXR_HAVE_EXT_local_floor
404#define OXR_EXTENSION_SUPPORT_EXT_local_floor(_) _(EXT_local_floor, EXT_LOCAL_FLOOR)
405#else
406#define OXR_EXTENSION_SUPPORT_EXT_local_floor(_)
407#endif
408
409
410/*
411 * XR_EXT_palm_pose
412 */
413#if defined(XR_EXT_palm_pose) && defined(XRT_FEATURE_OPENXR_INTERACTION_EXT_PALM_POSE)
414#define OXR_HAVE_EXT_palm_pose
415#define OXR_EXTENSION_SUPPORT_EXT_palm_pose(_) _(EXT_palm_pose, EXT_PALM_POSE)
416#else
417#define OXR_EXTENSION_SUPPORT_EXT_palm_pose(_)
418#endif
419
420
421/*
422 * XR_EXT_performance_settings
423 */
424#if defined(XR_EXT_performance_settings) && defined(XRT_FEATURE_OPENXR_PERFORMANCE_SETTINGS)
425#define OXR_HAVE_EXT_performance_settings
426#define OXR_EXTENSION_SUPPORT_EXT_performance_settings(_) _(EXT_performance_settings, EXT_PERFORMANCE_SETTINGS)
427#else
428#define OXR_EXTENSION_SUPPORT_EXT_performance_settings(_)
429#endif
430
431
432/*
433 * XR_EXT_plane_detection
434 */
435#if defined(XR_EXT_plane_detection) && defined(XRT_FEATURE_OPENXR_PLANE_DETECTION)
436#define OXR_HAVE_EXT_plane_detection
437#define OXR_EXTENSION_SUPPORT_EXT_plane_detection(_) _(EXT_plane_detection, EXT_PLANE_DETECTION)
438#else
439#define OXR_EXTENSION_SUPPORT_EXT_plane_detection(_)
440#endif
441
442
443/*
444 * XR_EXT_samsung_odyssey_controller
445 */
446#if defined(XR_EXT_samsung_odyssey_controller) && defined(XRT_FEATURE_OPENXR_INTERACTION_WINMR)
447#define OXR_HAVE_EXT_samsung_odyssey_controller
448#define OXR_EXTENSION_SUPPORT_EXT_samsung_odyssey_controller(_) \
449 _(EXT_samsung_odyssey_controller, EXT_SAMSUNG_ODYSSEY_CONTROLLER)
450#else
451#define OXR_EXTENSION_SUPPORT_EXT_samsung_odyssey_controller(_)
452#endif
453
454
455/*
456 * XR_EXT_user_presence
457 */
458#if defined(XR_EXT_user_presence) && defined(XRT_FEATURE_OPENXR_USER_PRESENCE)
459#define OXR_HAVE_EXT_user_presence
460#define OXR_EXTENSION_SUPPORT_EXT_user_presence(_) _(EXT_user_presence, EXT_USER_PRESENCE)
461#else
462#define OXR_EXTENSION_SUPPORT_EXT_user_presence(_)
463#endif
464
465
466/*
467 * XR_BD_controller_interaction
468 */
469#if defined(XR_BD_controller_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_BYTEDANCE)
470#define OXR_HAVE_BD_controller_interaction
471#define OXR_EXTENSION_SUPPORT_BD_controller_interaction(_) _(BD_controller_interaction, BD_CONTROLLER_INTERACTION)
472#else
473#define OXR_EXTENSION_SUPPORT_BD_controller_interaction(_)
474#endif
475
476
477/*
478 * XR_FB_body_tracking
479 */
480#if defined(XR_FB_body_tracking) && defined(XRT_FEATURE_OPENXR_BODY_TRACKING_FB)
481#define OXR_HAVE_FB_body_tracking
482#define OXR_EXTENSION_SUPPORT_FB_body_tracking(_) _(FB_body_tracking, FB_BODY_TRACKING)
483#else
484#define OXR_EXTENSION_SUPPORT_FB_body_tracking(_)
485#endif
486
487
488/*
489 * XR_FB_composition_layer_alpha_blend
490 */
491#if defined(XR_FB_composition_layer_alpha_blend) && defined(XRT_FEATURE_OPENXR_LAYER_FB_ALPHA_BLEND)
492#define OXR_HAVE_FB_composition_layer_alpha_blend
493#define OXR_EXTENSION_SUPPORT_FB_composition_layer_alpha_blend(_) \
494 _(FB_composition_layer_alpha_blend, FB_COMPOSITION_LAYER_ALPHA_BLEND)
495#else
496#define OXR_EXTENSION_SUPPORT_FB_composition_layer_alpha_blend(_)
497#endif
498
499
500/*
501 * XR_FB_composition_layer_depth_test
502 */
503#if defined(XR_FB_composition_layer_depth_test) && defined(XRT_FEATURE_OPENXR_LAYER_FB_DEPTH_TEST)
504#define OXR_HAVE_FB_composition_layer_depth_test
505#define OXR_EXTENSION_SUPPORT_FB_composition_layer_depth_test(_) \
506 _(FB_composition_layer_depth_test, FB_COMPOSITION_LAYER_DEPTH_TEST)
507#else
508#define OXR_EXTENSION_SUPPORT_FB_composition_layer_depth_test(_)
509#endif
510
511
512/*
513 * XR_FB_composition_layer_image_layout
514 */
515#if defined(XR_FB_composition_layer_image_layout) && defined(XRT_FEATURE_OPENXR_LAYER_FB_IMAGE_LAYOUT)
516#define OXR_HAVE_FB_composition_layer_image_layout
517#define OXR_EXTENSION_SUPPORT_FB_composition_layer_image_layout(_) \
518 _(FB_composition_layer_image_layout, FB_COMPOSITION_LAYER_IMAGE_LAYOUT)
519#else
520#define OXR_EXTENSION_SUPPORT_FB_composition_layer_image_layout(_)
521#endif
522
523
524/*
525 * XR_FB_composition_layer_settings
526 */
527#if defined(XR_FB_composition_layer_settings) && defined(XRT_FEATURE_OPENXR_LAYER_FB_SETTINGS)
528#define OXR_HAVE_FB_composition_layer_settings
529#define OXR_EXTENSION_SUPPORT_FB_composition_layer_settings(_) \
530 _(FB_composition_layer_settings, FB_COMPOSITION_LAYER_SETTINGS)
531#else
532#define OXR_EXTENSION_SUPPORT_FB_composition_layer_settings(_)
533#endif
534
535
536/*
537 * XR_FB_display_refresh_rate
538 */
539#if defined(XR_FB_display_refresh_rate) && defined(XRT_FEATURE_OPENXR_DISPLAY_REFRESH_RATE)
540#define OXR_HAVE_FB_display_refresh_rate
541#define OXR_EXTENSION_SUPPORT_FB_display_refresh_rate(_) _(FB_display_refresh_rate, FB_DISPLAY_REFRESH_RATE)
542#else
543#define OXR_EXTENSION_SUPPORT_FB_display_refresh_rate(_)
544#endif
545
546
547/*
548 * XR_FB_face_tracking2
549 */
550#if defined(XR_FB_face_tracking2) && defined(XRT_FEATURE_OPENXR_FACE_TRACKING2_FB)
551#define OXR_HAVE_FB_face_tracking2
552#define OXR_EXTENSION_SUPPORT_FB_face_tracking2(_) _(FB_face_tracking2, FB_FACE_TRACKING2)
553#else
554#define OXR_EXTENSION_SUPPORT_FB_face_tracking2(_)
555#endif
556
557
558/*
559 * XR_FB_haptic_pcm
560 */
561#if defined(XR_FB_haptic_pcm) && defined(XRT_FEATURE_OPENXR_HAPTIC_PCM)
562#define OXR_HAVE_FB_haptic_pcm
563#define OXR_EXTENSION_SUPPORT_FB_haptic_pcm(_) _(FB_haptic_pcm, FB_HAPTIC_PCM)
564#else
565#define OXR_EXTENSION_SUPPORT_FB_haptic_pcm(_)
566#endif
567
568
569/*
570 * XR_FB_passthrough
571 */
572#if defined(XR_FB_passthrough) && defined(XRT_FEATURE_OPENXR_LAYER_FB_PASSTHROUGH)
573#define OXR_HAVE_FB_passthrough
574#define OXR_EXTENSION_SUPPORT_FB_passthrough(_) _(FB_passthrough, FB_PASSTHROUGH)
575#else
576#define OXR_EXTENSION_SUPPORT_FB_passthrough(_)
577#endif
578
579
580/*
581 * XR_FB_touch_controller_pro
582 */
583#if defined(XR_FB_touch_controller_pro) && defined(XRT_FEATURE_OPENXR_INTERACTION_TOUCH_PRO)
584#define OXR_HAVE_FB_touch_controller_pro
585#define OXR_EXTENSION_SUPPORT_FB_touch_controller_pro(_) _(FB_touch_controller_pro, FB_TOUCH_CONTROLLER_PRO)
586#else
587#define OXR_EXTENSION_SUPPORT_FB_touch_controller_pro(_)
588#endif
589
590
591/*
592 * XR_FB_touch_controller_proximity
593 */
594#if defined(XR_FB_touch_controller_proximity) && defined(XRT_FEATURE_OPENXR_INTERACTION_FB_PROXIMITY)
595#define OXR_HAVE_FB_touch_controller_proximity
596#define OXR_EXTENSION_SUPPORT_FB_touch_controller_proximity(_) \
597 _(FB_touch_controller_proximity, FB_TOUCH_CONTROLLER_PROXIMITY)
598#else
599#define OXR_EXTENSION_SUPPORT_FB_touch_controller_proximity(_)
600#endif
601
602
603/*
604 * XR_HTC_facial_tracking
605 */
606#if defined(XR_HTC_facial_tracking) && defined(XRT_FEATURE_OPENXR_FACIAL_TRACKING_HTC)
607#define OXR_HAVE_HTC_facial_tracking
608#define OXR_EXTENSION_SUPPORT_HTC_facial_tracking(_) _(HTC_facial_tracking, HTC_FACIAL_TRACKING)
609#else
610#define OXR_EXTENSION_SUPPORT_HTC_facial_tracking(_)
611#endif
612
613
614/*
615 * XR_HTC_vive_cosmos_controller_interaction
616 */
617#if defined(XR_HTC_vive_cosmos_controller_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_VIVE_COSMOS)
618#define OXR_HAVE_HTC_vive_cosmos_controller_interaction
619#define OXR_EXTENSION_SUPPORT_HTC_vive_cosmos_controller_interaction(_) \
620 _(HTC_vive_cosmos_controller_interaction, HTC_VIVE_COSMOS_CONTROLLER_INTERACTION)
621#else
622#define OXR_EXTENSION_SUPPORT_HTC_vive_cosmos_controller_interaction(_)
623#endif
624
625
626/*
627 * XR_HTC_vive_focus3_controller_interaction
628 */
629#if defined(XR_HTC_vive_focus3_controller_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_VIVE_FOCUS3)
630#define OXR_HAVE_HTC_vive_focus3_controller_interaction
631#define OXR_EXTENSION_SUPPORT_HTC_vive_focus3_controller_interaction(_) \
632 _(HTC_vive_focus3_controller_interaction, HTC_VIVE_FOCUS3_CONTROLLER_INTERACTION)
633#else
634#define OXR_EXTENSION_SUPPORT_HTC_vive_focus3_controller_interaction(_)
635#endif
636
637
638/*
639 * XR_META_body_tracking_full_body
640 */
641#if defined(XR_META_body_tracking_full_body) && defined(XRT_FEATURE_OPENXR_BODY_TRACKING_FULL_BODY_META)
642#define OXR_HAVE_META_body_tracking_full_body
643#define OXR_EXTENSION_SUPPORT_META_body_tracking_full_body(_) \
644 _(META_body_tracking_full_body, META_BODY_TRACKING_FULL_BODY)
645#else
646#define OXR_EXTENSION_SUPPORT_META_body_tracking_full_body(_)
647#endif
648
649
650/*
651 * XR_META_touch_controller_plus
652 */
653#if defined(XR_META_touch_controller_plus) && defined(XRT_FEATURE_OPENXR_INTERACTION_TOUCH_PLUS)
654#define OXR_HAVE_META_touch_controller_plus
655#define OXR_EXTENSION_SUPPORT_META_touch_controller_plus(_) _(META_touch_controller_plus, META_TOUCH_CONTROLLER_PLUS)
656#else
657#define OXR_EXTENSION_SUPPORT_META_touch_controller_plus(_)
658#endif
659
660
661/*
662 * XR_ML_ml2_controller_interaction
663 */
664#if defined(XR_ML_ml2_controller_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_ML2)
665#define OXR_HAVE_ML_ml2_controller_interaction
666#define OXR_EXTENSION_SUPPORT_ML_ml2_controller_interaction(_) \
667 _(ML_ml2_controller_interaction, ML_ML2_CONTROLLER_INTERACTION)
668#else
669#define OXR_EXTENSION_SUPPORT_ML_ml2_controller_interaction(_)
670#endif
671
672
673/*
674 * XR_MND_headless
675 */
676#if defined(XR_MND_headless) && defined(XRT_FEATURE_OPENXR_HEADLESS)
677#define OXR_HAVE_MND_headless
678#define OXR_EXTENSION_SUPPORT_MND_headless(_) _(MND_headless, MND_HEADLESS)
679#else
680#define OXR_EXTENSION_SUPPORT_MND_headless(_)
681#endif
682
683
684/*
685 * XR_MND_swapchain_usage_input_attachment_bit
686 */
687#if defined(XR_MND_swapchain_usage_input_attachment_bit)
688#define OXR_HAVE_MND_swapchain_usage_input_attachment_bit
689#define OXR_EXTENSION_SUPPORT_MND_swapchain_usage_input_attachment_bit(_) \
690 _(MND_swapchain_usage_input_attachment_bit, MND_SWAPCHAIN_USAGE_INPUT_ATTACHMENT_BIT)
691#else
692#define OXR_EXTENSION_SUPPORT_MND_swapchain_usage_input_attachment_bit(_)
693#endif
694
695
696/*
697 * XR_MSFT_hand_interaction
698 */
699#if defined(XR_MSFT_hand_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_MSFT_HAND)
700#define OXR_HAVE_MSFT_hand_interaction
701#define OXR_EXTENSION_SUPPORT_MSFT_hand_interaction(_) _(MSFT_hand_interaction, MSFT_HAND_INTERACTION)
702#else
703#define OXR_EXTENSION_SUPPORT_MSFT_hand_interaction(_)
704#endif
705
706
707/*
708 * XR_MSFT_unbounded_reference_space
709 */
710#if defined(XR_MSFT_unbounded_reference_space) && defined(XRT_FEATURE_OPENXR_SPACE_UNBOUNDED)
711#define OXR_HAVE_MSFT_unbounded_reference_space
712#define OXR_EXTENSION_SUPPORT_MSFT_unbounded_reference_space(_) \
713 _(MSFT_unbounded_reference_space, MSFT_UNBOUNDED_REFERENCE_SPACE)
714#else
715#define OXR_EXTENSION_SUPPORT_MSFT_unbounded_reference_space(_)
716#endif
717
718
719/*
720 * XR_OPPO_controller_interaction
721 */
722#if defined(XR_OPPO_controller_interaction) && defined(XRT_FEATURE_OPENXR_INTERACTION_OPPO)
723#define OXR_HAVE_OPPO_controller_interaction
724#define OXR_EXTENSION_SUPPORT_OPPO_controller_interaction(_) _(OPPO_controller_interaction, OPPO_CONTROLLER_INTERACTION)
725#else
726#define OXR_EXTENSION_SUPPORT_OPPO_controller_interaction(_)
727#endif
728
729
730/*
731 * XR_EXTX_overlay
732 */
733#if defined(XR_EXTX_overlay) && defined(XRT_FEATURE_OPENXR_OVERLAY)
734#define OXR_HAVE_EXTX_overlay
735#define OXR_EXTENSION_SUPPORT_EXTX_overlay(_) _(EXTX_overlay, EXTX_OVERLAY)
736#else
737#define OXR_EXTENSION_SUPPORT_EXTX_overlay(_)
738#endif
739
740
741/*
742 * XR_HTCX_vive_tracker_interaction
743 */
744#if defined(XR_HTCX_vive_tracker_interaction) && defined(ALWAYS_DISABLED)
745#define OXR_HAVE_HTCX_vive_tracker_interaction
746#define OXR_EXTENSION_SUPPORT_HTCX_vive_tracker_interaction(_) \
747 _(HTCX_vive_tracker_interaction, HTCX_VIVE_TRACKER_INTERACTION)
748#else
749#define OXR_EXTENSION_SUPPORT_HTCX_vive_tracker_interaction(_)
750#endif
751
752
753/*
754 * XR_MNDX_ball_on_a_stick_controller
755 */
756#if defined(XR_MNDX_ball_on_a_stick_controller) && defined(XRT_FEATURE_OPENXR_INTERACTION_MNDX)
757#define OXR_HAVE_MNDX_ball_on_a_stick_controller
758#define OXR_EXTENSION_SUPPORT_MNDX_ball_on_a_stick_controller(_) \
759 _(MNDX_ball_on_a_stick_controller, MNDX_BALL_ON_A_STICK_CONTROLLER)
760#else
761#define OXR_EXTENSION_SUPPORT_MNDX_ball_on_a_stick_controller(_)
762#endif
763
764
765/*
766 * XR_MNDX_oculus_remote
767 */
768#if defined(XR_MNDX_oculus_remote) && defined(XRT_FEATURE_OPENXR_INTERACTION_MNDX)
769#define OXR_HAVE_MNDX_oculus_remote
770#define OXR_EXTENSION_SUPPORT_MNDX_oculus_remote(_) _(MNDX_oculus_remote, MNDX_OCULUS_REMOTE)
771#else
772#define OXR_EXTENSION_SUPPORT_MNDX_oculus_remote(_)
773#endif
774
775
776/*
777 * XR_MNDX_egl_enable
778 */
779#if defined(XR_MNDX_egl_enable) && defined(XR_USE_PLATFORM_EGL) && defined(XR_USE_GRAPHICS_API_OPENGL)
780#define OXR_HAVE_MNDX_egl_enable
781#define OXR_EXTENSION_SUPPORT_MNDX_egl_enable(_) _(MNDX_egl_enable, MNDX_EGL_ENABLE)
782#else
783#define OXR_EXTENSION_SUPPORT_MNDX_egl_enable(_)
784#endif
785
786
787/*
788 * XR_MNDX_force_feedback_curl
789 */
790#if defined(XR_MNDX_force_feedback_curl) && defined(XRT_FEATURE_OPENXR_FORCE_FEEDBACK_CURL)
791#define OXR_HAVE_MNDX_force_feedback_curl
792#define OXR_EXTENSION_SUPPORT_MNDX_force_feedback_curl(_) _(MNDX_force_feedback_curl, MNDX_FORCE_FEEDBACK_CURL)
793#else
794#define OXR_EXTENSION_SUPPORT_MNDX_force_feedback_curl(_)
795#endif
796
797
798/*
799 * XR_MNDX_hydra
800 */
801#if defined(XR_MNDX_hydra) && defined(XRT_FEATURE_OPENXR_INTERACTION_MNDX)
802#define OXR_HAVE_MNDX_hydra
803#define OXR_EXTENSION_SUPPORT_MNDX_hydra(_) _(MNDX_hydra, MNDX_HYDRA)
804#else
805#define OXR_EXTENSION_SUPPORT_MNDX_hydra(_)
806#endif
807
808
809/*
810 * XR_MNDX_system_buttons
811 */
812#if defined(XR_MNDX_system_buttons) && defined(XRT_FEATURE_OPENXR_INTERACTION_MNDX)
813#define OXR_HAVE_MNDX_system_buttons
814#define OXR_EXTENSION_SUPPORT_MNDX_system_buttons(_) _(MNDX_system_buttons, MNDX_SYSTEM_BUTTONS)
815#else
816#define OXR_EXTENSION_SUPPORT_MNDX_system_buttons(_)
817#endif
818
819
820/*
821 * XR_MNDX_xdev_space
822 */
823#if defined(XR_MNDX_xdev_space) && defined(XRT_FEATURE_OPENXR_XDEV_SPACE)
824#define OXR_HAVE_MNDX_xdev_space
825#define OXR_EXTENSION_SUPPORT_MNDX_xdev_space(_) _(MNDX_xdev_space, MNDX_XDEV_SPACE)
826#else
827#define OXR_EXTENSION_SUPPORT_MNDX_xdev_space(_)
828#endif
829
830// end of GENERATED per-extension defines - do not modify - used by scripts
831
832/*!
833 * Call this, passing a macro taking two parameters, to
834 * generate tables, code, etc. related to OpenXR extensions.
835 * Upon including invoking OXR_EXTENSION_SUPPORT_GENERATE() with some
836 * MY_HANDLE_EXTENSION(mixed_case, all_caps), MY_HANDLE_EXTENSION will be called
837 * for each extension implemented in Monado and supported in this build:
838 *
839 * - The first parameter is the name of the extension without the leading XR_
840 * prefix: e.g. `KHR_opengl_enable`
841 * - The second parameter is the same text as the first, but in all uppercase,
842 * since this transform cannot be done in the C preprocessor, and some
843 * extension-related entities use this instead of the exact extension name.
844 *
845 * Implementation note: This macro calls another macro for each extension: that
846 * macro is either defined to call your provided macro, or defined to nothing,
847 * depending on if the extension is supported in this build.
848 *
849 * @note Do not edit anything between `clang-format off` and `clang-format on` -
850 * it will be replaced next time this file is generated!
851 */
852// clang-format off
853#define OXR_EXTENSION_SUPPORT_GENERATE(_) \
854 OXR_EXTENSION_SUPPORT_KHR_android_create_instance(_) \
855 OXR_EXTENSION_SUPPORT_KHR_android_thread_settings(_) \
856 OXR_EXTENSION_SUPPORT_KHR_binding_modification(_) \
857 OXR_EXTENSION_SUPPORT_KHR_composition_layer_color_scale_bias(_) \
858 OXR_EXTENSION_SUPPORT_KHR_composition_layer_cube(_) \
859 OXR_EXTENSION_SUPPORT_KHR_composition_layer_cylinder(_) \
860 OXR_EXTENSION_SUPPORT_KHR_composition_layer_depth(_) \
861 OXR_EXTENSION_SUPPORT_KHR_composition_layer_equirect(_) \
862 OXR_EXTENSION_SUPPORT_KHR_composition_layer_equirect2(_) \
863 OXR_EXTENSION_SUPPORT_KHR_convert_timespec_time(_) \
864 OXR_EXTENSION_SUPPORT_KHR_D3D11_enable(_) \
865 OXR_EXTENSION_SUPPORT_KHR_D3D12_enable(_) \
866 OXR_EXTENSION_SUPPORT_KHR_extended_struct_name_lengths(_) \
867 OXR_EXTENSION_SUPPORT_KHR_loader_init(_) \
868 OXR_EXTENSION_SUPPORT_KHR_loader_init_android(_) \
869 OXR_EXTENSION_SUPPORT_KHR_locate_spaces(_) \
870 OXR_EXTENSION_SUPPORT_KHR_maintenance1(_) \
871 OXR_EXTENSION_SUPPORT_KHR_opengl_enable(_) \
872 OXR_EXTENSION_SUPPORT_KHR_opengl_es_enable(_) \
873 OXR_EXTENSION_SUPPORT_KHR_swapchain_usage_input_attachment_bit(_) \
874 OXR_EXTENSION_SUPPORT_KHR_visibility_mask(_) \
875 OXR_EXTENSION_SUPPORT_KHR_vulkan_enable(_) \
876 OXR_EXTENSION_SUPPORT_KHR_vulkan_enable2(_) \
877 OXR_EXTENSION_SUPPORT_KHR_vulkan_swapchain_format_list(_) \
878 OXR_EXTENSION_SUPPORT_KHR_win32_convert_performance_counter_time(_) \
879 OXR_EXTENSION_SUPPORT_EXT_active_action_set_priority(_) \
880 OXR_EXTENSION_SUPPORT_EXT_debug_utils(_) \
881 OXR_EXTENSION_SUPPORT_EXT_dpad_binding(_) \
882 OXR_EXTENSION_SUPPORT_EXT_eye_gaze_interaction(_) \
883 OXR_EXTENSION_SUPPORT_EXT_hand_interaction(_) \
884 OXR_EXTENSION_SUPPORT_EXT_hand_tracking(_) \
885 OXR_EXTENSION_SUPPORT_EXT_hand_tracking_data_source(_) \
886 OXR_EXTENSION_SUPPORT_EXT_hp_mixed_reality_controller(_) \
887 OXR_EXTENSION_SUPPORT_EXT_local_floor(_) \
888 OXR_EXTENSION_SUPPORT_EXT_palm_pose(_) \
889 OXR_EXTENSION_SUPPORT_EXT_performance_settings(_) \
890 OXR_EXTENSION_SUPPORT_EXT_plane_detection(_) \
891 OXR_EXTENSION_SUPPORT_EXT_samsung_odyssey_controller(_) \
892 OXR_EXTENSION_SUPPORT_EXT_user_presence(_) \
893 OXR_EXTENSION_SUPPORT_BD_controller_interaction(_) \
894 OXR_EXTENSION_SUPPORT_FB_body_tracking(_) \
895 OXR_EXTENSION_SUPPORT_FB_composition_layer_alpha_blend(_) \
896 OXR_EXTENSION_SUPPORT_FB_composition_layer_depth_test(_) \
897 OXR_EXTENSION_SUPPORT_FB_composition_layer_image_layout(_) \
898 OXR_EXTENSION_SUPPORT_FB_composition_layer_settings(_) \
899 OXR_EXTENSION_SUPPORT_FB_display_refresh_rate(_) \
900 OXR_EXTENSION_SUPPORT_FB_face_tracking2(_) \
901 OXR_EXTENSION_SUPPORT_FB_haptic_pcm(_) \
902 OXR_EXTENSION_SUPPORT_FB_passthrough(_) \
903 OXR_EXTENSION_SUPPORT_FB_touch_controller_pro(_) \
904 OXR_EXTENSION_SUPPORT_FB_touch_controller_proximity(_) \
905 OXR_EXTENSION_SUPPORT_HTC_facial_tracking(_) \
906 OXR_EXTENSION_SUPPORT_HTC_vive_cosmos_controller_interaction(_) \
907 OXR_EXTENSION_SUPPORT_HTC_vive_focus3_controller_interaction(_) \
908 OXR_EXTENSION_SUPPORT_META_body_tracking_full_body(_) \
909 OXR_EXTENSION_SUPPORT_META_touch_controller_plus(_) \
910 OXR_EXTENSION_SUPPORT_ML_ml2_controller_interaction(_) \
911 OXR_EXTENSION_SUPPORT_MND_headless(_) \
912 OXR_EXTENSION_SUPPORT_MND_swapchain_usage_input_attachment_bit(_) \
913 OXR_EXTENSION_SUPPORT_MSFT_hand_interaction(_) \
914 OXR_EXTENSION_SUPPORT_MSFT_unbounded_reference_space(_) \
915 OXR_EXTENSION_SUPPORT_OPPO_controller_interaction(_) \
916 OXR_EXTENSION_SUPPORT_EXTX_overlay(_) \
917 OXR_EXTENSION_SUPPORT_HTCX_vive_tracker_interaction(_) \
918 OXR_EXTENSION_SUPPORT_MNDX_ball_on_a_stick_controller(_) \
919 OXR_EXTENSION_SUPPORT_MNDX_oculus_remote(_) \
920 OXR_EXTENSION_SUPPORT_MNDX_egl_enable(_) \
921 OXR_EXTENSION_SUPPORT_MNDX_force_feedback_curl(_) \
922 OXR_EXTENSION_SUPPORT_MNDX_hydra(_) \
923 OXR_EXTENSION_SUPPORT_MNDX_system_buttons(_) \
924 OXR_EXTENSION_SUPPORT_MNDX_xdev_space(_)
925// clang-format on
Include all of the openxr headers in one place.