Blender V5.0
vk_clear_color_image_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
8
9#pragma once
10
11#include "vk_node_info.hh"
12
14
19 VkImage vk_image;
20 VkClearColorValue vk_clear_color_value;
21 VkImageSubresourceRange vk_image_subresource_range;
22};
23
24class VKClearColorImageNode : public VKNodeInfo<VKNodeType::CLEAR_COLOR_IMAGE,
25 VKClearColorImageData,
26 VKClearColorImageData,
27 VK_PIPELINE_STAGE_TRANSFER_BIT,
28 VKResourceType::IMAGE> {
29 public:
37 template<typename Node, typename Storage>
38 void set_node_data(Node &node, Storage & /* storage */, const CreateInfo &create_info)
39 {
40 node.clear_color_image = create_info;
41 }
42
47 VKRenderGraphNodeLinks &node_links,
48 const CreateInfo &create_info) override
49 {
51 node_links.outputs.append({resource,
52 VK_ACCESS_TRANSFER_WRITE_BIT,
53 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
54 VK_IMAGE_ASPECT_COLOR_BIT});
55 }
56
61 Data &data,
62 VKBoundPipelines & /*r_bound_pipelines*/) override
63 {
64 command_buffer.clear_color_image(data.vk_image,
65 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
66 &data.vk_clear_color_value,
67 1,
68 &data.vk_image_subresource_range);
69 }
70};
71} // namespace blender::gpu::render_graph
BMesh const char void * data
void build_commands(VKCommandBufferInterface &command_buffer, Data &data, VKBoundPipelines &) override
void set_node_data(Node &node, Storage &, const CreateInfo &create_info)
void build_links(VKResourceStateTracker &resources, VKRenderGraphNodeLinks &node_links, const CreateInfo &create_info) override
virtual void clear_color_image(VkImage image, VkImageLayout image_layout, const VkClearColorValue *p_color, uint32_t range_count, const VkImageSubresourceRange *p_ranges)=0
ResourceWithStamp get_image_and_increase_stamp(VkImage vk_image)
#define resource