32 struct VSG_DECLSPEC MemoryBarrier :
public Inherit<Object, MemoryBarrier>
34 explicit MemoryBarrier(VkAccessFlags in_srcAccessMask = 0,
35 VkAccessFlags in_dstAccessMask = 0) :
36 srcAccessMask(in_srcAccessMask),
37 dstAccessMask(in_dstAccessMask) {}
40 VkAccessFlags srcAccessMask = 0;
41 VkAccessFlags dstAccessMask = 0;
43 void assign(
CommandBuffer& commandBuffer, VkMemoryBarrier& info)
const;
49 struct VSG_DECLSPEC BufferMemoryBarrier :
public Inherit<Object, BufferMemoryBarrier>
51 explicit BufferMemoryBarrier(VkAccessFlags in_srcAccessMask = 0,
52 VkAccessFlags in_dstAccessMask = 0,
53 uint32_t in_srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
54 uint32_t in_dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
56 VkDeviceSize in_offset = 0,
57 VkDeviceSize in_size = 0) :
58 srcAccessMask(in_srcAccessMask),
59 dstAccessMask(in_dstAccessMask),
60 srcQueueFamilyIndex(in_srcQueueFamilyIndex),
61 dstQueueFamilyIndex(in_dstQueueFamilyIndex),
67 VkAccessFlags srcAccessMask = 0;
68 VkAccessFlags dstAccessMask = 0;
69 uint32_t srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
70 uint32_t dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
72 VkDeviceSize offset = 0;
73 VkDeviceSize size = 0;
75 void assign(
CommandBuffer& commandBuffer, VkBufferMemoryBarrier& info)
const;
81 struct VSG_DECLSPEC ImageMemoryBarrier :
public Inherit<Object, ImageMemoryBarrier>
83 explicit ImageMemoryBarrier(VkAccessFlags in_srcAccessMask = 0,
84 VkAccessFlags in_dstAccessMask = 0,
85 VkImageLayout in_oldLayout = VK_IMAGE_LAYOUT_UNDEFINED,
86 VkImageLayout in_newLayout = VK_IMAGE_LAYOUT_UNDEFINED,
87 uint32_t in_srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
88 uint32_t in_dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
90 VkImageSubresourceRange in_subresourceRange = {0, 0, 0, 0, 0}) :
91 srcAccessMask(in_srcAccessMask),
92 dstAccessMask(in_dstAccessMask),
93 oldLayout(in_oldLayout),
94 newLayout(in_newLayout),
95 srcQueueFamilyIndex(in_srcQueueFamilyIndex),
96 dstQueueFamilyIndex(in_dstQueueFamilyIndex),
98 subresourceRange(in_subresourceRange) {}
101 VkAccessFlags srcAccessMask = 0;
102 VkAccessFlags dstAccessMask = VK_ACCESS_SHADER_WRITE_BIT;
103 VkImageLayout oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
104 VkImageLayout newLayout = VK_IMAGE_LAYOUT_UNDEFINED;
105 uint32_t srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
106 uint32_t dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
108 VkImageSubresourceRange subresourceRange = {0, 0, 0, 0, 0};
110 void assign(
CommandBuffer& commandBuffer, VkImageMemoryBarrier& info)
const;
126 class VSG_DECLSPEC PipelineBarrier :
public Inherit<Command, PipelineBarrier>
131 template<
typename... Args>
132 PipelineBarrier(VkPipelineStageFlags in_srcStageMask, VkPipelineStageFlags in_destStageMask, VkDependencyFlags in_dependencyFlags, Args&&... args) :
133 srcStageMask(in_srcStageMask),
134 dstStageMask(in_destStageMask),
135 dependencyFlags(in_dependencyFlags)
146 VkPipelineStageFlags srcStageMask;
147 VkPipelineStageFlags dstStageMask;
148 VkDependencyFlags dependencyFlags;
150 MemoryBarriers memoryBarriers;
151 BufferMemoryBarriers bufferMemoryBarriers;
152 ImageMemoryBarriers imageMemoryBarriers;
155 virtual ~PipelineBarrier();