From 3ef67d6647d77fe9c8eda2de2d33ba828edcfd50 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 21 Apr 2020 16:57:03 +0100 Subject: [PATCH] Test passing NULL in object names/labels --- .../driver/vulkan/wrappers/vk_cmd_funcs.cpp | 8 ++-- .../driver/vulkan/wrappers/vk_queue_funcs.cpp | 4 +- util/test/demos/vk/vk_parameter_zoo.cpp | 48 +++++++++++++++++++ 3 files changed, 54 insertions(+), 6 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 73a86d5f6..f9180a5f9 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -3690,7 +3690,7 @@ bool WrappedVulkan::Serialise_vkCmdDebugMarkerBeginEXT(SerialiserType &ser, ObjDisp(commandBuffer)->CmdDebugMarkerBeginEXT(Unwrap(commandBuffer), &Marker); DrawcallDescription draw; - draw.name = Marker.pMarkerName; + draw.name = Marker.pMarkerName ? Marker.pMarkerName : ""; draw.flags |= DrawFlags::PushMarker; draw.markerColor[0] = RDCCLAMP(Marker.color[0], 0.0f, 1.0f); @@ -3840,7 +3840,7 @@ bool WrappedVulkan::Serialise_vkCmdDebugMarkerInsertEXT(SerialiserType &ser, ObjDisp(commandBuffer)->CmdDebugMarkerInsertEXT(Unwrap(commandBuffer), &Marker); DrawcallDescription draw; - draw.name = Marker.pMarkerName; + draw.name = Marker.pMarkerName ? Marker.pMarkerName : ""; draw.flags |= DrawFlags::SetMarker; draw.markerColor[0] = RDCCLAMP(Marker.color[0], 0.0f, 1.0f); @@ -4592,7 +4592,7 @@ bool WrappedVulkan::Serialise_vkCmdBeginDebugUtilsLabelEXT(SerialiserType &ser, ObjDisp(commandBuffer)->CmdBeginDebugUtilsLabelEXT(Unwrap(commandBuffer), &Label); DrawcallDescription draw; - draw.name = Label.pLabelName; + draw.name = Label.pLabelName ? Label.pLabelName : ""; draw.flags |= DrawFlags::PushMarker; draw.markerColor[0] = RDCCLAMP(Label.color[0], 0.0f, 1.0f); @@ -4733,7 +4733,7 @@ bool WrappedVulkan::Serialise_vkCmdInsertDebugUtilsLabelEXT(SerialiserType &ser, ObjDisp(commandBuffer)->CmdInsertDebugUtilsLabelEXT(Unwrap(commandBuffer), &Label); DrawcallDescription draw; - draw.name = Label.pLabelName; + draw.name = Label.pLabelName ? Label.pLabelName : ""; draw.flags |= DrawFlags::SetMarker; draw.markerColor[0] = RDCCLAMP(Label.color[0], 0.0f, 1.0f); diff --git a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp index 819096047..5511fb829 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_queue_funcs.cpp @@ -1457,7 +1457,7 @@ bool WrappedVulkan::Serialise_vkQueueBeginDebugUtilsLabelEXT(SerialiserType &ser if(IsLoading(m_State)) { DrawcallDescription draw; - draw.name = Label.pLabelName; + draw.name = Label.pLabelName ? Label.pLabelName : ""; draw.flags |= DrawFlags::PushMarker; draw.markerColor[0] = RDCCLAMP(Label.color[0], 0.0f, 1.0f); @@ -1559,7 +1559,7 @@ bool WrappedVulkan::Serialise_vkQueueInsertDebugUtilsLabelEXT(SerialiserType &se if(IsLoading(m_State)) { DrawcallDescription draw; - draw.name = Label.pLabelName; + draw.name = Label.pLabelName ? Label.pLabelName : ""; draw.flags |= DrawFlags::SetMarker; draw.markerColor[0] = RDCCLAMP(Label.color[0], 0.0f, 1.0f); diff --git a/util/test/demos/vk/vk_parameter_zoo.cpp b/util/test/demos/vk/vk_parameter_zoo.cpp index df82aba11..2bfb0512c 100644 --- a/util/test/demos/vk/vk_parameter_zoo.cpp +++ b/util/test/demos/vk/vk_parameter_zoo.cpp @@ -943,6 +943,16 @@ void main() AllocatedBuffer xfbBuf(this, vkh::BufferCreateInfo(256, xfbUsage), VmaAllocationCreateInfo({0, VMA_MEMORY_USAGE_GPU_ONLY})); + if(vkSetDebugUtilsObjectNameEXT) + { + VkDebugUtilsObjectNameInfoEXT info = {}; + info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT; + info.objectType = VK_OBJECT_TYPE_BUFFER; + info.objectHandle = (uint64_t)xfbBuf.buffer; + info.pObjectName = NULL; + vkSetDebugUtilsObjectNameEXT(device, &info); + } + VkFence fence; CHECK_VKR(vkCreateFence(device, vkh::FenceCreateInfo(VK_FENCE_CREATE_SIGNALED_BIT), NULL, &fence)); @@ -1108,12 +1118,50 @@ void main() vkCmdEndRenderPass(cmd); + if(vkCmdBeginDebugUtilsLabelEXT) + { + VkDebugUtilsLabelEXT info = {}; + info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT; + info.pLabelName = NULL; + vkCmdBeginDebugUtilsLabelEXT(cmd, &info); + } + + if(vkCmdInsertDebugUtilsLabelEXT) + { + VkDebugUtilsLabelEXT info = {}; + info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT; + info.pLabelName = NULL; + vkCmdInsertDebugUtilsLabelEXT(cmd, &info); + } + + if(vkCmdEndDebugUtilsLabelEXT) + vkCmdEndDebugUtilsLabelEXT(cmd); + vkEndCommandBuffer(cmd); Submit(1, 4, {cmd}); vkDeviceWaitIdle(device); + if(vkQueueBeginDebugUtilsLabelEXT) + { + VkDebugUtilsLabelEXT info = {}; + info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT; + info.pLabelName = NULL; + vkQueueBeginDebugUtilsLabelEXT(queue, &info); + } + + if(vkQueueInsertDebugUtilsLabelEXT) + { + VkDebugUtilsLabelEXT info = {}; + info.sType = VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT; + info.pLabelName = NULL; + vkQueueInsertDebugUtilsLabelEXT(queue, &info); + } + + if(vkQueueEndDebugUtilsLabelEXT) + vkQueueEndDebugUtilsLabelEXT(queue); + // scribble over the descriptor contents so that initial contents fetch never gets these // resources that way vkh::updateDescriptorSets(