diff --git a/Combiner.cpp b/Combiner.cpp index 79462cae..af0e604a 100644 --- a/Combiner.cpp +++ b/Combiner.cpp @@ -119,13 +119,14 @@ void Combiner_UpdateCombineColors() void Combiner_UpdateCombineFBInfo() { - combiner.current->compiled->UpdateFBInfo(); + combiner.current->compiled->UpdateFBInfo(true); + gDP.changed &= ~CHANGED_FB_TEXTURE; } void Combiner_UpdateCombineDepthInfo() { if (combiner.current != NULL) - combiner.current->compiled->UpdateDepthInfo(); + combiner.current->compiled->UpdateDepthInfo(true); } void Combiner_UpdateAlphaTestInfo() diff --git a/FrameBuffer.cpp b/FrameBuffer.cpp index 07011cc6..7129db03 100644 --- a/FrameBuffer.cpp +++ b/FrameBuffer.cpp @@ -574,6 +574,7 @@ void FrameBuffer_ActivateBufferTexture( s16 t, FrameBuffer *buffer ) // FrameBuffer_RenderBuffer(buffer->startAddress); TextureCache_ActivateTexture( t, buffer->texture ); + gDP.changed |= CHANGED_FB_TEXTURE; } void FrameBuffer_ActivateBufferTextureBG( s16 t, FrameBuffer *buffer ) @@ -589,6 +590,7 @@ void FrameBuffer_ActivateBufferTextureBG( s16 t, FrameBuffer *buffer ) // FrameBuffer_RenderBuffer(buffer->startAddress); TextureCache_ActivateTexture( t, buffer->texture ); + gDP.changed |= CHANGED_FB_TEXTURE; } #ifndef GLES2 diff --git a/OpenGL.cpp b/OpenGL.cpp index 15e4ebc5..4e62e349 100644 --- a/OpenGL.cpp +++ b/OpenGL.cpp @@ -777,6 +777,12 @@ void OGL_UpdateStates() } } + if (gDP.changed & CHANGED_FB_TEXTURE) + Combiner_UpdateCombineFBInfo(); + + if ((gDP.changed & CHANGED_RENDERMODE) || (gSP.geometryMode & G_ZBUFFER)) + Combiner_UpdateCombineDepthInfo(); + if ((gDP.changed & CHANGED_RENDERMODE) || (gDP.changed & CHANGED_CYCLETYPE)) { #define OLD_BLENDMODE diff --git a/gDP.h b/gDP.h index cf7c64df..1ee01610 100644 --- a/gDP.h +++ b/gDP.h @@ -12,6 +12,7 @@ #define CHANGED_COMBINE 0x040 #define CHANGED_ALPHACOMPARE 0x080 #define CHANGED_FOGCOLOR 0x100 +#define CHANGED_FB_TEXTURE 0x200 #define TEXTUREMODE_NORMAL 0 #define TEXTUREMODE_TEXRECT 1