summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2016-06-10 12:42:52 -0700
committerJason Ekstrand <jason.ekstrand@intel.com>2016-06-10 13:21:07 -0700
commit8d37556ec9d7fbbffc5497388a52998ae4fe75de (patch)
tree66915123a3c8ba3be16b550d8268588cb17d3bae
parent9ed0d9dd06414b30d28d7d1301a980784e22d8d6 (diff)
anv/entrypoints: Rework #if guards
This reworks the #if guards a bit. When Emil originally wrote them, he just guarded everything. However, part of what anv_entrypoints_gen.py generates is a hash table for looking up entrypoints based on their name. This table *cannot* get out of sync between C and python regardless of preprocessor flags. In order to prevent this, this commit makes us use void pointers in the dispatch table for those entrypoints which aren't available. This means that the dispatch table size and entry order is constant and it should never get out-of-sync with the python. Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Acked-by: Emil Velikov <emil.velikov@collabora.com> Cc: "12.0" <mesa-stable@lists.freedesktop.org>
-rw-r--r--src/intel/vulkan/anv_entrypoints_gen.py16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py
index 46bc5533bcc..2896174a1a0 100644
--- a/src/intel/vulkan/anv_entrypoints_gen.py
+++ b/src/intel/vulkan/anv_entrypoints_gen.py
@@ -112,9 +112,15 @@ if opt_header:
print " struct {"
for type, name, args, num, h in entrypoints:
- print_guard_start(name)
- print " PFN_vk{0} {0};".format(name)
- print_guard_end(name)
+ guard = get_platform_guard_macro(name)
+ if guard is not None:
+ print "#ifdef {0}".format(guard)
+ print " PFN_vk{0} {0};".format(name)
+ print "#else"
+ print " void *{0};".format(name)
+ print "#endif"
+ else:
+ print " PFN_vk{0} {0};".format(name)
print " };\n"
print " };\n"
print "};\n"
@@ -176,11 +182,9 @@ static const char strings[] ="""
offsets = []
i = 0;
for type, name, args, num, h in entrypoints:
- print_guard_start(name)
print " \"vk%s\\0\"" % name
offsets.append(i)
i += 2 + len(name) + 1
- print_guard_end(name)
print """ ;
/* Weak aliases for all potential validate functions. These will resolve to
@@ -194,9 +198,7 @@ print """ ;
print "\nstatic const struct anv_entrypoint entrypoints[] = {"
for type, name, args, num, h in entrypoints:
- print_guard_start(name)
print " { %5d, 0x%08x }," % (offsets[num], h)
- print_guard_end(name)
print "};\n"
for layer in [ "anv", "validate", "gen7", "gen75", "gen8", "gen9" ]: