You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
*`--input`, `-i`: *(Required)* Path to input profile JSON file or directory.
24
-
25
-
26
22
*`--output`, `-o`: *(Required)* Path to output directory or file.
27
-
28
-
29
23
*`--registry`, `-r`: Path to `vk.xml`.
30
-
31
-
32
24
*`--api`: Target API variant (`vulkan`). Default: `vulkan`.
33
-
34
-
35
25
*`--format`: Output formatting style (`flatten` or `tree`). Default: `flatten`.
36
-
37
-
38
26
*`--mode`: Space-separated list of conversion capabilities to apply. Default: all flags.
39
-
40
-
41
27
*`--validate`, `-v`: Validate profile files against schema prior to conversion.
42
28
43
-
44
-
45
29
#### Conversion Mode Flags (`--mode`)
46
30
31
+
Conversion flags are processed in a deterministic internal pipeline order regardless of the order specified on the command line. This multi-phase sequence ensures that all extension dependencies and core promotions are populated first, structural feature/property/format aliases are subsequently expanded across all required structures, redundant inherited definitions are stripped, and capability blocks are consolidated as the final step.
32
+
47
33
| Mode Value | Description |
48
34
| --- | --- |
49
-
| `strip-duplication` | Recursively removes duplicate extension requirements, features, properties, and format flags that are already satisfied by parent profiles in the inheritance chain.
50
-
51
-
|
52
35
| `pull-dependences` | Queries `vk.xml` to automatically pull in and append all dependent extensions required by any extensions listed in the capability blocks.
53
36
54
-
|
55
-
| `pull-aliases` | Automatically expands structural capability aliases (features, properties, and format flags) across core version bundle structures and extension structs (e.g., mapping `VkPhysicalDevice16BitStorageFeatures` to `VkPhysicalDeviceVulkan11Features`).
56
-
57
37
|
58
38
| `pull-promoted-extensions` | Adds version-specific `vulkan1Xpulledrequirements` capability blocks containing all extensions that were promoted into the target Vulkan core version.
59
39
60
40
|
61
-
| `ignore-extension-versions` | Forces all required extension spec versions to `1`, ignoring specific extension version numbers.
41
+
| `pull-aliases` | Automatically expands structural capability aliases (features, properties, and format flags) across core version bundle structures and extension structs (e.g., mapping `VkPhysicalDevice16BitStorageFeatures` to `VkPhysicalDeviceVulkan11Features`).
62
42
63
43
|
64
-
| `unique` | Strips duplicate capability members from lower-priority structures (e.g. extension structs or split core structs) if a higher-priority structure (e.g. `VkPhysicalDeviceVulkan1XFeatures`) already defines them with identical values.
44
+
| `strip-duplication` | Recursively removes duplicate extension requirements, features, properties, and format flags that are already satisfied by parent profiles in the inheritance chain.
65
45
66
46
|
67
47
| `consolidate` | Combines all mandatory capability blocks across a profile into a single consolidated requirement block (`<profile_name>_requirements`).
68
48
69
49
|
50
+
| `ignore-extension-versions` | Modifier flag: Forces all required extension spec versions to `1`, ignoring specific extension version numbers during extension pulling.
In the repository build process, `VP_LUNARG_desktop_baseline.json` is constructed by calculating the intersection of historical desktop baseline profiles listed in `VP_LUNARG_desktop_baseline_config.json`:
**Example (Merging Directory to Single Profile):**
@@ -223,7 +157,6 @@ vkprofiles merge \
223
157
--profile-date 2026-06-22 \
224
158
--profile-stage BETA \
225
159
--profile-api-version 1.4.353
226
-
227
160
```
228
161
229
162
---
@@ -232,52 +165,30 @@ vkprofiles merge \
232
165
233
166
Generates C/C++ Vulkan Profiles API library headers (`vulkan_profiles.h`, `vulkan_profiles.hpp`) and source file (`vulkan_profiles.cpp`).
234
167
168
+
> [!IMPORTANT]
169
+
> **Device Creation Requirements**
170
+
> Generating a Vulkan Profiles API library suitable for creating a `VkDevice` instance requires that the input profile JSON files contain no duplicate Vulkan feature structures. The Vulkan specification prohibits passing superseded or duplicate feature structures simultaneously in the `pNext` chain during device creation.
171
+
> If the source profile JSON files contain redundant or unexpanded feature structures, developers can use the `--convert` flag with `pull-aliases` and `strip-duplication` modes during library generation to automatically sanitize, expand, and deduplicate feature structures before C/C++ code generation.
Copy file name to clipboardExpand all lines: scripts/profiles.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,7 @@ def main(argv):
62
62
validate_parser.add_argument('--registry', '-r', action='store', help='Use a specific Vulkan registry file (vk.xml).')
63
63
validate_parser.add_argument('--schema', '-s', action='store', help='Use a profile schema (profiles-*.json). By default, generate a profile schema vk.xml.')
64
64
validate_parser.add_argument('--input', '-i', action='store', required=True, help='Path to the input profiles files.')
0 commit comments