You might consider also including whether the interpolation method was
forced or not. i.e. if you have

flat varying vec4 gl_Color;

then it doesn't matter whether shade model is flat or not, it'll be
interpolated as flat. (Same with the other qualifiers made available
in GL 3.0.)

So you only have to do funny stuff if either COL0 / COL1 don't have
explicit interpolation qualifiers.

That might be over-optimizing it though. Your call. Just something
that occurred to me.

  -ilia


On Tue, Aug 22, 2017 at 10:19 PM, Kenneth Graunke <[email protected]> wrote:
> This may reduce some recompiles.
> ---
>  src/mesa/drivers/dri/i965/brw_wm.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_wm.c 
> b/src/mesa/drivers/dri/i965/brw_wm.c
> index c9c45045902..e1555d60c56 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm.c
> @@ -531,7 +531,9 @@ brw_wm_populate_key(struct brw_context *brw, struct 
> brw_wm_prog_key *key)
>        key->stats_wm = brw->stats_wm;
>
>     /* _NEW_LIGHT */
> -   key->flat_shade = (ctx->Light.ShadeModel == GL_FLAT);
> +   key->flat_shade =
> +      (prog->info.inputs_read & (VARYING_BIT_COL0 | VARYING_BIT_COL1)) &&
> +      (ctx->Light.ShadeModel == GL_FLAT);
>
>     /* _NEW_FRAG_CLAMP | _NEW_BUFFERS */
>     key->clamp_fragment_color = ctx->Color._ClampFragmentColor;
> --
> 2.14.1
>
> _______________________________________________
> mesa-dev mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to