st/mesa: don't clamp fragment color with integer colorbuffer

This commit is contained in:
Marek Olšák
2012-08-04 13:32:21 +02:00
parent e06d6168cb
commit 03b78ceb50
4 changed files with 11 additions and 6 deletions

View File

@@ -239,7 +239,8 @@ static void update_raster_state( struct st_context *st )
/* _NEW_FRAG_CLAMP */ /* _NEW_FRAG_CLAMP */
raster->clamp_fragment_color = !st->clamp_frag_color_in_shader && raster->clamp_fragment_color = !st->clamp_frag_color_in_shader &&
ctx->Color._ClampFragmentColor; ctx->Color._ClampFragmentColor &&
!ctx->DrawBuffer->_IntegerColor;
raster->gl_rasterization_rules = 1; raster->gl_rasterization_rules = 1;
/* _NEW_RASTERIZER_DISCARD */ /* _NEW_RASTERIZER_DISCARD */

View File

@@ -85,7 +85,8 @@ update_fp( struct st_context *st )
/* _NEW_FRAG_CLAMP */ /* _NEW_FRAG_CLAMP */
key.clamp_color = st->clamp_frag_color_in_shader && key.clamp_color = st->clamp_frag_color_in_shader &&
st->ctx->Color._ClampFragmentColor; st->ctx->Color._ClampFragmentColor &&
!st->ctx->DrawBuffer->_IntegerColor;
st->fp_variant = st_get_fp_variant(st, stfp, &key); st->fp_variant = st_get_fp_variant(st, stfp, &key);
@@ -106,7 +107,7 @@ update_fp( struct st_context *st )
const struct st_tracked_state st_update_fp = { const struct st_tracked_state st_update_fp = {
"st_update_fp", /* name */ "st_update_fp", /* name */
{ /* dirty */ { /* dirty */
0, /* mesa */ _NEW_BUFFERS, /* mesa */
ST_NEW_FRAGMENT_PROGRAM /* st */ ST_NEW_FRAGMENT_PROGRAM /* st */
}, },
update_fp /* update */ update_fp /* update */

View File

@@ -424,7 +424,8 @@ draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
key.st = st; key.st = st;
key.bitmap = GL_TRUE; key.bitmap = GL_TRUE;
key.clamp_color = st->clamp_frag_color_in_shader && key.clamp_color = st->clamp_frag_color_in_shader &&
st->ctx->Color._ClampFragmentColor; st->ctx->Color._ClampFragmentColor &&
!st->ctx->DrawBuffer->_IntegerColor;
fpv = st_get_fp_variant(st, st->fp, &key); fpv = st_get_fp_variant(st, st->fp, &key);

View File

@@ -697,7 +697,8 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z,
struct pipe_rasterizer_state rasterizer; struct pipe_rasterizer_state rasterizer;
memset(&rasterizer, 0, sizeof(rasterizer)); memset(&rasterizer, 0, sizeof(rasterizer));
rasterizer.clamp_fragment_color = !st->clamp_frag_color_in_shader && rasterizer.clamp_fragment_color = !st->clamp_frag_color_in_shader &&
ctx->Color._ClampFragmentColor; ctx->Color._ClampFragmentColor &&
!ctx->DrawBuffer->_IntegerColor;
rasterizer.gl_rasterization_rules = 1; rasterizer.gl_rasterization_rules = 1;
rasterizer.depth_clip = !ctx->Transform.DepthClamp; rasterizer.depth_clip = !ctx->Transform.DepthClamp;
rasterizer.scissor = ctx->Scissor.Enabled; rasterizer.scissor = ctx->Scissor.Enabled;
@@ -1026,7 +1027,8 @@ get_color_fp_variant(struct st_context *st)
ctx->Pixel.AlphaScale != 1.0); ctx->Pixel.AlphaScale != 1.0);
key.pixelMaps = ctx->Pixel.MapColorFlag; key.pixelMaps = ctx->Pixel.MapColorFlag;
key.clamp_color = st->clamp_frag_color_in_shader && key.clamp_color = st->clamp_frag_color_in_shader &&
st->ctx->Color._ClampFragmentColor; st->ctx->Color._ClampFragmentColor &&
!st->ctx->DrawBuffer->_IntegerColor;
fpv = st_get_fp_variant(st, st->fp, &key); fpv = st_get_fp_variant(st, st->fp, &key);