diff --git a/include/renderer.hpp b/include/renderer.hpp index 8381c279..6cb21103 100644 --- a/include/renderer.hpp +++ b/include/renderer.hpp @@ -1,6 +1,7 @@ #pragma once #include #include +#include #include "PICA/pica_vertex.hpp" #include "PICA/regs.hpp" @@ -12,9 +13,6 @@ enum class RendererType : s8 { OpenGL = 1, }; -std::optional fromString(std::string inString); -const char* toString(RendererType rendererType); - class GPU; class Renderer { @@ -37,6 +35,8 @@ class Renderer { virtual ~Renderer(); static constexpr u32 vertexBufferSize = 0x10000; + static std::optional typeFromString(std::string inString); + static const char* typeToString(RendererType rendererType); virtual void reset() = 0; virtual void display() = 0; // Display the 3DS screen contents to the window diff --git a/src/config.cpp b/src/config.cpp index 412a96f6..06995252 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -37,13 +37,13 @@ void EmulatorConfig::load(const std::filesystem::path& path) { auto rendererResult = toml::expect(gpu, "Renderer"); if (rendererResult.is_ok()) { auto rendererName = rendererResult.unwrap(); - if (auto configRendererType = fromString(rendererName); configRendererType.has_value()) { + if (auto configRendererType = Renderer::typeFromString(rendererName); configRendererType.has_value()) { rendererType = configRendererType.value(); } else { Helpers::warn("Invalid renderer specified: %s\n", rendererName.c_str()); } } else { - Helpers::warn("Renderer not specified: %s\n", rendererResult.unwrap_err()); + Helpers::warn("Renderer not specified: %s\n", rendererResult.unwrap_err().c_str()); } shaderJitEnabled = toml::find_or(gpu, "EnableShaderJIT", false); @@ -69,7 +69,7 @@ void EmulatorConfig::save(const std::filesystem::path& path) { printf("Saving new configuration file %s\n", path.string().c_str()); } - data["GPU"]["Renderer"] = toString(rendererType); + data["GPU"]["Renderer"] = Renderer::typeToString(rendererType); data["GPU"]["EnableShaderJIT"] = shaderJitEnabled; std::ofstream file(path, std::ios::out); diff --git a/src/core/PICA/gpu.cpp b/src/core/PICA/gpu.cpp index 92ac60d9..afc2601e 100644 --- a/src/core/PICA/gpu.cpp +++ b/src/core/PICA/gpu.cpp @@ -32,7 +32,7 @@ GPU::GPU(Memory& mem, EmulatorConfig& config) : mem(mem), config(config) { } #endif default: { - Helpers::panic("Rendering backend not supported: %s", toString(config.rendererType)); + Helpers::panic("Rendering backend not supported: %s", Renderer::typeToString(config.rendererType)); break; } } diff --git a/src/renderer.cpp b/src/renderer.cpp index a000bb85..c76806fd 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -1,6 +1,9 @@ #include "renderer.hpp" -std::optional fromString(std::string inString) { +Renderer::Renderer(GPU& gpu, const std::array& internalRegs) : gpu(gpu), regs(internalRegs) {} +Renderer::~Renderer() {} + +std::optional Renderer::typeFromString(std::string inString) { // case-insensitive std::transform(inString.begin(), inString.end(), inString.begin(), [](unsigned char c) { return std::tolower(c); }); @@ -12,13 +15,10 @@ std::optional fromString(std::string inString) { return std::nullopt; } -const char* toString(RendererType rendererType) { +const char* Renderer::typeToString(RendererType rendererType) { switch (rendererType) { case RendererType::Null: return "null"; case RendererType::OpenGL: return "opengl"; default: return "Invalid"; } -} - -Renderer::Renderer(GPU& gpu, const std::array& internalRegs) : gpu(gpu), regs(internalRegs) {} -Renderer::~Renderer() {} \ No newline at end of file +} \ No newline at end of file