swrast: avoid calling _mesa_get_srgb_format_linear() inside a loop
authorBrian Paul <brianp@vmware.com>
Fri, 11 Nov 2011 00:59:43 +0000 (17:59 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 11 Nov 2011 14:12:59 +0000 (07:12 -0700)
src/mesa/swrast/s_readpix.c

index 54f42db0254e68ba1e555a21b44320cdbeddda60..3cef7304a4ab90da1db5ca4279b4db4c193c9629 100644 (file)
@@ -236,6 +236,7 @@ slow_read_rgba_pixels( struct gl_context *ctx,
                       GLbitfield transferOps )
 {
    struct gl_renderbuffer *rb = ctx->ReadBuffer->_ColorReadBuffer;
+   const gl_format rbFormat = _mesa_get_srgb_format_linear(rb->Format);
    union {
       float f[MAX_WIDTH][4];
       unsigned int i[MAX_WIDTH][4];
@@ -252,11 +253,10 @@ slow_read_rgba_pixels( struct gl_context *ctx,
 
    for (j = 0; j < height; j++) {
       if (_mesa_is_integer_format(format)) {
-        _mesa_unpack_int_rgba_row(rb->Format, width, map, rgba.i);
+        _mesa_unpack_int_rgba_row(rbFormat, width, map, rgba.i);
         _mesa_pack_rgba_span_int(ctx, width, rgba.i, format, type, dst);
       } else {
-        _mesa_unpack_rgba_row(_mesa_get_srgb_format_linear(rb->Format),
-                              width, map, rgba.f);
+        _mesa_unpack_rgba_row(rbFormat, width, map, rgba.f);
         _mesa_pack_rgba_span_float(ctx, width, rgba.f, format, type, dst,
                                    packing, transferOps);
       }