Blender
V4.3
source
blender
gpu
vulkan
render_graph
nodes
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
13
namespace
blender::gpu::render_graph
{
17
struct
VKFillBufferData
{
18
VkBuffer
vk_buffer
;
19
VkDeviceSize
size
;
20
uint32_t
data
;
21
};
22
23
class
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
44
void
build_links
(
VKResourceStateTracker
&resources,
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
55
void
build_commands
(
VKCommandBufferInterface
&command_buffer,
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
blender::gpu::render_graph::VKCommandBufferInterface
Definition
vk_command_buffer_wrapper.hh:14
blender::gpu::render_graph::VKCommandBufferInterface::fill_buffer
virtual void fill_buffer(VkBuffer dst_buffer, VkDeviceSize dst_offset, VkDeviceSize size, uint32_t data)=0
blender::gpu::render_graph::VKFillBufferNode
Definition
vk_fill_buffer_node.hh:27
blender::gpu::render_graph::VKFillBufferNode::build_commands
void build_commands(VKCommandBufferInterface &command_buffer, Data &data, VKBoundPipelines &) override
Definition
vk_fill_buffer_node.hh:55
blender::gpu::render_graph::VKFillBufferNode::build_links
void build_links(VKResourceStateTracker &resources, VKRenderGraphNodeLinks &node_links, const CreateInfo &create_info) override
Definition
vk_fill_buffer_node.hh:44
blender::gpu::render_graph::VKFillBufferNode::set_node_data
static void set_node_data(Node &node, const CreateInfo &create_info)
Definition
vk_fill_buffer_node.hh:36
blender::gpu::render_graph::VKNodeInfo
Definition
vk_node_info.hh:159
blender::gpu::render_graph::VKResourceStateTracker
Definition
vk_resource_state_tracker.hh:121
blender::gpu::render_graph::VKResourceStateTracker::get_buffer_and_increase_stamp
ResourceWithStamp get_buffer_and_increase_stamp(VkBuffer vk_buffer)
Definition
vk_resource_state_tracker.cc:141
blender::gpu::render_graph
Definition
vk_begin_query_node.hh:13
uint32_t
unsigned int uint32_t
Definition
stdint.h:80
Node
Definition
graph/node.h:90
blender::gpu::render_graph::ResourceWithStamp
Definition
vk_resource_state_tracker.hh:61
blender::gpu::render_graph::VKBoundPipelines
Definition
vk_pipeline_data.hh:74
blender::gpu::render_graph::VKFillBufferData
Definition
vk_fill_buffer_node.hh:17
blender::gpu::render_graph::VKFillBufferData::vk_buffer
VkBuffer vk_buffer
Definition
vk_fill_buffer_node.hh:18
blender::gpu::render_graph::VKFillBufferData::data
uint32_t data
Definition
vk_fill_buffer_node.hh:20
blender::gpu::render_graph::VKFillBufferData::size
VkDeviceSize size
Definition
vk_fill_buffer_node.hh:19
blender::gpu::render_graph::VKRenderGraphNodeLinks
Definition
vk_render_graph_links.hh:68
blender::gpu::render_graph::VKRenderGraphNodeLinks::outputs
Vector< VKRenderGraphLink > outputs
Definition
vk_render_graph_links.hh:72
vk_node_info.hh
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0