MythTV master
mythdebugvulkan.cpp
Go to the documentation of this file.
1// MythTV
5
6#define LOC QString("VulkanMarker: ")
7
8MythVulkan4F const MythDebugVulkan::kDebugRed { 1.0, 0.0, 0.0, 1.0 };
9MythVulkan4F const MythDebugVulkan::kDebugGreen { 0.0, 1.0, 0.0, 1.0 };
10MythVulkan4F const MythDebugVulkan::kDebugBlue { 0.0, 0.0, 1.0, 1.0 };
11MythVulkan4F const MythDebugVulkan::kDebugGray { 0.5, 0.5, 0.5, 1.0 };
12MythVulkan4F const MythDebugVulkan::kDebugBlack { 0.0, 0.0, 0.0, 1.0 };
13
15{
16 auto * result = new MythDebugVulkan(Vulkan);
17 if (result && !result->IsValidVulkan())
18 {
19 delete result;
20 result = nullptr;
21 }
22 return result;
23}
24
26 : MythVulkanObject(Vulkan)
27{
28 if (!m_vulkanValid)
29 return;
30
31 m_vulkanValid = false;
32 if (m_vulkanWindow->supportedDeviceExtensions().contains(VK_EXT_DEBUG_MARKER_EXTENSION_NAME))
33 {
34 m_beginRegion = reinterpret_cast<PFN_vkCmdDebugMarkerBeginEXT>(
35 m_vulkanWindow->vulkanInstance()->getInstanceProcAddr("vkCmdDebugMarkerBeginEXT"));
36 m_endRegion = reinterpret_cast<PFN_vkCmdDebugMarkerEndEXT>(
37 m_vulkanWindow->vulkanInstance()->getInstanceProcAddr("vkCmdDebugMarkerEndEXT"));
38 m_nameObject = reinterpret_cast<PFN_vkDebugMarkerSetObjectNameEXT>(
39 m_vulkanWindow->vulkanInstance()->getInstanceProcAddr("vkDebugMarkerSetObjectNameEXT"));
41 m_vulkanValid = true;
42 else
43 LOG(VB_GENERAL, LOG_INFO, LOC + "Failed to load procs");
44 }
45 else
46 {
47 LOG(VB_GENERAL, LOG_INFO, LOC + "Extension not found");
48 }
49}
50
51void MythDebugVulkan::BeginRegion(VkCommandBuffer CmdBuffer, const char *Name, const MythVulkan4F Color)
52{
53 VkDebugMarkerMarkerInfoEXT begin =
54 { VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT, nullptr, Name,
55 { Color[0], Color[1], Color[2], Color[3] } };
56 m_beginRegion(CmdBuffer, &begin);
57}
58
59void MythDebugVulkan::EndRegion(VkCommandBuffer CmdBuffer)
60{
61 m_endRegion(CmdBuffer);
62}
63
64void MythDebugVulkan::NameObject(uint64_t Object, VkDebugReportObjectTypeEXT Type, const char *Name)
65{
66 VkDebugMarkerObjectNameInfoEXT info { };
67 info.sType = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT;
68 info.objectType = Type;
69 info.object = Object;
70 info.pObjectName = Name;
72}
static const MythVulkan4F kDebugRed
static const MythVulkan4F kDebugBlack
PFN_vkCmdDebugMarkerEndEXT m_endRegion
PFN_vkCmdDebugMarkerBeginEXT m_beginRegion
PFN_vkDebugMarkerSetObjectNameEXT m_nameObject
static MythDebugVulkan * Create(MythVulkanObject *Vulkan)
void EndRegion(VkCommandBuffer CmdBuffer)
void BeginRegion(VkCommandBuffer CmdBuffer, const char *Name, MythVulkan4F Color)
static const MythVulkan4F kDebugGreen
MythDebugVulkan(MythVulkanObject *Vulkan)
static const MythVulkan4F kDebugBlue
static const MythVulkan4F kDebugGray
void NameObject(uint64_t Object, VkDebugReportObjectTypeEXT Type, const char *Name)
MythWindowVulkan * m_vulkanWindow
#define LOC
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
std::array< float, 4 > MythVulkan4F
dictionary info
Definition: azlyrics.py:7
Definition: graphic.h:5