1{
2	"$schema": "https://json-schema.org/draft/2020-12/schema",
3	"type": "object",
4	"properties":
5	{
6		"register_extension":
7		{
8			"type": "object",
9			"description": "This section must be present for all KHR extensions, for all extensions that were promoted to the core and for all extensions for which aliases should be populated.",
10			"properties":
11			{
12				"type":
13				{
14					"type": "string",
15					"enum": ["device", "instance"],
16					"description": "This property specifies if this is device or instance extension."
17				},
18				"core":
19				{
20					"type": "string",
21					"description": "This property specifies vulkan version to which this extension was fully promoted. Empty string is also accepted and must be used for partialy promoted extensions.",
22					"pattern": "^$|^[1-9]\\.[0-9]\\.[0-9]\\.[0-9]$"
23				}
24			},
25			"required": ["type", "core"],
26			"additionalProperties": false
27		},
28		"mandatory_features":
29		{
30			"type": "object",
31			"description": "When this section is present it specifies mandatory features for extension or vulkan version.",
32			"patternProperties":
33			{
34				"^VkPhysicalDevice[1-9A-Za-z]*Features(EXT|KHR|VALVE)?$":
35				{
36					"type": "array",
37					"description": "List of mandatory features in given feature structure.",
38					"minItems": 1,
39					"items":
40					{
41						"type": "object",
42						"properties":
43						{
44							"features":
45							{
46								"type": "array",
47								"description": "List of structure attributes - at least one of them must be supported when requirements are meat.",
48								"minItems": 1,
49								"items":
50								{
51									"type": "string"
52								}
53							},
54							"requirements":
55							{
56								"type": "array",
57								"description": "List of requirements (other features, extensions, vulkan version). This list can be empty.",
58								"items":
59								{
60									"type": "string"
61								}
62							},
63							"mandatory_variant":
64							{
65								"type": "array",
66								"description": "When this section is present it specifies mandatory features variant.",
67								"items": {
68									"type": "string",
69									"enum": ["vulkan", "vulkansc"]
70								}
71							}
72						},
73						"required": ["features", "requirements"],
74						"additionalProperties": false
75					}
76				},
77				"additionalProperties": { "type": "string" }
78			},
79			"additionalProperties": false
80		},
81		"mandatory_extensions":
82		{
83			"type": "array",
84			"description": "When this section is present it specifies mandatory extensions for the given features",
85			"items":
86			{
87				"type": "object",
88				"properties":
89				{
90					"extension":
91					{
92						"type": "string"
93					},
94					"requirements":
95					{
96						"type": "array",
97						"description": "List of requirements (other features, extensions, vulkan version). This list can be empty.",
98						"minItems": 1,
99						"items":
100						{
101							"type": "string"
102						}
103					},
104					"mandatory_variant":
105					{
106						"type": "array",
107						"description": "When this section is present it specifies mandatory features variant.",
108						"items": {
109							"type": "string",
110							"enum": ["vulkan", "vulkansc"]
111						}
112					}
113				},
114				"additionalProperties": false
115			}
116		}
117	},
118	"additionalProperties": false
119}