Mesa (master): radeonsi: enable BC_OPTIMIZE if centroid isn't used

Marek Olšák mareko at kemper.freedesktop.org
Tue Oct 20 11:29:05 UTC 2015


Module: Mesa
Branch: master
Commit: 8339585b1206232c1df165108ef6adadb0829ab0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8339585b1206232c1df165108ef6adadb0829ab0

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Sun Oct 18 15:09:24 2015 +0200

radeonsi: enable BC_OPTIMIZE if centroid isn't used

This solution was recommended by a Catalyst developer.

Reviewed-by: Michel Dänzer <michel.daenzer at amd.com>

---

 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 8b26b94..eea00e0 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);




More information about the mesa-commit mailing list