Added function for explicit image memory barrier
This commit is contained in:
parent
bfbb636aab
commit
373f005d9a
2 changed files with 41 additions and 0 deletions
|
|
@ -228,6 +228,35 @@ namespace vks
|
||||||
setImageLayout(cmdbuffer, image, aspectMask, oldImageLayout, newImageLayout, subresourceRange);
|
setImageLayout(cmdbuffer, image, aspectMask, oldImageLayout, newImageLayout, subresourceRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void insertImageMemoryBarrier(
|
||||||
|
VkCommandBuffer cmdbuffer,
|
||||||
|
VkImage image,
|
||||||
|
VkAccessFlags srcAccessMask,
|
||||||
|
VkAccessFlags dstAccessMask,
|
||||||
|
VkImageLayout oldImageLayout,
|
||||||
|
VkImageLayout newImageLayout,
|
||||||
|
VkPipelineStageFlags srcStageMask,
|
||||||
|
VkPipelineStageFlags dstStageMask,
|
||||||
|
VkImageSubresourceRange subresourceRange)
|
||||||
|
{
|
||||||
|
VkImageMemoryBarrier imageMemoryBarrier = vks::initializers::imageMemoryBarrier();
|
||||||
|
imageMemoryBarrier.srcAccessMask = srcAccessMask;
|
||||||
|
imageMemoryBarrier.dstAccessMask = dstAccessMask;
|
||||||
|
imageMemoryBarrier.oldLayout = oldImageLayout;
|
||||||
|
imageMemoryBarrier.newLayout = newImageLayout;
|
||||||
|
imageMemoryBarrier.image = image;
|
||||||
|
imageMemoryBarrier.subresourceRange = subresourceRange;
|
||||||
|
|
||||||
|
vkCmdPipelineBarrier(
|
||||||
|
cmdbuffer,
|
||||||
|
srcStageMask,
|
||||||
|
dstStageMask,
|
||||||
|
0,
|
||||||
|
0, nullptr,
|
||||||
|
0, nullptr,
|
||||||
|
1, &imageMemoryBarrier);
|
||||||
|
}
|
||||||
|
|
||||||
void exitFatal(std::string message, std::string caption)
|
void exitFatal(std::string message, std::string caption)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,18 @@ namespace vks
|
||||||
VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
|
VkPipelineStageFlags srcStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
|
||||||
VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
|
VkPipelineStageFlags dstStageMask = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT);
|
||||||
|
|
||||||
|
/** @brief Inser an image memory barrier into the command buffer */
|
||||||
|
void insertImageMemoryBarrier(
|
||||||
|
VkCommandBuffer cmdbuffer,
|
||||||
|
VkImage image,
|
||||||
|
VkAccessFlags srcAccessMask,
|
||||||
|
VkAccessFlags dstAccessMask,
|
||||||
|
VkImageLayout oldImageLayout,
|
||||||
|
VkImageLayout newImageLayout,
|
||||||
|
VkPipelineStageFlags srcStageMask,
|
||||||
|
VkPipelineStageFlags dstStageMask,
|
||||||
|
VkImageSubresourceRange subresourceRange);
|
||||||
|
|
||||||
// Display error message and exit on fatal error
|
// Display error message and exit on fatal error
|
||||||
void exitFatal(std::string message, std::string caption);
|
void exitFatal(std::string message, std::string caption);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue