Toast Engine
Toggle main menu visibility
Loading...
Searching...
No Matches
output_target_base.hpp
1
4
5
#pragma once
6
7
#include "vulkan_common.hpp"
8
9
#include <cstdint>
10
11
namespace
renderer {
12
13
struct
OutputSubmitSync
{
14
const
void
* chain =
nullptr
;
15
vk::Semaphore wait =
nullptr
;
16
vk::PipelineStageFlags wait_stage;
17
vk::Semaphore signal =
nullptr
;
18
};
19
20
class
IOutputTarget
{
21
public
:
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
renderer::IOutputTarget
Definition
output_target_base.hpp:20
renderer::OutputSubmitSync
Definition
output_target_base.hpp:13
engine
src
toast
renderer
output_target_base.hpp
Generated by
1.17.0