MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-Tools / debug_messenger_callback

Method debug_messenger_callback

cube/cube.cpp:1477–1561  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1475}
1476#endif
1477VKAPI_ATTR vk::Bool32 VKAPI_CALL Demo::debug_messenger_callback(vk::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
1478 vk::DebugUtilsMessageTypeFlagsEXT messageType,
1479 const vk::DebugUtilsMessengerCallbackDataEXT *pCallbackData,
1480 void *pUserData) {
1481 std::ostringstream message;
1482 Demo &demo = *static_cast<Demo *>(pUserData);
1483
1484 if (demo.use_break) {
1485#ifndef WIN32
1486 raise(SIGTRAP);
1487#else
1488 DebugBreak();
1489#endif
1490 }
1491 message << vk::to_string(vk::DebugUtilsMessageSeverityFlagBitsEXT(messageSeverity));
1492 message << " : " + vk::to_string(vk::DebugUtilsMessageTypeFlagsEXT(messageType));
1493
1494 if (vk::DebugUtilsMessageTypeFlagsEXT(messageType) & vk::DebugUtilsMessageTypeFlagBitsEXT::eValidation) {
1495 validation_error = 1;
1496 }
1497
1498 message << " - Message Id Number: " << std::to_string(pCallbackData->messageIdNumber);
1499 message << " | Message Id Name: " << (pCallbackData->pMessageIdName == nullptr ? "" : pCallbackData->pMessageIdName) << "\n\t"
1500 << pCallbackData->pMessage << "\n";
1501
1502 if (pCallbackData->objectCount > 0) {
1503 message << "\n\tObjects - " << pCallbackData->objectCount << "\n";
1504 for (uint32_t object = 0; object < pCallbackData->objectCount; ++object) {
1505 message << "\t\tObject[" << object << "] - "
1506 << vk::to_string(vk::ObjectType(pCallbackData->pObjects[object].objectType)) << ", Handle ";
1507
1508 // Print handle correctly if it is a dispatchable handle - aka a pointer
1509 vk::ObjectType t = pCallbackData->pObjects[object].objectType;
1510 if (t == vk::ObjectType::eInstance || t == vk::ObjectType::ePhysicalDevice || t == vk::ObjectType::eDevice ||
1511 t == vk::ObjectType::eCommandBuffer || t == vk::ObjectType::eQueue) {
1512 message << reinterpret_cast<void *>(static_cast<uintptr_t>(pCallbackData->pObjects[object].objectHandle));
1513 } else {
1514 message << pCallbackData->pObjects[object].objectHandle;
1515 }
1516 if (NULL != pCallbackData->pObjects[object].pObjectName && strlen(pCallbackData->pObjects[object].pObjectName) > 0) {
1517 message << ", Name \"" << pCallbackData->pObjects[object].pObjectName << "\"\n";
1518 } else {
1519 message << "\n";
1520 }
1521 }
1522 }
1523 if (pCallbackData->cmdBufLabelCount > 0) {
1524 message << "\n\tCommand Buffer Labels - " << pCallbackData->cmdBufLabelCount << "\n";
1525 for (uint32_t cmd_buf_label = 0; cmd_buf_label < pCallbackData->cmdBufLabelCount; ++cmd_buf_label) {
1526 message << "\t\tLabel[" << cmd_buf_label << "] - " << pCallbackData->pCmdBufLabels[cmd_buf_label].pLabelName << " { "
1527 << pCallbackData->pCmdBufLabels[cmd_buf_label].color[0] << ", "
1528 << pCallbackData->pCmdBufLabels[cmd_buf_label].color[1] << ", "
1529 << pCallbackData->pCmdBufLabels[cmd_buf_label].color[2] << ", "
1530 << pCallbackData->pCmdBufLabels[cmd_buf_label].color[2] << "}\n";
1531 }
1532 }
1533
1534#ifdef _WIN32

Callers

nothing calls this directly

Calls 2

strMethod · 0.80
to_stringFunction · 0.70

Tested by

no test coverage detected