From 3753dc896dfe98b246ba8b030aab27a9928533af Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Tue, 3 Jan 2017 11:02:41 +0100 Subject: radeonsi: update clip_regs if clip_disable changes to fix a hang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This seems to fix the GPU hangs caused by: commit ed3190b3f3a776fc8c75b1e6130a88079166d115 Author: Marek Olšák Date: Sun Nov 13 18:41:43 2016 +0100 radeonsi: don't export ClipVertex and ClipDistance[] if clipping is disabled Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=99219 Tested-by: Samuel Pitoiset --- src/gallium/drivers/radeonsi/si_state_shaders.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src') diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 4a7f638f1d3..ce0ed31055e 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -2370,6 +2370,8 @@ bool si_update_shaders(struct si_context *sctx) { struct pipe_context *ctx = (struct pipe_context*)sctx; struct si_state_rasterizer *rs = sctx->queued.named.rasterizer; + struct si_shader *old_vs = si_get_vs_state(sctx); + bool old_clip_disable = old_vs ? old_vs->key.opt.hw_vs.clip_disable : false; int r; /* Update stages before GS. */ @@ -2450,6 +2452,9 @@ bool si_update_shaders(struct si_context *sctx) si_update_vgt_shader_config(sctx); + if (old_clip_disable != si_get_vs_state(sctx)->key.opt.hw_vs.clip_disable) + si_mark_atom_dirty(sctx, &sctx->clip_regs); + if (sctx->ps_shader.cso) { unsigned db_shader_control; -- cgit v1.2.3