vk-layer-generate.py: no interface functions in layer functions
Move handling of interface functions out of layers' GetInstanceProcAddr to
v0's vkGetInstanceProcAddr.
diff --git a/vk-layer-generate.py b/vk-layer-generate.py
index 3d45a69..7d7257b 100755
--- a/vk-layer-generate.py
+++ b/vk-layer-generate.py
@@ -428,6 +428,15 @@
body.append('')
body.append('VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *funcName)')
body.append('{')
+ body.append(' if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateInstanceLayerProperties);')
+ body.append(' if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateDeviceLayerProperties);')
+ body.append(' if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkEnumerateInstanceExtensionProperties);')
+ body.append(' if (!strcmp(funcName, "vkGetInstanceProcAddr"))')
+ body.append(' return reinterpret_cast<PFN_vkVoidFunction>(vkGetInstanceProcAddr);')
+ body.append('')
body.append(' return %s::vkGetInstanceProcAddr(instance, funcName);' % self.layer_name)
body.append('}')
@@ -440,11 +449,13 @@
funcs = []
intercepted = []
for proto in self.protos:
- if proto.name in ["GetDeviceProcAddr",
- "GetInstanceProcAddr",
- "EnumerateInstanceExtensionProperties",
+ if proto.name in ["EnumerateInstanceExtensionProperties",
"EnumerateInstanceLayerProperties",
"EnumerateDeviceLayerProperties"]:
+ # the layer do not need to define these
+ continue
+ elif proto.name in ["GetDeviceProcAddr",
+ "GetInstanceProcAddr"]:
intercepted.append(proto)
else:
intercept = self.generate_intercept(proto, qual)
@@ -492,6 +503,11 @@
body.append("{")
body.append(generate_get_proc_addr_check("name"))
body.append("")
+ body.append(" // we should never be queried for these commands")
+ body.append(" assert(strcmp(name, \"vkEnumerateInstanceLayerProperties\") &&")
+ body.append(" strcmp(name, \"vkEnumerateInstanceExtensionProperties\") &&")
+ body.append(" strcmp(name, \"vkEnumerateDeviceLayerProperties\"));")
+ body.append("")
body.append(" name += 2;")
body.append(" %s" % "\n ".join(instance_lookups))
body.append("")