scripts: Optimize expensive xml lookups
4x speedup in codegen by fetching type information ahead of time instead
of doing repeated ad-hoc queries on the whole tree
Change-Id: Iba5625b830aa09baaf21f1eb16957d2f67d5d24a
diff --git a/scripts/layer_chassis_generator.py b/scripts/layer_chassis_generator.py
index 82a2486..ca9c31b 100644
--- a/scripts/layer_chassis_generator.py
+++ b/scripts/layer_chassis_generator.py
@@ -1502,23 +1502,17 @@
# Check if an object is a non-dispatchable handle
def isHandleTypeNonDispatchable(self, handletype):
- handle = self.registry.tree.find("types/type/[name='" + handletype + "'][@category='handle']")
- if handle is not None and handle.find('type').text == 'VK_DEFINE_NON_DISPATCHABLE_HANDLE':
- return True
- else:
- return False
+ return self.handle_types.get(handletype) == 'VK_DEFINE_NON_DISPATCHABLE_HANDLE'
# Check if an object is a dispatchable handle
def isHandleTypeDispatchable(self, handletype):
- handle = self.registry.tree.find("types/type/[name='" + handletype + "'][@category='handle']")
- if handle is not None and handle.find('type').text == 'VK_DEFINE_HANDLE':
- return True
- else:
- return False
+ return self.handle_types.get(handletype) == 'VK_DEFINE_HANDLE'
#
#
def beginFile(self, genOpts):
OutputGenerator.beginFile(self, genOpts)
+ # Initialize members that require the tree
+ self.handle_types = GetHandleTypes(self.registry.tree)
# Output Copyright
write(self.inline_copyright_message, file=self.outFile)
# Multiple inclusion protection