[Mesa-dev] [PATCH 1/2] radeonsi: fix R600_DEBUG=precompile for shader-db

Marek Olšák maraeo at gmail.com
Tue Oct 11 15:00:05 UTC 2016


From: Marek Olšák <marek.olsak at amd.com>

radeonsi no longer supports pixel shaders without interpolation optimizations,
which led to assertion failures in si_shader_ps when running shader-db.
---
 src/gallium/drivers/radeonsi/si_state_shaders.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index f6bd129..c41c519 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1226,20 +1226,26 @@ void si_init_shader_selector_async(void *job, int thread_index)
 		si_parse_next_shader_property(&sel->info, &key);
 
 		/* Set reasonable defaults, so that the shader key doesn't
 		 * cause any code to be eliminated.
 		 */
 		switch (sel->type) {
 		case PIPE_SHADER_TESS_CTRL:
 			key.tcs.epilog.prim_mode = PIPE_PRIM_TRIANGLES;
 			break;
 		case PIPE_SHADER_FRAGMENT:
+			key.ps.prolog.bc_optimize_for_persp =
+				sel->info.uses_persp_center &&
+				sel->info.uses_persp_centroid;
+			key.ps.prolog.bc_optimize_for_linear =
+				sel->info.uses_linear_center &&
+				sel->info.uses_linear_centroid;
 			key.ps.epilog.alpha_func = PIPE_FUNC_ALWAYS;
 			for (i = 0; i < 8; i++)
 				if (sel->info.colors_written & (1 << i))
 					key.ps.epilog.spi_shader_col_format |=
 						V_028710_SPI_SHADER_FP16_ABGR << (i * 4);
 			break;
 		}
 
 		if (si_shader_select_with_key(sscreen, &state, &key, tm, debug,
 					      false, sel->is_debug_context))
-- 
2.7.4



More information about the mesa-dev mailing list