From: Emil Velikov Date: Tue, 31 May 2016 13:55:04 +0000 (+0100) Subject: anv: let anv_entrypoints_gen.py generate proper Wayland/Xcb guards X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b8e1f59d62bbe9b071c1012fd26a84928f3b0564;p=mesa.git anv: let anv_entrypoints_gen.py generate proper Wayland/Xcb guards The generated sources should follow the example set by the vulkan headers and our non-generated code. Namely: the code for all supported platforms should be available, each one guarded by its respective VK_USE_PLATFORM_*_KHR macro. v2: Reword commit message. Cc: Mark Janes Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96285 Signed-off-by: Emil Velikov Reviewed-by: Jason Ekstrand (v1 over IRC) --- diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py index cedecfeac70..7a473721bac 100644 --- a/src/intel/vulkan/anv_entrypoints_gen.py +++ b/src/intel/vulkan/anv_entrypoints_gen.py @@ -51,6 +51,20 @@ def hash(name): return h +def print_guard_start(name): + if "Wayland" in name: + print "#ifdef VK_USE_PLATFORM_WAYLAND_KHR" + if "Xcb" in name: + print "#ifdef VK_USE_PLATFORM_XCB_KHR" + return + +def print_guard_end(name): + if "Wayland" in name: + print "#endif // VK_USE_PLATFORM_WAYLAND_KHR" + if "Xcb" in name: + print "#endif // VK_USE_PLATFORM_XCB_KHR" + return + opt_header = False opt_code = False @@ -86,7 +100,9 @@ if opt_header: print " struct {" for type, name, args, num, h in entrypoints: + print_guard_start(name) print " %s (*%s)%s;" % (type, name, args) + print_guard_end(name) print " };\n" print " };\n" print "};\n" @@ -94,12 +110,14 @@ if opt_header: print "void anv_set_dispatch_devinfo(const struct brw_device_info *info);\n" for type, name, args, num, h in entrypoints: + print_guard_start(name) print "%s anv_%s%s;" % (type, name, args) print "%s gen7_%s%s;" % (type, name, args) print "%s gen75_%s%s;" % (type, name, args) print "%s gen8_%s%s;" % (type, name, args) print "%s gen9_%s%s;" % (type, name, args) print "%s anv_validate_%s%s;" % (type, name, args) + print_guard_end(name) exit() @@ -146,9 +164,11 @@ 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 @@ -162,15 +182,21 @@ 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" ]: for type, name, args, num, h in entrypoints: + print_guard_start(name) print "%s %s_%s%s __attribute__ ((weak));" % (type, layer, name, args) + print_guard_end(name) print "\nconst struct anv_dispatch_table %s_layer = {" % layer for type, name, args, num, h in entrypoints: + print_guard_start(name) print " .%s = %s_%s," % (name, layer, name) + print_guard_end(name) print "};\n" print """ @@ -242,8 +268,10 @@ anv_resolve_entrypoint(uint32_t index) # lets the resolver look it up in the table. for type, name, args, num, h in entrypoints: + print_guard_start(name) print "static void *resolve_%s(void) { return anv_resolve_entrypoint(%d); }" % (name, num) print "%s vk%s%s\n __attribute__ ((ifunc (\"resolve_%s\"), visibility (\"default\")));\n" % (type, name, args, name) + print_guard_end(name) # Now generate the hash table used for entry point look up. This is a