Mesa (staging/20.3): radeonsi: fix NGG streamout regression
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Nov 19 18:47:00 UTC 2020
Module: Mesa
Branch: staging/20.3
Commit: 2ce2c22d1ada53a03808932e2be3a59c3a29b838
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2ce2c22d1ada53a03808932e2be3a59c3a29b838
Author: Marek Olšák <marek.olsak at amd.com>
Date: Thu Nov 12 11:56:25 2020 -0500
radeonsi: fix NGG streamout regression
num_stream_output_components has to be set for non-GS too.
Fixes: 81d106d6eca - radeonsi: lower IO intrinsics - complete rewrite of input/output scanning
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7542>
(cherry picked from commit d0657ee837955a7d9f8e1a9a5f0202b6d6dd2970)
---
.pick_status.json | 2 +-
src/gallium/drivers/radeonsi/si_shader_nir.c | 22 ++++++++++------------
2 files changed, 11 insertions(+), 13 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index 190ba427962..31492b7dfb8 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -571,7 +571,7 @@
"description": "radeonsi: fix NGG streamout regression",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "81d106d6ecab326c96fb9f8db8e7f39621c9816e"
},
diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 8cec0badbeb..8b46ed8384e 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -139,18 +139,16 @@ static void scan_io_usage(struct si_shader_info *info, nir_intrinsic_instr *intr
info->output_readmask[loc] |= mask;
} else if (mask) {
/* Output stores. */
- if (info->stage == MESA_SHADER_GEOMETRY) {
- unsigned gs_streams = (uint32_t)nir_intrinsic_io_semantics(intr).gs_streams <<
- (nir_intrinsic_component(intr) * 2);
- unsigned new_mask = mask & ~info->output_usagemask[loc];
-
- for (unsigned i = 0; i < 4; i++) {
- unsigned stream = (gs_streams >> (i * 2)) & 0x3;
-
- if (new_mask & (1 << i)) {
- info->output_streams[loc] |= stream << (i * 2);
- info->num_stream_output_components[stream]++;
- }
+ unsigned gs_streams = (uint32_t)nir_intrinsic_io_semantics(intr).gs_streams <<
+ (nir_intrinsic_component(intr) * 2);
+ unsigned new_mask = mask & ~info->output_usagemask[loc];
+
+ for (unsigned i = 0; i < 4; i++) {
+ unsigned stream = (gs_streams >> (i * 2)) & 0x3;
+
+ if (new_mask & (1 << i)) {
+ info->output_streams[loc] |= stream << (i * 2);
+ info->num_stream_output_components[stream]++;
}
}
More information about the mesa-commit
mailing list