52 VkPipelineStageFlags src_stage_mask = VK_PIPELINE_STAGE_NONE;
53 VkPipelineStageFlags dst_stage_mask = VK_PIPELINE_STAGE_NONE;
57 return buffer_memory_barriers.
is_empty() && image_memory_barriers.
is_empty();
66 struct LayeredImageTracker {
73 LayeredImageTracker(
VKCommandBuilder &command_builder) : command_builder(command_builder) {}
103 inline bool contains(VkImage vk_image)
const
105 return layered_attachments.contains(vk_image);
113 void update(VkImage vk_image,
115 uint32_t layer_count,
116 VkImageLayout old_layout,
117 VkImageLayout new_layout,
128 void end(Barrier &r_barrier,
bool use_local_read);
138 void suspend(Barrier &r_barrier,
bool use_local_read);
146 void resume(Barrier &r_barrier,
bool use_local_read);
215 bool supports_local_read);
230 VkPipelineStageFlags pipeline_stage,
231 LayeredImageTracker &layered_tracker,
233 bool within_rendering =
false);
234 void reset_barriers(Barrier &r_barrier);
236 const Barrier &barrier,
237 bool within_rendering);
241 VkPipelineStageFlags node_stages,
243 void add_buffer_barrier(VkBuffer vk_buffer,
245 VkAccessFlags src_access_mask,
246 VkAccessFlags dst_access_mask);
249 VkPipelineStageFlags node_stages,
253 VkPipelineStageFlags node_stages,
258 VkPipelineStageFlags node_stages,
259 LayeredImageTracker &layered_tracker,
261 bool within_rendering);
262 void add_image_barrier(VkImage vk_image,
264 VkAccessFlags src_access_mask,
265 VkAccessFlags dst_access_mask,
266 VkImageLayout old_image_layout,
267 VkImageLayout new_image_layout,
268 VkImageAspectFlags aspect_mask,
269 uint32_t layer_base = 0,
270 uint32_t layer_count = VK_REMAINING_ARRAY_LAYERS);
273 VkPipelineStageFlags node_stages,
274 LayeredImageTracker &layered_tracker,
276 bool within_rendering);
279 VkPipelineStageFlags node_stages,
280 LayeredImageTracker &layered_tracker,
282 bool within_rendering);
289 int64_t active_debug_group_id = -1;
303 VKCommandBufferInterface &command_buffer,
304 DebugGroups &debug_groups,
310 void finish_debug_groups(VKCommandBufferInterface &command_buffer, DebugGroups &debug_groups);
323 void layer_tracking_update(VkImage vk_image,
325 uint32_t layer_count,
326 VkImageLayout old_layout,
327 VkImageLayout new_layout);
337 void layer_tracking_end(VKCommandBufferInterface &command_buffer);
347 void layer_tracking_suspend(VKCommandBufferInterface &command_buffer);
355 void layer_tracking_resume(VKCommandBufferInterface &command_buffer);
359 std::string to_string_barrier(
const Barrier &barrier);