From 87f307c3fffc3d5d196f37319b6023bfa8cf8320 Mon Sep 17 00:00:00 2001 From: Sergey Lipskiy Date: Tue, 10 May 2016 10:52:12 +0600 Subject: [PATCH] FrameBuffer: replace m_pLoadTile by m_loadTileOrigin and m_loadType. --- src/FrameBuffer.cpp | 17 +++++++++-------- src/FrameBuffer.h | 6 +++++- src/gDP.cpp | 4 +++- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/FrameBuffer.cpp b/src/FrameBuffer.cpp index 937661e6..d07a371c 100644 --- a/src/FrameBuffer.cpp +++ b/src/FrameBuffer.cpp @@ -147,10 +147,11 @@ FrameBuffer::FrameBuffer() : m_scaleX(0), m_scaleY(0), m_copiedToRdram(false), m_fingerprint(false), m_cleared(false), m_changed(false), m_cfb(false), m_isDepthBuffer(false), m_isPauseScreen(false), m_isOBScreen(false), m_needHeightCorrection(false), - m_postProcessed(0), m_pLoadTile(NULL), - m_pDepthBuffer(NULL), m_resolveFBO(0), m_pResolveTexture(NULL), m_resolved(false), + m_postProcessed(0), m_loadType(LOADTYPE_BLOCK), m_pDepthBuffer(NULL), + m_resolveFBO(0), m_pResolveTexture(NULL), m_resolved(false), m_SubFBO(0), m_pSubTexture(NULL) { + m_loadTileOrigin.uls = m_loadTileOrigin.ult = 0; m_pTexture = textureCache().addFrameBufferTexture(); glGenFramebuffers(1, &m_FBO); } @@ -161,15 +162,15 @@ FrameBuffer::FrameBuffer(FrameBuffer && _other) : m_validityChecked(_other.m_validityChecked), m_scaleX(_other.m_scaleX), m_scaleY(_other.m_scaleY), m_copiedToRdram(_other.m_copiedToRdram), m_fingerprint(_other.m_fingerprint), m_cleared(_other.m_cleared), m_changed(_other.m_changed), m_cfb(_other.m_cfb), m_isDepthBuffer(_other.m_isDepthBuffer), m_isPauseScreen(_other.m_isPauseScreen), - m_isOBScreen(_other.m_isOBScreen), m_needHeightCorrection(_other.m_needHeightCorrection), m_postProcessed(_other.m_postProcessed), - m_FBO(_other.m_FBO), m_pLoadTile(_other.m_pLoadTile), m_pTexture(_other.m_pTexture), m_pDepthBuffer(_other.m_pDepthBuffer), + m_isOBScreen(_other.m_isOBScreen), m_needHeightCorrection(_other.m_needHeightCorrection), + m_postProcessed(_other.m_postProcessed), m_loadTileOrigin(_other.m_loadTileOrigin), m_loadType(_other.m_loadType), + m_FBO(_other.m_FBO), m_pTexture(_other.m_pTexture), m_pDepthBuffer(_other.m_pDepthBuffer), m_resolveFBO(_other.m_resolveFBO), m_pResolveTexture(_other.m_pResolveTexture), m_resolved(_other.m_resolved), m_SubFBO(_other.m_SubFBO), m_pSubTexture(_other.m_pSubTexture), m_RdramCopy(_other.m_RdramCopy) { _other.m_FBO = 0; _other.m_pTexture = NULL; - _other.m_pLoadTile = NULL; _other.m_pDepthBuffer = NULL; _other.m_pResolveTexture = NULL; _other.m_resolveFBO = 0; @@ -498,9 +499,9 @@ CachedTexture * FrameBuffer::getTexture(u32 _t) { const u32 shift = (gSP.textureTile[_t]->imageAddress - m_startAddress) >> (m_size - 1); const u32 factor = m_width; - if (gSP.textureTile[_t]->loadType == LOADTYPE_TILE) { - m_pTexture->offsetS = (float)(m_pLoadTile->uls + (shift % factor)); - m_pTexture->offsetT = (float)(m_height - (m_pLoadTile->ult + shift / factor)); + if (m_loadType == LOADTYPE_TILE) { + m_pTexture->offsetS = (float)(m_loadTileOrigin.uls + (shift % factor)); + m_pTexture->offsetT = (float)(m_height - (m_loadTileOrigin.ult + shift / factor)); } else { m_pTexture->offsetS = (float)(shift % factor); m_pTexture->offsetT = (float)(m_height - shift / factor); diff --git a/src/FrameBuffer.h b/src/FrameBuffer.h index cac7107b..1ee56162 100644 --- a/src/FrameBuffer.h +++ b/src/FrameBuffer.h @@ -40,8 +40,12 @@ struct FrameBuffer bool m_needHeightCorrection; u32 m_postProcessed; + struct { + u32 uls, ult; + } m_loadTileOrigin; + u32 m_loadType; + GLuint m_FBO; - gDPTile *m_pLoadTile; CachedTexture *m_pTexture; DepthBuffer *m_pDepthBuffer; diff --git a/src/gDP.cpp b/src/gDP.cpp index 17cabc5a..acc680c7 100644 --- a/src/gDP.cpp +++ b/src/gDP.cpp @@ -420,7 +420,9 @@ bool CheckForFrameBufferTexture(u32 _address, u32 _bytes) } if (bRes) { - pBuffer->m_pLoadTile = gDP.loadTile; + pBuffer->m_loadType = gDP.loadTile->loadType; + pBuffer->m_loadTileOrigin.uls = gDP.loadTile->uls; + pBuffer->m_loadTileOrigin.ult = gDP.loadTile->ult; gDP.loadTile->frameBuffer = pBuffer; gDP.loadTile->textureMode = TEXTUREMODE_FRAMEBUFFER; }