Mesa (main): gallium/d3d12: move d3d12_lower_bool_input to microsoft/compiler

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Oct 8 17:31:48 UTC 2021


Module: Mesa
Branch: main
Commit: 36aa1a29590494750a315951ff58c3f83ff9aeef
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=36aa1a29590494750a315951ff58c3f83ff9aeef

Author: Michael Tang <tangm at microsoft.com>
Date:   Thu Oct  7 16:19:33 2021 -0700

gallium/d3d12: move d3d12_lower_bool_input to microsoft/compiler

Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13262>

---

 src/gallium/drivers/d3d12/d3d12_compiler.cpp |  2 +-
 src/gallium/drivers/d3d12/d3d12_nir_passes.c | 48 ----------------------------
 src/gallium/drivers/d3d12/d3d12_nir_passes.h |  3 --
 src/microsoft/compiler/dxil_nir.c            | 48 ++++++++++++++++++++++++++++
 src/microsoft/compiler/dxil_nir.h            |  1 +
 5 files changed, 50 insertions(+), 52 deletions(-)

diff --git a/src/gallium/drivers/d3d12/d3d12_compiler.cpp b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
index ca3e8a9119c..b2d4d9a9f58 100644
--- a/src/gallium/drivers/d3d12/d3d12_compiler.cpp
+++ b/src/gallium/drivers/d3d12/d3d12_compiler.cpp
@@ -160,7 +160,7 @@ compile_nir(struct d3d12_context *ctx, struct d3d12_shader_selector *sel,
    NIR_PASS_V(nir, nir_lower_packed_ubo_loads);
    NIR_PASS_V(nir, d3d12_lower_load_first_vertex);
    NIR_PASS_V(nir, d3d12_lower_state_vars, shader);
-   NIR_PASS_V(nir, d3d12_lower_bool_input);
+   NIR_PASS_V(nir, dxil_nir_lower_bool_input);
 
    struct nir_to_dxil_options opts = {};
    opts.interpolate_at_vertex = screen->have_load_at_vertex;
diff --git a/src/gallium/drivers/d3d12/d3d12_nir_passes.c b/src/gallium/drivers/d3d12/d3d12_nir_passes.c
index 0b3bbbc43da..7ed43cbc7b8 100644
--- a/src/gallium/drivers/d3d12/d3d12_nir_passes.c
+++ b/src/gallium/drivers/d3d12/d3d12_nir_passes.c
@@ -542,54 +542,6 @@ d3d12_lower_state_vars(nir_shader *nir, struct d3d12_shader *shader)
    return progress;
 }
 
-static bool
-lower_bool_input_filter(const nir_instr *instr,
-                        UNUSED const void *_options)
-{
-   if (instr->type != nir_instr_type_intrinsic)
-      return false;
-
-   nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
-   if (intr->intrinsic == nir_intrinsic_load_front_face)
-      return true;
-
-   if (intr->intrinsic == nir_intrinsic_load_deref) {
-      nir_deref_instr *deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr);
-      nir_variable *var = nir_deref_instr_get_variable(deref);
-      return var->data.mode == nir_var_shader_in &&
-             glsl_get_base_type(var->type) == GLSL_TYPE_BOOL;
-   }
-
-   return false;
-}
-
-static nir_ssa_def *
-lower_bool_input_impl(nir_builder *b, nir_instr *instr,
-                      UNUSED void *_options)
-{
-   nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
-
-   if (intr->intrinsic == nir_intrinsic_load_deref) {
-      nir_deref_instr *deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr);
-      nir_variable *var = nir_deref_instr_get_variable(deref);
-
-      /* rewrite var->type */
-      var->type = glsl_vector_type(GLSL_TYPE_UINT,
-                                   glsl_get_vector_elements(var->type));
-      deref->type = var->type;
-   }
-
-   intr->dest.ssa.bit_size = 32;
-   return nir_i2b1(b, &intr->dest.ssa);
-}
-
-bool
-d3d12_lower_bool_input(struct nir_shader *s)
-{
-   return nir_shader_lower_instructions(s, lower_bool_input_filter,
-                                        lower_bool_input_impl, NULL);
-}
-
 void
 d3d12_add_missing_dual_src_target(struct nir_shader *s,
                                   unsigned missing_mask)
diff --git a/src/gallium/drivers/d3d12/d3d12_nir_passes.h b/src/gallium/drivers/d3d12/d3d12_nir_passes.h
index 38d36206caf..4461939013e 100644
--- a/src/gallium/drivers/d3d12/d3d12_nir_passes.h
+++ b/src/gallium/drivers/d3d12/d3d12_nir_passes.h
@@ -54,9 +54,6 @@ d3d12_lower_depth_range(nir_shader *nir);
 bool
 d3d12_lower_load_first_vertex(nir_shader *nir);
 
-bool
-d3d12_lower_bool_input(struct nir_shader *s);
-
 void
 d3d12_lower_uint_cast(nir_shader *nir, bool is_signed);
 
diff --git a/src/microsoft/compiler/dxil_nir.c b/src/microsoft/compiler/dxil_nir.c
index cb27054ece1..d968d98b46b 100644
--- a/src/microsoft/compiler/dxil_nir.c
+++ b/src/microsoft/compiler/dxil_nir.c
@@ -1466,6 +1466,54 @@ dxil_nir_create_bare_samplers(nir_shader *nir)
 }
 
 
+static bool
+lower_bool_input_filter(const nir_instr *instr,
+                        UNUSED const void *_options)
+{
+   if (instr->type != nir_instr_type_intrinsic)
+      return false;
+
+   nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
+   if (intr->intrinsic == nir_intrinsic_load_front_face)
+      return true;
+
+   if (intr->intrinsic == nir_intrinsic_load_deref) {
+      nir_deref_instr *deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr);
+      nir_variable *var = nir_deref_instr_get_variable(deref);
+      return var->data.mode == nir_var_shader_in &&
+             glsl_get_base_type(var->type) == GLSL_TYPE_BOOL;
+   }
+
+   return false;
+}
+
+static nir_ssa_def *
+lower_bool_input_impl(nir_builder *b, nir_instr *instr,
+                      UNUSED void *_options)
+{
+   nir_intrinsic_instr *intr = nir_instr_as_intrinsic(instr);
+
+   if (intr->intrinsic == nir_intrinsic_load_deref) {
+      nir_deref_instr *deref = nir_instr_as_deref(intr->src[0].ssa->parent_instr);
+      nir_variable *var = nir_deref_instr_get_variable(deref);
+
+      /* rewrite var->type */
+      var->type = glsl_vector_type(GLSL_TYPE_UINT,
+                                   glsl_get_vector_elements(var->type));
+      deref->type = var->type;
+   }
+
+   intr->dest.ssa.bit_size = 32;
+   return nir_i2b1(b, &intr->dest.ssa);
+}
+
+bool
+dxil_nir_lower_bool_input(struct nir_shader *s)
+{
+   return nir_shader_lower_instructions(s, lower_bool_input_filter,
+                                        lower_bool_input_impl, NULL);
+}
+
 /* Comparison function to sort io values so that first come normal varyings,
  * then system values, and then system generated values.
  */
diff --git a/src/microsoft/compiler/dxil_nir.h b/src/microsoft/compiler/dxil_nir.h
index 252f5367636..9820405a60f 100644
--- a/src/microsoft/compiler/dxil_nir.h
+++ b/src/microsoft/compiler/dxil_nir.h
@@ -50,6 +50,7 @@ bool dxil_nir_lower_system_values_to_zero(nir_shader *shader,
                                           gl_system_value* system_value,
                                           uint32_t count);
 bool dxil_nir_create_bare_samplers(nir_shader *shader);
+bool dxil_nir_lower_bool_input(struct nir_shader *s);
 
 nir_ssa_def *
 build_load_ubo_dxil(nir_builder *b, nir_ssa_def *buffer,



More information about the mesa-commit mailing list