Blender
V4.3
source
blender
gpu
vulkan
render_graph
nodes
vk_copy_image_to_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_command_buffer_wrapper.hh
"
12
#include "
../vk_render_graph_links.hh
"
13
#include "
../vk_resource_state_tracker.hh
"
14
#include "
vk_common.hh
"
15
#include "
vk_node_info.hh
"
16
17
namespace
blender::gpu::render_graph
{
21
struct
VKCopyImageToBufferData
{
22
VkImage
src_image
;
23
VkBuffer
dst_buffer
;
24
VkBufferImageCopy
region
;
25
};
26
27
class
VKCopyImageToBufferNode
:
public
VKNodeInfo
<VKNodeType::COPY_IMAGE_TO_BUFFER,
28
VKCopyImageToBufferData,
29
VKCopyImageToBufferData,
30
VK_PIPELINE_STAGE_TRANSFER_BIT,
31
VKResourceType::IMAGE | VKResourceType::BUFFER> {
32
public
:
40
template
<
typename
Node>
static
void
set_node_data
(
Node
&node,
const
CreateInfo
&create_info)
41
{
42
node.copy_image_to_buffer = create_info;
43
}
44
48
void
build_links
(
VKResourceStateTracker
&resources,
49
VKRenderGraphNodeLinks
&node_links,
50
const
CreateInfo
&create_info)
override
51
{
52
ResourceWithStamp
src_resource = resources.
get_image
(create_info.
src_image
);
53
ResourceWithStamp
dst_resource = resources.
get_buffer_and_increase_stamp
(
54
create_info.
dst_buffer
);
55
node_links.
inputs
.append({src_resource,
56
VK_ACCESS_TRANSFER_READ_BIT,
57
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
58
create_info.
region
.imageSubresource.aspectMask});
59
node_links.
outputs
.append(
60
{dst_resource, VK_ACCESS_TRANSFER_WRITE_BIT, VK_IMAGE_LAYOUT_UNDEFINED});
61
}
62
66
void
build_commands
(
VKCommandBufferInterface
&command_buffer,
67
Data
&data,
68
VKBoundPipelines
&
/*r_bound_pipelines*/
)
override
69
{
70
command_buffer.
copy_image_to_buffer
(
71
data.src_image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, data.dst_buffer, 1, &data.region);
72
}
73
};
74
}
// namespace blender::gpu::render_graph
blender::gpu::render_graph::VKCommandBufferInterface
Definition
vk_command_buffer_wrapper.hh:14
blender::gpu::render_graph::VKCommandBufferInterface::copy_image_to_buffer
virtual void copy_image_to_buffer(VkImage src_image, VkImageLayout src_image_layout, VkBuffer dst_buffer, uint32_t region_count, const VkBufferImageCopy *p_regions)=0
blender::gpu::render_graph::VKCopyImageToBufferNode
Definition
vk_copy_image_to_buffer_node.hh:31
blender::gpu::render_graph::VKCopyImageToBufferNode::build_links
void build_links(VKResourceStateTracker &resources, VKRenderGraphNodeLinks &node_links, const CreateInfo &create_info) override
Definition
vk_copy_image_to_buffer_node.hh:48
blender::gpu::render_graph::VKCopyImageToBufferNode::set_node_data
static void set_node_data(Node &node, const CreateInfo &create_info)
Definition
vk_copy_image_to_buffer_node.hh:40
blender::gpu::render_graph::VKCopyImageToBufferNode::build_commands
void build_commands(VKCommandBufferInterface &command_buffer, Data &data, VKBoundPipelines &) override
Definition
vk_copy_image_to_buffer_node.hh:66
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::VKResourceStateTracker::get_image
ResourceWithStamp get_image(VkImage vk_image) const
Definition
vk_resource_state_tracker.cc:155
blender::gpu::render_graph
Definition
vk_begin_query_node.hh:13
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::VKCopyImageToBufferData
Definition
vk_copy_image_to_buffer_node.hh:21
blender::gpu::render_graph::VKCopyImageToBufferData::src_image
VkImage src_image
Definition
vk_copy_image_to_buffer_node.hh:22
blender::gpu::render_graph::VKCopyImageToBufferData::dst_buffer
VkBuffer dst_buffer
Definition
vk_copy_image_to_buffer_node.hh:23
blender::gpu::render_graph::VKCopyImageToBufferData::region
VkBufferImageCopy region
Definition
vk_copy_image_to_buffer_node.hh:24
blender::gpu::render_graph::VKRenderGraphNodeLinks
Definition
vk_render_graph_links.hh:68
blender::gpu::render_graph::VKRenderGraphNodeLinks::inputs
Vector< VKRenderGraphLink > inputs
Definition
vk_render_graph_links.hh:70
blender::gpu::render_graph::VKRenderGraphNodeLinks::outputs
Vector< VKRenderGraphLink > outputs
Definition
vk_render_graph_links.hh:72
vk_command_buffer_wrapper.hh
vk_common.hh
vk_node_info.hh
vk_render_graph_links.hh
vk_resource_state_tracker.hh
Generated on Thu Feb 6 2025 07:36:39 for Blender by
doxygen
1.11.0