mesa: use _mesa_rebase_rgba_float/uint() in glReadPixels code
authorBrian Paul <brianp@vmware.com>
Thu, 1 Mar 2012 03:55:50 +0000 (20:55 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 9 Mar 2012 03:10:53 +0000 (20:10 -0700)
See the comments for _mesa_rebase_rgba_float() for details.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=46679

NOTE: This is a candidate for the 8.0 branch.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/mesa/main/readpix.c

index 3384d8a3824e87f3fec47d25183eee1f581008e1..4918549556f9c9d4c9fee0b38c7838b177dc03d9 100644 (file)
@@ -291,10 +291,14 @@ slow_read_rgba_pixels( struct gl_context *ctx,
    for (j = 0; j < height; j++) {
       if (_mesa_is_integer_format(format)) {
         _mesa_unpack_uint_rgba_row(rbFormat, width, map, (GLuint (*)[4]) rgba);
+         _mesa_rebase_rgba_uint(width, (GLuint (*)[4]) rgba,
+                                rb->_BaseFormat);
         _mesa_pack_rgba_span_int(ctx, width, (GLuint (*)[4]) rgba, format,
                                   type, dst);
       } else {
         _mesa_unpack_rgba_row(rbFormat, width, map, (GLfloat (*)[4]) rgba);
+         _mesa_rebase_rgba_float(width, (GLfloat (*)[4]) rgba,
+                                 rb->_BaseFormat);
         _mesa_pack_rgba_span_float(ctx, width, (GLfloat (*)[4]) rgba, format,
                                     type, dst, packing, transferOps);
       }