From 05dc633a8c35221ce8d6abe6ddf027f8b0bab6c2 Mon Sep 17 00:00:00 2001
From: tfarley
Date: Mon, 18 May 2015 21:21:33 -0700
Subject: OpenGL renderer
---
src/citra/citra.cpp | 4 +
src/citra_qt/main.cpp | 9 +
src/citra_qt/main.h | 1 +
src/citra_qt/main.ui | 9 +
src/common/math_util.h | 4 +
src/core/hle/service/gsp_gpu.cpp | 9 +
src/core/hw/gpu.cpp | 16 +-
src/video_core/CMakeLists.txt | 12 +-
src/video_core/command_processor.cpp | 26 +-
src/video_core/debug_utils/debug_utils.cpp | 4 +
src/video_core/hwrasterizer_base.h | 40 +
src/video_core/pica.h | 37 +-
src/video_core/rasterizer.cpp | 20 +-
src/video_core/renderer_base.h | 4 +
src/video_core/renderer_opengl/gl_rasterizer.cpp | 879 +++++++++++++++++++++
src/video_core/renderer_opengl/gl_rasterizer.h | 207 +++++
.../renderer_opengl/gl_rasterizer_cache.cpp | 77 ++
.../renderer_opengl/gl_rasterizer_cache.h | 36 +
.../renderer_opengl/gl_resource_manager.cpp | 111 +++
.../renderer_opengl/gl_resource_manager.h | 79 ++
src/video_core/renderer_opengl/gl_shaders.h | 288 +++++++
src/video_core/renderer_opengl/gl_state.cpp | 160 ++++
src/video_core/renderer_opengl/gl_state.h | 70 ++
src/video_core/renderer_opengl/pica_to_gl.h | 105 +++
src/video_core/renderer_opengl/renderer_opengl.cpp | 61 +-
src/video_core/renderer_opengl/renderer_opengl.h | 16 +-
src/video_core/video_core.cpp | 3 +
src/video_core/video_core.h | 5 +
28 files changed, 2245 insertions(+), 47 deletions(-)
create mode 100644 src/video_core/hwrasterizer_base.h
create mode 100644 src/video_core/renderer_opengl/gl_rasterizer.cpp
create mode 100644 src/video_core/renderer_opengl/gl_rasterizer.h
create mode 100644 src/video_core/renderer_opengl/gl_rasterizer_cache.cpp
create mode 100644 src/video_core/renderer_opengl/gl_rasterizer_cache.h
create mode 100644 src/video_core/renderer_opengl/gl_resource_manager.cpp
create mode 100644 src/video_core/renderer_opengl/gl_resource_manager.h
create mode 100644 src/video_core/renderer_opengl/gl_state.cpp
create mode 100644 src/video_core/renderer_opengl/gl_state.h
create mode 100644 src/video_core/renderer_opengl/pica_to_gl.h
(limited to 'src')
diff --git a/src/citra/citra.cpp b/src/citra/citra.cpp
index ca93d5b91..ce8d7dd25 100644
--- a/src/citra/citra.cpp
+++ b/src/citra/citra.cpp
@@ -18,6 +18,8 @@
#include "citra/config.h"
#include "citra/emu_window/emu_window_glfw.h"
+#include "video_core/video_core.h"
+
/// Application entry point
int main(int argc, char **argv) {
Log::Filter log_filter(Log::Level::Debug);
@@ -34,6 +36,8 @@ int main(int argc, char **argv) {
std::string boot_filename = argv[1];
EmuWindow_GLFW* emu_window = new EmuWindow_GLFW;
+ VideoCore::g_hw_renderer_enabled = Settings::values.use_hw_renderer;
+
System::Init(emu_window);
Loader::ResultStatus load_result = Loader::LoadFile(boot_filename);
diff --git a/src/citra_qt/main.cpp b/src/citra_qt/main.cpp
index 24506deab..2ea33ebc5 100644
--- a/src/citra_qt/main.cpp
+++ b/src/citra_qt/main.cpp
@@ -44,6 +44,8 @@
#include "core/arm/disassembler/load_symbol_map.h"
#include "citra_qt/config.h"
+#include "video_core/video_core.h"
+
#include "version.h"
GMainWindow::GMainWindow() : emu_thread(nullptr)
@@ -123,6 +125,9 @@ GMainWindow::GMainWindow() : emu_thread(nullptr)
restoreState(settings.value("state").toByteArray());
render_window->restoreGeometry(settings.value("geometryRenderWindow").toByteArray());
+ ui.action_Use_Hardware_Renderer->setChecked(Settings::values.use_hw_renderer);
+ SetHardwareRendererEnabled(ui.action_Use_Hardware_Renderer->isChecked());
+
ui.action_Single_Window_Mode->setChecked(settings.value("singleWindowMode", true).toBool());
ToggleWindowMode();
@@ -135,6 +140,7 @@ GMainWindow::GMainWindow() : emu_thread(nullptr)
connect(ui.action_Start, SIGNAL(triggered()), this, SLOT(OnStartGame()));
connect(ui.action_Pause, SIGNAL(triggered()), this, SLOT(OnPauseGame()));
connect(ui.action_Stop, SIGNAL(triggered()), this, SLOT(OnStopGame()));
+ connect(ui.action_Use_Hardware_Renderer, SIGNAL(triggered(bool)), this, SLOT(SetHardwareRendererEnabled(bool)));
connect(ui.action_Single_Window_Mode, SIGNAL(triggered(bool)), this, SLOT(ToggleWindowMode()));
connect(ui.action_Hotkeys, SIGNAL(triggered()), this, SLOT(OnOpenHotkeysDialog()));
@@ -300,6 +306,9 @@ void GMainWindow::OnOpenHotkeysDialog()
dialog.exec();
}
+void GMainWindow::SetHardwareRendererEnabled(bool enabled) {
+ VideoCore::g_hw_renderer_enabled = enabled;
+}
void GMainWindow::ToggleWindowMode() {
if (ui.action_Single_Window_Mode->isChecked()) {
diff --git a/src/citra_qt/main.h b/src/citra_qt/main.h
index 3e29534fb..242b08c39 100644
--- a/src/citra_qt/main.h
+++ b/src/citra_qt/main.h
@@ -69,6 +69,7 @@ private slots:
void OnOpenHotkeysDialog();
void OnConfigure();
void OnDisplayTitleBars(bool);
+ void SetHardwareRendererEnabled(bool);
void ToggleWindowMode();
private:
diff --git a/src/citra_qt/main.ui b/src/citra_qt/main.ui
index 689806465..0942c28c8 100644
--- a/src/citra_qt/main.ui
+++ b/src/citra_qt/main.ui
@@ -52,6 +52,7 @@
+