diff --git a/base/vulkantools.cpp b/base/vulkantools.cpp index e6ef6de1..8d06d12d 100644 --- a/base/vulkantools.cpp +++ b/base/vulkantools.cpp @@ -116,7 +116,9 @@ namespace vkTools VkImageAspectFlags aspectMask, VkImageLayout oldImageLayout, VkImageLayout newImageLayout, - VkImageSubresourceRange subresourceRange) + VkImageSubresourceRange subresourceRange, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask) { // Create an image barrier object VkImageMemoryBarrier imageMemoryBarrier = vkTools::initializers::imageMemoryBarrier(); @@ -216,15 +218,11 @@ namespace vkTools break; } - // Put barrier on top - VkPipelineStageFlags srcStageFlags = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; - VkPipelineStageFlags destStageFlags = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT; - // Put barrier inside setup command buffer vkCmdPipelineBarrier( cmdbuffer, - srcStageFlags, - destStageFlags, + srcStageMask, + dstStageMask, 0, 0, nullptr, 0, nullptr, @@ -237,7 +235,9 @@ namespace vkTools VkImage image, VkImageAspectFlags aspectMask, VkImageLayout oldImageLayout, - VkImageLayout newImageLayout) + VkImageLayout newImageLayout, + VkPipelineStageFlags srcStageMask, + VkPipelineStageFlags dstStageMask) { VkImageSubresourceRange subresourceRange = {}; subresourceRange.aspectMask = aspectMask; diff --git a/base/vulkantools.h b/base/vulkantools.h index 38d5cf32..90839077 100644 --- a/base/vulkantools.h +++ b/base/vulkantools.h @@ -65,14 +65,18 @@ namespace vkTools VkImageAspectFlags aspectMask, VkImageLayout oldImageLayout, VkImageLayout newImageLayout, - VkImageSubresourceRange subresourceRange); + VkImageSubresourceRange subresourceRange, + VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, + VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT); // Uses a fixed sub resource layout with first mip level and layer void setImageLayout( VkCommandBuffer cmdbuffer, VkImage image, VkImageAspectFlags aspectMask, VkImageLayout oldImageLayout, - VkImageLayout newImageLayout); + VkImageLayout newImageLayout, + VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, + VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT); // Display error message and exit on fatal error void exitFatal(std::string message, std::string caption);