From 8ec45b01e3a30111b247d896290bd13f4a3b50c2 Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Thu, 1 Oct 2015 12:03:17 -0600 Subject: loader: Fix vkGetInstanceProcAddr to handle debug_report extension Need loader entrypoints for debug_report extension including the utility functions. Don't call down the instance chain GPA for this extension. Remove instance extensions decoding when GPA instance == NULL as don't want to return extension entrypoints unless they are enabled. This meant the WSI swapchain instance GPA was no longer used so remove it. --- loader/debug_report.c | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) (limited to 'loader/debug_report.c') diff --git a/loader/debug_report.c b/loader/debug_report.c index 63c86c6f..c8686dc0 100644 --- a/loader/debug_report.c +++ b/loader/debug_report.c @@ -320,23 +320,34 @@ static void VKAPI BreakCallback( #endif } -void *debug_report_instance_gpa( +bool debug_report_instance_gpa( struct loader_instance *ptr_instance, - const char* name) + const char* name, + void **addr) { - if (ptr_instance == VK_NULL_HANDLE || !ptr_instance->debug_report_enabled) - return NULL; - - if (!strcmp("vkDbgCreateMsgCallback", name)) - return (void *) debug_report_DbgCreateMsgCallback; - else if (!strcmp("vkDbgDestroyMsgCallback", name)) - return (void *) debug_report_DbgDestroyMsgCallback; - else if (!strcmp("vkDbgStringCallback", name)) - return (void *) StringCallback; - else if (!strcmp("vkDbgStdioCallback", name)) - return (void *) StdioCallback; - else if (!strcmp("vkDbgBreakCallback", name)) - return (void *) BreakCallback; - - return NULL; + *addr = NULL; + if (ptr_instance == VK_NULL_HANDLE) + return false; + + if (!strcmp("vkDbgCreateMsgCallback", name)) { + *addr = ptr_instance->debug_report_enabled ? (void *) debug_report_DbgCreateMsgCallback : NULL; + return true; + } + if (!strcmp("vkDbgDestroyMsgCallback", name)) { + *addr = ptr_instance->debug_report_enabled ? (void *) debug_report_DbgDestroyMsgCallback : NULL; + return true; + } + if (!strcmp("vkDbgStringCallback", name)) { + *addr = ptr_instance->debug_report_enabled ? (void *) StringCallback : NULL; + return true; + } + if (!strcmp("vkDbgStdioCallback", name)) { + *addr = ptr_instance->debug_report_enabled ? (void *) StdioCallback : NULL; + return true; + } + if (!strcmp("vkDbgBreakCallback", name)) { + *addr = ptr_instance->debug_report_enabled ? (void *) BreakCallback : NULL; + return true; + } + return false; } -- cgit v1.2.3