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/shader_checker.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/shader_checker.cpp')
| -rw-r--r-- | layers/shader_checker.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp index a576314a..f36fee39 100644 --- a/layers/shader_checker.cpp +++ b/layers/shader_checker.cpp @@ -159,8 +159,7 @@ static VkLayerDispatchTable * initLayerTable(const VkBaseLayerObject *gpuw) return it->second; } - layer_initialize_dispatch_table(pTable, gpuw->pGPA, (VkPhysicalDevice) gpuw->nextObject); - pCurObj = (VkBaseLayerObject *)gpuw->baseObject; + layer_initialize_dispatch_table(pTable, (PFN_vkGetProcAddr) gpuw->pGPA, (VkPhysicalDevice) gpuw->nextObject); return pTable; } @@ -1011,6 +1010,7 @@ VK_LAYER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char* pNa ADD_HOOK(vkGetProcAddr); ADD_HOOK(vkEnumerateLayers); + ADD_HOOK(vkGetGlobalExtensionInfo); ADD_HOOK(vkCreateDevice); ADD_HOOK(vkCreateShader); ADD_HOOK(vkCreateGraphicsPipeline); @@ -1021,5 +1021,30 @@ VK_LAYER_EXPORT void * VKAPI vkGetProcAddr(VkPhysicalDevice gpu, const char* pNa 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 inst, const char* pName) +{ + if (inst == NULL) + return NULL; + + //TODO initLayerTable((const VkBaseLayerObject *) inst); + + // TODO loader_platform_thread_once(&g_initOnce, initInstanceLayer); + +#define ADD_HOOK(fn) \ + if (!strncmp(#fn, pName, sizeof(#fn))) \ + return (void *) fn + + ADD_HOOK(vkGetProcAddr); + ADD_HOOK(vkGetInstanceProcAddr); + ADD_HOOK(vkEnumerateLayers); + ADD_HOOK(vkGetGlobalExtensionInfo); + ADD_HOOK(vkCreateDevice); + + VkBaseLayerObject* instw = (VkBaseLayerObject *) inst; + if (instw->pGPA == NULL) + return NULL; + return instw->pGPA((VkObject) instw->nextObject, pName); } |
