From: Dave Airlie Date: Thu, 15 Sep 2011 11:39:26 +0000 (+0100) Subject: r600g: take constantly interpolated values into a/c X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2dfabdd0a479a29d23aa6b10a0b6bfeb48e956b2;p=mesa.git r600g: take constantly interpolated values into a/c We could constant interpolated values now and set have_perspective if nothing else is set to avoid a GPU hang. Signed-off-by: Dave Airlie --- diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index 0e7e635ce8e..3b7844f0fa4 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -2230,9 +2230,7 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader else if (rshader->input[i].name == TGSI_SEMANTIC_FACE) face_index = i; else { - if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR || - rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE) - ninterp++; + ninterp++; if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR) have_linear = TRUE; if (rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE) @@ -2274,6 +2272,9 @@ void evergreen_pipe_shader_ps(struct pipe_context *ctx, struct r600_pipe_shader have_perspective = TRUE; } + if (!have_perspective && !have_linear) + have_perspective = TRUE; + spi_ps_in_control_0 = S_0286CC_NUM_INTERP(ninterp) | S_0286CC_PERSP_GRADIENT_ENA(have_perspective) | S_0286CC_LINEAR_GRADIENT_ENA(have_linear);