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