Mesa (master): radeonsi/nir: fix input processing for packed varyings

Timothy Arceri tarceri at kemper.freedesktop.org
Tue Mar 27 23:00:09 UTC 2018


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

Author: Timothy Arceri <tarceri at itsqueeze.com>
Date:   Fri Mar 23 12:10:42 2018 +1100

radeonsi/nir: fix input processing for packed varyings

The location was only being incremented the first time we processed a
location. This meant we would incorrectly skip some elements of
an array if the first element was packed and proccessed previously
but other elements were not.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/radeonsi/si_shader_nir.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index 82b2440d0b..6444a8b5dd 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -852,7 +852,7 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
 				/* Packed components share the same location so skip
 				 * them if we have already processed the location.
 				 */
-				if (processed_inputs & ((uint64_t)1 << loc)) {
+				if (processed_inputs & ((uint64_t)1 << (loc + i))) {
 					input_idx += 4;
 					continue;
 				}
@@ -870,8 +870,7 @@ bool si_nir_build_llvm(struct si_shader_context *ctx, struct nir_shader *nir)
 					bitcast_inputs(ctx, data, input_idx);
 				}
 
-				processed_inputs |= ((uint64_t)1 << loc);
-				loc++;
+				processed_inputs |= ((uint64_t)1 << (loc + i));
 				input_idx += 4;
 			}
 		}




More information about the mesa-commit mailing list