Skip to content

Commit 6cea765

Browse files
BastiaanOlijfredinfinite23
authored andcommitted
Add client matrix
1 parent eb1ea1f commit 6cea765

36 files changed

+882
-131
lines changed

client_schema.json

Lines changed: 239 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,239 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema",
3+
"definitions": {
4+
"extension_name": {
5+
"type": "string",
6+
"description": "Name of an OpenXR extension",
7+
"pattern": "^XR_([A-Z]+)(_([a-zA-Z0-9])+)+$"
8+
},
9+
"extension_with_details": {
10+
"type": "object",
11+
"properties": {
12+
"name": {
13+
"allOf": [
14+
{
15+
"title": "Extension name"
16+
},
17+
{
18+
"$ref": "#/definitions/extension_name"
19+
}
20+
]
21+
},
22+
"notes": {
23+
"type": "string",
24+
"title": "Notes",
25+
"description": "Free-form text about support of this extension"
26+
}
27+
},
28+
"required": [
29+
"name",
30+
"notes"
31+
]
32+
},
33+
"extension": {
34+
"allOf": [
35+
{
36+
"title": "Supported Extension"
37+
},
38+
{
39+
"anyOf": [
40+
{
41+
"$ref": "#/definitions/extension_name"
42+
},
43+
{
44+
"$ref": "#/definitions/extension_with_details"
45+
}
46+
]
47+
}
48+
],
49+
"examples": [
50+
"XR_KHR_composition_layer_cylinder",
51+
{
52+
"name": "XR_EXT_hand_tracking",
53+
"notes": "Currently in beta"
54+
}
55+
]
56+
},
57+
"platform": {
58+
"type": "string",
59+
"enum": [
60+
"Windows (Desktop)",
61+
"Windows (HoloLens 2)",
62+
"Linux (Desktop/Embedded)",
63+
"Android (All-in-one)",
64+
"Android (Phone/Installable)",
65+
"MacOS (Desktop)"
66+
]
67+
},
68+
"form_factor": {
69+
"type": "string",
70+
"title": "XrFormFactor",
71+
"enum": [
72+
"XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY",
73+
"XR_FORM_FACTOR_HANDHELD_DISPLAY"
74+
]
75+
},
76+
"view_configuration": {
77+
"type": "string",
78+
"title": "XrViewConfigurationType",
79+
"enum": [
80+
"XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO",
81+
"XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO",
82+
"XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO",
83+
"XR_VIEW_CONFIGURATION_TYPE_SECONDARY_MONO_FIRST_PERSON_OBSERVER_MSFT"
84+
]
85+
},
86+
"environment_blend_mode": {
87+
"type": "string",
88+
"enum": [
89+
"OPAQUE",
90+
"ADDITIVE",
91+
"ALPHA_BLEND"
92+
]
93+
},
94+
"component": {
95+
"type": "object",
96+
"title": "Component",
97+
"properties": {
98+
"name": {
99+
"title": "Name of this component",
100+
"type": "string"
101+
},
102+
"abbreviation": {
103+
"title": "Abbreviation shown in matrix",
104+
"type": "string"
105+
},
106+
"color": {
107+
"title": "Background color used in matrix",
108+
"type": "string",
109+
"enum": [
110+
"black",
111+
"white",
112+
"gray",
113+
"silver",
114+
"maroon",
115+
"red",
116+
"purple",
117+
"fushsia",
118+
"green",
119+
"lime",
120+
"olive",
121+
"yellow",
122+
"navy",
123+
"blue",
124+
"teal",
125+
"aqua"
126+
]
127+
},
128+
"extensions": {
129+
"title": "Supported extensions",
130+
"description": "A list of all supported extensions in this client, on this platform. Details or caveats may be included in 'notes'.",
131+
"type": "array",
132+
"items": {
133+
"$ref": "#/definitions/extension"
134+
}
135+
}
136+
},
137+
"required": [
138+
"name",
139+
"abbreviation",
140+
"color",
141+
"extensions"
142+
]
143+
},
144+
"view_configuration_data": {
145+
"type": "object",
146+
"title": "View Configuration Data",
147+
"properties": {
148+
"view_configuration": {
149+
"$ref": "#/definitions/view_configuration"
150+
},
151+
"secondary_msft": {
152+
"title": "Secondary (MSFT) view configuration?",
153+
"type": "boolean",
154+
"default": false
155+
},
156+
"environment_blend_modes": {
157+
"title": "Supported environment blend modes in this view configuration",
158+
"type": "array",
159+
"items": {
160+
"$ref": "#/definitions/environment_blend_mode"
161+
},
162+
"minItems": 1
163+
}
164+
},
165+
"required": [
166+
"view_configuration",
167+
"environment_blend_modes"
168+
]
169+
},
170+
"form_factor_data": {
171+
"type": "object",
172+
"title": "Form Factor Data",
173+
"properties": {
174+
"form_factor": {
175+
"$ref": "#/definitions/form_factor"
176+
},
177+
"view_configurations": {
178+
"type": "array",
179+
"items": {
180+
"$ref": "#/definitions/view_configuration_data"
181+
},
182+
"minItems": 1
183+
}
184+
},
185+
"required": [
186+
"form_factor",
187+
"view_configurations"
188+
]
189+
}
190+
},
191+
"type": "object",
192+
"properties": {
193+
"name": {
194+
"type": "string",
195+
"title": "Client Name"
196+
},
197+
"vendor": {
198+
"type": "string",
199+
"title": "Vendor"
200+
},
201+
"platform": {
202+
"$description": "Platforms this client supports.",
203+
"type": "array",
204+
"items": {
205+
"$ref": "#/definitions/platform"
206+
}
207+
},
208+
"updated": {
209+
"type": "string",
210+
"title": "Last updated",
211+
"description": "Date this document was last reflective of the reality"
212+
},
213+
"notes": {
214+
"type": "string",
215+
"title": "Notes",
216+
"description": "Freeform notes about this data file"
217+
},
218+
"components": {
219+
"title": "Components",
220+
"description": "A list of all components for this client.",
221+
"type": "array",
222+
"items": {
223+
"$ref": "#/definitions/component"
224+
}
225+
},
226+
"form_factors": {
227+
"type": "array",
228+
"minItems": 1,
229+
"items": {
230+
"$ref": "#/definitions/form_factor_data"
231+
}
232+
}
233+
},
234+
"required": [
235+
"name",
236+
"vendor",
237+
"components"
238+
]
239+
}

client_schema.json.license

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Copyright 2025, The Khronos Group Inc.
2+
SPDX-License-Identifier: CC-BY-4.0

clients/godot.json

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
{
2+
"$schema": "../client_schema.json",
3+
"name": "Godot Game Engine",
4+
"vendor": "Godot Community",
5+
"notes": "Some extensions require the use of the Godot OpenXR Vendors Plugin.",
6+
"platforms": [
7+
"Windows (Desktop)",
8+
"Linux (Desktop/Embedded)",
9+
"Android (All-in-one)",
10+
"Android (Phone/Installable)",
11+
"MacOS (Desktop)"
12+
],
13+
"components": [
14+
{
15+
"name": "Godot Core",
16+
"abbreviation": "Core",
17+
"color": "green",
18+
"extensions": [
19+
"XR_KHR_android_create_instance",
20+
"XR_KHR_android_surface_swapchain",
21+
"XR_KHR_binding_modification",
22+
"XR_KHR_composition_layer_cylinder",
23+
"XR_KHR_composition_layer_depth",
24+
"XR_KHR_composition_layer_equirect2",
25+
"XR_KHR_loader_init",
26+
"XR_KHR_loader_init_android",
27+
"XR_KHR_opengl_es_enable",
28+
"XR_KHR_opengl_enable",
29+
"XR_KHR_visibility_mask",
30+
"XR_KHR_vulkan_enable2",
31+
"XR_EXT_debug_utils",
32+
"XR_EXT_dpad_binding",
33+
"XR_EXT_eye_gaze_interaction",
34+
"XR_EXT_future",
35+
"XR_EXT_hand_interaction",
36+
"XR_EXT_hand_tracking",
37+
"XR_EXT_hand_joints_motion_range",
38+
"XR_EXT_hand_tracking_data_source",
39+
"XR_EXT_local_floor",
40+
"XR_EXT_view_configuration_depth_range",
41+
"XR_EXT_palm_pose",
42+
"XR_EXT_performance_settings",
43+
"XR_EXT_hp_mixed_reality_controller",
44+
"XR_EXT_samsung_odyssey_controller",
45+
"XR_BD_controller_interaction",
46+
"XR_FB_touch_controller_proximity",
47+
"XR_FB_touch_controller_pro",
48+
"XR_META_touch_controller_plus",
49+
"XR_HTC_vive_cosmos_controller_interaction",
50+
"XR_HTC_vive_focus3_controller_interaction",
51+
"XR_HTC_hand_interaction",
52+
"XR_HTCX_vive_tracker_interaction",
53+
"XR_ML_ml2_controller_interaction",
54+
"XR_MSFT_hand_interaction"
55+
]
56+
},
57+
{
58+
"name": "Godot Vendors plugin",
59+
"abbreviation": "Vendors",
60+
"color": "yellow",
61+
"extensions": [
62+
"XR_FB_body_tracking",
63+
"XR_FB_composition_layer_alpha_blend",
64+
"XR_FB_composition_layer_secure_content",
65+
"XR_FB_composition_layer_settings",
66+
"XR_FB_display_refresh_rate",
67+
"XR_FB_face_tracking2",
68+
"XR_FB_foveation",
69+
"XR_FB_foveation_configuration",
70+
"XR_FB_hand_tracking_aim",
71+
"XR_FB_hand_tracking_capsules",
72+
"XR_FB_hand_tracking_mesh",
73+
"XR_FB_passthrough",
74+
"XR_META_passthrough_preferences",
75+
"XR_META_passthrough_color_lut",
76+
"XR_META_spatial_entity_mesh",
77+
"XR_FB_render_model",
78+
"XR_FB_scene",
79+
"XR_FB_scene_capture",
80+
"XR_FB_spatial_entity_container",
81+
"XR_FB_spatial_entity",
82+
"XR_FB_spatial_entity_query",
83+
"XR_FB_spatial_entity_sharing",
84+
"XR_FB_spatial_entity_storage_batch",
85+
"XR_FB_spatial_entity_storage",
86+
"XR_FB_spatial_entity_user",
87+
"XR_FB_swapchain_update_state",
88+
"XR_FB_swapchain_update_state_vulkan",
89+
"XR_FB_swapchain_update_state_opengl_es",
90+
"XR_FB_triangle_mesh",
91+
"XR_META_automatic_layer_filter",
92+
"XR_HTC_facial_tracking",
93+
"XR_HTC_passthrough"
94+
]
95+
}
96+
],
97+
"form_factors": [
98+
{
99+
"form_factor": "XR_FORM_FACTOR_HANDHELD_DISPLAY",
100+
"view_configurations": [
101+
{
102+
"view_configuration": "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO",
103+
"environment_blend_modes": [
104+
"OPAQUE",
105+
"ADDITIVE",
106+
"ALPHA_BLEND"
107+
]
108+
}
109+
]
110+
},
111+
{
112+
"form_factor": "XR_FORM_FACTOR_HEAD_MOUNTED_DISPLAY",
113+
"view_configurations": [
114+
{
115+
"view_configuration": "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_MONO",
116+
"environment_blend_modes": [
117+
"OPAQUE",
118+
"ADDITIVE",
119+
"ALPHA_BLEND"
120+
]
121+
},
122+
{
123+
"view_configuration": "XR_VIEW_CONFIGURATION_TYPE_PRIMARY_STEREO",
124+
"environment_blend_modes": [
125+
"OPAQUE",
126+
"ADDITIVE",
127+
"ALPHA_BLEND"
128+
]
129+
}
130+
]
131+
}
132+
]
133+
}

clients/godot.json.license

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Copyright 2025, The Khronos Group Inc.
2+
SPDX-License-Identifier: CC-BY-4.0

extension_support_report.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66
from openxr_inventory.extensions import generate_report
77
from openxr_inventory.runtime_inventory import load_all_runtimes
8+
from openxr_inventory.client_inventory import load_all_clients
89

910
if __name__ == "__main__":
1011
runtimes = load_all_runtimes()
11-
generate_report(runtimes)
12+
clients = load_all_clients()
13+
generate_report(runtimes, clients)

0 commit comments

Comments
 (0)