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 <[email protected]>

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68250
Signed-off-by: Kenneth Graunke <[email protected]>
Cc: Mak Nazecic-Andrlon <[email protected]>
Cc: "9.1 9.2" <[email protected]>
---
  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);



_______________________________________________
mesa-dev mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to