#ifndef CONTEXT_HPP #define CONTEXT_HPP #include #include #include #include #include "vuk/RenderGraph.hpp" #include #include #include #include #include namespace rog::render { struct context { bool rtx_supported = false; vk::raii::Context vk_context; vkb::Instance vkb_instance; vk::raii::Instance instance; vk::raii::SurfaceKHR surface; vuk::extra::PhysicalDevice physical_device; vk::raii::PhysicalDevice vk_physical_device; vkb::Device vkb_device; vk::raii::Device vk_device; vuk::Runtime runtime; vuk::DeviceSuperFrameResource superframe_resource; vuk::Allocator superframe_allocator; vuk::Swapchain swapchain; vuk::Compiler compiler = {}; std::string gpu_name; bool suspend = false; explicit context(ui::display *display); ~context(); context(const context &rhs) = delete; context &operator=(const context &rhs) = delete; context(context &&rhs) noexcept = delete; context &operator=(context &&rhs) noexcept = delete; [[nodiscard]] vuk::Unique allocate_buffer(std::size_t size, vuk::MemoryUsage usage, std::size_t alignment = 1); }; } // namespace rog::render #endif