diff options
| author | Jon Ashburn <jon@lunarg.com> | 2015-05-05 14:22:52 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-06-17 19:47:01 -0600 |
| commit | 9508521d8aa9983d5127b90fbcc2fa6006a28f70 (patch) | |
| tree | d902ac58dd97c0759f465f96bb5fedbd6bc5f452 /layers/basic.cpp | |
| parent | 01e599274d785018605610727f0b2832007c89db (diff) | |
| download | usermoji-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.cpp | 41 |
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); } } |
