Skip to content

Commit b72a74e

Browse files
authored
Unify vkb::RenderTarget and vkb::rendering::HPPRenderTarget into vkb::rendering::RenderTarget<bindingType> (#1501)
1 parent 42b87ae commit b72a74e

69 files changed

Lines changed: 697 additions & 843 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

framework/CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,12 @@ set(RENDERING_FILES
110110
rendering/render_target.h
111111
rendering/subpass.h
112112
rendering/hpp_pipeline_state.h
113-
rendering/hpp_render_target.h
114113
# Source files
115114
rendering/pipeline_state.cpp
116115
rendering/postprocessing_pipeline.cpp
117116
rendering/postprocessing_pass.cpp
118117
rendering/postprocessing_renderpass.cpp
119-
rendering/postprocessing_computepass.cpp
120-
rendering/render_target.cpp
121-
rendering/hpp_render_target.cpp)
118+
rendering/postprocessing_computepass.cpp)
122119

123120
set(RENDERING_SUBPASSES_FILES
124121
# Header files

framework/common/hpp_resource_caching.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
#include "core/hpp_render_pass.h"
2424
#include "core/hpp_shader_module.h"
2525
#include "hpp_resource_record.h"
26-
#include "rendering/hpp_render_target.h"
2726
#include "resource_caching.h"
2827
#include <vulkan/vulkan_hash.hpp>
2928

@@ -227,9 +226,9 @@ struct hash<vkb::core::HPPSubpassInfo>
227226
};
228227

229228
template <>
230-
struct hash<vkb::rendering::HPPAttachment>
229+
struct hash<vkb::rendering::AttachmentCpp>
231230
{
232-
size_t operator()(const vkb::rendering::HPPAttachment &attachment) const
231+
size_t operator()(const vkb::rendering::AttachmentCpp &attachment) const
233232
{
234233
size_t result = 0;
235234
vkb::hash_combine(result, attachment.format);
@@ -250,13 +249,13 @@ struct hash<vkb::rendering::HPPPipelineState>
250249
};
251250

252251
template <>
253-
struct hash<vkb::rendering::HPPRenderTarget>
252+
struct hash<vkb::rendering::RenderTargetCpp>
254253
{
255-
size_t operator()(const vkb::rendering::HPPRenderTarget &render_target) const
254+
size_t operator()(const vkb::rendering::RenderTargetCpp &render_target) const
256255
{
257256
std::size_t result = 0;
258257

259-
for (auto &view : render_target.get_views())
258+
for (auto const &view : render_target.get_views())
260259
{
261260
vkb::hash_combine(result, view.get_handle());
262261
vkb::hash_combine(result, view.get_image().get_handle());

framework/common/resource_caching.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright (c) 2018-2025, Arm Limited and Contributors
1+
/* Copyright (c) 2018-2026, Arm Limited and Contributors
22
*
33
* SPDX-License-Identifier: Apache-2.0
44
*
@@ -22,6 +22,7 @@
2222
#include "core/descriptor_set_layout.h"
2323
#include "core/framebuffer.h"
2424
#include "core/image.h"
25+
#include "core/image_view.h"
2526
#include "core/pipeline.h"
2627
#include "rendering/pipeline_state.h"
2728
#include "rendering/render_target.h"
@@ -123,9 +124,9 @@ struct hash<vkb::RenderPass>
123124
};
124125

125126
template <>
126-
struct hash<vkb::Attachment>
127+
struct hash<vkb::rendering::AttachmentC>
127128
{
128-
std::size_t operator()(const vkb::Attachment &attachment) const
129+
std::size_t operator()(const vkb::rendering::AttachmentC &attachment) const
129130
{
130131
std::size_t result = 0;
131132

@@ -437,13 +438,13 @@ struct hash<vkb::ColorBlendAttachmentState>
437438
};
438439

439440
template <>
440-
struct hash<vkb::RenderTarget>
441+
struct hash<vkb::rendering::RenderTargetC>
441442
{
442-
std::size_t operator()(const vkb::RenderTarget &render_target) const
443+
std::size_t operator()(const vkb::rendering::RenderTargetC &render_target) const
443444
{
444445
std::size_t result = 0;
445446

446-
for (auto &view : render_target.get_views())
447+
for (auto const &view : render_target.get_views())
447448
{
448449
vkb::hash_combine(result, view.get_handle());
449450
vkb::hash_combine(result, view.get_image().get_handle());
@@ -559,9 +560,9 @@ inline void hash_param<std::vector<uint8_t>>(
559560
}
560561

561562
template <>
562-
inline void hash_param<std::vector<Attachment>>(
563-
size_t &seed,
564-
const std::vector<Attachment> &value)
563+
inline void hash_param<std::vector<vkb::rendering::AttachmentC>>(
564+
size_t &seed,
565+
const std::vector<vkb::rendering::AttachmentC> &value)
565566
{
566567
for (auto &attachment : value)
567568
{

framework/core/allocated.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
/* Copyright (c) 2021-2025, NVIDIA CORPORATION. All rights reserved.
2-
* Copyright (c) 2024-2025, Bradley Austin Davis. All rights reserved.
3-
* Copyright (c) 2025, Arm Limited and Contributors
1+
/* Copyright (c) 2021-2026, NVIDIA CORPORATION. All rights reserved.
2+
* Copyright (c) 2024-2026, Bradley Austin Davis. All rights reserved.
3+
* Copyright (c) 2025-2026, Arm Limited and Contributors
44
*
55
* SPDX-License-Identifier: Apache-2.0
66
*
@@ -36,15 +36,15 @@ VmaAllocator &get_memory_allocator();
3636

3737
/**
3838
* @brief The non-templatized VMA initializer function, referenced by the template version to smooth
39-
* over the differences between the `vkb::Device` and `vkb::core::HPPDevice` classes.
39+
* over the differences between the `vkb::core::Device<bindingType` classes.
4040
* Idempotent, but should be paired with `shutdown`.
4141
* @param create_info The VMA allocator create info.
4242
*/
4343
void init(const VmaAllocatorCreateInfo &create_info);
4444

4545
/**
4646
* @brief Initializes the VMA allocator with the specified device, expressed
47-
* as the `vkb` wrapper class, which might be `vkb::Device` or `vkb::core::HPPDevice`.
47+
* as the `vkb` wrapper class, which might be `vkb::core::DeviceC` or `vkb::core::DeviceCpp`.
4848
* @tparam DeviceType The type of the device.
4949
* @param device The Vulkan device.
5050
*/

framework/core/command_buffer.h

Lines changed: 26 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
/* Copyright (c) 2019-2025, Arm Limited and Contributors
2-
* Copyright (c) 2024-2025, NVIDIA CORPORATION. All rights reserved.
1+
/* Copyright (c) 2019-2026, Arm Limited and Contributors
2+
* Copyright (c) 2024-2026, NVIDIA CORPORATION. All rights reserved.
33
*
44
* SPDX-License-Identifier: Apache-2.0
55
*
@@ -28,7 +28,6 @@
2828
#include "core/physical_device.h"
2929
#include "hpp_resource_binding_state.h"
3030
#include "rendering/hpp_pipeline_state.h"
31-
#include "rendering/hpp_render_target.h"
3231
#include "rendering/subpass.h"
3332
#include "resource_cache.h"
3433

@@ -94,9 +93,8 @@ class CommandBuffer
9493
using QueryPoolType = typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::core::HPPQueryPool, vkb::QueryPool>::type;
9594
using RasterizationStateType =
9695
typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::rendering::HPPRasterizationState, vkb::RasterizationState>::type;
97-
using RenderPassType = typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::core::HPPRenderPass, vkb::RenderPass>::type;
98-
using RenderTargetType = typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::rendering::HPPRenderTarget, vkb::RenderTarget>::type;
99-
using SamplerType = typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::core::HPPSampler, vkb::core::Sampler>::type;
96+
using RenderPassType = typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::core::HPPRenderPass, vkb::RenderPass>::type;
97+
using SamplerType = typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::core::HPPSampler, vkb::core::Sampler>::type;
10098
using VertexInputStateType =
10199
typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::rendering::HPPVertexInputState, vkb::VertexInputState>::type;
102100
using ViewportStateType = typename std::conditional<bindingType == vkb::BindingType::Cpp, vkb::rendering::HPPViewportState, vkb::ViewportState>::type;
@@ -130,16 +128,16 @@ class CommandBuffer
130128
void begin(CommandBufferUsageFlagsType flags, const RenderPassType *render_pass, const FramebufferType *framebuffer, uint32_t subpass_index);
131129

132130
void begin_query(QueryPoolType const &query_pool, uint32_t query, QueryControlFlagsType flags);
133-
void begin_render_pass(RenderTargetType const &render_target,
131+
void begin_render_pass(vkb::rendering::RenderTarget<bindingType> const &render_target,
134132
std::vector<LoadStoreInfoType> const &load_store_infos,
135133
std::vector<ClearValueType> const &clear_values,
136134
std::vector<std::unique_ptr<vkb::rendering::Subpass<bindingType>>> const &subpasses,
137135
SubpassContentsType contents = VK_SUBPASS_CONTENTS_INLINE);
138-
void begin_render_pass(RenderTargetType const &render_target,
139-
RenderPassType const &render_pass,
140-
FramebufferType const &framebuffer,
141-
std::vector<ClearValueType> const &clear_values,
142-
SubpassContentsType contents = vk::SubpassContents::eInline);
136+
void begin_render_pass(vkb::rendering::RenderTarget<bindingType> const &render_target,
137+
RenderPassType const &render_pass,
138+
FramebufferType const &framebuffer,
139+
std::vector<ClearValueType> const &clear_values,
140+
SubpassContentsType contents = vk::SubpassContents::eInline);
143141
void bind_buffer(vkb::core::Buffer<bindingType> const &buffer, DeviceSizeType offset, DeviceSizeType range, uint32_t set, uint32_t binding, uint32_t array_element);
144142
void bind_image(ImageViewType const &image_view, SamplerType const &sampler, uint32_t set, uint32_t binding, uint32_t array_element);
145143
void bind_image(ImageViewType const &image_view, uint32_t set, uint32_t binding, uint32_t array_element);
@@ -171,11 +169,11 @@ class CommandBuffer
171169
void execute_commands(vkb::core::CommandBuffer<bindingType> &secondary_command_buffer);
172170
void execute_commands(std::vector<std::shared_ptr<vkb::core::CommandBuffer<bindingType>>> &secondary_command_buffers);
173171
CommandBufferLevelType get_level() const;
174-
RenderPassType &get_render_pass(RenderTargetType const &render_target,
172+
RenderPassType &get_render_pass(vkb::rendering::RenderTarget<bindingType> const &render_target,
175173
std::vector<LoadStoreInfoType> const &load_store_infos,
176174
std::vector<std::unique_ptr<vkb::rendering::Subpass<bindingType>>> const &subpasses);
177175
void image_memory_barrier(ImageViewType const &image_view, ImageMemoryBarrierType const &memory_barrier) const;
178-
void image_memory_barrier(RenderTargetType &render_target, uint32_t view_index, ImageMemoryBarrierType const &memory_barrier) const;
176+
void image_memory_barrier(vkb::rendering::RenderTarget<bindingType> &render_target, uint32_t view_index, ImageMemoryBarrierType const &memory_barrier) const;
179177
void next_subpass();
180178

181179
/**
@@ -238,7 +236,7 @@ class CommandBuffer
238236
vkb::core::HPPRenderPass const *render_pass,
239237
vkb::core::HPPFramebuffer const *framebuffer,
240238
uint32_t subpass_index);
241-
void begin_render_pass_impl(vkb::rendering::HPPRenderTarget const &render_target,
239+
void begin_render_pass_impl(vkb::rendering::RenderTargetCpp const &render_target,
242240
vkb::core::HPPRenderPass const &render_pass,
243241
vkb::core::HPPFramebuffer const &framebuffer,
244242
std::vector<vk::ClearValue> const &clear_values,
@@ -256,7 +254,7 @@ class CommandBuffer
256254
void flush_descriptor_state_impl(vk::PipelineBindPoint pipeline_bind_point);
257255
void flush_pipeline_state_impl(vkb::core::DeviceCpp &device, vk::PipelineBindPoint pipeline_bind_point);
258256
vkb::core::HPPRenderPass &get_render_pass_impl(vkb::core::DeviceCpp &device,
259-
vkb::rendering::HPPRenderTarget const &render_target,
257+
vkb::rendering::RenderTargetCpp const &render_target,
260258
std::vector<vkb::common::HPPLoadStoreInfo> const &load_store_infos,
261259
std::vector<std::unique_ptr<vkb::rendering::SubpassCpp>> const &subpasses);
262260
void image_memory_barrier_impl(vkb::core::HPPImageView const &image_view, vkb::common::HPPImageMemoryBarrier const &memory_barrier) const;
@@ -407,7 +405,7 @@ inline void CommandBuffer<bindingType>::begin_query(QueryPoolType const &query_p
407405
}
408406

409407
template <vkb::BindingType bindingType>
410-
inline void CommandBuffer<bindingType>::begin_render_pass(RenderTargetType const &render_target,
408+
inline void CommandBuffer<bindingType>::begin_render_pass(vkb::rendering::RenderTarget<bindingType> const &render_target,
411409
std::vector<LoadStoreInfoType> const &load_store_infos,
412410
std::vector<ClearValueType> const &clear_values,
413411
std::vector<std::unique_ptr<vkb::rendering::Subpass<bindingType>>> const &subpasses,
@@ -425,19 +423,19 @@ inline void CommandBuffer<bindingType>::begin_render_pass(RenderTargetType const
425423
}
426424

427425
template <vkb::BindingType bindingType>
428-
inline void CommandBuffer<bindingType>::begin_render_pass(RenderTargetType const &render_target,
429-
RenderPassType const &render_pass,
430-
FramebufferType const &framebuffer,
431-
std::vector<ClearValueType> const &clear_values,
432-
SubpassContentsType contents)
426+
inline void CommandBuffer<bindingType>::begin_render_pass(vkb::rendering::RenderTarget<bindingType> const &render_target,
427+
RenderPassType const &render_pass,
428+
FramebufferType const &framebuffer,
429+
std::vector<ClearValueType> const &clear_values,
430+
SubpassContentsType contents)
433431
{
434432
if constexpr (bindingType == vkb::BindingType::Cpp)
435433
{
436434
begin_render_pass_impl(render_target, render_pass, framebuffer, clear_values, contents);
437435
}
438436
else
439437
{
440-
begin_render_pass_impl(reinterpret_cast<vkb::rendering::HPPRenderTarget const &>(render_target),
438+
begin_render_pass_impl(reinterpret_cast<vkb::rendering::RenderTargetCpp const &>(render_target),
441439
reinterpret_cast<vkb::core::HPPRenderPass const &>(render_pass),
442440
reinterpret_cast<vkb::core::HPPFramebuffer const &>(framebuffer),
443441
reinterpret_cast<std::vector<vk::ClearValue> const &>(clear_values),
@@ -446,7 +444,7 @@ inline void CommandBuffer<bindingType>::begin_render_pass(RenderTargetType const
446444
}
447445

448446
template <vkb::BindingType bindingType>
449-
inline void CommandBuffer<bindingType>::begin_render_pass_impl(vkb::rendering::HPPRenderTarget const &render_target,
447+
inline void CommandBuffer<bindingType>::begin_render_pass_impl(vkb::rendering::RenderTargetCpp const &render_target,
450448
vkb::core::HPPRenderPass const &render_pass,
451449
vkb::core::HPPFramebuffer const &framebuffer,
452450
std::vector<vk::ClearValue> const &clear_values,
@@ -876,7 +874,7 @@ inline void CommandBuffer<bindingType>::execute_commands_impl(std::vector<std::s
876874

877875
template <vkb::BindingType bindingType>
878876
inline typename vkb::core::CommandBuffer<bindingType>::RenderPassType &
879-
CommandBuffer<bindingType>::get_render_pass(RenderTargetType const &render_target,
877+
CommandBuffer<bindingType>::get_render_pass(vkb::rendering::RenderTarget<bindingType> const &render_target,
880878
std::vector<LoadStoreInfoType> const &load_store_infos,
881879
std::vector<std::unique_ptr<vkb::rendering::Subpass<bindingType>>> const &subpasses)
882880
{
@@ -888,7 +886,7 @@ inline typename vkb::core::CommandBuffer<bindingType>::RenderPassType &
888886
{
889887
return reinterpret_cast<vkb::RenderPass &>(
890888
get_render_pass_impl(reinterpret_cast<vkb::core::DeviceCpp &>(this->get_device()),
891-
reinterpret_cast<vkb::rendering::HPPRenderTarget const &>(render_target),
889+
reinterpret_cast<vkb::rendering::RenderTargetCpp const &>(render_target),
892890
reinterpret_cast<std::vector<vkb::common::HPPLoadStoreInfo> const &>(load_store_infos),
893891
reinterpret_cast<std::vector<std::unique_ptr<vkb::rendering::SubpassCpp>> const &>(subpasses)));
894892
}
@@ -897,7 +895,7 @@ inline typename vkb::core::CommandBuffer<bindingType>::RenderPassType &
897895
template <vkb::BindingType bindingType>
898896
inline vkb::core::HPPRenderPass &
899897
CommandBuffer<bindingType>::get_render_pass_impl(vkb::core::DeviceCpp &device,
900-
vkb::rendering::HPPRenderTarget const &render_target,
898+
vkb::rendering::RenderTargetCpp const &render_target,
901899
std::vector<vkb::common::HPPLoadStoreInfo> const &load_store_infos,
902900
std::vector<std::unique_ptr<vkb::rendering::SubpassCpp>> const &subpasses)
903901
{
@@ -923,7 +921,7 @@ inline vkb::core::HPPRenderPass &
923921
}
924922

925923
template <vkb::BindingType bindingType>
926-
inline void CommandBuffer<bindingType>::image_memory_barrier(RenderTargetType &render_target, uint32_t view_index, ImageMemoryBarrierType const &memory_barrier) const
924+
inline void CommandBuffer<bindingType>::image_memory_barrier(vkb::rendering::RenderTarget<bindingType> &render_target, uint32_t view_index, ImageMemoryBarrierType const &memory_barrier) const
927925
{
928926
auto const &image_view = render_target.get_views()[view_index];
929927

framework/core/framebuffer.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright (c) 2019-2025, Arm Limited and Contributors
1+
/* Copyright (c) 2019-2026, Arm Limited and Contributors
22
*
33
* SPDX-License-Identifier: Apache-2.0
44
*
@@ -16,8 +16,9 @@
1616
*/
1717

1818
#include "framebuffer.h"
19-
19+
#include "core/image_view.h"
2020
#include "device.h"
21+
#include "rendering/render_target.h"
2122

2223
namespace vkb
2324
{
@@ -31,7 +32,7 @@ const VkExtent2D &Framebuffer::get_extent() const
3132
return extent;
3233
}
3334

34-
Framebuffer::Framebuffer(vkb::core::DeviceC &device, const RenderTarget &render_target, const RenderPass &render_pass) :
35+
Framebuffer::Framebuffer(vkb::core::DeviceC &device, const vkb::rendering::RenderTargetC &render_target, const RenderPass &render_pass) :
3536
device{device},
3637
extent{render_target.get_extent()}
3738
{

0 commit comments

Comments
 (0)