From 0ef90e52d1c1898ae1e4618536a85622689c0b19 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michel=20D=C3=A4nzer?= Date: Wed, 18 Apr 2012 10:44:03 +0200 Subject: [PATCH] radeonsi: Improve calculation of number of pixel shader interpolants. --- .../drivers/radeonsi/evergreen_state.c | 30 +++++-------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/src/gallium/drivers/radeonsi/evergreen_state.c b/src/gallium/drivers/radeonsi/evergreen_state.c index 5048761fc7f..99cbbed5abc 100644 --- a/src/gallium/drivers/radeonsi/evergreen_state.c +++ b/src/gallium/drivers/radeonsi/evergreen_state.c @@ -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; -- 2.30.2