62 lines
1.3 KiB
C++
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
|