diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index a117e5b7c..4f94072b3 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -441,31 +441,31 @@ int StageIndex(VkShaderStageFlagBits stageFlag) return 0; } -void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, const VkImageMemoryBarrier *barriers) +void DoPipelineBarrier(VkCommandBuffer cmd, size_t count, const VkImageMemoryBarrier *barriers) { RDCASSERT(cmd != VK_NULL_HANDLE); ObjDisp(cmd)->CmdPipelineBarrier(Unwrap(cmd), VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, - NULL, // global memory barriers - 0, NULL, // buffer memory barriers - count, barriers); // image memory barriers + NULL, // global memory barriers + 0, NULL, // buffer memory barriers + (uint32_t)count, barriers); // image memory barriers } -void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, const VkBufferMemoryBarrier *barriers) +void DoPipelineBarrier(VkCommandBuffer cmd, size_t count, const VkBufferMemoryBarrier *barriers) { RDCASSERT(cmd != VK_NULL_HANDLE); ObjDisp(cmd)->CmdPipelineBarrier(Unwrap(cmd), VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, 0, - NULL, // global memory barriers - count, barriers, // buffer memory barriers - 0, NULL); // image memory barriers + NULL, // global memory barriers + (uint32_t)count, barriers, // buffer memory barriers + 0, NULL); // image memory barriers } -void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, const VkMemoryBarrier *barriers) +void DoPipelineBarrier(VkCommandBuffer cmd, size_t count, const VkMemoryBarrier *barriers) { RDCASSERT(cmd != VK_NULL_HANDLE); ObjDisp(cmd)->CmdPipelineBarrier(Unwrap(cmd), VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, - VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, count, + VK_PIPELINE_STAGE_ALL_COMMANDS_BIT, 0, (uint32_t)count, barriers, // global memory barriers 0, NULL, // buffer memory barriers 0, NULL); // image memory barriers diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index f8f3f2b20..f16d5a581 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -92,9 +92,11 @@ VkAccessFlags MakeAccessMask(VkImageLayout layout); void SanitiseOldImageLayout(VkImageLayout &layout); void SanitiseNewImageLayout(VkImageLayout &layout); -void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, const VkImageMemoryBarrier *barriers); -void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, const VkBufferMemoryBarrier *barriers); -void DoPipelineBarrier(VkCommandBuffer cmd, uint32_t count, const VkMemoryBarrier *barriers); +void CombineDepthStencilLayouts(rdcarray &barriers); + +void DoPipelineBarrier(VkCommandBuffer cmd, size_t count, const VkImageMemoryBarrier *barriers); +void DoPipelineBarrier(VkCommandBuffer cmd, size_t count, const VkBufferMemoryBarrier *barriers); +void DoPipelineBarrier(VkCommandBuffer cmd, size_t count, const VkMemoryBarrier *barriers); int SampleCount(VkSampleCountFlagBits countFlag); int SampleIndex(VkSampleCountFlagBits countFlag); diff --git a/renderdoc/driver/vulkan/vk_initstate.cpp b/renderdoc/driver/vulkan/vk_initstate.cpp index c73c24fb8..399304805 100644 --- a/renderdoc/driver/vulkan/vk_initstate.cpp +++ b/renderdoc/driver/vulkan/vk_initstate.cpp @@ -2025,7 +2025,7 @@ void WrappedVulkan::Apply_InitialState(WrappedVkRes *live, const VkInitialConten rdcarray setupBarriers, cleanupBarriers; ImageInitializationBarriers(id, live, policy, initialized, imgRefs, setupBarriers, cleanupBarriers); - DoPipelineBarrier(cmd, (uint32_t)setupBarriers.size(), setupBarriers.data()); + DoPipelineBarrier(cmd, setupBarriers.size(), setupBarriers.data()); SubmitExtQBarriers(GetExtQBarriers(setupBarriers)); @@ -2176,7 +2176,7 @@ void WrappedVulkan::Apply_InitialState(WrappedVkRes *live, const VkInitialConten } } - DoPipelineBarrier(cmd, (uint32_t)cleanupBarriers.size(), cleanupBarriers.data()); + DoPipelineBarrier(cmd, cleanupBarriers.size(), cleanupBarriers.data()); vkr = ObjDisp(cmd)->EndCommandBuffer(Unwrap(cmd)); RDCASSERTEQUAL(vkr, VK_SUCCESS); diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index a1cc94c5c..03239caa6 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -1040,7 +1040,7 @@ bool WrappedVulkan::Serialise_vkEndCommandBuffer(SerialiserType &ser, VkCommandB } if(!revertBarriers.empty()) - DoPipelineBarrier(commandBuffer, (uint32_t)revertBarriers.size(), revertBarriers.data()); + DoPipelineBarrier(commandBuffer, revertBarriers.size(), revertBarriers.data()); } // also finish any nested markers we truncated and didn't finish