aboutsummaryrefslogtreecommitdiff
path: root/loader
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-05-22 09:51:03 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-06-17 19:47:02 -0600
commit6ebe70614672c554f76228a296c5d46642f9e0d1 (patch)
treed7608df7df3da8026d6395dc092e278bd0e58dde /loader
parent8b6cae047953411ebcc4befc5273ced2be8a19ec (diff)
downloadusermoji-6ebe70614672c554f76228a296c5d46642f9e0d1.tar.xz
loader: Return NULL for WSI entrypoints if extension not enabled
Diffstat (limited to 'loader')
-rw-r--r--loader/loader.c10
-rw-r--r--loader/wsi_lunarg.c12
-rw-r--r--loader/wsi_lunarg.h6
3 files changed, 16 insertions, 12 deletions
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);