aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/renderer_base.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/video_core/renderer_base.h')
-rw-r--r--src/video_core/renderer_base.h29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h
index 89a960eaf..235de23a1 100644
--- a/src/video_core/renderer_base.h
+++ b/src/video_core/renderer_base.h
@@ -13,28 +13,28 @@
class EmuWindow;
+namespace VideoCore {
+
class RendererBase : NonCopyable {
public:
/// Used to reference a framebuffer
enum kFramebuffer { kFramebuffer_VirtualXFB = 0, kFramebuffer_EFB, kFramebuffer_Texture };
- virtual ~RendererBase() {}
+ explicit RendererBase(EmuWindow& window);
+ virtual ~RendererBase();
/// Swap buffers (render frame)
virtual void SwapBuffers(boost::optional<const Tegra::FramebufferConfig&> framebuffer) = 0;
- /**
- * Set the emulator window to use for renderer
- * @param window EmuWindow handle to emulator window to use for rendering
- */
- virtual void SetWindow(EmuWindow* window) = 0;
-
/// Initialize the renderer
virtual bool Init() = 0;
/// Shutdown the renderer
virtual void ShutDown() = 0;
+ /// Updates the framebuffer layout of the contained render window handle.
+ void UpdateCurrentFramebufferLayout();
+
// Getter/setter functions:
// ------------------------
@@ -46,16 +46,21 @@ public:
return m_current_frame;
}
- VideoCore::RasterizerInterface* Rasterizer() const {
- return rasterizer.get();
+ RasterizerInterface& Rasterizer() {
+ return *rasterizer;
+ }
+
+ const RasterizerInterface& Rasterizer() const {
+ return *rasterizer;
}
void RefreshRasterizerSetting();
protected:
- std::unique_ptr<VideoCore::RasterizerInterface> rasterizer;
+ EmuWindow& render_window; ///< Reference to the render window handle.
+ std::unique_ptr<RasterizerInterface> rasterizer;
f32 m_current_fps = 0.0f; ///< Current framerate, should be set by the renderer
int m_current_frame = 0; ///< Current frame, should be set by the renderer
-
-private:
};
+
+} // namespace VideoCore