37 struct VSG_DECLSPEC MemoryBarrier :
public Inherit<Object, MemoryBarrier>
39 explicit MemoryBarrier(VkAccessFlags in_srcAccessMask = 0,
40 VkAccessFlags in_dstAccessMask = 0) :
41 srcAccessMask(in_srcAccessMask),
42 dstAccessMask(in_dstAccessMask) {}
45 VkAccessFlags srcAccessMask = 0;
46 VkAccessFlags dstAccessMask = 0;
48 void assign(
CommandBuffer& commandBuffer, VkMemoryBarrier& info)
const;
54 struct VSG_DECLSPEC BufferMemoryBarrier :
public Inherit<Object, BufferMemoryBarrier>
56 explicit BufferMemoryBarrier(VkAccessFlags in_srcAccessMask = 0,
57 VkAccessFlags in_dstAccessMask = 0,
58 uint32_t in_srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
59 uint32_t in_dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
61 VkDeviceSize in_offset = 0,
62 VkDeviceSize in_size = 0) :
63 srcAccessMask(in_srcAccessMask),
64 dstAccessMask(in_dstAccessMask),
65 srcQueueFamilyIndex(in_srcQueueFamilyIndex),
66 dstQueueFamilyIndex(in_dstQueueFamilyIndex),
72 VkAccessFlags srcAccessMask = 0;
73 VkAccessFlags dstAccessMask = 0;
74 uint32_t srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
75 uint32_t dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
77 VkDeviceSize offset = 0;
78 VkDeviceSize size = 0;
80 void assign(
CommandBuffer& commandBuffer, VkBufferMemoryBarrier& info)
const;
86 struct VSG_DECLSPEC ImageMemoryBarrier :
public Inherit<Object, ImageMemoryBarrier>
88 explicit ImageMemoryBarrier(VkAccessFlags in_srcAccessMask = 0,
89 VkAccessFlags in_dstAccessMask = 0,
90 VkImageLayout in_oldLayout = VK_IMAGE_LAYOUT_UNDEFINED,
91 VkImageLayout in_newLayout = VK_IMAGE_LAYOUT_UNDEFINED,
92 uint32_t in_srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
93 uint32_t in_dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED,
95 VkImageSubresourceRange in_subresourceRange = {0, 0, 0, 0, 0}) :
96 srcAccessMask(in_srcAccessMask),
97 dstAccessMask(in_dstAccessMask),
98 oldLayout(in_oldLayout),
99 newLayout(in_newLayout),
100 srcQueueFamilyIndex(in_srcQueueFamilyIndex),
101 dstQueueFamilyIndex(in_dstQueueFamilyIndex),
103 subresourceRange(in_subresourceRange) {}
106 VkAccessFlags srcAccessMask = 0;
107 VkAccessFlags dstAccessMask = VK_ACCESS_SHADER_WRITE_BIT;
108 VkImageLayout oldLayout = VK_IMAGE_LAYOUT_UNDEFINED;
109 VkImageLayout newLayout = VK_IMAGE_LAYOUT_UNDEFINED;
110 uint32_t srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
111 uint32_t dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED;
113 VkImageSubresourceRange subresourceRange = {0, 0, 0, 0, 0};
115 void assign(
CommandBuffer& commandBuffer, VkImageMemoryBarrier& info)
const;
131 class VSG_DECLSPEC PipelineBarrier :
public Inherit<Command, PipelineBarrier>
136 template<
typename... Args>
137 PipelineBarrier(VkPipelineStageFlags in_srcStageMask, VkPipelineStageFlags in_destStageMask, VkDependencyFlags in_dependencyFlags, Args&&... args) :
138 srcStageMask(in_srcStageMask),
139 dstStageMask(in_destStageMask),
140 dependencyFlags(in_dependencyFlags)
151 VkPipelineStageFlags srcStageMask;
152 VkPipelineStageFlags dstStageMask;
153 VkDependencyFlags dependencyFlags;
155 MemoryBarriers memoryBarriers;
156 BufferMemoryBarriers bufferMemoryBarriers;
157 ImageMemoryBarriers imageMemoryBarriers;
160 virtual ~PipelineBarrier();