Program Listing for File ImageBarrierHelper.hpp

Program Listing for File ImageBarrierHelper.hpp#

↰ Return to documentation for file (Src/GraphicsEngineVulkan/common/ImageBarrierHelper.hpp)

#pragma once

#include <vulkan/vulkan.hpp>

namespace Kataglyphis {

// Defaults to one colour mip and layer; a barrier needing a real subrange builds its own and says why.
constexpr vk::ImageMemoryBarrier buildImageMemoryBarrier(vk::Image image,
  vk::ImageLayout oldLayout,
  vk::ImageLayout newLayout,
  vk::AccessFlags srcAccess,
  vk::AccessFlags dstAccess,
  vk::ImageAspectFlags aspect = vk::ImageAspectFlagBits::eColor,
  uint32_t baseMipLevel = 0,
  uint32_t levelCount = 1,
  uint32_t baseArrayLayer = 0,
  uint32_t layerCount = 1)
{
    return vk::ImageMemoryBarrier{ srcAccess,
        dstAccess,
        oldLayout,
        newLayout,
        vk::QueueFamilyIgnored,
        vk::QueueFamilyIgnored,
        image,
        vk::ImageSubresourceRange{ aspect, baseMipLevel, levelCount, baseArrayLayer, layerCount } };
}

}// namespace Kataglyphis