Mesa (master): radeonsi: avoid sending GS_EMIT in shaders without outputs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Oct 2 21:14:04 UTC 2018
Module: Mesa
Branch: master
Commit: e24a4e05c7a7b9f3a06fa55284d6258ceff44fdd
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e24a4e05c7a7b9f3a06fa55284d6258ceff44fdd
Author: Józef Kucia <joseph.kucia at gmail.com>
Date: Mon Sep 24 00:44:00 2018 +0200
radeonsi: avoid sending GS_EMIT in shaders without outputs
Fixes GPU hangs.
Cc: 18.1 18.2 <mesa-stable at lists.freedesktop.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107857
Signed-off-by: Józef Kucia <joseph.kucia at gmail.com>
Signed-off-by: Marek Olšák <marek.olsak at amd.com>
---
src/gallium/drivers/radeonsi/si_shader.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index 36f58e2ce5..fedc616ebf 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -4326,9 +4326,12 @@ static void si_llvm_emit_vertex(struct ac_shader_abi *abi,
gs_next_vertex = LLVMBuildAdd(ctx->ac.builder, gs_next_vertex, ctx->i32_1, "");
LLVMBuildStore(ctx->ac.builder, gs_next_vertex, ctx->gs_next_vertex[stream]);
- /* Signal vertex emission */
- ac_build_sendmsg(&ctx->ac, AC_SENDMSG_GS_OP_EMIT | AC_SENDMSG_GS | (stream << 8),
- si_get_gs_wave_id(ctx));
+ /* Signal vertex emission if vertex data was written. */
+ if (offset) {
+ ac_build_sendmsg(&ctx->ac, AC_SENDMSG_GS_OP_EMIT | AC_SENDMSG_GS | (stream << 8),
+ si_get_gs_wave_id(ctx));
+ }
+
if (!use_kill)
lp_build_endif(&if_state);
}
More information about the mesa-commit
mailing list