aboutsummaryrefslogtreecommitdiff
path: root/src/GPU3D.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/GPU3D.h')
-rw-r--r--src/GPU3D.h55
1 files changed, 29 insertions, 26 deletions
diff --git a/src/GPU3D.h b/src/GPU3D.h
index e4629b0..1aba0bd 100644
--- a/src/GPU3D.h
+++ b/src/GPU3D.h
@@ -20,6 +20,9 @@
#define GPU3D_H
#include <array>
+#include <memory>
+
+#include "GPU.h"
#include "Savestate.h"
namespace GPU3D
@@ -96,8 +99,6 @@ extern u32 RenderNumPolygons;
extern u64 Timestamp;
-extern int Renderer;
-
bool Init();
void DeInit();
void Reset();
@@ -131,40 +132,42 @@ void Write8(u32 addr, u8 val);
void Write16(u32 addr, u16 val);
void Write32(u32 addr, u32 val);
-namespace SoftRenderer
+class Renderer3D
{
+public:
+ Renderer3D(bool Accelerated);
+ virtual ~Renderer3D() {};
-bool Init();
-void DeInit();
-void Reset();
+ Renderer3D(const Renderer3D&) = delete;
+ Renderer3D& operator=(const Renderer3D&) = delete;
-void SetRenderSettings(GPU::RenderSettings& settings);
-void SetupRenderThread();
+ virtual bool Init() = 0;
+ virtual void DeInit() = 0;
+ virtual void Reset() = 0;
-void VCount144();
-void RenderFrame();
-u32* GetLine(int line);
+ // This "Accelerated" flag currently communicates if the framebuffer should
+ // be allocated differently and other little misc handlers. Ideally there
+ // are more detailed "traits" that we can ask of the Renderer3D type
+ const bool Accelerated;
-}
+ virtual void SetRenderSettings(GPU::RenderSettings& settings) = 0;
-#ifdef OGLRENDERER_ENABLED
-namespace GLRenderer
-{
+ virtual void VCount144() {};
-bool Init();
-void DeInit();
-void Reset();
-
-void SetRenderSettings(GPU::RenderSettings& settings);
+ virtual void RenderFrame() = 0;
+ virtual void RestartFrame() {};
+ virtual u32* GetLine(int line) = 0;
+};
-void RenderFrame();
-void PrepareCaptureFrame();
-u32* GetLine(int line);
-void SetupAccelFrame();
+extern int Renderer;
+extern std::unique_ptr<Renderer3D> CurrentRenderer;
}
-#endif
-}
+#include "GPU3D_Soft.h"
+
+#ifdef OGLRENDERER_ENABLED
+#include "GPU3D_OpenGL.h"
+#endif
#endif