mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Replace gDP.colorImage.changed by FrameBuffer::m_changed
This commit is contained in:
parent
ef7ad9a549
commit
1b2b9f9865
|
@ -95,7 +95,7 @@ DepthBufferToRDRAM g_dbToRDRAM;
|
||||||
#endif
|
#endif
|
||||||
RDRAMtoFrameBuffer g_RDRAMtoFB;
|
RDRAMtoFrameBuffer g_RDRAMtoFB;
|
||||||
|
|
||||||
FrameBuffer::FrameBuffer() : m_cleared(false), m_isDepthBuffer(false), m_copiedToRDRAM(false), m_pLoadTile(NULL), m_pDepthBuffer(NULL), m_pResolveTexture(NULL), m_resolveFBO(0), m_resolved(false)
|
FrameBuffer::FrameBuffer() : m_cleared(false), m_changed(false), m_isDepthBuffer(false), m_copiedToRDRAM(false), m_pLoadTile(NULL), m_pDepthBuffer(NULL), m_pResolveTexture(NULL), m_resolveFBO(0), m_resolved(false)
|
||||||
{
|
{
|
||||||
m_pTexture = textureCache().addFrameBufferTexture();
|
m_pTexture = textureCache().addFrameBufferTexture();
|
||||||
glGenFramebuffers(1, &m_FBO);
|
glGenFramebuffers(1, &m_FBO);
|
||||||
|
@ -104,7 +104,7 @@ FrameBuffer::FrameBuffer() : m_cleared(false), m_isDepthBuffer(false), m_copiedT
|
||||||
FrameBuffer::FrameBuffer(FrameBuffer && _other) :
|
FrameBuffer::FrameBuffer(FrameBuffer && _other) :
|
||||||
m_startAddress(_other.m_startAddress), m_endAddress(_other.m_endAddress),
|
m_startAddress(_other.m_startAddress), m_endAddress(_other.m_endAddress),
|
||||||
m_size(_other.m_size), m_width(_other.m_width), m_height(_other.m_height), m_fillcolor(_other.m_fillcolor),
|
m_size(_other.m_size), m_width(_other.m_width), m_height(_other.m_height), m_fillcolor(_other.m_fillcolor),
|
||||||
m_scaleX(_other.m_scaleX), m_scaleY(_other.m_scaleY), m_cleared(_other.m_cleared), m_cfb(_other.m_cfb), m_isDepthBuffer(_other.m_isDepthBuffer), m_copiedToRDRAM(_other.m_copiedToRDRAM),
|
m_scaleX(_other.m_scaleX), m_scaleY(_other.m_scaleY), m_cleared(_other.m_cleared), m_changed(_other.m_changed), m_cfb(_other.m_cfb), m_isDepthBuffer(_other.m_isDepthBuffer), m_copiedToRDRAM(_other.m_copiedToRDRAM),
|
||||||
m_FBO(_other.m_FBO), m_pLoadTile(_other.m_pLoadTile), m_pTexture(_other.m_pTexture), m_pDepthBuffer(_other.m_pDepthBuffer),
|
m_FBO(_other.m_FBO), m_pLoadTile(_other.m_pLoadTile), m_pTexture(_other.m_pTexture), m_pDepthBuffer(_other.m_pDepthBuffer),
|
||||||
m_pResolveTexture(_other.m_pResolveTexture), m_resolveFBO(_other.m_resolveFBO), m_resolved(_other.m_resolved)
|
m_pResolveTexture(_other.m_pResolveTexture), m_resolveFBO(_other.m_resolveFBO), m_resolved(_other.m_resolved)
|
||||||
{
|
{
|
||||||
|
@ -243,6 +243,20 @@ void FrameBufferList::destroy() {
|
||||||
m_drawBuffer = GL_BACK;
|
m_drawBuffer = GL_BACK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FrameBufferList::setBufferChanged()
|
||||||
|
{
|
||||||
|
gDP.colorImage.changed = TRUE;
|
||||||
|
if (m_pCurrent != NULL)
|
||||||
|
m_pCurrent->m_changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FrameBufferList::clearBuffersChanged()
|
||||||
|
{
|
||||||
|
gDP.colorImage.changed = FALSE;
|
||||||
|
for (FrameBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter)
|
||||||
|
iter->m_changed = false;
|
||||||
|
}
|
||||||
|
|
||||||
FrameBuffer * FrameBufferList::findBuffer(u32 _startAddress)
|
FrameBuffer * FrameBufferList::findBuffer(u32 _startAddress)
|
||||||
{
|
{
|
||||||
for (FrameBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter)
|
for (FrameBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter)
|
||||||
|
|
|
@ -21,6 +21,7 @@ struct FrameBuffer
|
||||||
u32 m_size, m_width, m_height, m_fillcolor;
|
u32 m_size, m_width, m_height, m_fillcolor;
|
||||||
float m_scaleX, m_scaleY;
|
float m_scaleX, m_scaleY;
|
||||||
bool m_cleared;
|
bool m_cleared;
|
||||||
|
bool m_changed;
|
||||||
bool m_cfb;
|
bool m_cfb;
|
||||||
bool m_isDepthBuffer;
|
bool m_isDepthBuffer;
|
||||||
bool m_copiedToRDRAM;
|
bool m_copiedToRDRAM;
|
||||||
|
@ -52,6 +53,8 @@ public:
|
||||||
FrameBuffer * getCurrent() const {return m_pCurrent;}
|
FrameBuffer * getCurrent() const {return m_pCurrent;}
|
||||||
void renderBuffer(u32 _address);
|
void renderBuffer(u32 _address);
|
||||||
bool isFboMode() const {return m_drawBuffer == GL_FRAMEBUFFER;}
|
bool isFboMode() const {return m_drawBuffer == GL_FRAMEBUFFER;}
|
||||||
|
void setBufferChanged();
|
||||||
|
void clearBuffersChanged();
|
||||||
|
|
||||||
static FrameBufferList & get()
|
static FrameBufferList & get()
|
||||||
{
|
{
|
||||||
|
|
|
@ -804,7 +804,7 @@ void OGLRender::drawLLETriangle(u32 _numVtx)
|
||||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVtx);
|
glDrawArrays(GL_TRIANGLE_STRIP, 0, _numVtx);
|
||||||
triangles.num = 0;
|
triangles.num = 0;
|
||||||
|
|
||||||
gDP.colorImage.changed = TRUE;
|
frameBufferList().setBufferChanged();
|
||||||
gSP.changed |= CHANGED_VIEWPORT | CHANGED_GEOMETRYMODE;
|
gSP.changed |= CHANGED_VIEWPORT | CHANGED_GEOMETRYMODE;
|
||||||
|
|
||||||
#ifdef __TRIBUFFER_OPT
|
#ifdef __TRIBUFFER_OPT
|
||||||
|
|
2
VI.cpp
2
VI.cpp
|
@ -141,7 +141,7 @@ void VI_UpdateScreen()
|
||||||
if (uNumCurFrameIsShown > 25)
|
if (uNumCurFrameIsShown > 25)
|
||||||
gSP.changed |= CHANGED_CPU_FB_WRITE;
|
gSP.changed |= CHANGED_CPU_FB_WRITE;
|
||||||
}
|
}
|
||||||
gDP.colorImage.changed = FALSE;
|
frameBufferList().clearBuffersChanged();
|
||||||
VI.lastOrigin = *REG.VI_ORIGIN;
|
VI.lastOrigin = *REG.VI_ORIGIN;
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
while (Debug.paused && !Debug.step);
|
while (Debug.paused && !Debug.step);
|
||||||
|
|
4
gDP.cpp
4
gDP.cpp
|
@ -934,7 +934,7 @@ void gDPFillRectangle( s32 ulx, s32 uly, s32 lrx, s32 lry )
|
||||||
}
|
}
|
||||||
render.drawRect(ulx, uly, lrx, lry, pColor);
|
render.drawRect(ulx, uly, lrx, lry, pColor);
|
||||||
|
|
||||||
gDP.colorImage.changed = TRUE;
|
frameBufferList().setBufferChanged();
|
||||||
if (gDP.otherMode.cycleType == G_CYC_FILL) {
|
if (gDP.otherMode.cycleType == G_CYC_FILL) {
|
||||||
if (lry > (u32)gDP.scissor.lry)
|
if (lry > (u32)gDP.scissor.lry)
|
||||||
gDP.colorImage.height = (u32)max(gDP.colorImage.height, (u32)gDP.scissor.lry);
|
gDP.colorImage.height = (u32)max(gDP.colorImage.height, (u32)gDP.scissor.lry);
|
||||||
|
@ -1019,7 +1019,7 @@ void gDPTextureRectangle( f32 ulx, f32 uly, f32 lrx, f32 lry, s32 tile, f32 s, f
|
||||||
gSP.textureTile[0] = textureTileOrg[0];
|
gSP.textureTile[0] = textureTileOrg[0];
|
||||||
gSP.textureTile[1] = textureTileOrg[1];
|
gSP.textureTile[1] = textureTileOrg[1];
|
||||||
|
|
||||||
gDP.colorImage.changed = TRUE;
|
frameBufferList().setBufferChanged();
|
||||||
if (gDP.colorImage.width < 64)
|
if (gDP.colorImage.width < 64)
|
||||||
gDP.colorImage.height = (u32)max( (f32)gDP.colorImage.height, lry );
|
gDP.colorImage.height = (u32)max( (f32)gDP.colorImage.height, lry );
|
||||||
else
|
else
|
||||||
|
|
4
gSP.cpp
4
gSP.cpp
|
@ -46,7 +46,7 @@ void gSPTriangle(s32 v0, s32 v1, s32 v2)
|
||||||
render.drawTriangles();
|
render.drawTriangles();
|
||||||
}
|
}
|
||||||
|
|
||||||
gDP.colorImage.changed = TRUE;
|
frameBufferList().setBufferChanged();
|
||||||
gDP.colorImage.height = (u32)max( gDP.colorImage.height, (u32)gDP.scissor.lry );
|
gDP.colorImage.height = (u32)max( gDP.colorImage.height, (u32)gDP.scissor.lry );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2303,7 +2303,7 @@ void gSPObjSprite(u32 sp)
|
||||||
|
|
||||||
render.drawLLETriangle(4);
|
render.drawLLETriangle(4);
|
||||||
|
|
||||||
gDP.colorImage.changed = TRUE;
|
frameBufferList().setBufferChanged();
|
||||||
gDP.colorImage.height = (u32)(max( gDP.colorImage.height, (u32)gDP.scissor.lry ));
|
gDP.colorImage.height = (u32)(max( gDP.colorImage.height, (u32)gDP.scissor.lry ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user