summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChad Versace <[email protected]>2017-08-22 16:23:26 -0700
committerChad Versace <[email protected]>2017-09-18 14:26:54 -0700
commit6a5ff18039d0c35e79ac24ceae2479d5c7c85bd3 (patch)
treec47b398ddab8cd10807ee3f3f2e18428a66b82d2
parent2d1fac119fa0d1fccae086605b43b426312b257a (diff)
anv: Teach generator scripts how to parse mutliple XML files
The taught scripts are anv_extensions.py and anv_entrypoints_gen.py. To give a script multiple XML files, call it like so: anv_extensions.py --xml a.xml --xml b.xml --xml c.xml ... The scripts parse the XML files in the given order. This will allow us to feed the scripts XML files for extensions that are missing from the official vk.xml, such as VK_ANDROID_native_buffer. Reviewed-by: Tapani Pälli <[email protected]>
-rw-r--r--src/intel/vulkan/anv_entrypoints_gen.py18
-rw-r--r--src/intel/vulkan/anv_extensions.py15
2 files changed, 23 insertions, 10 deletions
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py
index 3240704a0d8..983be09a39b 100644
--- a/src/intel/vulkan/anv_entrypoints_gen.py
+++ b/src/intel/vulkan/anv_entrypoints_gen.py
@@ -253,7 +253,7 @@ def cal_hash(name):
lambda h, c: (h * PRIME_FACTOR + ord(c)) & U32_MASK, name, 0)
-def get_entrypoints(doc, entrypoints_to_defines):
+def get_entrypoints(doc, entrypoints_to_defines, start_index):
"""Extract the entry points from the registry."""
entrypoints = []
@@ -275,7 +275,7 @@ def get_entrypoints(doc, entrypoints_to_defines):
for command in extension.findall('./require/command'):
enabled_commands.add(command.attrib['name'])
- index = 0
+ index = start_index
for command in doc.findall('./commands/command'):
type = command.find('./proto/type').text
fullname = command.find('./proto/name').text
@@ -344,11 +344,19 @@ def main():
parser = argparse.ArgumentParser()
parser.add_argument('--outdir', help='Where to write the files.',
required=True)
- parser.add_argument('--xml', help='Vulkan API XML file.', required=True)
+ parser.add_argument('--xml',
+ help='Vulkan API XML file.',
+ required=True,
+ action='append',
+ dest='xml_files')
args = parser.parse_args()
- doc = et.parse(args.xml)
- entrypoints = get_entrypoints(doc, get_entrypoints_defines(doc))
+ entrypoints = []
+
+ for filename in args.xml_files:
+ doc = et.parse(filename)
+ entrypoints += get_entrypoints(doc, get_entrypoints_defines(doc),
+ start_index=len(entrypoints))
# Manually add CreateDmaBufImageINTEL for which we don't have an extension
# defined.
diff --git a/src/intel/vulkan/anv_extensions.py b/src/intel/vulkan/anv_extensions.py
index c94149c130a..4dfde064ca7 100644
--- a/src/intel/vulkan/anv_extensions.py
+++ b/src/intel/vulkan/anv_extensions.py
@@ -140,9 +140,6 @@ def _init_exts_from_xml(xml):
ext.type = ext_elem.attrib['type']
- for ext in EXTENSIONS:
- assert ext.type == 'instance' or ext.type == 'device'
-
_TEMPLATE = Template(COPYRIGHT + """
#include "anv_private.h"
@@ -234,10 +231,18 @@ VkResult anv_EnumerateDeviceExtensionProperties(
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--out', help='Output C file.', required=True)
- parser.add_argument('--xml', help='Vulkan API XML file.', required=True)
+ parser.add_argument('--xml',
+ help='Vulkan API XML file.',
+ required=True,
+ action='append',
+ dest='xml_files')
args = parser.parse_args()
- _init_exts_from_xml(args.xml)
+ for filename in args.xml_files:
+ _init_exts_from_xml(filename)
+
+ for ext in EXTENSIONS:
+ assert ext.type == 'instance' or ext.type == 'device'
template_env = {
'MAX_API_VERSION': MAX_API_VERSION,