diff options
| author | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-10-05 14:51:41 -0600 |
|---|---|---|
| committer | Courtney Goeltzenleuchter <courtney@LunarG.com> | 2015-10-08 16:55:51 -0600 |
| commit | 05eba3eb9b6c6ab1c5a8939b99d2f57f263a10eb (patch) | |
| tree | 35daa3b8ff1f82976c9057379d1f2b789f120bf5 /layers/device_limits.cpp | |
| parent | 3e077bf28ce67da08250a9a061ad14b38fbf47ec (diff) | |
| download | usermoji-05eba3eb9b6c6ab1c5a8939b99d2f57f263a10eb.tar.xz | |
layers: Add DEBUG_OUTPUT support to device_limits
Diffstat (limited to 'layers/device_limits.cpp')
| -rw-r--r-- | layers/device_limits.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/layers/device_limits.cpp b/layers/device_limits.cpp index 12ec4835..3843f378 100644 --- a/layers/device_limits.cpp +++ b/layers/device_limits.cpp @@ -58,7 +58,7 @@ struct devExts { // This struct will be stored in a map hashed by the dispatchable object struct layer_data { debug_report_data *report_data; - VkDbgMsgCallback logging_callback; + std::vector<VkDbgMsgCallback> logging_callback; VkLayerDispatchTable* device_dispatch_table; VkLayerInstanceDispatchTable* instance_dispatch_table; devExts device_extensions; @@ -75,7 +75,6 @@ struct layer_data { layer_data() : report_data(nullptr), - logging_callback(nullptr), device_dispatch_table(nullptr), instance_dispatch_table(nullptr), device_extensions(), @@ -106,6 +105,7 @@ static void init_device_limits(layer_data *my_data) uint32_t debug_action = 0; FILE *log_output = NULL; const char *option_str; + VkDbgMsgCallback callback; // initialize DeviceLimits options report_flags = getLayerOptionFlags("DeviceLimitsReportFlags", 0); getLayerOptionEnum("DeviceLimitsDebugAction", (uint32_t *) &debug_action); @@ -114,7 +114,13 @@ static void init_device_limits(layer_data *my_data) { option_str = getLayerOption("DeviceLimitsLogFilename"); log_output = getLayerLogOutput(option_str, "DeviceLimits"); - layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &my_data->logging_callback); + layer_create_msg_callback(my_data->report_data, report_flags, log_callback, (void *) log_output, &callback); + my_data->logging_callback.push_back(callback); + } + + if (debug_action & VK_DBG_LAYER_ACTION_DEBUG_OUTPUT) { + layer_create_msg_callback(my_data->report_data, report_flags, win32_debug_output_msg, NULL, &callback); + my_data->logging_callback.push_back(callback); } if (!globalLockInitialized) @@ -183,8 +189,10 @@ VK_LAYER_EXPORT void VKAPI vkDestroyInstance(VkInstance instance) pTable->DestroyInstance(instance); // Clean up logging callback, if any - if (my_data->logging_callback) { - layer_destroy_msg_callback(my_data->report_data, my_data->logging_callback); + while (my_data->logging_callback.size() > 0) { + VkDbgMsgCallback callback = my_data->logging_callback.back(); + layer_destroy_msg_callback(my_data->report_data, callback); + my_data->logging_callback.pop_back(); } layer_debug_report_destroy_instance(my_data->report_data); |
