Blender V4.3
vk_dispatch_node.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2024 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
9#pragma once
10
13#include "vk_node_info.hh"
14
25
34
35class VKDispatchNode : public VKNodeInfo<VKNodeType::DISPATCH,
36 VKDispatchCreateInfo,
37 VKDispatchData,
38 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
39 VKResourceType::IMAGE | VKResourceType::BUFFER> {
40 public:
48 template<typename Node> static void set_node_data(Node &node, const CreateInfo &create_info)
49 {
50 node.dispatch = create_info.dispatch_node;
51 vk_pipeline_data_copy(node.dispatch.pipeline_data, create_info.dispatch_node.pipeline_data);
52 }
53
58 {
59 vk_pipeline_data_free(data.pipeline_data);
60 }
61
66 VKRenderGraphNodeLinks &node_links,
67 const CreateInfo &create_info) override
68 {
69 create_info.resources.build_links(resources, node_links);
70 }
71
76 Data &data,
77 VKBoundPipelines &r_bound_pipelines) override
78 {
80 data.pipeline_data,
81 r_bound_pipelines.compute,
82 VK_PIPELINE_BIND_POINT_COMPUTE,
83 VK_SHADER_STAGE_COMPUTE_BIT);
84 command_buffer.dispatch(data.group_count_x, data.group_count_y, data.group_count_z);
85 }
86};
87} // namespace blender::gpu::render_graph
virtual void dispatch(uint32_t group_count_x, uint32_t group_count_y, uint32_t group_count_z)=0
void build_links(VKResourceStateTracker &resources, VKRenderGraphNodeLinks &node_links, const CreateInfo &create_info) override
void build_commands(VKCommandBufferInterface &command_buffer, Data &data, VKBoundPipelines &r_bound_pipelines) override
static void set_node_data(Node &node, const CreateInfo &create_info)
void vk_pipeline_data_copy(VKPipelineData &dst, const VKPipelineData &src)
void vk_pipeline_data_free(VKPipelineData &data)
void vk_pipeline_data_build_commands(VKCommandBufferInterface &command_buffer, const VKPipelineData &pipeline_data, VKBoundPipeline &r_bound_pipeline, VkPipelineBindPoint vk_pipeline_bind_point, VkShaderStageFlags vk_shader_stage_flags)
unsigned int uint32_t
Definition stdint.h:80
VKDispatchCreateInfo(const VKResourceAccessInfo &resources)
void build_links(VKResourceStateTracker &resources, VKRenderGraphNodeLinks &node_links) const