Mesa (master): anv/entrypoints: Parse entrypoints before extensions/features
Jason Ekstrand
jekstrand at kemper.freedesktop.org
Tue Jan 23 08:38:21 UTC 2018
Module: Mesa
Branch: master
Commit: 93e789a2668ebc4eda8ffa0a6a6fda6465f4e215
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=93e789a2668ebc4eda8ffa0a6a6fda6465f4e215
Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date: Tue Jan 16 17:20:33 2018 -0800
anv/entrypoints: Parse entrypoints before extensions/features
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
---
src/intel/vulkan/anv_entrypoints_gen.py | 32 +++++++++++++++++---------------
1 file changed, 17 insertions(+), 15 deletions(-)
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py
index 8999df9069..ccbc2ffb5e 100644
--- a/src/intel/vulkan/anv_entrypoints_gen.py
+++ b/src/intel/vulkan/anv_entrypoints_gen.py
@@ -27,6 +27,7 @@ import functools
import os
import xml.etree.cElementTree as et
+from collections import OrderedDict
from mako.template import Template
from anv_extensions import *
@@ -276,6 +277,7 @@ class Entrypoint(object):
self.return_type = return_type
self.params = ', '.join(params)
self.guard = guard
+ self.enabled = False
self.num = None
def prefixed_name(self, prefix):
@@ -287,7 +289,16 @@ class Entrypoint(object):
def get_entrypoints(doc, entrypoints_to_defines, start_index):
"""Extract the entry points from the registry."""
- entrypoints = []
+ entrypoints = OrderedDict()
+
+ for command in doc.findall('./commands/command'):
+ ret_type = command.find('./proto/type').text
+ fullname = command.find('./proto/name').text
+ params = (''.join(p.itertext()) for p in command.findall('./param'))
+ guard = entrypoints_to_defines.get(fullname)
+ # They really need to be unique
+ assert fullname not in entrypoints
+ entrypoints[fullname] = Entrypoint(fullname, ret_type, params, guard)
enabled_commands = set()
for feature in doc.findall('./feature'):
@@ -296,7 +307,8 @@ def get_entrypoints(doc, entrypoints_to_defines, start_index):
continue
for command in feature.findall('./require/command'):
- enabled_commands.add(command.attrib['name'])
+ e = entrypoints[command.attrib['name']]
+ e.enabled = True
supported = set(ext.name for ext in EXTENSIONS)
for extension in doc.findall('.extensions/extension'):
@@ -307,20 +319,10 @@ def get_entrypoints(doc, entrypoints_to_defines, start_index):
continue
for command in extension.findall('./require/command'):
- enabled_commands.add(command.attrib['name'])
-
- for command in doc.findall('./commands/command'):
- ret_type = command.find('./proto/type').text
- fullname = command.find('./proto/name').text
-
- if fullname not in enabled_commands:
- continue
-
- params = (''.join(p.itertext()) for p in command.findall('./param'))
- guard = entrypoints_to_defines.get(fullname)
- entrypoints.append(Entrypoint(fullname, ret_type, params, guard))
+ e = entrypoints[command.attrib['name']]
+ e.enabled = True
- return entrypoints
+ return [e for e in entrypoints.itervalues() if e.enabled]
def get_entrypoints_defines(doc):
More information about the mesa-commit
mailing list