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

Author: Plamena Manolova <plamena.n.manol...@gmail.com>
Date:   Sun Nov 11 22:30:09 2018 +0200

nir: Don't lower the local work group size if it's variable.

If the local work group size is variable it won't be available
at compile time so we can't lower it in nir_lower_system_values().

Signed-off-by: Plamena Manolova <plamena.n.manol...@gmail.com>

Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net>
Reviewed-by: Karol Herbst <kher...@redhat.com>

---

 src/compiler/nir/nir_lower_system_values.c | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/compiler/nir/nir_lower_system_values.c 
b/src/compiler/nir/nir_lower_system_values.c
index bde7eb1180..fbc4057357 100644
--- a/src/compiler/nir/nir_lower_system_values.c
+++ b/src/compiler/nir/nir_lower_system_values.c
@@ -31,12 +31,24 @@
 static nir_ssa_def*
 build_local_group_size(nir_builder *b)
 {
-   nir_const_value local_size;
-   memset(&local_size, 0, sizeof(local_size));
-   local_size.u32[0] = b->shader->info.cs.local_size[0];
-   local_size.u32[1] = b->shader->info.cs.local_size[1];
-   local_size.u32[2] = b->shader->info.cs.local_size[2];
-   return nir_build_imm(b, 3, 32, local_size);
+   nir_ssa_def *local_size;
+
+   /*
+    * If the local work group size is variable it can't be lowered at this
+    * point, but its intrinsic can still be used.
+    */
+   if (b->shader->info.cs.local_size_variable) {
+      local_size = nir_load_local_group_size(b);
+   } else {
+      nir_const_value local_size_const;
+      memset(&local_size_const, 0, sizeof(local_size_const));
+      local_size_const.u32[0] = b->shader->info.cs.local_size[0];
+      local_size_const.u32[1] = b->shader->info.cs.local_size[1];
+      local_size_const.u32[2] = b->shader->info.cs.local_size[2];
+      local_size = nir_build_imm(b, 3, 32, local_size_const);
+   }
+
+   return local_size;
 }
 
 static bool

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to