summaryrefslogtreecommitdiffstats
path: root/src/mesa/state_tracker/st_atom_shader.c
diff options
context:
space:
mode:
authorMarek Olšák <marek.olsak@amd.com>2015-09-27 19:54:57 +0200
committerMarek Olšák <marek.olsak@amd.com>2015-10-03 22:06:09 +0200
commit6b0f21cb287bde3acaba1b0d18ab1c291acf327f (patch)
tree7d528a5feb35865cdc05d59adc31799bca965559 /src/mesa/state_tracker/st_atom_shader.c
parent4e9fc7e4e2fa3b3c77d08c4db545dcc279e849e9 (diff)
downloadexternal_mesa3d-6b0f21cb287bde3acaba1b0d18ab1c291acf327f.zip
external_mesa3d-6b0f21cb287bde3acaba1b0d18ab1c291acf327f.tar.gz
external_mesa3d-6b0f21cb287bde3acaba1b0d18ab1c291acf327f.tar.bz2
st/mesa: automatically set per-sample interpolation if using SampleID/Pos
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Diffstat (limited to 'src/mesa/state_tracker/st_atom_shader.c')
-rw-r--r--src/mesa/state_tracker/st_atom_shader.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/mesa/state_tracker/st_atom_shader.c b/src/mesa/state_tracker/st_atom_shader.c
index dc03156..1e880a1 100644
--- a/src/mesa/state_tracker/st_atom_shader.c
+++ b/src/mesa/state_tracker/st_atom_shader.c
@@ -70,9 +70,15 @@ update_fp( struct st_context *st )
key.clamp_color = st->clamp_frag_color_in_shader &&
st->ctx->Color._ClampFragmentColor;
- /* Ignore sample qualifier while computing this flag. */
+ /* Don't set it if the driver can force the interpolation by itself.
+ * If SAMPLE_ID or SAMPLE_POS are used, the interpolation is set
+ * automatically.
+ * Ignore sample qualifier while computing this flag.
+ */
key.persample_shading =
!st->can_force_persample_interp &&
+ !(stfp->Base.Base.SystemValuesRead & (SYSTEM_BIT_SAMPLE_ID |
+ SYSTEM_BIT_SAMPLE_POS)) &&
_mesa_get_min_invocations_per_fragment(st->ctx, &stfp->Base, true) > 1;
st->fp_variant = st_get_fp_variant(st, stfp, &key);