aboutsummaryrefslogtreecommitdiff
path: root/layers
diff options
context:
space:
mode:
authorTony Barbour <tony@LunarG.com>2017-06-19 16:50:37 -0600
committerTony-LunarG <tony@lunarg.com>2017-06-29 13:03:10 -0600
commit4a1572c647e1b063b2d0e06f026d7645c51a486d (patch)
treed0271fcd504cf41fd24d6ffcc6fc0e6865161d3c /layers
parent845b2c663757a9030ae108dc76602cc57495f1cc (diff)
downloadusermoji-4a1572c647e1b063b2d0e06f026d7645c51a486d.tar.xz
layers: Add names to objects and print in validation
Change-Id: Ie6587c26c8528ffac5698b8cb3ca2c4cc86b1dfd layers: Fill out the rest of debug marker calls Change-Id: I0c4085e36e5c06e11c0c09d1ca126ae6db35526d
Diffstat (limited to 'layers')
-rw-r--r--layers/core_validation.cpp40
-rw-r--r--layers/linux/VkLayer_core_validation.json12
-rw-r--r--layers/linux/VkLayer_object_tracker.json12
-rw-r--r--layers/linux/VkLayer_parameter_validation.json12
-rw-r--r--layers/object_tracker.cpp8
-rw-r--r--layers/parameter_validation.cpp7
-rw-r--r--layers/vk_layer_logging.h20
-rw-r--r--layers/windows/VkLayer_core_validation.json12
-rw-r--r--layers/windows/VkLayer_object_tracker.json12
-rw-r--r--layers/windows/VkLayer_parameter_validation.json12
10 files changed, 143 insertions, 4 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 9450278c..9b43035f 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -10135,6 +10135,41 @@ VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneCapabilitiesKHR(VkPhysicalDevice p
return result;
}
+VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(VkDevice device, VkDebugMarkerObjectNameInfoEXT *pNameInfo) {
+ std::unique_lock<std::mutex> lock(global_lock);
+ layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ if (pNameInfo->pObjectName) {
+ device_data->report_data->debugObjectNameMap->insert(
+ std::make_pair<uint64_t, std::string>((uint64_t &&)pNameInfo->object, pNameInfo->pObjectName));
+ } else {
+ device_data->report_data->debugObjectNameMap->erase(pNameInfo->object);
+ }
+ lock.unlock();
+ VkResult result = device_data->dispatch_table.DebugMarkerSetObjectNameEXT(device, pNameInfo);
+ return result;
+}
+
+VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(VkDevice device, VkDebugMarkerObjectTagInfoEXT *pTagInfo) {
+ layer_data *device_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ VkResult result = device_data->dispatch_table.DebugMarkerSetObjectTagEXT(device, pTagInfo);
+ return result;
+}
+
+VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT *pMarkerInfo) {
+ layer_data *device_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
+ device_data->dispatch_table.CmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
+}
+
+VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer) {
+ layer_data *device_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
+ device_data->dispatch_table.CmdDebugMarkerEndEXT(commandBuffer);
+}
+
+VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT *pMarkerInfo) {
+ layer_data *device_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
+ device_data->dispatch_table.CmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
+}
+
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetDeviceProcAddr(VkDevice device, const char *funcName);
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetPhysicalDeviceProcAddr(VkInstance instance, const char *funcName);
VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL GetInstanceProcAddr(VkInstance instance, const char *funcName);
@@ -10262,6 +10297,11 @@ static const std::unordered_map<std::string, void*> name_to_funcptr_map = {
{"vkCmdNextSubpass", (void*)CmdNextSubpass},
{"vkCmdEndRenderPass", (void*)CmdEndRenderPass},
{"vkCmdExecuteCommands", (void*)CmdExecuteCommands},
+ {"vkCmdDebugMarkerBeginEXT", (void*)CmdDebugMarkerBeginEXT},
+ {"vkCmdDebugMarkerEndEXT", (void*)CmdDebugMarkerEndEXT},
+ {"vkCmdDebugMarkerInsertEXT", (void*)CmdDebugMarkerInsertEXT},
+ {"vkDebugMarkerSetObjectNameEXT", (void*)DebugMarkerSetObjectNameEXT},
+ {"vkDebugMarkerSetObjectTagEXT", (void*)DebugMarkerSetObjectTagEXT},
{"vkSetEvent", (void*)SetEvent},
{"vkMapMemory", (void*)MapMemory},
{"vkUnmapMemory", (void*)UnmapMemory},
diff --git a/layers/linux/VkLayer_core_validation.json b/layers/linux/VkLayer_core_validation.json
index 4c5f7a15..437c41d9 100644
--- a/layers/linux/VkLayer_core_validation.json
+++ b/layers/linux/VkLayer_core_validation.json
@@ -12,6 +12,18 @@
"name": "VK_EXT_debug_report",
"spec_version": "6"
}
+ ],
+ "device_extensions": [
+ {
+ "name": "VK_EXT_debug_marker",
+ "spec_version": "4",
+ "entrypoints": ["vkDebugMarkerSetObjectTagEXT",
+ "vkDebugMarkerSetObjectNameEXT",
+ "vkCmdDebugMarkerBeginEXT",
+ "vkCmdDebugMarkerEndEXT",
+ "vkCmdDebugMarkerInsertEXT"
+ ]
+ }
]
}
}
diff --git a/layers/linux/VkLayer_object_tracker.json b/layers/linux/VkLayer_object_tracker.json
index 9c94b76f..68fa9d5a 100644
--- a/layers/linux/VkLayer_object_tracker.json
+++ b/layers/linux/VkLayer_object_tracker.json
@@ -12,6 +12,18 @@
"name": "VK_EXT_debug_report",
"spec_version": "6"
}
+ ],
+ "device_extensions": [
+ {
+ "name": "VK_EXT_debug_marker",
+ "spec_version": "4",
+ "entrypoints": ["vkDebugMarkerSetObjectTagEXT",
+ "vkDebugMarkerSetObjectNameEXT",
+ "vkCmdDebugMarkerBeginEXT",
+ "vkCmdDebugMarkerEndEXT",
+ "vkCmdDebugMarkerInsertEXT"
+ ]
+ }
]
}
}
diff --git a/layers/linux/VkLayer_parameter_validation.json b/layers/linux/VkLayer_parameter_validation.json
index 98201237..e10b964d 100644
--- a/layers/linux/VkLayer_parameter_validation.json
+++ b/layers/linux/VkLayer_parameter_validation.json
@@ -12,6 +12,18 @@
"name": "VK_EXT_debug_report",
"spec_version": "6"
}
+ ],
+ "device_extensions": [
+ {
+ "name": "VK_EXT_debug_marker",
+ "spec_version": "4",
+ "entrypoints": ["vkDebugMarkerSetObjectTagEXT",
+ "vkDebugMarkerSetObjectNameEXT",
+ "vkCmdDebugMarkerBeginEXT",
+ "vkCmdDebugMarkerEndEXT",
+ "vkCmdDebugMarkerInsertEXT"
+ ]
+ }
]
}
}
diff --git a/layers/object_tracker.cpp b/layers/object_tracker.cpp
index 1265524a..87903173 100644
--- a/layers/object_tracker.cpp
+++ b/layers/object_tracker.cpp
@@ -4534,12 +4534,18 @@ VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(VkDevice device, VkDeb
VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(VkDevice device, VkDebugMarkerObjectNameInfoEXT *pNameInfo) {
bool skip = VK_FALSE;
std::unique_lock<std::mutex> lock(global_lock);
+ layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
+ if (pNameInfo->pObjectName) {
+ dev_data->report_data->debugObjectNameMap->insert(
+ std::make_pair<uint64_t, std::string>((uint64_t &&)pNameInfo->object, pNameInfo->pObjectName));
+ } else {
+ dev_data->report_data->debugObjectNameMap->erase(pNameInfo->object);
+ }
skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_23605601, VALIDATION_ERROR_UNDEFINED);
lock.unlock();
if (skip) {
return VK_ERROR_VALIDATION_FAILED_EXT;
}
- layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
VkResult result = dev_data->dispatch_table.DebugMarkerSetObjectNameEXT(device, pNameInfo);
return result;
}
diff --git a/layers/parameter_validation.cpp b/layers/parameter_validation.cpp
index 5cb2a5b7..70ffb593 100644
--- a/layers/parameter_validation.cpp
+++ b/layers/parameter_validation.cpp
@@ -5331,7 +5331,12 @@ VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(VkDevice device, VkDe
bool skip = false;
auto my_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
assert(my_data != NULL);
-
+ if (pNameInfo->pObjectName) {
+ my_data->report_data->debugObjectNameMap->insert(
+ std::make_pair<uint64_t, std::string>((uint64_t &&)pNameInfo->object, pNameInfo->pObjectName));
+ } else {
+ my_data->report_data->debugObjectNameMap->erase(pNameInfo->object);
+ }
skip |= parameter_validation_vkDebugMarkerSetObjectNameEXT(my_data, pNameInfo);
if (!skip) {
diff --git a/layers/vk_layer_logging.h b/layers/vk_layer_logging.h
index e0beb5e1..7cf113bf 100644
--- a/layers/vk_layer_logging.h
+++ b/layers/vk_layer_logging.h
@@ -40,6 +40,7 @@ typedef struct _debug_report_data {
VkLayerDbgFunctionNode *default_debug_callback_list;
VkFlags active_flags;
bool g_DEBUG_REPORT;
+ std::unordered_map<uint64_t, std::string> *debugObjectNameMap;
} debug_report_data;
template debug_report_data *GetLayerDataPtr<debug_report_data>(void *data_key,
@@ -119,8 +120,21 @@ static inline bool debug_report_log_msg(const debug_report_data *debug_data, VkF
while (pTrav) {
if (pTrav->msgFlags & msgFlags) {
- if (pTrav->pfnMsgCallback(msgFlags, objectType, srcObject, location, msgCode, pLayerPrefix, pMsg, pTrav->pUserData)) {
- bail = true;
+ auto it = debug_data->debugObjectNameMap->find(srcObject);
+ if (it == debug_data->debugObjectNameMap->end()) {
+ if (pTrav->pfnMsgCallback(msgFlags, objectType, srcObject, location, msgCode, pLayerPrefix, pMsg,
+ pTrav->pUserData)) {
+ bail = true;
+ }
+ } else {
+ std::string newMsg = "SrcObject name = ";
+ newMsg.append(it->second.c_str());
+ newMsg.append(" ");
+ newMsg.append(pMsg);
+ if (pTrav->pfnMsgCallback(msgFlags, objectType, srcObject, location, msgCode, pLayerPrefix, newMsg.c_str(),
+ pTrav->pUserData)) {
+ bail = true;
+ }
}
}
pTrav = pTrav->pNext;
@@ -143,6 +157,7 @@ static inline debug_report_data *debug_report_create_instance(
debug_data->g_DEBUG_REPORT = true;
}
}
+ debug_data->debugObjectNameMap = new std::unordered_map<uint64_t, std::string>;
return debug_data;
}
@@ -150,6 +165,7 @@ static inline void layer_debug_report_destroy_instance(debug_report_data *debug_
if (debug_data) {
RemoveAllMessageCallbacks(debug_data, &debug_data->default_debug_callback_list);
RemoveAllMessageCallbacks(debug_data, &debug_data->debug_callback_list);
+ delete debug_data->debugObjectNameMap;
free(debug_data);
}
}
diff --git a/layers/windows/VkLayer_core_validation.json b/layers/windows/VkLayer_core_validation.json
index 0f9cbc6e..35b2f092 100644
--- a/layers/windows/VkLayer_core_validation.json
+++ b/layers/windows/VkLayer_core_validation.json
@@ -12,6 +12,18 @@
"name": "VK_EXT_debug_report",
"spec_version": "6"
}
+ ],
+ "device_extensions": [
+ {
+ "name": "VK_EXT_debug_marker",
+ "spec_version": "4",
+ "entrypoints": ["vkDebugMarkerSetObjectTagEXT",
+ "vkDebugMarkerSetObjectNameEXT",
+ "vkCmdDebugMarkerBeginEXT",
+ "vkCmdDebugMarkerEndEXT",
+ "vkCmdDebugMarkerInsertEXT"
+ ]
+ }
]
}
}
diff --git a/layers/windows/VkLayer_object_tracker.json b/layers/windows/VkLayer_object_tracker.json
index 2ebecd02..d572edbc 100644
--- a/layers/windows/VkLayer_object_tracker.json
+++ b/layers/windows/VkLayer_object_tracker.json
@@ -12,6 +12,18 @@
"name": "VK_EXT_debug_report",
"spec_version": "6"
}
+ ],
+ "device_extensions": [
+ {
+ "name": "VK_EXT_debug_marker",
+ "spec_version": "4",
+ "entrypoints": ["vkDebugMarkerSetObjectTagEXT",
+ "vkDebugMarkerSetObjectNameEXT",
+ "vkCmdDebugMarkerBeginEXT",
+ "vkCmdDebugMarkerEndEXT",
+ "vkCmdDebugMarkerInsertEXT"
+ ]
+ }
]
}
}
diff --git a/layers/windows/VkLayer_parameter_validation.json b/layers/windows/VkLayer_parameter_validation.json
index 0d6c0f5f..5131b43b 100644
--- a/layers/windows/VkLayer_parameter_validation.json
+++ b/layers/windows/VkLayer_parameter_validation.json
@@ -12,6 +12,18 @@
"name": "VK_EXT_debug_report",
"spec_version": "6"
}
+ ],
+ "device_extensions": [
+ {
+ "name": "VK_EXT_debug_marker",
+ "spec_version": "4",
+ "entrypoints": ["vkDebugMarkerSetObjectTagEXT",
+ "vkDebugMarkerSetObjectNameEXT",
+ "vkCmdDebugMarkerBeginEXT",
+ "vkCmdDebugMarkerEndEXT",
+ "vkCmdDebugMarkerInsertEXT"
+ ]
+ }
]
}
}