Files
tanks-reborn/source/render/context.hpp
2026-03-28 23:14:41 -03:00

62 lines
1.3 KiB
C++

#ifndef TANKS_CONTEXT_HPP
#define TANKS_CONTEXT_HPP
#include <VkBootstrap.h>
#include <glm/glm.hpp>
#include <print>
#include <vulkan/vulkan_core.h>
#include <vulkan/vulkan_raii.hpp>
#include "vuk/RenderGraph.hpp"
#include <vuk/ImageAttachment.hpp>
#include <vuk/extra/SimpleInit.hpp>
#include <vuk/runtime/ThisThreadExecutor.hpp>
#include <vuk/runtime/vk/DeviceFrameResource.hpp>
#include <ui/display.hpp>
namespace trb::render {
struct context {
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 = {};
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<vuk::Buffer>
allocate_buffer(std::size_t size, vuk::MemoryUsage usage,
std::size_t alignment = 1);
};
} // namespace trb::render
#endif