On Mon, Oct 26, 2015 at 1:56 PM, Jason Ekstrand <ja...@jlekstrand.net> wrote: > On Sat, Oct 24, 2015 at 10:07 AM, Rob Clark <robdcl...@gmail.com> wrote: >> Otherwise, passing -1 gets you: >> >> error: invalid conversion from 'int' to 'nir_variable_mode' [-fpermissive] > > Yeah, I've never really liked that. Another option (which I think I'd > marginally prefer) would be to make nir_lower_io take a bitfield of > which variable types you want to lower. Then you would pass in (1 << > nir_var_foo) for a specific one and ~0u for all. That way you could > also lower two at a time if you wanted.
or make enum nir_variable_mode itself a bitmask (and keep the enum typed parameter).. if nothing else, that way gdb will display it in a nicer way BR, -R > --Jason > >> >> Signed-off-by: Rob Clark <robdcl...@gmail.com> >> --- >> src/glsl/nir/nir.c | 4 ++++ >> src/glsl/nir/nir.h | 1 + >> src/glsl/nir/nir_lower_io.c | 2 +- >> src/mesa/drivers/dri/i965/brw_nir.c | 3 ++- >> 4 files changed, 8 insertions(+), 2 deletions(-) >> >> diff --git a/src/glsl/nir/nir.c b/src/glsl/nir/nir.c >> index 793bdaf..caa9ffc 100644 >> --- a/src/glsl/nir/nir.c >> +++ b/src/glsl/nir/nir.c >> @@ -107,6 +107,10 @@ void >> nir_shader_add_variable(nir_shader *shader, nir_variable *var) >> { >> switch (var->data.mode) { >> + case nir_var_all: >> + assert(!"invalid mode"); >> + break; >> + >> case nir_var_local: >> assert(!"nir_shader_add_variable cannot be used for local variables"); >> break; >> diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h >> index e3777f9..79c0666 100644 >> --- a/src/glsl/nir/nir.h >> +++ b/src/glsl/nir/nir.h >> @@ -82,6 +82,7 @@ typedef struct { >> } nir_state_slot; >> >> typedef enum { >> + nir_var_all = -1, >> nir_var_shader_in, >> nir_var_shader_out, >> nir_var_global, >> diff --git a/src/glsl/nir/nir_lower_io.c b/src/glsl/nir/nir_lower_io.c >> index 688b48f..b4ed857 100644 >> --- a/src/glsl/nir/nir_lower_io.c >> +++ b/src/glsl/nir/nir_lower_io.c >> @@ -176,7 +176,7 @@ nir_lower_io_block(nir_block *block, void *void_state) >> >> nir_variable_mode mode = intrin->variables[0]->var->data.mode; >> >> - if (state->mode != -1 && state->mode != mode) >> + if (state->mode != nir_var_all && state->mode != mode) >> continue; >> >> switch (intrin->intrinsic) { >> diff --git a/src/mesa/drivers/dri/i965/brw_nir.c >> b/src/mesa/drivers/dri/i965/brw_nir.c >> index 1b4dace..8f09165 100644 >> --- a/src/mesa/drivers/dri/i965/brw_nir.c >> +++ b/src/mesa/drivers/dri/i965/brw_nir.c >> @@ -235,7 +235,8 @@ brw_create_nir(struct brw_context *brw, >> nir_assign_var_locations(&nir->uniforms, >> &nir->num_uniforms, >> is_scalar ? type_size_scalar : type_size_vec4); >> - nir_lower_io(nir, -1, is_scalar ? type_size_scalar : type_size_vec4); >> + nir_lower_io(nir, nir_var_all, >> + is_scalar ? type_size_scalar : type_size_vec4); >> nir_validate_shader(nir); >> >> nir_remove_dead_variables(nir); >> -- >> 2.5.0 >> _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev