layers: gh793 gen vk_dispatch_table_helper.h
Generate one vk_dispatch_table_helper.h for all platforms.
Change-Id: I17fa435bc69cacfdd75dd93fbb0a5a37222aaa2b
diff --git a/vk-generate.py b/vk-generate.py
index 4f182e4..c136c49 100755
--- a/vk-generate.py
+++ b/vk-generate.py
@@ -133,21 +133,20 @@
KHR_printed = False
EXT_printed = False
+ Win32_printed = False
XLIB_printed = False
XCB_printed = False
MIR_printed = False
WAY_printed = False
+ Android_printed = False
for proto in self.protos:
if proto.name == "CreateInstance" or proto.name == "EnumerateInstanceExtensionProperties" or \
proto.name == "EnumerateInstanceLayerProperties" or proto.params[0].ty == "VkInstance" or \
proto.params[0].ty == "VkPhysicalDevice" or proto.name == "GetDeviceProcAddr":
continue
- if 'KHR' in proto.name and not KHR_printed:
- stmts.append(" // KHR device extension function pointers")
- KHR_printed = True
- if 'EXT' in proto.name and not EXT_printed:
- stmts.append(" // EXT device extension function pointers")
- EXT_printed = True
+ if Win32_printed and 'Win32' not in proto.name:
+ stmts.append("#endif // VK_USE_PLATFORM_WIN32_KHR")
+ Win32_printed = False
if XLIB_printed and 'Xlib' not in proto.name:
stmts.append("#endif // VK_USE_PLATFORM_XLIB_KHR")
XLIB_printed = False
@@ -160,6 +159,13 @@
if WAY_printed and 'Wayland' not in proto.name:
stmts.append("#endif // VK_USE_PLATFORM_WAYLAND_KHR")
WAY_printed = False
+ if Android_printed and 'Android' not in proto.name:
+ stmts.append("#endif // VK_USE_PLATFORM_ANDROID_KHR")
+ Android_printed = False
+ if 'KHR' in proto.name and 'Win32' in proto.name:
+ if not Win32_printed:
+ stmts.append("#ifdef VK_USE_PLATFORM_WIN32_KHR")
+ Win32_printed = True
if 'KHR' in proto.name and 'Xlib' in proto.name:
if not XLIB_printed:
stmts.append("#ifdef VK_USE_PLATFORM_XLIB_KHR")
@@ -176,6 +182,16 @@
if not WAY_printed:
stmts.append("#ifdef VK_USE_PLATFORM_WAYLAND_KHR")
WAY_printed = True
+ if 'KHR' in proto.name and 'Android' in proto.name:
+ if not Android_printed:
+ stmts.append("#ifdef VK_USE_PLATFORM_ANDROID_KHR")
+ Android_printed = True
+ if 'KHR' in proto.name and not KHR_printed:
+ stmts.append(" // KHR device extension function pointers")
+ KHR_printed = True
+ if 'EXT' in proto.name and not EXT_printed:
+ stmts.append(" // EXT device extension function pointers")
+ EXT_printed = True
stmts.append(" table->%s = (PFN_vk%s) gpa(device, \"vk%s\");" %
(proto.name, proto.name, proto.name))
func.append("static inline void %s_init_device_dispatch_table(VkDevice device,"
@@ -191,20 +207,19 @@
KHR_printed = False
EXT_printed = False
+ Win32_printed = False
XLIB_printed = False
XCB_printed = False
MIR_printed = False
WAY_printed = False
+ Android_printed = False
for proto in self.protos:
if proto.params[0].ty != "VkInstance" and proto.params[0].ty != "VkPhysicalDevice" or \
proto.name == "CreateDevice" or proto.name == "GetInstanceProcAddr":
continue
- if 'KHR' in proto.name and not KHR_printed:
- stmts.append(" // KHR instance extension function pointers")
- KHR_printed = True
- if 'EXT' in proto.name and not EXT_printed:
- stmts.append(" // EXT instance extension function pointers")
- EXT_printed = True
+ if Win32_printed and 'Win32' not in proto.name:
+ stmts.append("#endif // VK_USE_PLATFORM_WIN32_KHR")
+ Win32_printed = False
if XLIB_printed and 'Xlib' not in proto.name:
stmts.append("#endif // VK_USE_PLATFORM_XLIB_KHR")
XLIB_printed = False
@@ -217,6 +232,13 @@
if WAY_printed and 'Wayland' not in proto.name:
stmts.append("#endif // VK_USE_PLATFORM_WAYLAND_KHR")
WAY_printed = False
+ if Android_printed and 'Android' not in proto.name:
+ stmts.append("#endif // VK_USE_PLATFORM_ANDROID_KHR")
+ Android_printed = False
+ if 'KHR' in proto.name and 'Win32' in proto.name:
+ if not Win32_printed:
+ stmts.append("#ifdef VK_USE_PLATFORM_WIN32_KHR")
+ Win32_printed = True
if 'KHR' in proto.name and 'Xlib' in proto.name:
if not XLIB_printed:
stmts.append("#ifdef VK_USE_PLATFORM_XLIB_KHR")
@@ -233,6 +255,16 @@
if not WAY_printed:
stmts.append("#ifdef VK_USE_PLATFORM_WAYLAND_KHR")
WAY_printed = True
+ if 'KHR' in proto.name and 'Android' in proto.name:
+ if not Android_printed:
+ stmts.append("#ifdef VK_USE_PLATFORM_ANDROID_KHR")
+ Android_printed = True
+ if 'KHR' in proto.name and not KHR_printed:
+ stmts.append(" // KHR instance extension function pointers")
+ KHR_printed = True
+ if 'EXT' in proto.name and not EXT_printed:
+ stmts.append(" // EXT instance extension function pointers")
+ EXT_printed = True
stmts.append(" table->%s = (PFN_vk%s) gpa(instance, \"vk%s\");" %
(proto.name, proto.name, proto.name))
func.append("static inline void %s_init_instance_dispatch_table(" % self.prefix)
@@ -334,7 +366,8 @@
"Xlib",
"Wayland",
"Mir",
- "Display"
+ "Display",
+ "AllPlatforms"
}
subcommands = {
"dispatch-table-ops": DispatchTableOpsSubcommand,