diff options
author | Michel Dänzer <[email protected]> | 2013-08-19 15:45:32 +0200 |
---|---|---|
committer | Michel Dänzer <[email protected]> | 2013-08-20 18:50:28 +0200 |
commit | be301f707e8c6ba3bb0574e64a0a4f1653af8fb7 (patch) | |
tree | 987280265373157a952dbdf9b9621106c4e41ebb | |
parent | 5edcb682c9441ccce84d6bee959b8c4b3671bf0e (diff) |
radeonsi: Always pre-load separate VGPRs for centroid vs. center interpolation
The LLVM R600 backend currently always uses separate VGPRs for these.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68162
(Centroid interpolation is identical to center interpolation without
multisampling, so the shader hardware was only pre-loading one set of
interpolation coefficients, and the pixel shader code was using
uninitialized values as the centroid interpolation coefficients)
Cc: [email protected]
Tested-by: Laurent Carlier <[email protected]>
-rw-r--r-- | src/gallium/drivers/radeonsi/si_state_draw.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeonsi/si_state_draw.c b/src/gallium/drivers/radeonsi/si_state_draw.c index 7ecaf77c00d..15cb87f32ae 100644 --- a/src/gallium/drivers/radeonsi/si_state_draw.c +++ b/src/gallium/drivers/radeonsi/si_state_draw.c @@ -183,7 +183,8 @@ static void si_pipe_shader_ps(struct pipe_context *ctx, struct si_pipe_shader *s exports_ps = 2; } - spi_ps_in_control = S_0286D8_NUM_INTERP(shader->shader.ninterp); + spi_ps_in_control = S_0286D8_NUM_INTERP(shader->shader.ninterp) | + S_0286D8_BC_OPTIMIZE_DISABLE(1); si_pm4_set_reg(pm4, R_0286E0_SPI_BARYC_CNTL, spi_baryc_cntl); spi_ps_input_ena = shader->spi_ps_input_ena; |