openxr_util.cpp 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. /*************************************************************************/
  2. /* openxr_util.cpp */
  3. /*************************************************************************/
  4. /* This file is part of: */
  5. /* GODOT ENGINE */
  6. /* https://godotengine.org */
  7. /*************************************************************************/
  8. /* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
  9. /* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md). */
  10. /* */
  11. /* Permission is hereby granted, free of charge, to any person obtaining */
  12. /* a copy of this software and associated documentation files (the */
  13. /* "Software"), to deal in the Software without restriction, including */
  14. /* without limitation the rights to use, copy, modify, merge, publish, */
  15. /* distribute, sublicense, and/or sell copies of the Software, and to */
  16. /* permit persons to whom the Software is furnished to do so, subject to */
  17. /* the following conditions: */
  18. /* */
  19. /* The above copyright notice and this permission notice shall be */
  20. /* included in all copies or substantial portions of the Software. */
  21. /* */
  22. /* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
  23. /* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
  24. /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
  25. /* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
  26. /* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
  27. /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
  28. /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
  29. /*************************************************************************/
  30. #include "openxr_util.h"
  31. #define ENUM_TO_STRING_CASE(e) \
  32. case e: { \
  33. return String(#e); \
  34. } break;
  35. // TODO see if we can generate this code further using the xml file with meta data supplied by OpenXR
  36. String OpenXRUtil::get_view_configuration_name(XrViewConfigurationType p_view_configuration) {
  37. switch (p_view_configuration) {
  38. ENUM_TO_STRING_CASE(XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO)
  39. ENUM_TO_STRING_CASE(XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO)
  40. ENUM_TO_STRING_CASE(XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO)
  41. ENUM_TO_STRING_CASE(XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT)
  42. ENUM_TO_STRING_CASE(XR_VIEW_CONFIGURATION_TYPE_MAX_ENUM)
  43. default: {
  44. return String("View Configuration ") + String::num_int64(int64_t(p_view_configuration));
  45. } break;
  46. }
  47. }
  48. String OpenXRUtil::get_reference_space_name(XrReferenceSpaceType p_reference_space) {
  49. switch (p_reference_space) {
  50. ENUM_TO_STRING_CASE(XR_REFERENCE_SPACE_TYPE_VIEW)
  51. ENUM_TO_STRING_CASE(XR_REFERENCE_SPACE_TYPE_LOCAL)
  52. ENUM_TO_STRING_CASE(XR_REFERENCE_SPACE_TYPE_STAGE)
  53. ENUM_TO_STRING_CASE(XR_REFERENCE_SPACE_TYPE_UNBOUNDED_MSFT)
  54. ENUM_TO_STRING_CASE(XR_REFERENCE_SPACE_TYPE_COMBINED_EYE_VARJO)
  55. ENUM_TO_STRING_CASE(XR_REFERENCE_SPACE_TYPE_MAX_ENUM)
  56. default: {
  57. return String("Reference space ") + String::num_int64(int64_t(p_reference_space));
  58. } break;
  59. }
  60. }
  61. String OpenXRUtil::get_structure_type_name(XrStructureType p_structure_type) {
  62. switch (p_structure_type) {
  63. ENUM_TO_STRING_CASE(XR_TYPE_UNKNOWN)
  64. ENUM_TO_STRING_CASE(XR_TYPE_API_LAYER_PROPERTIES)
  65. ENUM_TO_STRING_CASE(XR_TYPE_EXTENSION_PROPERTIES)
  66. ENUM_TO_STRING_CASE(XR_TYPE_INSTANCE_CREATE_INFO)
  67. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_GET_INFO)
  68. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_PROPERTIES)
  69. ENUM_TO_STRING_CASE(XR_TYPE_VIEW_LOCATE_INFO)
  70. ENUM_TO_STRING_CASE(XR_TYPE_VIEW)
  71. ENUM_TO_STRING_CASE(XR_TYPE_SESSION_CREATE_INFO)
  72. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_CREATE_INFO)
  73. ENUM_TO_STRING_CASE(XR_TYPE_SESSION_BEGIN_INFO)
  74. ENUM_TO_STRING_CASE(XR_TYPE_VIEW_STATE)
  75. ENUM_TO_STRING_CASE(XR_TYPE_FRAME_END_INFO)
  76. ENUM_TO_STRING_CASE(XR_TYPE_HAPTIC_VIBRATION)
  77. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_BUFFER)
  78. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_INSTANCE_LOSS_PENDING)
  79. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_SESSION_STATE_CHANGED)
  80. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_STATE_BOOLEAN)
  81. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_STATE_FLOAT)
  82. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_STATE_VECTOR2F)
  83. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_STATE_POSE)
  84. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_SET_CREATE_INFO)
  85. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_CREATE_INFO)
  86. ENUM_TO_STRING_CASE(XR_TYPE_INSTANCE_PROPERTIES)
  87. ENUM_TO_STRING_CASE(XR_TYPE_FRAME_WAIT_INFO)
  88. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_PROJECTION)
  89. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_QUAD)
  90. ENUM_TO_STRING_CASE(XR_TYPE_REFERENCE_SPACE_CREATE_INFO)
  91. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_SPACE_CREATE_INFO)
  92. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_REFERENCE_SPACE_CHANGE_PENDING)
  93. ENUM_TO_STRING_CASE(XR_TYPE_VIEW_CONFIGURATION_VIEW)
  94. ENUM_TO_STRING_CASE(XR_TYPE_SPACE_LOCATION)
  95. ENUM_TO_STRING_CASE(XR_TYPE_SPACE_VELOCITY)
  96. ENUM_TO_STRING_CASE(XR_TYPE_FRAME_STATE)
  97. ENUM_TO_STRING_CASE(XR_TYPE_VIEW_CONFIGURATION_PROPERTIES)
  98. ENUM_TO_STRING_CASE(XR_TYPE_FRAME_BEGIN_INFO)
  99. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_PROJECTION_VIEW)
  100. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_EVENTS_LOST)
  101. ENUM_TO_STRING_CASE(XR_TYPE_INTERACTION_PROFILE_SUGGESTED_BINDING)
  102. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_INTERACTION_PROFILE_CHANGED)
  103. ENUM_TO_STRING_CASE(XR_TYPE_INTERACTION_PROFILE_STATE)
  104. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO)
  105. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_WAIT_INFO)
  106. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_RELEASE_INFO)
  107. ENUM_TO_STRING_CASE(XR_TYPE_ACTION_STATE_GET_INFO)
  108. ENUM_TO_STRING_CASE(XR_TYPE_HAPTIC_ACTION_INFO)
  109. ENUM_TO_STRING_CASE(XR_TYPE_SESSION_ACTION_SETS_ATTACH_INFO)
  110. ENUM_TO_STRING_CASE(XR_TYPE_ACTIONS_SYNC_INFO)
  111. ENUM_TO_STRING_CASE(XR_TYPE_BOUND_SOURCES_FOR_ACTION_ENUMERATE_INFO)
  112. ENUM_TO_STRING_CASE(XR_TYPE_INPUT_SOURCE_LOCALIZED_NAME_GET_INFO)
  113. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_CUBE_KHR)
  114. ENUM_TO_STRING_CASE(XR_TYPE_INSTANCE_CREATE_INFO_ANDROID_KHR)
  115. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_DEPTH_INFO_KHR)
  116. ENUM_TO_STRING_CASE(XR_TYPE_VULKAN_SWAPCHAIN_FORMAT_LIST_CREATE_INFO_KHR)
  117. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_PERF_SETTINGS_EXT)
  118. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_CYLINDER_KHR)
  119. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_EQUIRECT_KHR)
  120. ENUM_TO_STRING_CASE(XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT)
  121. ENUM_TO_STRING_CASE(XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT)
  122. ENUM_TO_STRING_CASE(XR_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT)
  123. ENUM_TO_STRING_CASE(XR_TYPE_DEBUG_UTILS_LABEL_EXT)
  124. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_OPENGL_WIN32_KHR)
  125. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_OPENGL_XLIB_KHR)
  126. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_OPENGL_XCB_KHR)
  127. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_OPENGL_WAYLAND_KHR)
  128. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_KHR)
  129. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_KHR)
  130. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_OPENGL_ES_ANDROID_KHR)
  131. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_OPENGL_ES_KHR)
  132. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_REQUIREMENTS_OPENGL_ES_KHR)
  133. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR)
  134. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR)
  135. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR)
  136. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_D3D11_KHR)
  137. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_D3D11_KHR)
  138. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_REQUIREMENTS_D3D11_KHR)
  139. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_D3D12_KHR)
  140. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_D3D12_KHR)
  141. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_REQUIREMENTS_D3D12_KHR)
  142. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_EYE_GAZE_INTERACTION_PROPERTIES_EXT)
  143. ENUM_TO_STRING_CASE(XR_TYPE_EYE_GAZE_SAMPLE_TIME_EXT)
  144. ENUM_TO_STRING_CASE(XR_TYPE_VISIBILITY_MASK_KHR)
  145. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_VISIBILITY_MASK_CHANGED_KHR)
  146. ENUM_TO_STRING_CASE(XR_TYPE_SESSION_CREATE_INFO_OVERLAY_EXTX)
  147. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_MAIN_SESSION_VISIBILITY_CHANGED_EXTX)
  148. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_COLOR_SCALE_BIAS_KHR)
  149. ENUM_TO_STRING_CASE(XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_MSFT)
  150. ENUM_TO_STRING_CASE(XR_TYPE_SPATIAL_ANCHOR_SPACE_CREATE_INFO_MSFT)
  151. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_IMAGE_LAYOUT_FB)
  152. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_ALPHA_BLEND_FB)
  153. ENUM_TO_STRING_CASE(XR_TYPE_VIEW_CONFIGURATION_DEPTH_RANGE_EXT)
  154. ENUM_TO_STRING_CASE(XR_TYPE_GRAPHICS_BINDING_EGL_MNDX)
  155. ENUM_TO_STRING_CASE(XR_TYPE_SPATIAL_GRAPH_NODE_SPACE_CREATE_INFO_MSFT)
  156. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT)
  157. ENUM_TO_STRING_CASE(XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT)
  158. ENUM_TO_STRING_CASE(XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT)
  159. ENUM_TO_STRING_CASE(XR_TYPE_HAND_JOINT_LOCATIONS_EXT)
  160. ENUM_TO_STRING_CASE(XR_TYPE_HAND_JOINT_VELOCITIES_EXT)
  161. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_HAND_TRACKING_MESH_PROPERTIES_MSFT)
  162. ENUM_TO_STRING_CASE(XR_TYPE_HAND_MESH_SPACE_CREATE_INFO_MSFT)
  163. ENUM_TO_STRING_CASE(XR_TYPE_HAND_MESH_UPDATE_INFO_MSFT)
  164. ENUM_TO_STRING_CASE(XR_TYPE_HAND_MESH_MSFT)
  165. ENUM_TO_STRING_CASE(XR_TYPE_HAND_POSE_TYPE_INFO_MSFT)
  166. ENUM_TO_STRING_CASE(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SESSION_BEGIN_INFO_MSFT)
  167. ENUM_TO_STRING_CASE(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_STATE_MSFT)
  168. ENUM_TO_STRING_CASE(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_STATE_MSFT)
  169. ENUM_TO_STRING_CASE(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_FRAME_END_INFO_MSFT)
  170. ENUM_TO_STRING_CASE(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_LAYER_INFO_MSFT)
  171. ENUM_TO_STRING_CASE(XR_TYPE_SECONDARY_VIEW_CONFIGURATION_SWAPCHAIN_CREATE_INFO_MSFT)
  172. ENUM_TO_STRING_CASE(XR_TYPE_CONTROLLER_MODEL_KEY_STATE_MSFT)
  173. ENUM_TO_STRING_CASE(XR_TYPE_CONTROLLER_MODEL_NODE_PROPERTIES_MSFT)
  174. ENUM_TO_STRING_CASE(XR_TYPE_CONTROLLER_MODEL_PROPERTIES_MSFT)
  175. ENUM_TO_STRING_CASE(XR_TYPE_CONTROLLER_MODEL_NODE_STATE_MSFT)
  176. ENUM_TO_STRING_CASE(XR_TYPE_CONTROLLER_MODEL_STATE_MSFT)
  177. ENUM_TO_STRING_CASE(XR_TYPE_VIEW_CONFIGURATION_VIEW_FOV_EPIC)
  178. ENUM_TO_STRING_CASE(XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT)
  179. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT)
  180. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT)
  181. ENUM_TO_STRING_CASE(XR_TYPE_ANDROID_SURFACE_SWAPCHAIN_CREATE_INFO_FB)
  182. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB)
  183. ENUM_TO_STRING_CASE(XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE)
  184. ENUM_TO_STRING_CASE(XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT)
  185. ENUM_TO_STRING_CASE(XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR)
  186. ENUM_TO_STRING_CASE(XR_TYPE_VULKAN_INSTANCE_CREATE_INFO_KHR)
  187. ENUM_TO_STRING_CASE(XR_TYPE_VULKAN_DEVICE_CREATE_INFO_KHR)
  188. ENUM_TO_STRING_CASE(XR_TYPE_VULKAN_GRAPHICS_DEVICE_GET_INFO_KHR)
  189. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_EQUIRECT2_KHR)
  190. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_OBSERVER_CREATE_INFO_MSFT)
  191. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_CREATE_INFO_MSFT)
  192. ENUM_TO_STRING_CASE(XR_TYPE_NEW_SCENE_COMPUTE_INFO_MSFT)
  193. ENUM_TO_STRING_CASE(XR_TYPE_VISUAL_MESH_COMPUTE_LOD_INFO_MSFT)
  194. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_COMPONENTS_MSFT)
  195. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_COMPONENTS_GET_INFO_MSFT)
  196. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_COMPONENT_LOCATIONS_MSFT)
  197. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_COMPONENTS_LOCATE_INFO_MSFT)
  198. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_OBJECTS_MSFT)
  199. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_COMPONENT_PARENT_FILTER_INFO_MSFT)
  200. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_OBJECT_TYPES_FILTER_INFO_MSFT)
  201. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_PLANES_MSFT)
  202. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_PLANE_ALIGNMENT_FILTER_INFO_MSFT)
  203. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_MESHES_MSFT)
  204. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_MESH_BUFFERS_GET_INFO_MSFT)
  205. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_MESH_BUFFERS_MSFT)
  206. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_MESH_VERTEX_BUFFER_MSFT)
  207. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_MESH_INDICES_UINT32_MSFT)
  208. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_MESH_INDICES_UINT16_MSFT)
  209. ENUM_TO_STRING_CASE(XR_TYPE_SERIALIZED_SCENE_FRAGMENT_DATA_GET_INFO_MSFT)
  210. ENUM_TO_STRING_CASE(XR_TYPE_SCENE_DESERIALIZE_INFO_MSFT)
  211. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_DISPLAY_REFRESH_RATE_CHANGED_FB)
  212. ENUM_TO_STRING_CASE(XR_TYPE_VIVE_TRACKER_PATHS_HTCX)
  213. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_VIVE_TRACKER_CONNECTED_HTCX)
  214. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_COLOR_SPACE_PROPERTIES_FB)
  215. ENUM_TO_STRING_CASE(XR_TYPE_HAND_TRACKING_MESH_FB)
  216. ENUM_TO_STRING_CASE(XR_TYPE_HAND_TRACKING_SCALE_FB)
  217. ENUM_TO_STRING_CASE(XR_TYPE_HAND_TRACKING_AIM_STATE_FB)
  218. ENUM_TO_STRING_CASE(XR_TYPE_HAND_TRACKING_CAPSULES_STATE_FB)
  219. ENUM_TO_STRING_CASE(XR_TYPE_FOVEATION_PROFILE_CREATE_INFO_FB)
  220. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_CREATE_INFO_FOVEATION_FB)
  221. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_STATE_FOVEATION_FB)
  222. ENUM_TO_STRING_CASE(XR_TYPE_FOVEATION_LEVEL_PROFILE_CREATE_INFO_FB)
  223. ENUM_TO_STRING_CASE(XR_TYPE_TRIANGLE_MESH_CREATE_INFO_FB)
  224. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_PASSTHROUGH_PROPERTIES_FB)
  225. ENUM_TO_STRING_CASE(XR_TYPE_PASSTHROUGH_CREATE_INFO_FB)
  226. ENUM_TO_STRING_CASE(XR_TYPE_PASSTHROUGH_LAYER_CREATE_INFO_FB)
  227. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_PASSTHROUGH_FB)
  228. ENUM_TO_STRING_CASE(XR_TYPE_GEOMETRY_INSTANCE_CREATE_INFO_FB)
  229. ENUM_TO_STRING_CASE(XR_TYPE_GEOMETRY_INSTANCE_TRANSFORM_FB)
  230. ENUM_TO_STRING_CASE(XR_TYPE_PASSTHROUGH_STYLE_FB)
  231. ENUM_TO_STRING_CASE(XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_RGBA_FB)
  232. ENUM_TO_STRING_CASE(XR_TYPE_PASSTHROUGH_COLOR_MAP_MONO_TO_MONO_FB)
  233. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_PASSTHROUGH_STATE_CHANGED_FB)
  234. ENUM_TO_STRING_CASE(XR_TYPE_BINDING_MODIFICATIONS_KHR)
  235. ENUM_TO_STRING_CASE(XR_TYPE_VIEW_LOCATE_FOVEATED_RENDERING_VARJO)
  236. ENUM_TO_STRING_CASE(XR_TYPE_FOVEATED_VIEW_CONFIGURATION_VIEW_VARJO)
  237. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_FOVEATED_RENDERING_PROPERTIES_VARJO)
  238. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_VARJO)
  239. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO)
  240. ENUM_TO_STRING_CASE(XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO)
  241. ENUM_TO_STRING_CASE(XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO)
  242. ENUM_TO_STRING_CASE(XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT)
  243. ENUM_TO_STRING_CASE(XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT)
  244. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_IMAGE_FOVEATION_VULKAN_FB)
  245. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_STATE_ANDROID_SURFACE_DIMENSIONS_FB)
  246. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_STATE_SAMPLER_OPENGL_ES_FB)
  247. ENUM_TO_STRING_CASE(XR_TYPE_SWAPCHAIN_STATE_SAMPLER_VULKAN_FB)
  248. ENUM_TO_STRING_CASE(XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB)
  249. ENUM_TO_STRING_CASE(XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB)
  250. ENUM_TO_STRING_CASE(XR_STRUCTURE_TYPE_MAX_ENUM)
  251. default: {
  252. return String("Structure type ") + String::num_int64(int64_t(p_structure_type));
  253. } break;
  254. }
  255. }
  256. String OpenXRUtil::get_session_state_name(XrSessionState p_session_state) {
  257. switch (p_session_state) {
  258. ENUM_TO_STRING_CASE(XR_SESSION_STATE_UNKNOWN)
  259. ENUM_TO_STRING_CASE(XR_SESSION_STATE_IDLE)
  260. ENUM_TO_STRING_CASE(XR_SESSION_STATE_READY)
  261. ENUM_TO_STRING_CASE(XR_SESSION_STATE_SYNCHRONIZED)
  262. ENUM_TO_STRING_CASE(XR_SESSION_STATE_VISIBLE)
  263. ENUM_TO_STRING_CASE(XR_SESSION_STATE_FOCUSED)
  264. ENUM_TO_STRING_CASE(XR_SESSION_STATE_STOPPING)
  265. ENUM_TO_STRING_CASE(XR_SESSION_STATE_LOSS_PENDING)
  266. ENUM_TO_STRING_CASE(XR_SESSION_STATE_EXITING)
  267. ENUM_TO_STRING_CASE(XR_SESSION_STATE_MAX_ENUM)
  268. default: {
  269. return String("Session state ") + String::num_int64(int64_t(p_session_state));
  270. } break;
  271. }
  272. }
  273. String OpenXRUtil::get_action_type_name(XrActionType p_action_type) {
  274. switch (p_action_type) {
  275. ENUM_TO_STRING_CASE(XR_ACTION_TYPE_BOOLEAN_INPUT)
  276. ENUM_TO_STRING_CASE(XR_ACTION_TYPE_FLOAT_INPUT)
  277. ENUM_TO_STRING_CASE(XR_ACTION_TYPE_VECTOR2F_INPUT)
  278. ENUM_TO_STRING_CASE(XR_ACTION_TYPE_POSE_INPUT)
  279. ENUM_TO_STRING_CASE(XR_ACTION_TYPE_VIBRATION_OUTPUT)
  280. ENUM_TO_STRING_CASE(XR_ACTION_TYPE_MAX_ENUM)
  281. default: {
  282. return String("Action type ") + String::num_int64(int64_t(p_action_type));
  283. } break;
  284. }
  285. }
  286. String OpenXRUtil::make_xr_version_string(XrVersion p_version) {
  287. String version;
  288. version += String::num_int64(XR_VERSION_MAJOR(p_version));
  289. version += String(".");
  290. version += String::num_int64(XR_VERSION_MINOR(p_version));
  291. version += String(".");
  292. version += String::num_int64(XR_VERSION_PATCH(p_version));
  293. return version;
  294. }