From 64a57273a3450658c5edcdc50c5e019aa984bbe5 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Fri, 6 May 2016 11:58:01 +0800 Subject: core_validation: no interface functions in layer functions Move handling of interface functions in core_validation::GetInstanceProcAddr to v0's vkGetInstanceProcAddr. --- layers/core_validation.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index e17ab273..3ffec4c4 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -9813,12 +9813,14 @@ intercept_core_instance_command(const char *name) { { "vkCreateInstance", reinterpret_cast(CreateInstance) }, { "vkCreateDevice", reinterpret_cast(CreateDevice) }, { "vkDestroyInstance", reinterpret_cast(DestroyInstance) }, - { "vkEnumerateInstanceLayerProperties", reinterpret_cast(vkEnumerateInstanceLayerProperties) }, - { "vkEnumerateInstanceExtensionProperties", reinterpret_cast(vkEnumerateInstanceExtensionProperties) }, - { "vkEnumerateDeviceLayerProperties", reinterpret_cast(vkEnumerateDeviceLayerProperties) }, { "vkEnumerateDeviceExtensionProperties", reinterpret_cast(EnumerateDeviceExtensionProperties) }, }; + // we should never be queried for these commands + assert(strcmp(name, "vkEnumerateInstanceLayerProperties") && + strcmp(name, "vkEnumerateInstanceExtensionProperties") && + strcmp(name, "vkEnumerateDeviceLayerProperties")); + for (size_t i = 0; i < ARRAY_SIZE(core_instance_commands); i++) { if (!strcmp(core_instance_commands[i].name, name)) return core_instance_commands[i].proc; @@ -10039,5 +10041,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 core_validation::GetInstanceProcAddr(instance, funcName); } -- cgit v1.2.3