From 75a563e815c2606f61db88b9e1ed3c51ca7dbe1d Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Mon, 16 May 2016 07:43:38 +0800 Subject: vk-layer-generate.py: no interface functions in layer functions Move handling of interface functions out of layers' GetInstanceProcAddr to v0's vkGetInstanceProcAddr. --- vk-layer-generate.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/vk-layer-generate.py b/vk-layer-generate.py index 3d45a694..7d7257be 100755 --- a/vk-layer-generate.py +++ b/vk-layer-generate.py @@ -428,6 +428,15 @@ class Subcommand(object): 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(vkEnumerateInstanceLayerProperties);') + body.append(' if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties"))') + body.append(' return reinterpret_cast(vkEnumerateDeviceLayerProperties);') + body.append(' if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties"))') + body.append(' return reinterpret_cast(vkEnumerateInstanceExtensionProperties);') + body.append(' if (!strcmp(funcName, "vkGetInstanceProcAddr"))') + body.append(' return reinterpret_cast(vkGetInstanceProcAddr);') + body.append('') body.append(' return %s::vkGetInstanceProcAddr(instance, funcName);' % self.layer_name) body.append('}') @@ -440,11 +449,13 @@ class Subcommand(object): 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 @@ class Subcommand(object): 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("") -- cgit v1.2.3