Toast Engine
Loading...
Searching...
No Matches
output_target_base.hpp
1
4
5#pragma once
6
7#include "vulkan_common.hpp"
8
9#include <cstdint>
10
11namespace renderer {
12
14 const void* chain = nullptr;
15 vk::Semaphore wait = nullptr;
16 vk::PipelineStageFlags wait_stage;
17 vk::Semaphore signal = nullptr;
18};
19
21public:
22 virtual ~IOutputTarget() = default;
23
24 [[nodiscard]]
25 virtual auto getExtent() const -> vk::Extent2D = 0;
26
27 [[nodiscard]]
28 virtual auto getColorFormat() const -> vk::Format = 0;
29
30 [[nodiscard]]
31 virtual auto getImageCount() const -> uint32_t = 0;
32
33 [[nodiscard]]
34 virtual auto getColorImage(uint32_t index) const -> const vk::Image& = 0;
35
36 [[nodiscard]]
37 virtual auto getColorAttachment(uint32_t index) const -> const vk::raii::ImageView& = 0;
38
39 virtual auto acquireNextImage(uint64_t timeout, vk::Semaphore image_available, vk::Fence in_flight_fence)
40 -> vk::ResultValue<uint32_t> = 0;
41
42 virtual auto present(uint32_t image_index, vk::Semaphore render_finished) -> vk::Result = 0;
43
44 [[nodiscard]]
45 virtual auto usesAcquirePresentSemaphores() const -> bool {
46 return true;
47 }
48
49 virtual void recordFinalize(vk::CommandBuffer command_buffer, uint32_t image_index) = 0;
50
51 virtual void onImageRenderComplete(uint32_t image_index) { (void)image_index; }
52
53 [[nodiscard]]
54 virtual auto submitSync(uint32_t image_index) -> OutputSubmitSync {
55 (void)image_index;
56 return {};
57 }
58
59 virtual void recreate(vk::Extent2D extent) = 0;
60
61 [[nodiscard]]
62 virtual auto isPresentable() const -> bool {
63 return true;
64 }
65};
66
67} // namespace renderer
Definition output_target_base.hpp:20
Definition output_target_base.hpp:13