From c322b1ada13f246f8a76f0b578dafe5dd87567d2 Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Thu, 16 Mar 2017 11:54:35 -0600 Subject: layers: GH1592, Fix unique_objects DebugMarker Ext CodeGen ignored these APIs as they contain handles which are embedded in a structure and aliased. Added manual coverage. Change-Id: I81cf1945981a8e0b69966a9d0e190e49ff728ea8 --- layers/unique_objects.cpp | 30 ++++++++++++++++++++++++++++++ scripts/unique_objects_generator.py | 2 ++ 2 files changed, 32 insertions(+) diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp index ed8dd262..30077e74 100644 --- a/layers/unique_objects.cpp +++ b/layers/unique_objects.cpp @@ -889,6 +889,36 @@ VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice p } #endif +VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(VkDevice device, VkDebugMarkerObjectTagInfoEXT *pTagInfo) { + layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + auto local_tag_info = new safe_VkDebugMarkerObjectTagInfoEXT(pTagInfo); + { + std::lock_guard lock(global_lock); + auto it = device_data->unique_id_mapping.find(reinterpret_cast(local_tag_info->object)); + if (it != device_data->unique_id_mapping.end()) { + local_tag_info->object = it->second; + } + } + VkResult result = device_data->device_dispatch_table->DebugMarkerSetObjectTagEXT( + device, reinterpret_cast(local_tag_info)); + return result; +} + +VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(VkDevice device, VkDebugMarkerObjectNameInfoEXT *pNameInfo) { + layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map); + auto local_name_info = new safe_VkDebugMarkerObjectNameInfoEXT(pNameInfo); + { + std::lock_guard lock(global_lock); + auto it = device_data->unique_id_mapping.find(reinterpret_cast(local_name_info->object)); + if (it != device_data->unique_id_mapping.end()) { + local_name_info->object = it->second; + } + } + VkResult result = device_data->device_dispatch_table->DebugMarkerSetObjectNameEXT( + device, reinterpret_cast(local_name_info)); + return result; +} + } // namespace unique_objects // vk_layer_logging.h expects these to be defined diff --git a/scripts/unique_objects_generator.py b/scripts/unique_objects_generator.py index bafb7aed..a6dae647 100644 --- a/scripts/unique_objects_generator.py +++ b/scripts/unique_objects_generator.py @@ -144,6 +144,8 @@ class UniqueObjectsOutputGenerator(OutputGenerator): 'vkDestroyDescriptorUpdateTemplateKHR', 'vkUpdateDescriptorSetWithTemplateKHR', 'vkCmdPushDescriptorSetWithTemplateKHR', + 'vkDebugMarkerSetObjectTagEXT', + 'vkDebugMarkerSetObjectNameEXT', ] # Commands shadowed by interface functions and are not implemented self.interface_functions = [ -- cgit v1.2.3