From af4e8327f8319ab97bfbe71c907eaabd329704bc Mon Sep 17 00:00:00 2001 From: Courtney Goeltzenleuchter Date: Sat, 13 Jun 2015 21:22:12 -0600 Subject: layers: Use static dispatch table maps Changes to use dispatch table access functions. --- layers/basic.cpp | 8 ++++---- layers/param_checker.cpp | 10 +++++----- layers/shader_checker.cpp | 12 ++++++------ 3 files changed, 15 insertions(+), 15 deletions(-) (limited to 'layers') diff --git a/layers/basic.cpp b/layers/basic.cpp index 81cdaa8b..d6ea963a 100644 --- a/layers/basic.cpp +++ b/layers/basic.cpp @@ -118,18 +118,18 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice(VkPhysicalDevice gpu, const VkDevi /* hook DestroyDevice to remove tableMap entry */ VK_LAYER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device) { - VkLayerDispatchTable *pDisp = *(VkLayerDispatchTable **) device; + dispatch_key key = get_dispatch_key(device); VkResult res = device_dispatch_table(device)->DestroyDevice(device); - tableMap.erase(pDisp); + destroy_device_dispatch_table(key); return res; } /* hook DestroyInstance to remove tableInstanceMap entry */ VK_LAYER_EXPORT VkResult VKAPI vkDestroyInstance(VkInstance instance) { - VkLayerInstanceDispatchTable *pDisp = *(VkLayerInstanceDispatchTable **) instance; + dispatch_key key = get_dispatch_key(instance); VkResult res = instance_dispatch_table(instance)->DestroyInstance(instance); - tableInstanceMap.erase(pDisp); + destroy_instance_dispatch_table(key); return res; } diff --git a/layers/param_checker.cpp b/layers/param_checker.cpp index c1a6fef5..0b13b65c 100644 --- a/layers/param_checker.cpp +++ b/layers/param_checker.cpp @@ -146,9 +146,9 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateInstance(const VkInstanceCreateInfo* pCre VK_LAYER_EXPORT VkResult VKAPI vkDestroyInstance(VkInstance instance) { - VkLayerInstanceDispatchTable *pDisp = *(VkLayerInstanceDispatchTable **) instance; + dispatch_key key = get_dispatch_key(instance); VkResult res = instance_dispatch_table(instance)->DestroyInstance(instance); - tableInstanceMap.erase(pDisp); + destroy_instance_dispatch_table(key); return res; } @@ -267,8 +267,9 @@ VK_LAYER_EXPORT VkResult VKAPI vkCreateDevice(VkPhysicalDevice gpu, const VkDevi VK_LAYER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device) { VkLayerDispatchTable *pDisp = *(VkLayerDispatchTable **) device; + dispatch_key key = get_dispatch_key(device); VkResult result = device_dispatch_table(device)->DestroyDevice(device); - tableMap.erase(pDisp); + destroy_device_dispatch_table(key); tableDebugMarkerMap.erase(pDisp); deviceExtMap.erase(pDisp); return result; @@ -1878,8 +1879,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkDbgDestroyMsgCallback( VkInstance instance, VkDbgMsgCallback msgCallback) { - VkLayerInstanceDispatchTable *pDisp = *(VkLayerInstanceDispatchTable **) instance; - VkLayerInstanceDispatchTable *pTable = tableInstanceMap[pDisp]; + VkLayerInstanceDispatchTable *pTable = instance_dispatch_table(instance); return layer_destroy_msg_callback(instance, pTable, msgCallback); } diff --git a/layers/shader_checker.cpp b/layers/shader_checker.cpp index 57aab4f0..c3323d7d 100644 --- a/layers/shader_checker.cpp +++ b/layers/shader_checker.cpp @@ -887,9 +887,9 @@ vkCreateGraphicsPipelineDerivative(VkDevice device, /* hook DextroyDevice to remove tableMap entry */ VK_LAYER_EXPORT VkResult VKAPI vkDestroyDevice(VkDevice device) { - VkLayerDispatchTable *pDisp = *(VkLayerDispatchTable **) device; + dispatch_key key = get_dispatch_key(device); VkResult res = device_dispatch_table(device)->DestroyDevice(device); - tableMap.erase(pDisp); + destroy_device_dispatch_table(key); return res; } @@ -921,9 +921,9 @@ VkResult VKAPI vkCreateInstance( /* hook DestroyInstance to remove tableInstanceMap entry */ VK_LAYER_EXPORT VkResult VKAPI vkDestroyInstance(VkInstance instance) { - VkLayerInstanceDispatchTable *pDisp = *(VkLayerInstanceDispatchTable **) instance; + dispatch_key key = get_dispatch_key(instance); VkResult res = instance_dispatch_table(instance)->DestroyInstance(instance); - tableInstanceMap.erase(pDisp); + destroy_instance_dispatch_table(key); return res; } @@ -934,7 +934,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkDbgCreateMsgCallback( void* pUserData, VkDbgMsgCallback* pMsgCallback) { - VkLayerInstanceDispatchTable *pTable = tableInstanceMap[(VkBaseLayerObject *)instance]; + VkLayerInstanceDispatchTable *pTable = instance_dispatch_table(instance); return layer_create_msg_callback(instance, pTable, msgFlags, pfnMsgCallback, pUserData, pMsgCallback); } @@ -942,7 +942,7 @@ VK_LAYER_EXPORT VkResult VKAPI vkDbgDestroyMsgCallback( VkInstance instance, VkDbgMsgCallback msgCallback) { - VkLayerInstanceDispatchTable *pTable = tableInstanceMap[(VkBaseLayerObject *)instance]; + VkLayerInstanceDispatchTable *pTable = instance_dispatch_table(instance); return layer_destroy_msg_callback(instance, pTable, msgCallback); } -- cgit v1.2.3