mirror of https://github.com/PCSX2/pcsx2.git
gsdx-ogl: use final qualifier to help compiler
Improve Devirtualization optimization
This commit is contained in:
parent
771583c559
commit
e3787b6b3c
|
@ -451,11 +451,11 @@ class GSDeviceOGL : public GSDevice
|
||||||
GSTexture* CreateSurface(int type, int w, int h, bool msaa, int format);
|
GSTexture* CreateSurface(int type, int w, int h, bool msaa, int format);
|
||||||
GSTexture* FetchSurface(int type, int w, int h, bool msaa, int format);
|
GSTexture* FetchSurface(int type, int w, int h, bool msaa, int format);
|
||||||
|
|
||||||
void DoMerge(GSTexture* sTex[2], GSVector4* sRect, GSTexture* dTex, GSVector4* dRect, bool slbg, bool mmod, const GSVector4& c);
|
void DoMerge(GSTexture* sTex[2], GSVector4* sRect, GSTexture* dTex, GSVector4* dRect, bool slbg, bool mmod, const GSVector4& c) final;
|
||||||
void DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool linear, float yoffset = 0);
|
void DoInterlace(GSTexture* sTex, GSTexture* dTex, int shader, bool linear, float yoffset = 0) final;
|
||||||
void DoFXAA(GSTexture* sTex, GSTexture* dTex);
|
void DoFXAA(GSTexture* sTex, GSTexture* dTex) final;
|
||||||
void DoShadeBoost(GSTexture* sTex, GSTexture* dTex);
|
void DoShadeBoost(GSTexture* sTex, GSTexture* dTex) final;
|
||||||
void DoExternalFX(GSTexture* sTex, GSTexture* dTex);
|
void DoExternalFX(GSTexture* sTex, GSTexture* dTex) final;
|
||||||
|
|
||||||
void OMAttachRt(GSTextureOGL* rt = NULL);
|
void OMAttachRt(GSTextureOGL* rt = NULL);
|
||||||
void OMAttachDs(GSTextureOGL* ds = NULL);
|
void OMAttachDs(GSTextureOGL* ds = NULL);
|
||||||
|
@ -479,49 +479,49 @@ class GSDeviceOGL : public GSDevice
|
||||||
void Flip();
|
void Flip();
|
||||||
void SetVSync(bool enable);
|
void SetVSync(bool enable);
|
||||||
|
|
||||||
void DrawPrimitive();
|
void DrawPrimitive() final;
|
||||||
void DrawPrimitive(int offset, int count);
|
void DrawPrimitive(int offset, int count);
|
||||||
void DrawIndexedPrimitive();
|
void DrawIndexedPrimitive() final;
|
||||||
void DrawIndexedPrimitive(int offset, int count);
|
void DrawIndexedPrimitive(int offset, int count) final;
|
||||||
void BeforeDraw();
|
inline void BeforeDraw();
|
||||||
void AfterDraw();
|
inline void AfterDraw();
|
||||||
|
|
||||||
void ClearRenderTarget(GSTexture* t, const GSVector4& c);
|
void ClearRenderTarget(GSTexture* t, const GSVector4& c) final;
|
||||||
void ClearRenderTarget(GSTexture* t, uint32 c);
|
void ClearRenderTarget(GSTexture* t, uint32 c) final;
|
||||||
void ClearRenderTarget_i(GSTexture* t, int32 c);
|
void ClearRenderTarget_i(GSTexture* t, int32 c);
|
||||||
void ClearDepth(GSTexture* t, float c);
|
void ClearDepth(GSTexture* t, float c) final;
|
||||||
void ClearStencil(GSTexture* t, uint8 c);
|
void ClearStencil(GSTexture* t, uint8 c) final;
|
||||||
|
|
||||||
GSTexture* CreateRenderTarget(int w, int h, bool msaa, int format = 0);
|
GSTexture* CreateRenderTarget(int w, int h, bool msaa, int format = 0) final;
|
||||||
GSTexture* CreateDepthStencil(int w, int h, bool msaa, int format = 0);
|
GSTexture* CreateDepthStencil(int w, int h, bool msaa, int format = 0) final;
|
||||||
GSTexture* CreateTexture(int w, int h, int format = 0);
|
GSTexture* CreateTexture(int w, int h, int format = 0) final;
|
||||||
GSTexture* CreateOffscreen(int w, int h, int format = 0);
|
GSTexture* CreateOffscreen(int w, int h, int format = 0) final;
|
||||||
void InitPrimDateTexture(GSTexture* rt);
|
void InitPrimDateTexture(GSTexture* rt);
|
||||||
void RecycleDateTexture();
|
void RecycleDateTexture();
|
||||||
|
|
||||||
GSTexture* CopyOffscreen(GSTexture* src, const GSVector4& sRect, int w, int h, int format = 0, int ps_shader = 0);
|
GSTexture* CopyOffscreen(GSTexture* src, const GSVector4& sRect, int w, int h, int format = 0, int ps_shader = 0) final;
|
||||||
|
|
||||||
void CopyRect(GSTexture* sTex, GSTexture* dTex, const GSVector4i& r);
|
void CopyRect(GSTexture* sTex, GSTexture* dTex, const GSVector4i& r) final;
|
||||||
void CopyRectConv(GSTexture* sTex, GSTexture* dTex, const GSVector4i& r, bool at_origin);
|
void CopyRectConv(GSTexture* sTex, GSTexture* dTex, const GSVector4i& r, bool at_origin);
|
||||||
void StretchRect(GSTexture* sTex, const GSVector4& sRect, GSTexture* dTex, const GSVector4& dRect, int shader = 0, bool linear = true);
|
void StretchRect(GSTexture* sTex, const GSVector4& sRect, GSTexture* dTex, const GSVector4& dRect, int shader = 0, bool linear = true) final;
|
||||||
void StretchRect(GSTexture* sTex, const GSVector4& sRect, GSTexture* dTex, const GSVector4& dRect, GLuint ps, bool linear = true);
|
void StretchRect(GSTexture* sTex, const GSVector4& sRect, GSTexture* dTex, const GSVector4& dRect, GLuint ps, bool linear = true);
|
||||||
void StretchRect(GSTexture* sTex, const GSVector4& sRect, GSTexture* dTex, const GSVector4& dRect, GLuint ps, int bs, bool linear = true);
|
void StretchRect(GSTexture* sTex, const GSVector4& sRect, GSTexture* dTex, const GSVector4& dRect, GLuint ps, int bs, bool linear = true);
|
||||||
|
|
||||||
void SetupDATE(GSTexture* rt, GSTexture* ds, const GSVertexPT1* vertices, bool datm);
|
void SetupDATE(GSTexture* rt, GSTexture* ds, const GSVertexPT1* vertices, bool datm);
|
||||||
|
|
||||||
void EndScene();
|
void EndScene() final;
|
||||||
|
|
||||||
void IASetPrimitiveTopology(GLenum topology);
|
void IASetPrimitiveTopology(GLenum topology);
|
||||||
void IASetVertexBuffer(const void* vertices, size_t count);
|
void IASetVertexBuffer(const void* vertices, size_t count);
|
||||||
void IASetIndexBuffer(const void* index, size_t count);
|
void IASetIndexBuffer(const void* index, size_t count);
|
||||||
|
|
||||||
void PSSetShaderResource(int i, GSTexture* sr);
|
void PSSetShaderResource(int i, GSTexture* sr) final;
|
||||||
void PSSetShaderResources(GSTexture* sr0, GSTexture* sr1);
|
void PSSetShaderResources(GSTexture* sr0, GSTexture* sr1) final;
|
||||||
void PSSetSamplerState(GLuint ss);
|
void PSSetSamplerState(GLuint ss);
|
||||||
|
|
||||||
void OMSetDepthStencilState(GSDepthStencilOGL* dss);
|
void OMSetDepthStencilState(GSDepthStencilOGL* dss);
|
||||||
void OMSetBlendState(uint8 blend_index = 0, uint8 blend_factor = 0, bool is_blend_constant = false);
|
void OMSetBlendState(uint8 blend_index = 0, uint8 blend_factor = 0, bool is_blend_constant = false);
|
||||||
void OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVector4i* scissor = NULL);
|
void OMSetRenderTargets(GSTexture* rt, GSTexture* ds, const GSVector4i* scissor = NULL) final;
|
||||||
void OMSetColorMaskState(OMColorMaskSelector sel = OMColorMaskSelector());
|
void OMSetColorMaskState(OMColorMaskSelector sel = OMColorMaskSelector());
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ class GSRendererOGL : public GSRendererHW
|
||||||
|
|
||||||
GSVector4i ComputeBoundingBox(const GSVector2& rtscale, const GSVector2i& rtsize);
|
GSVector4i ComputeBoundingBox(const GSVector2& rtscale, const GSVector2i& rtsize);
|
||||||
|
|
||||||
protected:
|
private:
|
||||||
void EmulateGS();
|
void EmulateGS();
|
||||||
void SetupIA();
|
void SetupIA();
|
||||||
bool EmulateTextureShuffleAndFbmask(GSDeviceOGL::PSSelector& ps_sel, GSDeviceOGL::OMColorMaskSelector& om_csel);
|
bool EmulateTextureShuffleAndFbmask(GSDeviceOGL::PSSelector& ps_sel, GSDeviceOGL::OMColorMaskSelector& om_csel);
|
||||||
|
@ -72,7 +72,7 @@ class GSRendererOGL : public GSRendererHW
|
||||||
|
|
||||||
bool CreateDevice(GSDevice* dev);
|
bool CreateDevice(GSDevice* dev);
|
||||||
|
|
||||||
void DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* tex);
|
void DrawPrims(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* tex) final;
|
||||||
|
|
||||||
PRIM_OVERLAP PrimitiveOverlap();
|
PRIM_OVERLAP PrimitiveOverlap();
|
||||||
|
|
||||||
|
|
|
@ -66,16 +66,16 @@ class GSTextureOGL : public GSTexture
|
||||||
explicit GSTextureOGL(int type, int w, int h, int format, GLuint fbo_read);
|
explicit GSTextureOGL(int type, int w, int h, int format, GLuint fbo_read);
|
||||||
virtual ~GSTextureOGL();
|
virtual ~GSTextureOGL();
|
||||||
|
|
||||||
void Invalidate();
|
void Invalidate() final;
|
||||||
bool Update(const GSVector4i& r, const void* data, int pitch);
|
bool Update(const GSVector4i& r, const void* data, int pitch) final;
|
||||||
bool Map(GSMap& m, const GSVector4i* r = NULL);
|
bool Map(GSMap& m, const GSVector4i* r = NULL) final;
|
||||||
void Unmap();
|
void Unmap() final;
|
||||||
bool Save(const string& fn, bool user_image = false, bool dds = false);
|
bool Save(const string& fn, bool user_image = false, bool dds = false) final;
|
||||||
|
|
||||||
bool IsBackbuffer() { return (m_type == GSTexture::Backbuffer); }
|
bool IsBackbuffer() { return (m_type == GSTexture::Backbuffer); }
|
||||||
bool IsDss() { return (m_type == GSTexture::DepthStencil); }
|
bool IsDss() { return (m_type == GSTexture::DepthStencil); }
|
||||||
|
|
||||||
uint32 GetID() { return m_texture_id; }
|
uint32 GetID() final { return m_texture_id; }
|
||||||
bool HasBeenCleaned() { return m_clean; }
|
bool HasBeenCleaned() { return m_clean; }
|
||||||
void WasAttached() { m_clean = false; m_dirty = true; }
|
void WasAttached() { m_clean = false; m_dirty = true; }
|
||||||
void WasCleaned() { m_clean = true; }
|
void WasCleaned() { m_clean = true; }
|
||||||
|
|
Loading…
Reference in New Issue