15 : command_buffer_(std::move(command_buffer)), resources_(resources)
24 "Currently only supporting removing all nodes. The VKScheduler doesn't walk the "
25 "nodes, and will use incorrect ordering when not all nodes are removed. This "
26 "needs to be fixed when implementing a better scheduler.");
33 debug_.node_group_map.clear();
34 debug_.used_groups.clear();
47 synchronization.
vk_image = vk_swapchain_image;
50 add_node<VKSynchronizationNode>(synchronization);
54 command_builder_.
build_nodes(*
this, *command_buffer_, node_handles);
60 command_buffer_->submit_with_cpu_synchronization();
62 remove_nodes(node_handles);
63 command_buffer_->wait_for_cpu_synchronization();
70 command_builder_.
build_nodes(*
this, *command_buffer_, node_handles);
71 command_buffer_->submit_with_cpu_synchronization();
73 remove_nodes(node_handles);
74 command_buffer_->wait_for_cpu_synchronization();
88 command_builder_.
build_nodes(*
this, *command_buffer_, node_handles);
89 command_buffer_->submit_with_cpu_synchronization(vk_fence);
91 remove_nodes(node_handles);
96 command_buffer_->wait_for_cpu_synchronization(vk_fence);
107 DebugGroupNameID name_id = debug_.group_names.index_of_or_add(std::string(name));
108 debug_.group_stack.append(name_id);
109 debug_.group_used =
false;
114 debug_.group_stack.pop_last();
115 debug_.group_used =
false;
120 std::ostream &os = std::cout;
123 os <<
" type:" << node.type <<
"\n";
129 link.debug_print(os, resources_);
135 link.debug_print(os, resources_);
#define BLI_assert_msg(a, msg)
#define UNUSED_VARS_NDEBUG(...)
constexpr int64_t size() const
void build_nodes(VKRenderGraph &render_graph, VKCommandBufferInterface &command_buffer, Span< NodeHandle > node_handles)
void debug_group_begin(const char *name)
void submit_buffer_for_read(VkBuffer vk_buffer)
VKRenderGraph(std::unique_ptr< VKCommandBufferInterface > command_buffer, VKResourceStateTracker &resources)
void wait_synchronization_event(VkFence vk_fence)
void submit_for_present(VkImage vk_swapchain_image)
void debug_print(NodeHandle node_handle) const
VKSubmissionID submission_id
void submit_synchronization_event(VkFence vk_fence)
Span< NodeHandle > select_nodes(const VKRenderGraph &render_graph)
Span< NodeHandle > select_nodes_for_image(const VKRenderGraph &render_graph, VkImage vk_image)
Span< NodeHandle > select_nodes_for_buffer(const VKRenderGraph &render_graph, VkBuffer vk_buffer)
Vector< VKRenderGraphLink > inputs
Vector< VKRenderGraphLink > outputs
VkImageAspectFlags vk_image_aspect
VkImageLayout vk_image_layout