[Mesa-dev] [PATCH 1/8] radeonsi/nir: add interpolate at intrinsics to scan_instruction()

Marek Olšák maraeo at gmail.com
Mon Jan 29 19:24:20 UTC 2018


The case statements should set these variables instead:

   boolean uses_persp_opcode_interp_centroid;
   boolean uses_persp_opcode_interp_offset;
   boolean uses_persp_opcode_interp_sample;
   boolean uses_linear_opcode_interp_centroid;
   boolean uses_linear_opcode_interp_offset;
   boolean uses_linear_opcode_interp_sample;

Marek

On Mon, Jan 15, 2018 at 4:46 AM, Timothy Arceri <tarceri at itsqueeze.com> wrote:
> ---
>  src/gallium/drivers/radeonsi/si_shader_nir.c | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)
>
> diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
> index 20b3beccc4..fcc857f838 100644
> --- a/src/gallium/drivers/radeonsi/si_shader_nir.c
> +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
> @@ -124,6 +124,32 @@ static void scan_instruction(struct tgsi_shader_info *info,
>                 case nir_intrinsic_ssbo_atomic_comp_swap:
>                         info->writes_memory = true;
>                         break;
> +               case nir_intrinsic_interp_var_at_centroid:
> +               case nir_intrinsic_interp_var_at_sample:
> +               case nir_intrinsic_interp_var_at_offset: {
> +                       enum glsl_interp_mode interp =
> +                               intr->variables[0]->var->data.interpolation;
> +                       switch (interp) {
> +                       case INTERP_MODE_SMOOTH:
> +                       case INTERP_MODE_NONE:
> +                               if (intr->intrinsic == nir_intrinsic_interp_var_at_centroid)
> +                                       info->uses_persp_centroid = true;
> +                               else
> +                                       info->uses_persp_center = true;
> +                               break;
> +                       case INTERP_MODE_NOPERSPECTIVE:
> +                               if (intr->intrinsic == nir_intrinsic_interp_var_at_centroid)
> +                                       info->uses_linear_centroid = true;
> +                               else
> +                                       info->uses_linear_center = true;
> +                               break;
> +                       case INTERP_MODE_FLAT:
> +                               break;
> +                       default:
> +                               unreachable("Unsupported interpoation type");
> +                       }
> +                       break;
> +               }
>                 default:
>                         break;
>                 }
> --
> 2.14.3
>
> _______________________________________________
> 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