i965: Remove linear_color for GL_PERSPECTIVE_CORRECTION_HINT.

From the GL 2.1 spec:

   "Required perspective-correct interpolation for all fragment
    attributes except depth in sections 3.4.1 and 3.5.1, effectively
    making GL PERSPECTIVE CORRECT HINT a no-op."

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Eric Anholt 2011-05-19 08:48:42 -07:00
parent c095335fa5
commit f147599ef4
7 changed files with 10 additions and 30 deletions

View File

@ -584,7 +584,7 @@ fs_visitor::emit_general_interpolation(ir_variable *ir)
attr.reg_offset++;
}
if (intel->gen < 6 && !(is_gl_Color && c->key.linear_color)) {
if (intel->gen < 6) {
attr.reg_offset -= type->vector_elements;
for (unsigned int k = 0; k < type->vector_elements; k++) {
emit(BRW_OPCODE_MUL, attr, attr, this->pixel_w);

View File

@ -181,9 +181,6 @@ static void upload_sf_prog(struct brw_context *brw)
key.do_flat_shading = (ctx->Light.ShadeModel == GL_FLAT);
key.do_twoside_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide);
/* _NEW_HINT */
key.linear_color = (ctx->Hint.PerspectiveCorrection == GL_FASTEST);
/* _NEW_POLYGON */
if (key.do_twoside_color) {
/* If we're rendering to a FBO, we have to invert the polygon

View File

@ -52,7 +52,6 @@ struct brw_sf_prog_key {
GLuint do_flat_shading:1;
GLuint frontface_ccw:1;
GLuint do_point_sprite:1;
GLuint linear_color:1; /**< linear interp vs. perspective interp */
GLuint sprite_origin_lower_left:1;
GLuint pad:24;
};

View File

@ -316,7 +316,7 @@ static GLboolean calculate_masks( struct brw_sf_compile *c,
GLbitfield64 persp_mask;
GLbitfield64 linear_mask;
if (c->key.do_flat_shading || c->key.linear_color)
if (c->key.do_flat_shading)
persp_mask = c->key.attrs & ~(FRAG_BIT_WPOS |
FRAG_BIT_COL0 |
FRAG_BIT_COL1);

View File

@ -355,9 +355,6 @@ static void brw_wm_populate_key( struct brw_context *brw,
/* _NEW_LIGHT */
key->flat_shade = (ctx->Light.ShadeModel == GL_FLAT);
/* _NEW_HINT */
key->linear_color = (ctx->Hint.PerspectiveCorrection == GL_FASTEST);
/* _NEW_FRAG_CLAMP | _NEW_BUFFERS */
key->clamp_fragment_color = ctx->Color._ClampFragmentColor;
@ -489,7 +486,6 @@ const struct brw_tracked_state brw_wm_prog = {
.dirty = {
.mesa = (_NEW_COLOR |
_NEW_DEPTH |
_NEW_HINT |
_NEW_STENCIL |
_NEW_POLYGON |
_NEW_LINE |

View File

@ -61,7 +61,6 @@
struct brw_wm_prog_key {
GLuint stats_wm:1;
GLuint flat_shade:1;
GLuint linear_color:1; /**< linear interpolation vs perspective interp */
GLuint nr_color_regions:5;
GLuint render_to_fbo:1;
GLuint alpha_test:1;

View File

@ -417,25 +417,14 @@ static void emit_interp( struct brw_wm_compile *c,
src_undef());
}
else {
if (c->key.linear_color) {
emit_op(c,
WM_LINTERP,
dst,
0,
interp,
deltas,
src_undef());
}
else {
/* perspective-corrected color interpolation */
emit_op(c,
WM_PINTERP,
dst,
0,
interp,
deltas,
get_pixel_w(c));
}
/* perspective-corrected color interpolation */
emit_op(c,
WM_PINTERP,
dst,
0,
interp,
deltas,
get_pixel_w(c));
}
break;
case FRAG_ATTRIB_FOGC: