aboutsummaryrefslogtreecommitdiff
path: root/layers/unique_objects.cpp
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2017-03-16 11:54:35 -0600
committerMark Lobodzinski <mark@lunarg.com>2017-03-22 20:46:59 -0600
commitc322b1ada13f246f8a76f0b578dafe5dd87567d2 (patch)
tree29e6e9fedf5fcb47e87605ef6cecdb769a405118 /layers/unique_objects.cpp
parent96df0e57e355001163fbf64ac64eab6f4c3092d9 (diff)
downloadusermoji-c322b1ada13f246f8a76f0b578dafe5dd87567d2.tar.xz
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
Diffstat (limited to 'layers/unique_objects.cpp')
-rw-r--r--layers/unique_objects.cpp30
1 files changed, 30 insertions, 0 deletions
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<std::mutex> lock(global_lock);
+ auto it = device_data->unique_id_mapping.find(reinterpret_cast<uint64_t &>(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<VkDebugMarkerObjectTagInfoEXT *>(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<std::mutex> lock(global_lock);
+ auto it = device_data->unique_id_mapping.find(reinterpret_cast<uint64_t &>(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<VkDebugMarkerObjectNameInfoEXT *>(local_name_info));
+ return result;
+}
+
} // namespace unique_objects
// vk_layer_logging.h expects these to be defined