[Mesa-dev] [PATCH 1/6] radeonsi: fix a u_blitter crash after a shader with FBFETCH

Marek Olšák maraeo at gmail.com
Fri Jan 11 23:53:34 UTC 2019


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

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108877
Cc: 18.3 <mesa-stable at lists.freedesktop.org>
---
 src/gallium/drivers/radeonsi/si_state_shaders.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c
index 2adae673808..007175d3bbe 100644
--- a/src/gallium/drivers/radeonsi/si_state_shaders.c
+++ b/src/gallium/drivers/radeonsi/si_state_shaders.c
@@ -1650,21 +1650,21 @@ static inline void si_shader_selector_key(struct pipe_context *ctx,
 				sel->info.uses_linear_centroid +
 				sel->info.uses_linear_sample > 1;
 
 			if (sel->info.opcode_count[TGSI_OPCODE_INTERP_SAMPLE])
 				key->mono.u.ps.interpolate_at_sample_force_center = 1;
 		}
 
 		key->part.ps.epilog.alpha_func = si_get_alpha_test_func(sctx);
 
 		/* ps_uses_fbfetch is true only if the color buffer is bound. */
-		if (sctx->ps_uses_fbfetch) {
+		if (sctx->ps_uses_fbfetch && !sctx->blitter->running) {
 			struct pipe_surface *cb0 = sctx->framebuffer.state.cbufs[0];
 			struct pipe_resource *tex = cb0->texture;
 
 			/* 1D textures are allocated and used as 2D on GFX9. */
 			key->mono.u.ps.fbfetch_msaa = sctx->framebuffer.nr_samples > 1;
 			key->mono.u.ps.fbfetch_is_1D = sctx->chip_class != GFX9 &&
 						       (tex->target == PIPE_TEXTURE_1D ||
 							tex->target == PIPE_TEXTURE_1D_ARRAY);
 			key->mono.u.ps.fbfetch_layered = tex->target == PIPE_TEXTURE_1D_ARRAY ||
 							 tex->target == PIPE_TEXTURE_2D_ARRAY ||
-- 
2.17.1



More information about the mesa-dev mailing list