Add SDL_Window to initGraphicsContext prototype

This value is needed for vulkan to properly allocate a surface, and would benefit OpenGL to move more of its initialization code into here rather than in `emulator.cpp`.
This commit is contained in:
Wunkolo 2023-07-18 22:00:28 -07:00
parent 870b6a21bf
commit b048d4dd6e
9 changed files with 16 additions and 13 deletions

View file

@ -45,7 +45,7 @@ void RendererGL::reset() {
}
}
void RendererGL::initGraphicsContext() {
void RendererGL::initGraphicsContext(SDL_Window* window) {
gl.reset();
auto gl_resources = cmrc::RendererGL::get_filesystem();

View file

@ -5,7 +5,7 @@ RendererNull::~RendererNull() {}
void RendererNull::reset() {}
void RendererNull::display() {}
void RendererNull::initGraphicsContext() {}
void RendererNull::initGraphicsContext(SDL_Window* window) {}
void RendererNull::clearBuffer(u32 startAddress, u32 endAddress, u32 value, u32 control) {}
void RendererNull::displayTransfer(u32 inputAddr, u32 outputAddr, u32 inputSize, u32 outputSize, u32 flags) {}
void RendererNull::drawVertices(PICA::PrimType primType, std::span<const PICA::Vertex> vertices) {}

View file

@ -1,5 +1,6 @@
#include "renderer_vk/renderer_vk.hpp"
#include "SDL_vulkan.h"
#include "helpers.hpp"
#include "renderer_vk/vk_debug.hpp"
@ -11,7 +12,7 @@ void RendererVK::reset() {}
void RendererVK::display() {}
void RendererVK::initGraphicsContext() {
void RendererVK::initGraphicsContext(SDL_Window* window) {
// Resolve all function pointers
static vk::DynamicLoader dl;
VULKAN_HPP_DEFAULT_DISPATCHER.init(dl.getProcAddress<PFN_vkGetInstanceProcAddr>("vkGetInstanceProcAddr"));
@ -129,6 +130,9 @@ void RendererVK::initGraphicsContext() {
// Initialize device-specific function pointers
VULKAN_HPP_DEFAULT_DISPATCHER.init(device.get());
VkSurfaceKHR surface;
SDL_Vulkan_CreateSurface(window, instance.get(), &surface);
}
void RendererVK::clearBuffer(u32 startAddress, u32 endAddress, u32 value, u32 control) {}

View file

@ -54,7 +54,7 @@ Emulator::Emulator()
#ifdef PANDA3DS_ENABLE_VULKAN
if (config.rendererType == RendererType::Vulkan) {
// window = SDL_CreateWindow("Alber", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_VULKAN);
window = SDL_CreateWindow("Alber", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_VULKAN);
if (window == nullptr) {
// Helpers::panic("Window creation failed: %s", SDL_GetError());
@ -457,7 +457,7 @@ bool Emulator::loadELF(std::ifstream& file) {
}
// Reset our graphics context and initialize the GPU's graphics context
void Emulator::initGraphicsContext() { gpu.initGraphicsContext(); }
void Emulator::initGraphicsContext() { gpu.initGraphicsContext(window); }
#ifdef PANDA3DS_ENABLE_HTTP_SERVER
void Emulator::pollHttpServer() {