intel: Update Mesa state before span setup in glReadPixels.

We could have mapped the wrong set of draw buffers.  Noticed while looking
into a DRI2 glean ReadPixels issue.
This commit is contained in:
Eric Anholt 2009-06-19 22:03:37 -07:00
parent dcfe0d66bf
commit afc981ee46
3 changed files with 13 additions and 3 deletions

View file

@ -0,0 +1 @@
../intel/intel_pixel_read.c

View file

@ -424,10 +424,8 @@ intelInitPixelFuncs(struct dd_function_table *functions)
functions->Bitmap = intelBitmap;
functions->CopyPixels = intelCopyPixels;
functions->DrawPixels = intelDrawPixels;
#ifdef I915
functions->ReadPixels = intelReadPixels;
#endif
}
functions->ReadPixels = intelReadPixels;
}
void

View file

@ -291,6 +291,7 @@ intelReadPixels(GLcontext * ctx,
intelFlush(ctx);
#ifdef I915
if (do_blit_readpixels
(ctx, x, y, width, height, format, type, pack, pixels))
return;
@ -298,9 +299,19 @@ intelReadPixels(GLcontext * ctx,
if (do_texture_readpixels
(ctx, x, y, width, height, format, type, pack, pixels))
return;
#endif
if (INTEL_DEBUG & DEBUG_PIXEL)
_mesa_printf("%s: fallback to swrast\n", __FUNCTION__);
/* Update Mesa state before calling down into _swrast_ReadPixels, as
* the spans code requires the computed buffer states to be up to date,
* but _swrast_ReadPixels only updates Mesa state after setting up
* the spans code.
*/
if (ctx->NewState)
_mesa_update_state(ctx);
_swrast_ReadPixels(ctx, x, y, width, height, format, type, pack, pixels);
}