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