[Mesa-dev] [PATCH 4/4] radeonsi: enable BC_OPTIMIZE if centroid isn't used
Marek Olšák
maraeo at gmail.com
Sun Oct 18 10:13:55 PDT 2015
From: Marek Olšák <marek.olsak at amd.com>
This solution was recommended by a Catalyst developer.
---
src/gallium/drivers/radeonsi/si_state_shaders.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index dce57e0..2439acd 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -404,6 +404,7 @@ static void si_shader_ps(struct si_shader *shader)
unsigned num_sgprs, num_user_sgprs;
unsigned spi_baryc_cntl = 0;
uint64_t va;
+ bool has_centroid;
pm4 = shader->pm4 = CALLOC_STRUCT(si_pm4_state);
@@ -435,8 +436,11 @@ static void si_shader_ps(struct si_shader *shader)
}
}
+ has_centroid = G_0286CC_PERSP_CENTROID_ENA(shader->spi_ps_input_ena) ||
+ G_0286CC_LINEAR_CENTROID_ENA(shader->spi_ps_input_ena);
+
spi_ps_in_control = S_0286D8_NUM_INTERP(shader->nparam) |
- S_0286D8_BC_OPTIMIZE_DISABLE(1);
+ S_0286D8_BC_OPTIMIZE_DISABLE(has_centroid);
si_pm4_set_reg(pm4, R_0286E0_SPI_BARYC_CNTL, spi_baryc_cntl);
si_pm4_set_reg(pm4, R_0286D8_SPI_PS_IN_CONTROL, spi_ps_in_control);
--
2.1.4
More information about the mesa-dev
mailing list