From 6ebe70614672c554f76228a296c5d46642f9e0d1 Mon Sep 17 00:00:00 2001 From: Jon Ashburn Date: Fri, 22 May 2015 09:51:03 -0600 Subject: loader: Return NULL for WSI entrypoints if extension not enabled --- loader/loader.c | 10 ++++++---- loader/wsi_lunarg.c | 12 ++++++------ loader/wsi_lunarg.h | 6 ++++-- 3 files changed, 16 insertions(+), 12 deletions(-) (limited to 'loader') diff --git a/loader/loader.c b/loader/loader.c index a5b8e48b..1f7adc13 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -1381,9 +1381,10 @@ LOADER_EXPORT void * VKAPI vkGetInstanceProcAddr(VkInstance instance, const char return addr; /* return any extension global entrypoints */ - addr = wsi_lunarg_GetInstanceProcAddr(instance, pName); + bool wsi_enabled; + addr = wsi_lunarg_GetInstanceProcAddr(instance, pName, &wsi_enabled); if (addr) - return addr; + return (wsi_enabled) ? addr : NULL; /* return the instance dispatch table entrypoint for extensions */ const VkLayerInstanceDispatchTable *disp_table = * (VkLayerInstanceDispatchTable **) instance; @@ -1413,9 +1414,10 @@ LOADER_EXPORT void * VKAPI vkGetDeviceProcAddr(VkDevice device, const char * pNa } /* return any extension device entrypoints the loader knows about */ - addr = wsi_lunarg_GetDeviceProcAddr(device, pName); + bool wsi_enabled; + addr = wsi_lunarg_GetDeviceProcAddr(device, pName, &wsi_enabled); if (addr) - return addr; + return (wsi_enabled) ? addr : NULL; /* return the dispatch table entrypoint for the fastest case */ const VkLayerDispatchTable *disp_table = * (VkLayerDispatchTable **) device; diff --git a/loader/wsi_lunarg.c b/loader/wsi_lunarg.c index 14e3cb92..31f69855 100644 --- a/loader/wsi_lunarg.c +++ b/loader/wsi_lunarg.c @@ -156,13 +156,13 @@ void wsi_lunarg_register_extensions( void *wsi_lunarg_GetInstanceProcAddr( VkInstance instance, - const char* pName) + const char* pName, + bool *enabled) { if (instance == VK_NULL_HANDLE) return NULL; - if (wsi_enabled == false) - return NULL; + *enabled = wsi_enabled; /* since two of these entrypoints must be loader handled will report all */ if (!strcmp(pName, "vkGetDisplayInfoWSI")) @@ -181,13 +181,13 @@ void *wsi_lunarg_GetInstanceProcAddr( void *wsi_lunarg_GetDeviceProcAddr( VkDevice device, - const char* name) + const char* name, + bool *enabled) { if (device == VK_NULL_HANDLE) return NULL; - if (wsi_enabled == false) - return NULL; + *enabled = wsi_enabled; /* only handle device entrypoints that are loader special cases */ if (!strcmp(name, "vkCreateSwapChainWSI")) diff --git a/loader/wsi_lunarg.h b/loader/wsi_lunarg.h index fd1b6da0..02ff37eb 100644 --- a/loader/wsi_lunarg.h +++ b/loader/wsi_lunarg.h @@ -39,8 +39,10 @@ void wsi_lunarg_register_extensions( void *wsi_lunarg_GetInstanceProcAddr( VkInstance instance, - const char* pName); + const char* pName, + bool* enabled); void *wsi_lunarg_GetDeviceProcAddr( VkDevice device, - const char* pName); + const char* pName, + bool* enabled); -- cgit v1.2.3