From be3813d58adc0060c9f7a13ac7865217b96ea477 Mon Sep 17 00:00:00 2001 From: Nicolai Haehnle Date: Sun, 15 Feb 2009 13:34:43 +0100 Subject: [PATCH] swrast: Set vp_override flag during DrawPixels Obviously, the color of fragments produced by DrawPixels is not constant, even if the current vertex array / vertex program state indicates that the color for normal rendering will be constant. Therefore, we need to override certain optimisations that have been added to texenvprogram.c Signed-off-by: Nicolai Haehnle --- src/mesa/swrast/s_drawpix.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c index 700f76d4bc4..a9ef8e685f1 100644 --- a/src/mesa/swrast/s_drawpix.c +++ b/src/mesa/swrast/s_drawpix.c @@ -829,6 +829,15 @@ _swrast_DrawPixels( GLcontext *ctx, const GLvoid *pixels ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); + GLboolean save_vp_override = ctx->VertexProgram._Overriden; + + /* We are creating fragments directly, without going through vertex programs. + * + * This override flag tells the fragment processing code that its input comes + * from a non-standard source, and it may therefore not rely on optimizations + * that assume e.g. constant color if there is no color vertex array. + */ + _mesa_set_vp_override(ctx, GL_TRUE); swrast_render_start(ctx); @@ -841,6 +850,7 @@ _swrast_DrawPixels( GLcontext *ctx, pixels = _mesa_map_drawpix_pbo(ctx, unpack, pixels); if (!pixels) { swrast_render_finish(ctx); + _mesa_set_vp_override(ctx, save_vp_override); return; } @@ -880,6 +890,7 @@ _swrast_DrawPixels( GLcontext *ctx, } swrast_render_finish(ctx); + _mesa_set_vp_override(ctx, save_vp_override); _mesa_unmap_drawpix_pbo(ctx, unpack); } -- 2.30.2