[Mesa-dev] [PATCH] mesa: set _NEW_BUFFERS when updating texture bound to current buffers

Emmanuel Gil Peyrot linkmauve at linkmauve.fr
Sat Jul 9 23:01:39 UTC 2016


On Fri, Jul 08, 2016 at 02:24:38PM -0400, Ilia Mirkin wrote:
> 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 at alum.mit.edu>

I confirm this fixes the issue Citra was experiencing on i965 before we
decided to check for completeness after every fbo change.

Tested-by: Emmanuel Gil Peyrot <linkmauve at linkmauve.fr>

> Cc: "11.2 12.0" <mesa-stable at lists.freedesktop.org>
> ---
>  src/mesa/main/teximage.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
> index 26a6c21..a97815f 100644
> --- a/src/mesa/main/teximage.c
> +++ b/src/mesa/main/teximage.c
> @@ -2605,10 +2605,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;
>           }
>        }
>     }
> -- 
> 2.7.3
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

-- 
Emmanuel Gil Peyrot


More information about the mesa-dev mailing list