diff options
| -rw-r--r-- | src/video_core/renderer_base.cpp | 8 | ||||
| -rw-r--r-- | src/video_core/renderer_base.h | 3 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.cpp | 13 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/renderer_opengl.h | 2 |
4 files changed, 12 insertions, 14 deletions
diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp index afd86a83a..645d1521a 100644 --- a/src/video_core/renderer_base.cpp +++ b/src/video_core/renderer_base.cpp | |||
| @@ -2,7 +2,6 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <memory> | ||
| 6 | #include "core/frontend/emu_window.h" | 5 | #include "core/frontend/emu_window.h" |
| 7 | #include "core/settings.h" | 6 | #include "core/settings.h" |
| 8 | #include "video_core/renderer_base.h" | 7 | #include "video_core/renderer_base.h" |
| @@ -17,18 +16,11 @@ RendererBase::RendererBase(Core::Frontend::EmuWindow& window) : render_window{wi | |||
| 17 | RendererBase::~RendererBase() = default; | 16 | RendererBase::~RendererBase() = default; |
| 18 | 17 | ||
| 19 | void RendererBase::RefreshBaseSettings() { | 18 | void RendererBase::RefreshBaseSettings() { |
| 20 | RefreshRasterizerSetting(); | ||
| 21 | UpdateCurrentFramebufferLayout(); | 19 | UpdateCurrentFramebufferLayout(); |
| 22 | 20 | ||
| 23 | renderer_settings.use_framelimiter = Settings::values.toggle_framelimit; | 21 | renderer_settings.use_framelimiter = Settings::values.toggle_framelimit; |
| 24 | } | 22 | } |
| 25 | 23 | ||
| 26 | void RendererBase::RefreshRasterizerSetting() { | ||
| 27 | if (rasterizer == nullptr) { | ||
| 28 | rasterizer = std::make_unique<RasterizerOpenGL>(render_window); | ||
| 29 | } | ||
| 30 | } | ||
| 31 | |||
| 32 | void RendererBase::UpdateCurrentFramebufferLayout() { | 24 | void RendererBase::UpdateCurrentFramebufferLayout() { |
| 33 | const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout(); | 25 | const Layout::FramebufferLayout& layout = render_window.GetFramebufferLayout(); |
| 34 | 26 | ||
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h index d9f16b8e6..2a357f9d0 100644 --- a/src/video_core/renderer_base.h +++ b/src/video_core/renderer_base.h | |||
| @@ -58,9 +58,6 @@ public: | |||
| 58 | void RefreshBaseSettings(); | 58 | void RefreshBaseSettings(); |
| 59 | 59 | ||
| 60 | protected: | 60 | protected: |
| 61 | /// Refreshes settings specific to the rasterizer. | ||
| 62 | void RefreshRasterizerSetting(); | ||
| 63 | |||
| 64 | Core::Frontend::EmuWindow& render_window; ///< Reference to the render window handle. | 61 | Core::Frontend::EmuWindow& render_window; ///< Reference to the render window handle. |
| 65 | std::unique_ptr<RasterizerInterface> rasterizer; | 62 | std::unique_ptr<RasterizerInterface> rasterizer; |
| 66 | f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer | 63 | f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index bf30eda6d..4a23a931e 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include "core/memory.h" | 16 | #include "core/memory.h" |
| 17 | #include "core/settings.h" | 17 | #include "core/settings.h" |
| 18 | #include "core/tracer/recorder.h" | 18 | #include "core/tracer/recorder.h" |
| 19 | #include "video_core/renderer_opengl/gl_rasterizer.h" | ||
| 19 | #include "video_core/renderer_opengl/renderer_opengl.h" | 20 | #include "video_core/renderer_opengl/renderer_opengl.h" |
| 20 | #include "video_core/utils.h" | 21 | #include "video_core/utils.h" |
| 21 | 22 | ||
| @@ -142,7 +143,6 @@ void RendererOpenGL::SwapBuffers(boost::optional<const Tegra::FramebufferConfig& | |||
| 142 | 143 | ||
| 143 | // Restore the rasterizer state | 144 | // Restore the rasterizer state |
| 144 | prev_state.Apply(); | 145 | prev_state.Apply(); |
| 145 | RefreshRasterizerSetting(); | ||
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | /** | 148 | /** |
| @@ -276,6 +276,14 @@ void RendererOpenGL::InitOpenGLObjects() { | |||
| 276 | LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture); | 276 | LoadColorToActiveGLTexture(0, 0, 0, 0, screen_info.texture); |
| 277 | } | 277 | } |
| 278 | 278 | ||
| 279 | void RendererOpenGL::CreateRasterizer() { | ||
| 280 | if (rasterizer) { | ||
| 281 | return; | ||
| 282 | } | ||
| 283 | |||
| 284 | rasterizer = std::make_unique<RasterizerOpenGL>(render_window); | ||
| 285 | } | ||
| 286 | |||
| 279 | void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture, | 287 | void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture, |
| 280 | const Tegra::FramebufferConfig& framebuffer) { | 288 | const Tegra::FramebufferConfig& framebuffer) { |
| 281 | 289 | ||
| @@ -463,8 +471,7 @@ bool RendererOpenGL::Init() { | |||
| 463 | } | 471 | } |
| 464 | 472 | ||
| 465 | InitOpenGLObjects(); | 473 | InitOpenGLObjects(); |
| 466 | 474 | CreateRasterizer(); | |
| 467 | RefreshRasterizerSetting(); | ||
| 468 | 475 | ||
| 469 | return true; | 476 | return true; |
| 470 | } | 477 | } |
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h index a5eab6997..6f048ed06 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.h +++ b/src/video_core/renderer_opengl/renderer_opengl.h | |||
| @@ -59,6 +59,8 @@ public: | |||
| 59 | 59 | ||
| 60 | private: | 60 | private: |
| 61 | void InitOpenGLObjects(); | 61 | void InitOpenGLObjects(); |
| 62 | void CreateRasterizer(); | ||
| 63 | |||
| 62 | void ConfigureFramebufferTexture(TextureInfo& texture, | 64 | void ConfigureFramebufferTexture(TextureInfo& texture, |
| 63 | const Tegra::FramebufferConfig& framebuffer); | 65 | const Tegra::FramebufferConfig& framebuffer); |
| 64 | void DrawScreen(); | 66 | void DrawScreen(); |