2#include "../foray_vulkan.hpp"
4#include <unordered_map>
16 VkImageLayout
Get(VkImage image)
const;
23 void Set(VkImage image, VkImageLayout layout);
37 VkImageSubresourceRange
SubresourceRange = VkImageSubresourceRange{.aspectMask = VkImageAspectFlagBits::VK_IMAGE_ASPECT_COLOR_BIT, .levelCount = 1U, .layerCount = 1U};
50 VkImageSubresourceRange
SubresourceRange = VkImageSubresourceRange{.aspectMask = VkImageAspectFlagBits::VK_IMAGE_ASPECT_COLOR_BIT, .levelCount = 1U, .layerCount = 1U};
91 VkPipelineStageFlags srcStageMask,
92 VkPipelineStageFlags dstStageMask,
93 VkDependencyFlags depFlags = 0);
104 VkPipelineStageFlags srcStageMask,
105 VkPipelineStageFlags dstStageMask,
106 VkDependencyFlags depFlags = 0);
117 VkPipelineStageFlags srcStageMask,
118 VkPipelineStageFlags dstStageMask,
119 VkDependencyFlags depFlags = 0);
126 void CmdBarrier(VkCommandBuffer cmdBuffer, VkImage image,
const Barrier2& barrier, VkDependencyFlags depFlags = 0);
Tracks ImageLayouts over the course of a frame rendering process.
Definition foray_imagelayoutcache.hpp:13
void Set(const ManagedImage *image, VkImageLayout layout)
Set the cached layout of image.
VkImageMemoryBarrier2 MakeBarrier(const ManagedImage *image, const Barrier2 &barrier)
Constructs a VkImageMemoryBarrier2 struct and updates the stored layout.
VkImageLayout Get(const ManagedImage *image) const
Get the currently cached layout of image.
VkImageMemoryBarrier2 MakeBarrier(VkImage image, const Barrier2 &barrier)
Constructs a VkImageMemoryBarrier2 struct and updates the stored layout.
void CmdBarrier(VkCommandBuffer cmdBuffer, const ManagedImage &image, const Barrier &barrier, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags depFlags=0)
Writes a dedicated vkCmdPipelineBarrier command.
void CmdBarrier(VkCommandBuffer cmdBuffer, const ManagedImage &image, const Barrier2 &barrier, VkDependencyFlags depFlags=0)
Writes a dedicated vkCmdPipelineBarrier2 command.
VkImageMemoryBarrier MakeBarrier(const ManagedImage *image, const Barrier &barrier)
Constructs a VkImageMemoryBarrier struct and updates the stored layout.
void CmdBarrier(VkCommandBuffer cmdBuffer, VkImage image, const Barrier2 &barrier, VkDependencyFlags depFlags=0)
Writes a dedicated vkCmdPipelineBarrier2 command.
void CmdBarrier(VkCommandBuffer cmdBuffer, const ManagedImage *image, const Barrier &barrier, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags depFlags=0)
Writes a dedicated vkCmdPipelineBarrier command.
VkImageMemoryBarrier MakeBarrier(VkImage image, const Barrier &barrier)
Constructs a VkImageMemoryBarrier struct and updates the stored layout.
void Set(const ManagedImage &image, VkImageLayout layout)
Set the cached layout of image.
void CmdBarrier(VkCommandBuffer cmdBuffer, const ManagedImage *image, const Barrier2 &barrier, VkDependencyFlags depFlags=0)
Writes a dedicated vkCmdPipelineBarrier2 command.
VkImageMemoryBarrier2 MakeBarrier(const ManagedImage &image, const Barrier2 &barrier)
Constructs a VkImageMemoryBarrier2 struct and updates the stored layout.
VkImageMemoryBarrier MakeBarrier(const ManagedImage &image, const Barrier &barrier)
Constructs a VkImageMemoryBarrier struct and updates the stored layout.
void CmdBarrier(VkCommandBuffer cmdBuffer, VkImage image, const Barrier &barrier, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags depFlags=0)
Writes a dedicated vkCmdPipelineBarrier command.
VkImageLayout Get(const ManagedImage &image) const
Get the currently cached layout of image.
void Set(VkImage image, VkImageLayout layout)
Set the cached layout of image.
VkImageLayout Get(VkImage image) const
Get the currently cached layout of image identified by imageName.
std::unordered_map< VkImage, VkImageLayout > mLayoutCache
Definition foray_imagelayoutcache.hpp:141
Wraps allocation and lifetime functionality of VkImage.
Definition foray_managedimage.hpp:13
Definition foray_commandbuffer.hpp:6
See VkImageMemoryBarrier2.
Definition foray_imagelayoutcache.hpp:42
uint32_t SrcQueueFamilyIndex
Definition foray_imagelayoutcache.hpp:47
uint32_t DstQueueFamilyIndex
Definition foray_imagelayoutcache.hpp:48
VkPipelineStageFlags2 SrcStageMask
Definition foray_imagelayoutcache.hpp:43
VkAccessFlags2 DstAccessMask
Definition foray_imagelayoutcache.hpp:46
VkImageLayout NewLayout
Definition foray_imagelayoutcache.hpp:49
VkImageSubresourceRange SubresourceRange
Definition foray_imagelayoutcache.hpp:50
VkPipelineStageFlags2 DstStageMask
Definition foray_imagelayoutcache.hpp:45
VkAccessFlags2 SrcAccessMask
Definition foray_imagelayoutcache.hpp:44
See VkImageMemoryBarrier.
Definition foray_imagelayoutcache.hpp:31
VkImageSubresourceRange SubresourceRange
Definition foray_imagelayoutcache.hpp:37
uint32_t DstQueueFamilyIndex
Definition foray_imagelayoutcache.hpp:35
uint32_t SrcQueueFamilyIndex
Definition foray_imagelayoutcache.hpp:34
VkAccessFlags SrcAccessMask
Definition foray_imagelayoutcache.hpp:32
VkImageLayout NewLayout
Definition foray_imagelayoutcache.hpp:36
VkAccessFlags DstAccessMask
Definition foray_imagelayoutcache.hpp:33