diff options
author | Jason Ekstrand <[email protected]> | 2019-06-26 13:57:34 -0500 |
---|---|---|
committer | Jason Ekstrand <[email protected]> | 2019-11-26 02:48:42 +0000 |
commit | 854859fefa1cb8b09f6c936b492b937c6f8ce089 (patch) | |
tree | cd0bab0f38427a3eed3528e245bd6b7db7841c2c /src/intel/vulkan/anv_entrypoints_gen.py | |
parent | 121551bfdb07786c8e26b712d87c8564bda556b4 (diff) |
anv/entrypoints: Better handle promoted extensions
In the case of promoted extensions we can end up with an entrypoint that
we support being an alias of an entrypoint we do not support. For
instance, if an extension gets promoted from EXT to KHR, the EXT entry-
points may be aliases of the KHR ones. We want to leave everything as
EXT until we get around to advertising the KHR so that we don't break
things when we update the XML and headers.
Reviewed-by: Lionel Landwerlin <[email protected]>
Diffstat (limited to 'src/intel/vulkan/anv_entrypoints_gen.py')
-rw-r--r-- | src/intel/vulkan/anv_entrypoints_gen.py | 34 |
1 files changed, 25 insertions, 9 deletions
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py index 2d5ff460d04..6b90786577d 100644 --- a/src/intel/vulkan/anv_entrypoints_gen.py +++ b/src/intel/vulkan/anv_entrypoints_gen.py @@ -117,7 +117,7 @@ extern const struct anv_device_dispatch_table ${layer}_device_dispatch_table; %endfor % for e in instance_entrypoints: - % if e.alias: + % if e.alias and e.alias.enabled: <% continue %> % endif % if e.guard is not None: @@ -145,7 +145,7 @@ extern const struct anv_device_dispatch_table ${layer}_device_dispatch_table; % endfor % for e in device_entrypoints: - % if e.alias: + % if e.alias and e.alias.enabled: <% continue %> % endif % if e.guard is not None: @@ -278,7 +278,7 @@ ${strmap(device_strmap, 'device')} */ % for e in instance_entrypoints: - % if e.alias: + % if e.alias and e.alias.enabled: <% continue %> % endif % if e.guard is not None: @@ -345,7 +345,7 @@ const struct anv_instance_dispatch_table anv_instance_dispatch_table = { % for layer in LAYERS: % for e in device_entrypoints: - % if e.alias: + % if e.alias and e.alias.enabled: <% continue %> % endif % if e.guard is not None: @@ -652,6 +652,10 @@ class EntrypointBase(object): self.core_version = None self.extensions = [] + def prefixed_name(self, prefix): + assert self.name.startswith('vk') + return prefix + '_' + self.name[2:] + class Entrypoint(EntrypointBase): def __init__(self, name, return_type, params, guard=None): super(Entrypoint, self).__init__(name) @@ -665,10 +669,6 @@ class Entrypoint(EntrypointBase): def is_device_entrypoint(self): return self.params[0].type in ('VkDevice', 'VkCommandBuffer', 'VkQueue') - def prefixed_name(self, prefix): - assert self.name.startswith('vk') - return prefix + '_' + self.name[2:] - def decl_params(self): return ', '.join(p.decl for p in self.params) @@ -687,7 +687,23 @@ class EntrypointAlias(EntrypointBase): return self.alias.is_device_entrypoint() def prefixed_name(self, prefix): - return self.alias.prefixed_name(prefix) + if self.alias.enabled: + return self.alias.prefixed_name(prefix) + return super(EntrypointAlias, self).prefixed_name(prefix) + + @property + def params(self): + return self.alias.params + + @property + def return_type(self): + return self.alias.return_type + + def decl_params(self): + return self.alias.decl_params() + + def call_params(self): + return self.alias.call_params() def get_entrypoints(doc, entrypoints_to_defines): """Extract the entry points from the registry.""" |