Mesa (master): nir/glsl: make nir_remap_attributes public

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Aug 13 14:30:37 UTC 2018


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

Author: Alejandro Piñeiro <apinheiro at igalia.com>
Date:   Wed Mar 21 09:39:32 2018 +0100

nir/glsl: make nir_remap_attributes public

As we plan to reuse it for ARB_gl_spirv implementation.

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/compiler/glsl/glsl_to_nir.cpp | 17 -----------------
 src/compiler/nir/nir.c            | 24 ++++++++++++++++++++++++
 src/compiler/nir/nir.h            |  3 +++
 3 files changed, 27 insertions(+), 17 deletions(-)

diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp
index 1e4d9f9d3c..b1d1da8911 100644
--- a/src/compiler/glsl/glsl_to_nir.cpp
+++ b/src/compiler/glsl/glsl_to_nir.cpp
@@ -128,23 +128,6 @@ private:
 
 } /* end of anonymous namespace */
 
-static void
-nir_remap_attributes(nir_shader *shader,
-                     const nir_shader_compiler_options *options)
-{
-   if (options->vs_inputs_dual_locations) {
-      nir_foreach_variable(var, &shader->inputs) {
-         var->data.location +=
-            _mesa_bitcount_64(shader->info.vs.double_inputs &
-                              BITFIELD64_MASK(var->data.location));
-      }
-   }
-
-   /* Once the remap is done, reset double_inputs_read, so later it will have
-    * which location/slots are doubles */
-   shader->info.vs.double_inputs = 0;
-}
-
 nir_shader *
 glsl_to_nir(const struct gl_shader_program *shader_prog,
             gl_shader_stage stage,
diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c
index 5e76654ca3..e12aa5d80f 100644
--- a/src/compiler/nir/nir.c
+++ b/src/compiler/nir/nir.c
@@ -32,6 +32,9 @@
 #include <assert.h>
 #include <math.h>
 
+#include "main/imports.h" /* _mesa_bitcount_64 */
+#include "main/menums.h" /* BITFIELD64_MASK */
+
 nir_shader *
 nir_shader_create(void *mem_ctx,
                   gl_shader_stage stage,
@@ -1847,3 +1850,24 @@ nir_system_value_from_intrinsic(nir_intrinsic_op intrin)
       unreachable("intrinsic doesn't produce a system value");
    }
 }
+
+/* OpenGL utility method that remaps the location attributes if they are
+ * doubles. Not needed for vulkan due the differences on the input location
+ * count for doubles on vulkan vs OpenGL
+ */
+void
+nir_remap_attributes(nir_shader *shader,
+                     const nir_shader_compiler_options *options)
+{
+   if (options->vs_inputs_dual_locations) {
+      nir_foreach_variable(var, &shader->inputs) {
+         var->data.location +=
+            _mesa_bitcount_64(shader->info.vs.double_inputs &
+                              BITFIELD64_MASK(var->data.location));
+      }
+   }
+
+   /* Once the remap is done, reset double_inputs_read, so later it will have
+    * which location/slots are doubles */
+   shader->info.vs.double_inputs = 0;
+}
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index 1ccbccc8bb..d0fa693884 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -2999,6 +2999,9 @@ bool nir_opt_conditional_discard(nir_shader *shader);
 
 void nir_sweep(nir_shader *shader);
 
+void nir_remap_attributes(nir_shader *shader,
+                          const nir_shader_compiler_options *options);
+
 nir_intrinsic_op nir_intrinsic_from_system_value(gl_system_value val);
 gl_system_value nir_system_value_from_intrinsic(nir_intrinsic_op intrin);
 




More information about the mesa-commit mailing list