[Mesa-dev] [PATCH 22/43] i965/clip: Make brw_clip_prog_key::interp_mode an array

Timothy Arceri tarceri at itsqueeze.com
Thu May 18 07:29:23 UTC 2017


On 17/05/17 08:45, Jason Ekstrand wrote:
> Having it be a pointer means that we end up caching clip programs based
> on a pointer to wm_prog_data rather than the actual interpolation modes.
> We've been caching one clip program per FS ever since 91d61fbf7cb61a44a
> where Timothy rewrote brw_setup_vue_interpolation().

Apologies, that change also had other caching issues that were later 
fixed. It seems this area isn't very well covered by piglit.

> ---
>   src/mesa/drivers/dri/i965/brw_clip.c | 6 +++++-
>   src/mesa/drivers/dri/i965/brw_clip.h | 2 +-
>   2 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_clip.c b/src/mesa/drivers/dri/i965/brw_clip.c
> index 4187207..34325a7 100644
> --- a/src/mesa/drivers/dri/i965/brw_clip.c
> +++ b/src/mesa/drivers/dri/i965/brw_clip.c
> @@ -155,7 +155,11 @@ brw_upload_clip_prog(struct brw_context *brw)
>         key.contains_flat_varying = wm_prog_data->contains_flat_varying;
>         key.contains_noperspective_varying =
>            wm_prog_data->contains_noperspective_varying;
> -      key.interp_mode = wm_prog_data->interp_mode;
> +
> +      STATIC_ASSERT(sizeof(key.interp_mode) ==
> +                    sizeof(wm_prog_data->interp_mode));
> +      memcpy(key.interp_mode, wm_prog_data->interp_mode,
> +             sizeof(key.interp_mode));
>      }
>   
>      /* BRW_NEW_REDUCED_PRIMITIVE */
> diff --git a/src/mesa/drivers/dri/i965/brw_clip.h b/src/mesa/drivers/dri/i965/brw_clip.h
> index 9dc1f12..2dc84d8 100644
> --- a/src/mesa/drivers/dri/i965/brw_clip.h
> +++ b/src/mesa/drivers/dri/i965/brw_clip.h
> @@ -49,7 +49,7 @@ struct brw_clip_prog_key {
>      GLbitfield64 attrs;
>      bool contains_flat_varying;
>      bool contains_noperspective_varying;
> -   const unsigned char *interp_mode;
> +   unsigned char interp_mode[65]; /* BRW_VARYING_SLOT_COUNT */
>      GLuint primitive:4;
>      GLuint nr_userclip:4;
>      GLuint pv_first:1;
> 


More information about the mesa-dev mailing list