diff options
Diffstat (limited to 'layers/mem_tracker.cpp')
| -rw-r--r-- | layers/mem_tracker.cpp | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/layers/mem_tracker.cpp b/layers/mem_tracker.cpp index 0a2d61d4..2e9307d5 100644 --- a/layers/mem_tracker.cpp +++ b/layers/mem_tracker.cpp @@ -793,7 +793,7 @@ static void initMemTracker( // initialize Layer dispatch table // TODO handle multiple GPUs PFN_vkGetProcAddr fpNextGPA; - fpNextGPA = pCurObj->pGPA; + fpNextGPA = (PFN_vkGetProcAddr) pCurObj->pGPA; assert(fpNextGPA); layer_initialize_dispatch_table(&nextTable, fpNextGPA, (VkPhysicalDevice) pCurObj->nextObject); @@ -2156,6 +2156,8 @@ VK_LAYER_EXPORT void* VKAPI vkGetProcAddr( return (void*) vkCreateDevice; if (!strcmp(funcName, "vkDestroyDevice")) return (void*) vkDestroyDevice; + if (!strcmp(funcName, "GetGlobalExtensionInfo")) + return (void*) vkGetGlobalExtensionInfo; if (!strcmp(funcName, "vkEnumerateLayers")) return (void*) vkEnumerateLayers; if (!strcmp(funcName, "vkQueueSubmit")) @@ -2296,6 +2298,41 @@ VK_LAYER_EXPORT void* VKAPI vkGetProcAddr( if (gpuw->pGPA == NULL) { return NULL; } - return gpuw->pGPA((VkPhysicalDevice)gpuw->nextObject, funcName); + return gpuw->pGPA((VkObject)gpuw->nextObject, funcName); + } +} + +VK_LAYER_EXPORT void* VKAPI vkGetInstanceProcAddr( + VkInstance instance, + const char *funcName) +{ + VkBaseLayerObject* instw = (VkBaseLayerObject *) instance; + + if (instance == NULL) { + return NULL; + } + //TODO + //pCurObj = instw; + //loader_platform_thread_once(&g_initInstanceOnce, initInstanceMemTracker); + + if (!strcmp(funcName, "vkGetProcAddr")) + return (void *) vkGetProcAddr; + if (!strcmp(funcName, "vkGetInstanceProcAddr")) + return (void *) vkGetInstanceProcAddr; + if (!strcmp(funcName, "vkCreateDevice")) + return (void*) vkCreateDevice; + if (!strcmp(funcName, "GetGlobalExtensionInfo")) + return (void*) vkGetGlobalExtensionInfo; + if (!strcmp(funcName, "vkEnumerateLayers")) + return (void*) vkEnumerateLayers; + if (!strcmp(funcName, "vkDbgRegisterMsgCallback")) + return (void*) vkDbgRegisterMsgCallback; + if (!strcmp(funcName, "vkDbgUnregisterMsgCallback")) + return (void*) vkDbgUnregisterMsgCallback; + else { + if (instw->pGPA == NULL) { + return NULL; + } + return instw->pGPA((VkObject)instw->nextObject, funcName); } } |
