[Mesa-dev] [PATCH 1/7] nir: add nir_var_all enum
Jason Ekstrand
jason at jlekstrand.net
Mon Oct 26 10:56:43 PDT 2015
On Sat, Oct 24, 2015 at 10:07 AM, Rob Clark <robdclark at 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.
--Jason
>
> Signed-off-by: Rob Clark <robdclark at 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
>
More information about the mesa-dev
mailing list