diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index f792f8dbf..c799849b3 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -3952,16 +3952,12 @@ void WrappedVulkan::Serialise_DebugMessages(SerialiserType &ser) ProcessDebugMessage(msg); } - SERIALISE_ELEMENT(DebugMessages); + SERIALISE_ELEMENT(DebugMessages).Hidden(); // if we're using debug messages from replay, discard any from the capture if(ser.IsReading() && IsLoading(m_State) && m_ReplayOptions.apiValidation) DebugMessages.clear(); - // hide empty sets of messages. - if(ser.IsReading() && DebugMessages.empty()) - ser.Hidden(); - if(ser.IsReading() && IsLoading(m_State)) { for(const DebugMessage &msg : DebugMessages) @@ -4107,16 +4103,7 @@ void WrappedVulkan::AddDebugMessage(DebugMessage msg) { if(IsLoading(m_State)) { - if(m_LastCmdBufferID != ResourceId()) - { - msg.eventId = m_BakedCmdBufferInfo[m_LastCmdBufferID].curEventID; - m_BakedCmdBufferInfo[m_LastCmdBufferID].debugMessages.push_back(msg); - } - else - { - msg.eventId = m_RootEventID; - m_RootEventMessages.push_back(msg); - } + m_EventMessages.push_back(msg); } else { @@ -4916,9 +4903,15 @@ void WrappedVulkan::AddEvent() apievent.chunkIndex = uint32_t(m_StructuredFile->chunks.size() - 1); + for(DebugMessage &msg : m_EventMessages) + msg.eventId = apievent.eventId; + if(m_LastCmdBufferID != ResourceId()) { m_BakedCmdBufferInfo[m_LastCmdBufferID].curEvents.push_back(apievent); + + m_BakedCmdBufferInfo[m_LastCmdBufferID].debugMessages.append(m_EventMessages); + m_EventMessages.clear(); } else { @@ -4926,9 +4919,8 @@ void WrappedVulkan::AddEvent() m_Events.resize(apievent.eventId + 1); m_Events[apievent.eventId] = apievent; - m_DebugMessages.append(m_RootEventMessages); - - m_RootEventMessages.clear(); + m_DebugMessages.append(m_EventMessages); + m_EventMessages.clear(); } } diff --git a/renderdoc/driver/vulkan/vk_core.h b/renderdoc/driver/vulkan/vk_core.h index 6cc2cbb7e..2229c595c 100644 --- a/renderdoc/driver/vulkan/vk_core.h +++ b/renderdoc/driver/vulkan/vk_core.h @@ -284,7 +284,7 @@ private: // the messages retrieved for the current event (filled in Serialise_vk...() and read in // AddEvent()) - rdcarray m_RootEventMessages; + rdcarray m_EventMessages; // list of all debug messages by EID in the frame rdcarray m_DebugMessages;