#include "renderer.hpp" #include "vulkan_api.hpp" class GPU; class RendererVK final : public Renderer { vk::UniqueInstance instance = {}; vk::PhysicalDevice physicalDevice = {}; vk::UniqueDevice device = {}; vk::UniqueSurfaceKHR surface = {}; vk::UniqueDebugUtilsMessengerEXT debugMessenger; public: RendererVK(GPU& gpu, const std::array& internalRegs); ~RendererVK() override; void reset() override; void display() override; void initGraphicsContext(SDL_Window* window) override; void clearBuffer(u32 startAddress, u32 endAddress, u32 value, u32 control) override; void displayTransfer(u32 inputAddr, u32 outputAddr, u32 inputSize, u32 outputSize, u32 flags) override; void drawVertices(PICA::PrimType primType, std::span vertices) override; void screenshot(const std::string& name) override; };