radeonsi: Improve calculation of number of pixel shader interpolants.

This commit is contained in:
Michel Dänzer
2012-04-18 10:44:03 +02:00
committed by Michel Dänzer
parent bb79126420
commit 0ef90e52d1
+7 -23
View File
@@ -1922,21 +1922,13 @@ void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *shader)
db_shader_control = S_02880C_Z_ORDER(V_02880C_EARLY_Z_THEN_LATE_Z);
for (i = 0; i < rshader->ninput; i++) {
/* evergreen NUM_INTERP only contains values interpolated into the LDS,
POSITION goes via GPRs from the SC so isn't counted */
if (rshader->input[i].name == TGSI_SEMANTIC_POSITION)
pos_index = i;
else if (rshader->input[i].name == TGSI_SEMANTIC_FACE)
face_index = i;
else {
ninterp++;
if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR)
have_linear = TRUE;
if (rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE)
have_perspective = TRUE;
if (rshader->input[i].centroid)
have_centroid = TRUE;
}
ninterp++;
if (rshader->input[i].interpolate == TGSI_INTERPOLATE_LINEAR)
have_linear = TRUE;
if (rshader->input[i].interpolate == TGSI_INTERPOLATE_PERSPECTIVE)
have_perspective = TRUE;
if (rshader->input[i].centroid)
have_centroid = TRUE;
}
for (i = 0; i < rshader->noutput; i++) {
@@ -1966,14 +1958,6 @@ void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *shader)
exports_ps = 2;
}
if (ninterp == 0) {
ninterp = 1;
have_perspective = TRUE;
}
if (!have_perspective && !have_linear)
have_perspective = TRUE;
spi_ps_in_control = S_0286D8_NUM_INTERP(ninterp);
spi_baryc_cntl = 0;