diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2015-06-16 09:04:30 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-06-18 10:22:58 -0600 |
| commit | cfe2efa0688f9ecb56eaf1941ae211febc167b46 (patch) | |
| tree | af837668ee304fab2539d141f6b9c7ef14c5fa3d | |
| parent | 81db991ada000002fe7ffa65178b238bf2608021 (diff) | |
| download | usermoji-cfe2efa0688f9ecb56eaf1941ae211febc167b46.tar.xz | |
layers: Update DrawState intercept of Create/Destroy MsgCallback
| -rw-r--r-- | layers/draw_state.cpp | 20 |
1 files 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<void *, layer_data *> 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) |
