[Mesa-dev] [PATCH 2/2] nir: don't pack varyings ints with floats unless flat

Jason Ekstrand jason at jlekstrand.net
Mon Nov 12 03:11:04 UTC 2018


On November 11, 2018 20:30:29 Timothy Arceri <tarceri at itsqueeze.com> wrote:

> Fixes: 1c9c42d16b4c ("nir: add varying component packing helpers")
> ---
> src/compiler/nir/nir_linking_helpers.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
>
> diff --git a/src/compiler/nir/nir_linking_helpers.c 
> b/src/compiler/nir/nir_linking_helpers.c
> index b07bb40894e..125a8d55b3e 100644
> --- a/src/compiler/nir/nir_linking_helpers.c
> +++ b/src/compiler/nir/nir_linking_helpers.c
> @@ -196,10 +196,13 @@ nir_remove_unused_varyings(nir_shader *producer, 
> nir_shader *consumer)
> }
>
> static uint8_t
> -get_interp_type(nir_variable *var, bool default_to_smooth_interp)
> +get_interp_type(nir_variable *var, const struct glsl_type *type,
> +                bool default_to_smooth_interp)
> {
>    if (var->data.interpolation != INTERP_MODE_NONE)
>       return var->data.interpolation;
> +   else if (glsl_type_is_integer(type))
> +      return INTERP_MODE_FLAT;

Are we guaranteed that there will be no explititly interpolated integers?

>    else if (default_to_smooth_interp)
>       return INTERP_MODE_SMOOTH;
>    else
> @@ -253,7 +256,7 @@ get_slot_component_masks_and_interp_types(struct 
> exec_list *var_list,
>          unsigned comps_slot2 = 0;
>          for (unsigned i = 0; i < slots; i++) {
>             interp_type[location + i] =
> -               get_interp_type(var, default_to_smooth_interp);
> +               get_interp_type(var, type, default_to_smooth_interp);
>             interp_loc[location + i] = get_interp_loc(var);
>
>             if (dual_slot) {
> @@ -425,7 +428,7 @@ compact_components(nir_shader *producer, nir_shader 
> *consumer, uint8_t *comps,
>             continue;
>
>          bool found_new_offset = false;
> -         uint8_t interp = get_interp_type(var, default_to_smooth_interp);
> +         uint8_t interp = get_interp_type(var, type, 
> default_to_smooth_interp);
>          for (; cursor[interp] < 32; cursor[interp]++) {
>             uint8_t cursor_used_comps = comps[cursor[interp]];
>
> --
> 2.19.1
>
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev





More information about the mesa-dev mailing list