mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
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 <nhaehnle@gmail.com>
This commit is contained in:
parent
621c999d82
commit
be3813d58a
1 changed files with 11 additions and 0 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue