From cfe2efa0688f9ecb56eaf1941ae211febc167b46 Mon Sep 17 00:00:00 2001 From: Tobin Ehlis Date: Tue, 16 Jun 2015 09:04:30 -0600 Subject: layers: Update DrawState intercept of Create/Destroy MsgCallback --- layers/draw_state.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp index b0714231..d338eb7c 100644 --- a/layers/draw_state.cpp +++ b/layers/draw_state.cpp @@ -47,7 +47,15 @@ #include "layers_msg.h" #include "layers_table.h" #include "layers_debug_marker_table.h" +#include "layer_logging.h" +typedef struct _layer_data { + debug_report_data *report_data; + // TODO: put instance data here + VkDbgMsgCallback logging_callback; +} layer_data; + +static std::unordered_map layer_data_map; static device_table_map draw_state_device_table_map; static instance_table_map draw_state_instance_table_map; @@ -2722,7 +2730,12 @@ VK_LAYER_EXPORT VkResult VKAPI vkDbgCreateMsgCallback( VkDbgMsgCallback* pMsgCallback) { VkLayerInstanceDispatchTable *pTable = get_dispatch_table(draw_state_instance_table_map, instance); - return layer_create_msg_callback(instance, pTable, msgFlags, pfnMsgCallback, pUserData, pMsgCallback); + VkResult res = pTable->DbgCreateMsgCallback(instance, msgFlags, pfnMsgCallback, pUserData, pMsgCallback); + if (VK_SUCCESS == res) { + layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map); + res = layer_create_msg_callback(my_data->report_data, msgFlags, pfnMsgCallback, pUserData, pMsgCallback); + } + return res; } VK_LAYER_EXPORT VkResult VKAPI vkDbgDestroyMsgCallback( @@ -2730,7 +2743,10 @@ VK_LAYER_EXPORT VkResult VKAPI vkDbgDestroyMsgCallback( VkDbgMsgCallback msgCallback) { VkLayerInstanceDispatchTable *pTable = get_dispatch_table(draw_state_instance_table_map, instance); - return layer_destroy_msg_callback(instance, pTable, msgCallback); + VkResult res = pTable->DbgDestroyMsgCallback(instance, msgCallback); + layer_data *my_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map); + layer_destroy_msg_callback(my_data->report_data, msgCallback); + return res; } VK_LAYER_EXPORT void VKAPI vkCmdDbgMarkerBegin(VkCmdBuffer cmdBuffer, const char* pMarker) -- cgit v1.2.3