2013-12-19 17:10:14 +00:00
|
|
|
#pragma once
|
|
|
|
#include "drkPvr.h"
|
|
|
|
#include "ta_ctx.h"
|
|
|
|
|
|
|
|
extern u32 VertexCount;
|
|
|
|
extern u32 FrameCount;
|
|
|
|
|
2019-02-25 16:52:53 +00:00
|
|
|
void rend_init_renderer();
|
|
|
|
void rend_term_renderer();
|
|
|
|
void rend_stop_renderer();
|
2013-12-19 17:10:14 +00:00
|
|
|
void rend_vblank();
|
|
|
|
void rend_start_render();
|
|
|
|
void rend_end_render();
|
2018-09-23 14:18:35 +00:00
|
|
|
void rend_cancel_emu_wait();
|
2019-02-25 16:52:53 +00:00
|
|
|
bool rend_single_frame();
|
2019-05-17 15:13:48 +00:00
|
|
|
void rend_swap_frame();
|
2019-05-25 16:48:00 +00:00
|
|
|
void *rend_thread(void *);
|
2013-12-19 17:10:14 +00:00
|
|
|
|
|
|
|
void rend_set_fb_scale(float x,float y);
|
2015-05-08 15:44:27 +00:00
|
|
|
void rend_resize(int width, int height);
|
2013-12-19 17:10:14 +00:00
|
|
|
void rend_text_invl(vram_block* bl);
|
|
|
|
|
2014-09-30 09:00:46 +00:00
|
|
|
#ifdef GLuint
|
|
|
|
GLuint
|
|
|
|
#else
|
|
|
|
u32
|
|
|
|
#endif
|
|
|
|
GetTexture(TSP tsp,TCW tcw);
|
2013-12-19 17:10:14 +00:00
|
|
|
|
|
|
|
|
|
|
|
///////
|
|
|
|
extern TA_context* _pvrrc;
|
|
|
|
|
|
|
|
#define pvrrc (_pvrrc->rend)
|
|
|
|
|
|
|
|
struct Renderer
|
|
|
|
{
|
|
|
|
virtual bool Init()=0;
|
|
|
|
|
|
|
|
virtual void Resize(int w, int h)=0;
|
|
|
|
|
|
|
|
virtual void Term()=0;
|
|
|
|
|
2014-05-02 00:43:34 +00:00
|
|
|
virtual bool Process(TA_context* ctx)=0;
|
2013-12-19 17:10:14 +00:00
|
|
|
virtual bool Render()=0;
|
2019-02-19 10:36:59 +00:00
|
|
|
virtual bool RenderLastFrame() { return false; }
|
2013-12-19 17:10:14 +00:00
|
|
|
|
|
|
|
virtual void Present()=0;
|
2014-05-02 00:43:34 +00:00
|
|
|
|
2019-03-04 23:54:01 +00:00
|
|
|
virtual void DrawOSD(bool clear_screen) { }
|
2015-08-05 00:43:40 +00:00
|
|
|
|
|
|
|
virtual u32 GetTexture(TSP tsp, TCW tcw) { return 0; }
|
2013-12-19 17:10:14 +00:00
|
|
|
};
|
|
|
|
|
2015-08-05 00:43:40 +00:00
|
|
|
extern Renderer* renderer;
|
2019-05-25 16:48:00 +00:00
|
|
|
extern volatile bool renderer_enabled; // Signals the renderer thread to exit
|
|
|
|
extern volatile bool renderer_changed; // Signals the renderer thread to switch renderer
|
|
|
|
extern volatile bool renderer_reinit_requested; // Signals the renderer thread to reinit the renderer
|
2015-08-05 00:43:40 +00:00
|
|
|
|
2013-12-19 17:10:14 +00:00
|
|
|
Renderer* rend_GLES2();
|
2018-10-04 08:29:23 +00:00
|
|
|
#if !defined(GLES) && HOST_OS != OS_DARWIN
|
|
|
|
Renderer* rend_GL4();
|
|
|
|
#endif
|
2015-08-05 00:43:40 +00:00
|
|
|
Renderer* rend_norend();
|
2018-08-26 14:58:10 +00:00
|
|
|
Renderer* rend_softrend();
|
|
|
|
|
2019-05-19 17:45:05 +00:00
|
|
|
extern u32 fb_watch_addr_start;
|
|
|
|
extern u32 fb_watch_addr_end;
|
2018-08-26 14:58:10 +00:00
|
|
|
extern bool fb_dirty;
|
|
|
|
|
|
|
|
void check_framebuffer_write();
|