Blender V4.3
vk_fill_buffer_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
11#include "vk_node_info.hh"
12
18 VkBuffer vk_buffer;
19 VkDeviceSize size;
21};
22
23class VKFillBufferNode : public VKNodeInfo<VKNodeType::FILL_BUFFER,
24 VKFillBufferData,
25 VKFillBufferData,
26 VK_PIPELINE_STAGE_TRANSFER_BIT,
27 VKResourceType::BUFFER> {
28 public:
36 template<typename Node> static void set_node_data(Node &node, const CreateInfo &create_info)
37 {
38 node.fill_buffer = create_info;
39 }
40
45 VKRenderGraphNodeLinks &node_links,
46 const CreateInfo &create_info) override
47 {
48 ResourceWithStamp resource = resources.get_buffer_and_increase_stamp(create_info.vk_buffer);
49 node_links.outputs.append({resource, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_UNDEFINED});
50 }
51
56 Data &data,
57 VKBoundPipelines & /*r_bound_pipelines*/) override
58 {
59 command_buffer.fill_buffer(data.vk_buffer, 0, data.size, data.data);
60 }
61};
62} // namespace blender::gpu::render_graph
virtual void fill_buffer(VkBuffer dst_buffer, VkDeviceSize dst_offset, VkDeviceSize size, uint32_t data)=0
void build_commands(VKCommandBufferInterface &command_buffer, Data &data, VKBoundPipelines &) override
void build_links(VKResourceStateTracker &resources, VKRenderGraphNodeLinks &node_links, const CreateInfo &create_info) override
static void set_node_data(Node &node, const CreateInfo &create_info)
ResourceWithStamp get_buffer_and_increase_stamp(VkBuffer vk_buffer)
unsigned int uint32_t
Definition stdint.h:80