summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2016-07-08 14:24:38 -0400
committerIlia Mirkin <imirkin@alum.mit.edu>2016-07-11 21:18:05 -0400
commitda7223ebdc82609a112aae24003bbdc154c170bf (patch)
treed40e2ecc9664cbc286b333044dab676bd5fe5e52
parent8b7607d28a4d0db43a9bc5618d7f6ff44daa0dc2 (diff)
downloadexternal_mesa3d-da7223ebdc82609a112aae24003bbdc154c170bf.zip
external_mesa3d-da7223ebdc82609a112aae24003bbdc154c170bf.tar.gz
external_mesa3d-da7223ebdc82609a112aae24003bbdc154c170bf.tar.bz2
mesa: set _NEW_BUFFERS when updating texture bound to current buffers
When a glTexImage call updates the parameters of a currently bound framebuffer, we might miss out on revalidating whether it is complete. Make sure to set _NEW_BUFFERS which will trigger the revalidation in that case. Also while we're at it, fix the fb parameter passed in to the eventual RenderTexture call. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94148 Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu> Cc: "11.2 12.0" <mesa-stable@lists.freedesktop.org> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Tested-by: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
-rw-r--r--src/mesa/main/teximage.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 81e46a1..080bcbf 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -2606,10 +2606,16 @@ check_rtt_cb(GLuint key, void *data, void *userData)
att->Texture == texObj &&
att->TextureLevel == level &&
att->CubeMapFace == face) {
- _mesa_update_texture_renderbuffer(ctx, ctx->DrawBuffer, att);
+ _mesa_update_texture_renderbuffer(ctx, fb, att);
assert(att->Renderbuffer->TexImage);
/* Mark fb status as indeterminate to force re-validation */
fb->_Status = 0;
+
+ /* Make sure that the revalidation actually happens if this is
+ * being done to currently-bound buffers.
+ */
+ if (fb == ctx->DrawBuffer || fb == ctx->ReadBuffer)
+ ctx->NewState |= _NEW_BUFFERS;
}
}
}