aboutsummaryrefslogtreecommitdiff
path: root/layers/basic.cpp
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2015-05-05 14:22:52 -0600
committerCourtney Goeltzenleuchter <courtney@LunarG.com>2015-06-17 19:47:01 -0600
commit9508521d8aa9983d5127b90fbcc2fa6006a28f70 (patch)
treed902ac58dd97c0759f465f96bb5fedbd6bc5f452 /layers/basic.cpp
parent01e599274d785018605610727f0b2832007c89db (diff)
downloadusermoji-9508521d8aa9983d5127b90fbcc2fa6006a28f70.tar.xz
layers: Add GetInstanceProcAddr() to all layers
Loader will use this for constructing instance layer instance chains. Layer instance dispatch table is not yet added.
Diffstat (limited to 'layers/basic.cpp')
-rw-r--r--layers/basic.cpp41
1 files changed, 34 insertions, 7 deletions
diff --git a/layers/basic.cpp b/layers/basic.cpp
index 260f7c3d..e889e31d 100644
--- a/layers/basic.cpp
+++ b/layers/basic.cpp
@@ -49,7 +49,7 @@ static VkLayerDispatchTable * initLayerTable(const VkBaseLayerObject *gpuw)
return it->second;
}
- layer_initialize_dispatch_table(pTable, gpuw->pGPA, (VkPhysicalDevice) gpuw->nextObject);
+ layer_initialize_dispatch_table(pTable, (PFN_vkGetProcAddr) gpuw->pGPA, (VkPhysicalDevice) gpuw->nextObject);
return pTable;
}
@@ -173,20 +173,47 @@ VK_LAYER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char* pNa
initLayerTable((const VkBaseLayerObject *) gpu);
- if (!strncmp("vkGetProcAddr", pName, sizeof("vkGetProcAddr")))
+ if (!strcmp("vkGetProcAddr", pName))
return (void *) vkGetProcAddr;
- else if (!strncmp("vkCreateDevice", pName, sizeof ("vkCreateDevice")))
+ if (!strcmp("vkCreateDevice", pName))
return (void *) vkCreateDevice;
- else if (!strncmp("vkEnumerateLayers", pName, sizeof ("vkEnumerateLayers")))
+ if (!strcmp("GetGlobalExtensionInfo", pName))
+ return (void*) vkGetGlobalExtensionInfo;
+ if (!strcmp("vkEnumerateLayers", pName))
return (void *) vkEnumerateLayers;
- else if (!strncmp("vkGetFormatInfo", pName, sizeof ("vkGetFormatInfo")))
+ if (!strcmp("vkGetFormatInfo", pName))
return (void *) vkGetFormatInfo;
- else if (!strncmp("vkLayerExtension1", pName, sizeof("vkLayerExtension1")))
+ if (!strcmp("vkLayerExtension1", pName))
return (void *) vkLayerExtension1;
else {
VkBaseLayerObject* gpuw = (VkBaseLayerObject *) gpu;
if (gpuw->pGPA == NULL)
return NULL;
- return gpuw->pGPA((VkPhysicalDevice) gpuw->nextObject, pName);
+ return gpuw->pGPA((VkObject) gpuw->nextObject, pName);
+ }
+}
+
+VK_LAYER_EXPORT void * VKAPI vkGetInstanceProcAddr(VkInstance instance, const char* pName)
+{
+ if (instance == NULL)
+ return NULL;
+
+ // TODO initInstanceLayerTable((const VkBaseLayerObject *) instance);
+
+ if (!strcmp("vkGetInstanceProcAddr", pName))
+ return (void *) vkGetInstanceProcAddr;
+ if (!strcmp("vkGetProcAddr", pName))
+ return (void *) vkGetProcAddr;
+ if (!strcmp("GetGlobalExtensionInfo", pName))
+ return (void*) vkGetGlobalExtensionInfo;
+ if (!strcmp("vkCreateDevice", pName))
+ return (void *) vkCreateDevice;
+ if (!strcmp("vkEnumerateLayers", pName))
+ return (void *) vkEnumerateLayers;
+ else {
+ VkBaseLayerObject* instancew = (VkBaseLayerObject *) instance;
+ if (instancew->pGPA == NULL)
+ return NULL;
+ return instancew->pGPA((VkObject) instancew->nextObject, pName);
}
}