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:
parent
c095335fa5
commit
f147599ef4
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 |
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue