From f1c370e39a716e6e0ed8739760b5b42849ef185b Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Mon, 16 May 2016 11:17:26 +0800 Subject: threading: no interface functions in layer functions Move handling of interface functions in threading::GetInstanceProcAddr to v0's vkGetInstanceProcAddr. --- layers/threading.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'layers/threading.cpp') diff --git a/layers/threading.cpp b/layers/threading.cpp index 47d49060..db5f6ae0 100644 --- a/layers/threading.cpp +++ b/layers/threading.cpp @@ -193,19 +193,18 @@ static inline PFN_vkVoidFunction layer_intercept_instance_proc(const char *name) if (!name || name[0] != 'v' || name[1] != 'k') return NULL; + // we should never be queried for these commands + assert(strcmp(name, "vkEnumerateInstanceLayerProperties") && + strcmp(name, "vkEnumerateInstanceExtensionProperties") && + strcmp(name, "vkEnumerateDeviceLayerProperties")); + name += 2; if (!strcmp(name, "CreateInstance")) return (PFN_vkVoidFunction)CreateInstance; if (!strcmp(name, "DestroyInstance")) return (PFN_vkVoidFunction)DestroyInstance; - if (!strcmp(name, "EnumerateInstanceExtensionProperties")) - return (PFN_vkVoidFunction)vkEnumerateInstanceExtensionProperties; - if (!strcmp(name, "EnumerateInstanceLayerProperties")) - return (PFN_vkVoidFunction)vkEnumerateInstanceLayerProperties; if (!strcmp(name, "EnumerateDeviceExtensionProperties")) return (PFN_vkVoidFunction)EnumerateDeviceExtensionProperties; - if (!strcmp(name, "EnumerateDeviceLayerProperties")) - return (PFN_vkVoidFunction)vkEnumerateDeviceLayerProperties; if (!strcmp(name, "CreateDevice")) return (PFN_vkVoidFunction)CreateDevice; if (!strcmp(name, "GetInstanceProcAddr")) @@ -377,5 +376,14 @@ VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(VkD } VK_LAYER_EXPORT VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *funcName) { + if (!strcmp(funcName, "vkEnumerateInstanceLayerProperties")) + return reinterpret_cast(vkEnumerateInstanceLayerProperties); + if (!strcmp(funcName, "vkEnumerateDeviceLayerProperties")) + return reinterpret_cast(vkEnumerateDeviceLayerProperties); + if (!strcmp(funcName, "vkEnumerateInstanceExtensionProperties")) + return reinterpret_cast(vkEnumerateInstanceExtensionProperties); + if (!strcmp(funcName, "vkGetInstanceProcAddr")) + return reinterpret_cast(vkGetInstanceProcAddr); + return threading::GetInstanceProcAddr(instance, funcName); } -- cgit v1.2.3