summaryrefslogtreecommitdiff
path: root/src/video_core/renderer_base.h
diff options
context:
space:
mode:
authorGravatar Lioncash2018-08-03 12:55:58 -0400
committerGravatar Lioncash2018-08-04 02:36:57 -0400
commit6030c5ce412e44ddcfe0a31c6747a017166bf33d (patch)
tree2b79fa019f07e601b5170e92e93b69788ffde949 /src/video_core/renderer_base.h
parentMerge pull request #911 from lioncash/prototype (diff)
downloadyuzu-6030c5ce412e44ddcfe0a31c6747a017166bf33d.tar.gz
yuzu-6030c5ce412e44ddcfe0a31c6747a017166bf33d.tar.xz
yuzu-6030c5ce412e44ddcfe0a31c6747a017166bf33d.zip
video_core: Eliminate the g_renderer global variable
We move the initialization of the renderer to the core class, while keeping the creation of it and any other specifics in video_core. This way we can ensure that the renderer is initialized and doesn't give unfettered access to the renderer. This also makes dependencies on types more explicit. For example, the GPU class doesn't need to depend on the existence of a renderer, it only needs to care about whether or not it has a rasterizer, but since it was accessing the global variable, it was also making the renderer a part of its dependency chain. By adjusting the interface, we can get rid of this dependency.
Diffstat (limited to 'src/video_core/renderer_base.h')
-rw-r--r--src/video_core/renderer_base.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h
index 1cb161b7f..effb9aed3 100644
--- a/src/video_core/renderer_base.h
+++ b/src/video_core/renderer_base.h
@@ -13,6 +13,8 @@
13 13
14class EmuWindow; 14class EmuWindow;
15 15
16namespace VideoCore {
17
16class RendererBase : NonCopyable { 18class RendererBase : NonCopyable {
17public: 19public:
18 /// Used to reference a framebuffer 20 /// Used to reference a framebuffer
@@ -44,7 +46,7 @@ public:
44 return m_current_frame; 46 return m_current_frame;
45 } 47 }
46 48
47 VideoCore::RasterizerInterface* Rasterizer() const { 49 RasterizerInterface* Rasterizer() const {
48 return rasterizer.get(); 50 return rasterizer.get();
49 } 51 }
50 52
@@ -52,7 +54,9 @@ public:
52 54
53protected: 55protected:
54 EmuWindow& render_window; ///< Reference to the render window handle. 56 EmuWindow& render_window; ///< Reference to the render window handle.
55 std::unique_ptr<VideoCore::RasterizerInterface> rasterizer; 57 std::unique_ptr<RasterizerInterface> rasterizer;
56 f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer 58 f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer
57 int m_current_frame = 0; ///< Current frame, should be set by the renderer 59 int m_current_frame = 0; ///< Current frame, should be set by the renderer
58}; 60};
61
62} // namespace VideoCore