st/mesa: automatically set per-sample interpolation if using SampleID/Pos
Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
@@ -70,9 +70,15 @@ update_fp( struct st_context *st )
|
|||||||
key.clamp_color = st->clamp_frag_color_in_shader &&
|
key.clamp_color = st->clamp_frag_color_in_shader &&
|
||||||
st->ctx->Color._ClampFragmentColor;
|
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 =
|
key.persample_shading =
|
||||||
!st->can_force_persample_interp &&
|
!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;
|
_mesa_get_min_invocations_per_fragment(st->ctx, &stfp->Base, true) > 1;
|
||||||
|
|
||||||
st->fp_variant = st_get_fp_variant(st, stfp, &key);
|
st->fp_variant = st_get_fp_variant(st, stfp, &key);
|
||||||
|
@@ -619,7 +619,9 @@ st_translate_fragment_program(struct st_context *st,
|
|||||||
else
|
else
|
||||||
interpLocation[slot] = TGSI_INTERPOLATE_LOC_CENTER;
|
interpLocation[slot] = TGSI_INTERPOLATE_LOC_CENTER;
|
||||||
|
|
||||||
if (key->persample_shading)
|
if (stfp->Base.Base.SystemValuesRead & (SYSTEM_BIT_SAMPLE_ID |
|
||||||
|
SYSTEM_BIT_SAMPLE_POS) ||
|
||||||
|
key->persample_shading)
|
||||||
interpLocation[slot] = TGSI_INTERPOLATE_LOC_SAMPLE;
|
interpLocation[slot] = TGSI_INTERPOLATE_LOC_SAMPLE;
|
||||||
|
|
||||||
switch (attr) {
|
switch (attr) {
|
||||||
|
Reference in New Issue
Block a user