3#include "vulkan/vulkan.hpp"
14class VKCommandManager;
16class BackendResourceManager;
50 void setup_backend_service(
const std::shared_ptr<Registry::Service::DisplayService>& display_service);
61 bool register_window(const
std::shared_ptr<
Window>& window);
62 void unregister_window(const
std::shared_ptr<
Window>& window);
63 [[nodiscard]]
bool is_window_registered(const
std::shared_ptr<
Window>& window) const;
68 void render_window(const
std::shared_ptr<
Window>& window);
69 void render_all_windows();
70 void handle_window_resize();
72 void submit_and_present(
74 const vk::CommandBuffer& command_buffer);
83 [[nodiscard]] uint32_t get_swapchain_image_count(const
std::shared_ptr<
Window>& window) const;
Manages Vulkan resources (buffers, images, samplers) for the graphics backend.
~BackendWindowHandler()=default
BackendWindowHandler(BackendWindowHandler &&) noexcept=default
VKCommandManager & m_command_manager
BackendWindowHandler & operator=(const BackendWindowHandler &)=delete
std::vector< WindowRenderContext > m_window_contexts
BackendWindowHandler(const BackendWindowHandler &)=delete
Manages Vulkan command pools and command buffers.
High-level wrapper for Vulkan instance and device.
Platform-agnostic window wrapper.
std::vector< vk::Semaphore > image_available
uint32_t current_image_index
std::shared_ptr< Window > window
std::vector< vk::Fence > in_flight
std::unique_ptr< VKSwapchain > swapchain
void cleanup(VKContext &context)
WindowRenderContext(WindowRenderContext &&)=default
std::vector< vk::Semaphore > render_finished
WindowRenderContext()=default
std::vector< vk::CommandBuffer > clear_command_buffers
std::shared_ptr< VKImage > depth_image
WindowRenderContext & operator=(WindowRenderContext &&)=default
WindowRenderContext(const WindowRenderContext &)=delete
WindowRenderContext & operator=(const WindowRenderContext &)=delete
~WindowRenderContext()=default