Mesa (master): r600/compute: only mark buffer/image state dirty for fragment shaders

Dave Airlie airlied at kemper.freedesktop.org
Tue Feb 6 20:08:35 UTC 2018


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Mon Feb  5 10:14:19 2018 +1000

r600/compute: only mark buffer/image state dirty for fragment shaders

The compute emission path always emits this currently, and emitting
it on the fragment path breaks the blitter.

This fixes gpu hangs in KHR-GL45.compute_shader.resource-texture

Reviewed-by: Roland Scheidegger <sorland at vmware.com>
Cc: <mesa-stable at lists.freedesktop.org>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/drivers/r600/evergreen_state.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c
index 90f05c06d3..eb8eb376c2 100644
--- a/src/gallium/drivers/r600/evergreen_state.c
+++ b/src/gallium/drivers/r600/evergreen_state.c
@@ -4060,7 +4060,8 @@ static void evergreen_set_shader_buffers(struct pipe_context *ctx,
 		r600_mark_atom_dirty(rctx, &rctx->cb_misc_state.atom);
 	}
 
-	r600_mark_atom_dirty(rctx, &istate->atom);
+	if (shader == PIPE_SHADER_FRAGMENT)
+		r600_mark_atom_dirty(rctx, &istate->atom);
 }
 
 static void evergreen_set_shader_images(struct pipe_context *ctx,
@@ -4236,7 +4237,8 @@ static void evergreen_set_shader_images(struct pipe_context *ctx,
 		r600_mark_atom_dirty(rctx, &rctx->cb_misc_state.atom);
 	}
 
-	r600_mark_atom_dirty(rctx, &istate->atom);
+	if (shader == PIPE_SHADER_FRAGMENT)
+		r600_mark_atom_dirty(rctx, &istate->atom);
 }
 
 static void evergreen_get_pipe_constant_buffer(struct r600_context *rctx,




More information about the mesa-commit mailing list