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

Ian Romanick idr at freedesktop.org
Fri Feb 22 12:23:18 PST 2013


On 02/15/2013 11:20 AM, Anuj Phogat 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>

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

I think there is a lot of room for other improvements in this code. 
Like... why are we doing glReadPixels into malloc memory, then handing 
that same pointer to glTexImage2D.  We should (at least for desktop and 
GLES3) use a PBO.

> ---
>   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);
>



More information about the mesa-dev mailing list