annotate fuhtark_test/Vulkan-Headers-1.4.334/registry/stripAPI.py @ 1501:f40d9d814c08 default tip

did: correct vulkan-api generator
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 23:34:29 +0700
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1501
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
1 #!/usr/bin/env python3
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
2 #
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
3 # Copyright 2023-2025 The Khronos Group Inc.
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
4 # SPDX-License-Identifier: Apache-2.0
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
5
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
6 import argparse
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
7 import xml.etree.ElementTree as etree
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
8 from reg import stripNonmatchingAPIs
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
9
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
10 if __name__ == '__main__':
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
11 parser = argparse.ArgumentParser(prog='stripAPI',
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
12 formatter_class=argparse.RawDescriptionHelpFormatter,
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
13 description='''\
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
14 Filters out elements with non-matching explicit 'api' attributes from API XML.
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
15 To remove Vulkan SC-only elements from the combined API XML:
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
16 python3 scripts/stripAPI.py -input xml/vk.xml -output vulkan-only.xml -keepAPI vulkan
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
17 To remove Vulkan-only elements:
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
18 python3 scripts/stripAPI.py -input xml/vk.xml -output vulkansc-only.xml -keepAPI vulkansc
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
19 If you are parsing the XML yourself but using the xml.etree package, the
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
20 equivalent runtime code is:
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
21 import reg
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
22 reg.stripNonmatchingAPIs(tree.getroot(), keepAPI, actuallyDelete=True)
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
23 where 'tree' is an ElementTree created from the XML file using
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
24 etree.parse(filename)''')
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
25
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
26 parser.add_argument('-input', action='store',
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
27 required=True,
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
28 help='Specify input registry XML')
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
29 parser.add_argument('-output', action='store',
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
30 required=True,
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
31 help='Specify output registry XML')
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
32 parser.add_argument('-keepAPI', action='store',
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
33 default=None,
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
34 help='Specify API name whose \'api\' tags are kept')
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
35
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
36 args = parser.parse_args()
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
37
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
38 tree = etree.parse(args.input)
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
39 if args.keepAPI is not None:
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
40 stripNonmatchingAPIs(tree.getroot(), args.keepAPI, actuallyDelete = True)
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
41 tree.write(args.output)
f40d9d814c08 did: correct vulkan-api generator
sam <sam@basx.dev>
parents:
diff changeset
42