diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 46f58d219..c576bbc09 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -3231,10 +3231,10 @@ void Serialiser::Serialise(const char *name, VkSubpassDependency &el) Serialise("srcSubpass", el.srcSubpass); Serialise("destSubpass", el.dstSubpass); - Serialise("srcStageMask", el.srcStageMask); - Serialise("destStageMask", el.dstStageMask); - Serialise("srcAccessMask", el.srcAccessMask); - Serialise("dstAccessMask", el.dstAccessMask); + Serialise("srcStageMask", (VkPipelineStageFlagBits &)el.srcStageMask); + Serialise("destStageMask", (VkPipelineStageFlagBits &)el.dstStageMask); + Serialise("srcAccessMask", (VkAccessFlagBits &)el.srcAccessMask); + Serialise("dstAccessMask", (VkAccessFlagBits &)el.dstAccessMask); Serialise("dependencyFlags", (VkDependencyFlagBits &)el.dependencyFlags); } @@ -3861,8 +3861,8 @@ void Serialiser::Serialise(const char *name, VkMemoryBarrier &el) RDCASSERT(m_Mode < WRITING || el.sType == VK_STRUCTURE_TYPE_MEMORY_BARRIER); SerialiseNext(this, el.sType, el.pNext); - Serialise("srcAccessMask", el.srcAccessMask); - Serialise("dstAccessMask", el.dstAccessMask); + Serialise("srcAccessMask", (VkAccessFlagBits &)el.srcAccessMask); + Serialise("dstAccessMask", (VkAccessFlagBits &)el.dstAccessMask); } template<> @@ -3873,10 +3873,12 @@ void Serialiser::Serialise(const char *name, VkBufferMemoryBarrier &el) RDCASSERT(m_Mode < WRITING || el.sType == VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER); SerialiseNext(this, el.sType, el.pNext); - Serialise("srcAccessMask", el.srcAccessMask); - Serialise("dstAccessMask", el.dstAccessMask); - Serialise("srcQueueFamilyIndex", el.srcQueueFamilyIndex); - Serialise("dstQueueFamilyIndex", el.dstQueueFamilyIndex); + Serialise("srcAccessMask", (VkAccessFlagBits &)el.srcAccessMask); + Serialise("dstAccessMask", (VkAccessFlagBits &)el.dstAccessMask); + // serialise as signed because then QUEUE_FAMILY_IGNORED is -1 and queue + // family index won't be legitimately larger than 2 billion + Serialise("srcQueueFamilyIndex", (int32_t &)el.srcQueueFamilyIndex); + Serialise("dstQueueFamilyIndex", (int32_t &)el.dstQueueFamilyIndex); SerialiseObject(VkBuffer, "buffer", el.buffer); Serialise("offset", el.offset); Serialise("size", el.size); @@ -3890,12 +3892,14 @@ void Serialiser::Serialise(const char *name, VkImageMemoryBarrier &el) RDCASSERT(m_Mode < WRITING || el.sType == VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER); SerialiseNext(this, el.sType, el.pNext); - Serialise("srcAccessMask", el.srcAccessMask); - Serialise("dstAccessMask", el.dstAccessMask); + Serialise("srcAccessMask", (VkAccessFlagBits &)el.srcAccessMask); + Serialise("dstAccessMask", (VkAccessFlagBits &)el.dstAccessMask); Serialise("oldLayout", el.oldLayout); Serialise("newLayout", el.newLayout); - Serialise("srcQueueFamilyIndex", el.srcQueueFamilyIndex); - Serialise("dstQueueFamilyIndex", el.dstQueueFamilyIndex); + // serialise as signed because then QUEUE_FAMILY_IGNORED is -1 and queue + // family index won't be legitimately larger than 2 billion + Serialise("srcQueueFamilyIndex", (int32_t &)el.srcQueueFamilyIndex); + Serialise("dstQueueFamilyIndex", (int32_t &)el.dstQueueFamilyIndex); SerialiseObject(VkImage, "image", el.image); Serialise("subresourceRange", el.subresourceRange); } diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 30430e499..6f6deedd0 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -1642,8 +1642,8 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier( const VkImageMemoryBarrier* pImageMemoryBarriers) { SERIALISE_ELEMENT(ResourceId, cmdid, GetResID(commandBuffer)); - SERIALISE_ELEMENT(VkPipelineStageFlags, src, srcStageMask); - SERIALISE_ELEMENT(VkPipelineStageFlags, dest, destStageMask); + SERIALISE_ELEMENT(VkPipelineStageFlagBits, srcStages, (VkPipelineStageFlagBits)srcStageMask); + SERIALISE_ELEMENT(VkPipelineStageFlagBits, destStages, (VkPipelineStageFlagBits)destStageMask); if(m_State < WRITING) m_LastCmdBufferID = cmdid; @@ -1690,7 +1690,7 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier( if(ShouldRerecordCmd(cmdid) && InRerecordRange()) { commandBuffer = RerecordCmdBuf(cmdid); - ObjDisp(commandBuffer)->CmdPipelineBarrier(Unwrap(commandBuffer), src, dest, flags, + ObjDisp(commandBuffer)->CmdPipelineBarrier(Unwrap(commandBuffer), (VkPipelineStageFlags)srcStages, (VkPipelineStageFlags)destStages, flags, memCount, memBarriers, (uint32_t)bufBarriers.size(), &bufBarriers[0], (uint32_t)imgBarriers.size(), &imgBarriers[0]); @@ -1703,7 +1703,7 @@ bool WrappedVulkan::Serialise_vkCmdPipelineBarrier( { commandBuffer = GetResourceManager()->GetLiveHandle(cmdid); - ObjDisp(commandBuffer)->CmdPipelineBarrier(Unwrap(commandBuffer), src, dest, flags, + ObjDisp(commandBuffer)->CmdPipelineBarrier(Unwrap(commandBuffer), (VkPipelineStageFlags)srcStages, (VkPipelineStageFlags)destStages, flags, memCount, memBarriers, (uint32_t)bufBarriers.size(), &bufBarriers[0], (uint32_t)imgBarriers.size(), &imgBarriers[0]); diff --git a/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp index ad4216036..9e514b9b8 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_sync_funcs.cpp @@ -675,8 +675,8 @@ bool WrappedVulkan::Serialise_vkCmdWaitEvents( const VkImageMemoryBarrier* pImageMemoryBarriers) { SERIALISE_ELEMENT(ResourceId, cmdid, GetResID(cmdBuffer)); - SERIALISE_ELEMENT(VkPipelineStageFlags, src, srcStageMask); - SERIALISE_ELEMENT(VkPipelineStageFlags, dest, dstStageMask); + SERIALISE_ELEMENT(VkPipelineStageFlagBits, srcStages, (VkPipelineStageFlagBits)srcStageMask); + SERIALISE_ELEMENT(VkPipelineStageFlagBits, destStages, (VkPipelineStageFlagBits)dstStageMask); // we don't serialise the original events as we are going to replace this // with our own @@ -736,7 +736,7 @@ bool WrappedVulkan::Serialise_vkCmdWaitEvents( ObjDisp(cmdBuffer)->ResetEvent(Unwrap(GetDev()), ev); ObjDisp(cmdBuffer)->CmdSetEvent(Unwrap(cmdBuffer), ev, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); - ObjDisp(cmdBuffer)->CmdWaitEvents(Unwrap(cmdBuffer), 1, &ev, src, dest, + ObjDisp(cmdBuffer)->CmdWaitEvents(Unwrap(cmdBuffer), 1, &ev, (VkPipelineStageFlags)srcStages, (VkPipelineStageFlags)destStages, memCount, memBarriers, (uint32_t)bufBarriers.size(), &bufBarriers[0], (uint32_t)imgBarriers.size(), &imgBarriers[0]); @@ -763,7 +763,7 @@ bool WrappedVulkan::Serialise_vkCmdWaitEvents( ObjDisp(cmdBuffer)->ResetEvent(Unwrap(GetDev()), ev); ObjDisp(cmdBuffer)->CmdSetEvent(Unwrap(cmdBuffer), ev, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT); - ObjDisp(cmdBuffer)->CmdWaitEvents(Unwrap(cmdBuffer), 1, &ev, src, dest, + ObjDisp(cmdBuffer)->CmdWaitEvents(Unwrap(cmdBuffer), 1, &ev, (VkPipelineStageFlags)srcStages, (VkPipelineStageFlags)destStages, memCount, memBarriers, (uint32_t)bufBarriers.size(), &bufBarriers[0], (uint32_t)imgBarriers.size(), &imgBarriers[0]);