anv: don't use Element.get in anv_entrypoints_gen.py
authorDylan Baker <dylan@pnwbakers.com>
Tue, 21 Feb 2017 19:16:43 +0000 (11:16 -0800)
committerDylan Baker <dylan@pnwbakers.com>
Wed, 22 Mar 2017 23:22:00 +0000 (16:22 -0700)
This has the potential to mask errors, since Element.get works like
dict.get, returning None if the element isn't found. I think the reason
that Element.get was used is that vulkan has one extension that isn't
really an extension, and thus is missing the 'protect' field.

This patch changes the behavior slightly by replacing get with explicit
lookup in the Element.attrib dictionary, and using xpath to only iterate
over extensions with a "protect" attribute.

Signed-off-by: Dylan Baker <dylanx.c.baker@intel.com>
src/intel/vulkan/anv_entrypoints_gen.py

index b5bd6f176564dc9ba86b13ef70910d4efcfcfe12..2c0c968222e5e7a51a20c73f26c787f44b37107e 100644 (file)
@@ -305,13 +305,14 @@ def get_entrypoints(doc, entrypoints_to_defines):
 def get_entrypoints_defines(doc):
     """Maps entry points to extension defines."""
     entrypoints_to_defines = {}
-    extensions = doc.findall('./extensions/extension')
-    for extension in extensions:
-        define = extension.get('protect')
-        entrypoints = extension.findall('./require/command')
-        for entrypoint in entrypoints:
-            fullname = entrypoint.get('name')
+
+    for extension in doc.findall('./extensions/extension[@protect]'):
+        define = extension.attrib['protect']
+
+        for entrypoint in extension.findall('./require/command'):
+            fullname = entrypoint.attrib['name']
             entrypoints_to_defines[fullname] = define
+
     return entrypoints_to_defines