loader: Return NULL for WSI entrypoints if extension not enabled
diff --git a/loader/loader.c b/loader/loader.c
index a5b8e48..1f7adc1 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -1381,9 +1381,10 @@
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 @@
}
/* 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 14e3cb9..31f6985 100644
--- a/loader/wsi_lunarg.c
+++ b/loader/wsi_lunarg.c
@@ -156,13 +156,13 @@
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_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 fd1b6da..02ff37e 100644
--- a/loader/wsi_lunarg.h
+++ b/loader/wsi_lunarg.h
@@ -39,8 +39,10 @@
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);