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

Author: Marek Olšák <[email protected]>
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 <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7542>

---

 src/gallium/drivers/radeonsi/si_shader_nir.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c 
b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 3400da04ef6..0598d4d05ed 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]++;
                }
             }
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to