Vulkan: Add dynamic rendering to command buffer API

This PR adds the dynamic rendering function to the command buffer
API.

Pull Request: https://projects.blender.org/blender/blender/pulls/121645
This commit is contained in:
Jeroen Bakker
2024-05-10 10:32:55 +02:00
parent 2f05a24457
commit ac005ba20e
3 changed files with 23 additions and 17 deletions

View File

@@ -378,18 +378,22 @@ class CommandBufferLog : public VKCommandBufferInterface {
GTEST_FAIL() << __func__ << " not implemented!";
}
void begin_render_pass(const VkRenderPassBeginInfo *p_render_pass_begin,
VkSubpassContents contents) override
void begin_rendering(const VkRenderingInfo *p_rendering_info) override
{
UNUSED_VARS(p_render_pass_begin, contents);
EXPECT_TRUE(is_recording_);
GTEST_FAIL() << __func__ << " not implemented!";
std::stringstream ss;
ss << "begin_rendering(";
ss << "p_rendering_info=" << to_string(*p_rendering_info);
ss << ")";
log_.append(ss.str());
}
void end_render_pass() override
void end_rendering() override
{
EXPECT_TRUE(is_recording_);
GTEST_FAIL() << __func__ << " not implemented!";
std::stringstream ss;
ss << "end_rendering()";
log_.append(ss.str());
}
};

View File

@@ -315,14 +315,18 @@ void VKCommandBufferWrapper::push_constants(VkPipelineLayout layout,
vkCmdPushConstants(vk_command_buffer_, layout, stage_flags, offset, size, p_values);
}
void VKCommandBufferWrapper::begin_render_pass(const VkRenderPassBeginInfo *p_render_pass_begin,
VkSubpassContents contents)
void VKCommandBufferWrapper::begin_rendering(const VkRenderingInfo *p_rendering_info)
{
vkCmdBeginRenderPass(vk_command_buffer_, p_render_pass_begin, contents);
const VKDevice &device = VKBackend::get().device_get();
BLI_assert(device.functions.vkCmdBeginRendering);
device.functions.vkCmdBeginRendering(vk_command_buffer_, p_rendering_info);
}
void VKCommandBufferWrapper::end_render_pass()
void VKCommandBufferWrapper::end_rendering()
{
vkCmdEndRenderPass(vk_command_buffer_);
const VKDevice &device = VKBackend::get().device_get();
BLI_assert(device.functions.vkCmdEndRendering);
device.functions.vkCmdEndRendering(vk_command_buffer_);
}
} // namespace blender::gpu::render_graph

View File

@@ -114,9 +114,8 @@ class VKCommandBufferInterface {
uint32_t offset,
uint32_t size,
const void *p_values) = 0;
virtual void begin_render_pass(const VkRenderPassBeginInfo *p_render_pass_begin,
VkSubpassContents contents) = 0;
virtual void end_render_pass() = 0;
virtual void begin_rendering(const VkRenderingInfo *p_rendering_info) = 0;
virtual void end_rendering() = 0;
};
class VKCommandBufferWrapper : public VKCommandBufferInterface {
@@ -231,9 +230,8 @@ class VKCommandBufferWrapper : public VKCommandBufferInterface {
uint32_t offset,
uint32_t size,
const void *p_values) override;
void begin_render_pass(const VkRenderPassBeginInfo *p_render_pass_begin,
VkSubpassContents contents) override;
void end_render_pass() override;
void begin_rendering(const VkRenderingInfo *p_rendering_info) override;
void end_rendering() override;
};
} // namespace blender::gpu::render_graph