On 01/05/18 11:50, Dave Airlie wrote:
From: Dave Airlie <[email protected]>

Only the asserts were accessing anything, and I'm not sure the
value of those is worth preserving, this removes mtypes.h includes
from nir which seemed like a laudable goal.

I've just pushed a patch that moved these files from src/compiler/nir/ to src/compiler/glsl

Ken has also suggested moving the glsl related structs out of mtypes and into src/compiler/glsl somewhere as a move towards removing dependencies on core Mesa from src/compiler/glsl.

---
  src/compiler/nir/nir.h                         |  8 ++++----
  src/compiler/nir/nir_lower_atomics.c           |  9 ++++-----
  src/compiler/nir/nir_lower_samplers.c          | 18 ++++++++----------
  src/compiler/nir/nir_lower_samplers_as_deref.c | 12 ++++--------
  src/mesa/drivers/dri/i965/brw_link.cpp         |  4 ++--
  src/mesa/main/glspirv.h                        |  1 +
  src/mesa/state_tracker/st_glsl_to_nir.cpp      |  6 +++---
  7 files changed, 26 insertions(+), 32 deletions(-)

diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h
index f3326e6..dd38eab 100644
--- a/src/compiler/nir/nir.h
+++ b/src/compiler/nir/nir.h
@@ -56,7 +56,7 @@ extern "C" {
  #endif
struct gl_program;
-struct gl_shader_program;
+struct gl_uniform_storage;
#define NIR_FALSE 0u
  #define NIR_TRUE (~0u)
@@ -2597,9 +2597,9 @@ void nir_lower_io_to_scalar(nir_shader *shader, 
nir_variable_mode mask);
  void nir_lower_io_to_scalar_early(nir_shader *shader, nir_variable_mode mask);
bool nir_lower_samplers(nir_shader *shader,
-                        const struct gl_shader_program *shader_program);
+                        const struct gl_uniform_storage *uniform_storage);
  bool nir_lower_samplers_as_deref(nir_shader *shader,
-                                 const struct gl_shader_program 
*shader_program);
+                                 const struct gl_uniform_storage 
*uniform_storage);
typedef struct nir_lower_subgroups_options {
     uint8_t subgroup_size;
@@ -2756,7 +2756,7 @@ typedef struct nir_lower_bitmap_options {
  void nir_lower_bitmap(nir_shader *shader, const nir_lower_bitmap_options 
*options);
bool nir_lower_atomics(nir_shader *shader,
-                       const struct gl_shader_program *shader_program,
+                       const struct gl_uniform_storage *uniform_storage,
                         bool use_binding_as_idx);
  bool nir_lower_atomics_to_ssbo(nir_shader *shader, unsigned ssbo_offset);
  bool nir_lower_to_source_mods(nir_shader *shader);
diff --git a/src/compiler/nir/nir_lower_atomics.c 
b/src/compiler/nir/nir_lower_atomics.c
index 383e323..eed9143 100644
--- a/src/compiler/nir/nir_lower_atomics.c
+++ b/src/compiler/nir/nir_lower_atomics.c
@@ -28,7 +28,6 @@
  #include "compiler/glsl/ir_uniform.h"
  #include "nir.h"
  #include "main/config.h"
-#include "main/mtypes.h"
  #include <assert.h>
/*
@@ -38,7 +37,7 @@
static bool
  lower_instr(nir_intrinsic_instr *instr,
-            const struct gl_shader_program *shader_program,
+            const struct gl_uniform_storage *uniform_storage,
              nir_shader *shader, bool use_binding_as_idx)
  {
     nir_intrinsic_op op;
@@ -101,7 +100,7 @@ lower_instr(nir_intrinsic_instr *instr,
unsigned idx = use_binding_as_idx ?
        instr->variables[0]->var->data.binding :
-      
shader_program->data->UniformStorage[uniform_loc].opaque[shader->info.stage].index;
+      uniform_storage[uniform_loc].opaque[shader->info.stage].index;
nir_intrinsic_instr *new_instr = nir_intrinsic_instr_create(mem_ctx, op);
     nir_intrinsic_set_base(new_instr, idx);
@@ -178,7 +177,7 @@ lower_instr(nir_intrinsic_instr *instr,
bool
  nir_lower_atomics(nir_shader *shader,
-                  const struct gl_shader_program *shader_program,
+                  const struct gl_uniform_storage *uniform_storage,
                    bool use_binding_as_idx)
  {
     bool progress = false;
@@ -195,7 +194,7 @@ nir_lower_atomics(nir_shader *shader,
                 continue;
impl_progress |= lower_instr(nir_instr_as_intrinsic(instr),
-                                         shader_program, shader,
+                                         uniform_storage, shader,
                                           use_binding_as_idx);
           }
        }
diff --git a/src/compiler/nir/nir_lower_samplers.c 
b/src/compiler/nir/nir_lower_samplers.c
index 7690665..ed2e1be 100644
--- a/src/compiler/nir/nir_lower_samplers.c
+++ b/src/compiler/nir/nir_lower_samplers.c
@@ -28,7 +28,6 @@
  #include "compiler/glsl/ir_uniform.h"
#include "main/compiler.h"
-#include "main/mtypes.h"
/* Calculate the sampler index based on array indicies and also
   * calculate the base uniform location for struct members.
@@ -85,7 +84,8 @@ calc_sampler_offsets(nir_deref *tail, nir_tex_instr *instr,
  }
static bool
-lower_sampler(nir_tex_instr *instr, const struct gl_shader_program 
*shader_program,
+lower_sampler(nir_tex_instr *instr,
+              const struct gl_uniform_storage *uniform_storage,
                gl_shader_stage stage, nir_builder *b)
  {
     if (instr->texture == NULL)
@@ -115,11 +115,8 @@ lower_sampler(nir_tex_instr *instr, const struct 
gl_shader_program *shader_progr
        instr->texture_array_size = array_elements;
     }
- assert(location < shader_program->data->NumUniformStorage &&
-          shader_program->data->UniformStorage[location].opaque[stage].active);
-
     instr->texture_index +=
-      shader_program->data->UniformStorage[location].opaque[stage].index;
+      uniform_storage[location].opaque[stage].index;
instr->sampler_index = instr->texture_index; @@ -129,7 +126,8 @@ lower_sampler(nir_tex_instr *instr, const struct gl_shader_program *shader_progr
  }
static bool
-lower_impl(nir_function_impl *impl, const struct gl_shader_program 
*shader_program,
+lower_impl(nir_function_impl *impl,
+           const struct gl_uniform_storage *uniform_storage,
             gl_shader_stage stage)
  {
     nir_builder b;
@@ -140,7 +138,7 @@ lower_impl(nir_function_impl *impl, const struct 
gl_shader_program *shader_progr
        nir_foreach_instr(instr, block) {
           if (instr->type == nir_instr_type_tex)
              progress |= lower_sampler(nir_instr_as_tex(instr),
-                                      shader_program, stage, &b);
+                                      uniform_storage, stage, &b);
        }
     }
@@ -149,13 +147,13 @@ lower_impl(nir_function_impl *impl, const struct gl_shader_program *shader_progr bool
  nir_lower_samplers(nir_shader *shader,
-                   const struct gl_shader_program *shader_program)
+                   const struct gl_uniform_storage *uniform_storage)
  {
     bool progress = false;
nir_foreach_function(function, shader) {
        if (function->impl)
-         progress |= lower_impl(function->impl, shader_program,
+         progress |= lower_impl(function->impl, uniform_storage,
                                  shader->info.stage);
     }
diff --git a/src/compiler/nir/nir_lower_samplers_as_deref.c b/src/compiler/nir/nir_lower_samplers_as_deref.c
index cb0c827..1f3fbbc 100644
--- a/src/compiler/nir/nir_lower_samplers_as_deref.c
+++ b/src/compiler/nir/nir_lower_samplers_as_deref.c
@@ -60,11 +60,10 @@
  #include "compiler/glsl/ir_uniform.h"
#include "main/compiler.h"
-#include "main/mtypes.h"
struct lower_samplers_as_deref_state {
     nir_shader *shader;
-   const struct gl_shader_program *shader_program;
+   const struct gl_uniform_storage *uniform_storage;
     struct hash_table *remap_table;
  };
@@ -125,10 +124,7 @@ lower_deref(nir_deref_var *deref,
     path = ralloc_asprintf(state->remap_table, "lower@%s", var->name);
     remove_struct_derefs(&deref->deref, state, b, &path, &location);
- assert(location < state->shader_program->data->NumUniformStorage &&
-          
state->shader_program->data->UniformStorage[location].opaque[stage].active);
-
-   binding = 
state->shader_program->data->UniformStorage[location].opaque[stage].index;
+   binding = state->uniform_storage[location].opaque[stage].index;
if (orig_type == deref->deref.type) {
        /* Fast path: We did not encounter any struct derefs. */
@@ -227,13 +223,13 @@ lower_impl(nir_function_impl *impl, struct 
lower_samplers_as_deref_state *state)
bool
  nir_lower_samplers_as_deref(nir_shader *shader,
-                            const struct gl_shader_program *shader_program)
+                            const struct gl_uniform_storage *uniform_storage)
  {
     bool progress = false;
     struct lower_samplers_as_deref_state state;
state.shader = shader;
-   state.shader_program = shader_program;
+   state.uniform_storage = uniform_storage;
     state.remap_table = _mesa_hash_table_create(NULL, _mesa_key_hash_string,
                                                 _mesa_key_string_equal);
diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp
index 7841626..7c87d89 100644
--- a/src/mesa/drivers/dri/i965/brw_link.cpp
+++ b/src/mesa/drivers/dri/i965/brw_link.cpp
@@ -299,8 +299,8 @@ brw_link_shader(struct gl_context *ctx, struct 
gl_shader_program *shProg)
        struct gl_program *prog = shader->Program;
        brw_shader_gather_info(prog->nir, prog);
- NIR_PASS_V(prog->nir, nir_lower_samplers, shProg);
-      NIR_PASS_V(prog->nir, nir_lower_atomics, shProg, false);
+      NIR_PASS_V(prog->nir, nir_lower_samplers, shProg->data->UniformStorage);
+      NIR_PASS_V(prog->nir, nir_lower_atomics, shProg->data->UniformStorage, 
false);
        NIR_PASS_V(prog->nir, nir_lower_atomics_to_ssbo,
                   prog->nir->info.num_abos);
diff --git a/src/mesa/main/glspirv.h b/src/mesa/main/glspirv.h
index cbcd3c0..31ffda1 100644
--- a/src/mesa/main/glspirv.h
+++ b/src/mesa/main/glspirv.h
@@ -32,6 +32,7 @@ extern "C" {
struct gl_context;
  struct gl_shader;
+struct gl_shader_program;
/**
   * A SPIR-V module contains the raw SPIR-V binary as set by ShaderBinary.
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp 
b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index bcf6a7c..bde1384 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -467,7 +467,7 @@ st_glsl_to_nir_post_opts(struct st_context *st, struct 
gl_program *prog,
     st_set_prog_affected_state_flags(prog);
NIR_PASS_V(nir, st_nir_lower_builtin);
-   NIR_PASS_V(nir, nir_lower_atomics, shader_program, true);
+   NIR_PASS_V(nir, nir_lower_atomics, shader_program->data->UniformStorage, 
true);
if (st->ctx->_Shader->Flags & GLSL_DUMP) {
        _mesa_log("\n");
@@ -813,9 +813,9 @@ st_finalize_nir(struct st_context *st, struct gl_program 
*prog,
     }
if (screen->get_param(screen, PIPE_CAP_NIR_SAMPLERS_AS_DEREF))
-      NIR_PASS_V(nir, nir_lower_samplers_as_deref, shader_program);
+      NIR_PASS_V(nir, nir_lower_samplers_as_deref, 
shader_program->data->UniformStorage);
     else
-      NIR_PASS_V(nir, nir_lower_samplers, shader_program);
+      NIR_PASS_V(nir, nir_lower_samplers, 
shader_program->data->UniformStorage);
  }
} /* extern "C" */

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to