[Mesa-dev] [PATCH] meta: Allocate texture before initializing texture coordinates

Anuj Phogat anuj.phogat at gmail.com
Tue Feb 19 16:15:44 PST 2013


On Fri, Feb 15, 2013 at 11:20 AM, Anuj Phogat <anuj.phogat at gmail.com> wrote:
> tex->Sright and tex->Ttop are initialized during texture allocation.
> This fixes depth buffer blitting failures in khronos conformance tests
> when run on desktop GL 3.0.
>
> Note: This is a candidate for stable branches.
>
> Signed-off-by: Anuj Phogat <anuj.phogat at gmail.com>
> ---
>  src/mesa/drivers/common/meta.c |   17 ++++++++---------
>  1 files changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index 4e32b50..29a209e 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -1910,6 +1910,14 @@ _mesa_meta_BlitFramebuffer(struct gl_context *ctx,
>        GLuint *tmp = malloc(srcW * srcH * sizeof(GLuint));
>
>        if (tmp) {
> +
> +         newTex = alloc_texture(depthTex, srcW, srcH, GL_DEPTH_COMPONENT);
> +         _mesa_ReadPixels(srcX, srcY, srcW, srcH, GL_DEPTH_COMPONENT,
> +                          GL_UNSIGNED_INT, tmp);
> +         setup_drawpix_texture(ctx, depthTex, newTex, GL_DEPTH_COMPONENT,
> +                               srcW, srcH, GL_DEPTH_COMPONENT,
> +                               GL_UNSIGNED_INT, tmp);
> +
>           /* texcoords (after texture allocation!) */
>           {
>              verts[0].s = 0.0F;
> @@ -1928,15 +1936,6 @@ _mesa_meta_BlitFramebuffer(struct gl_context *ctx,
>           if (!blit->DepthFP)
>              init_blit_depth_pixels(ctx);
>
> -         /* maybe change tex format here */
> -         newTex = alloc_texture(depthTex, srcW, srcH, GL_DEPTH_COMPONENT);
> -
> -         _mesa_ReadPixels(srcX, srcY, srcW, srcH,
> -                          GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, tmp);
> -
> -         setup_drawpix_texture(ctx, depthTex, newTex, GL_DEPTH_COMPONENT, srcW, srcH,
> -                               GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, tmp);
> -
>           _mesa_BindProgramARB(GL_FRAGMENT_PROGRAM_ARB, blit->DepthFP);
>           _mesa_set_enable(ctx, GL_FRAGMENT_PROGRAM_ARB, GL_TRUE);
>           _mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
> --
> 1.7.7.6
>

This also fixes https://bugs.freedesktop.org/show_bug.cgi?id=59495


More information about the mesa-dev mailing list