[Mesa-stable] [PATCH v2] meta: Set correct viewport and projection in decompress_texture_image.

Ian Romanick idr at freedesktop.org
Thu Aug 22 11:58:25 PDT 2013


On 08/22/2013 01:59 AM, Kenneth Graunke wrote:
> _mesa_meta_begin() sets up an orthographic project and initializes the
> viewport based on the current drawbuffer's width and height.  This is
> likely the window size, since it occurs before the meta operation binds
> any temporary buffers.
>
> decompress_texture_image needs the viewport to be the size of the image
> it's trying to draw.  Otherwise, it may only draw part of the image.
>
> v2: Actually set the projection properly too.

It looks like this should fix the bug at hand, but... what about core 
profile?  ES2? :(  This won't make those cases worse, but we should make 
a test case that hits those paths.

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

> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68250
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> Cc: Mak Nazecic-Andrlon <owlberteinstein at gmail.com>
> Cc: "9.1 9.2" <mesa-stable at lists.freedesktop.org>
> ---
>   src/mesa/drivers/common/meta.c | 5 +++++
>   1 file changed, 5 insertions(+)
>
> Okay, this one actually passes Piglit (on Ivybridge)!  Sorry for the noise.
>
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index 1a42b05..798efa6 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -4022,6 +4022,11 @@ decompress_texture_image(struct gl_context *ctx,
>      verts[3].x = 0.0F;
>      verts[3].y = height;
>
> +   _mesa_MatrixMode(GL_PROJECTION);
> +   _mesa_LoadIdentity();
> +   _mesa_Ortho(0.0, width, 0.0, height, -1.0, 1.0);
> +   _mesa_set_viewport(ctx, 0, 0, width, height);
> +
>      /* upload new vertex data */
>      _mesa_BufferSubData(GL_ARRAY_BUFFER_ARB, 0, sizeof(verts), verts);
>
>



More information about the mesa-stable mailing list