tgsi: Saturate modifier obeys ExecMask.

Implement NVIDIA [-1;+1] saturate mode.
This commit is contained in:
Michal Krol 2008-08-18 17:09:20 +02:00
parent 6aacca106b
commit 56c30bf17b

View file

@ -1263,13 +1263,27 @@ store_dest(
break;
case TGSI_SAT_ZERO_ONE:
/* XXX need to obey ExecMask here */
micro_max( dst, chan, &mach->Temps[TEMP_0_I].xyzw[TEMP_0_C] );
micro_min( dst, dst, &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C] );
for (i = 0; i < QUAD_SIZE; i++)
if (execmask & (1 << i)) {
if (chan->f[i] < 0.0f)
dst->f[i] = 0.0f;
else if (chan->f[i] > 1.0f)
dst->f[i] = 1.0f;
else
dst->i[i] = chan->i[i];
}
break;
case TGSI_SAT_MINUS_PLUS_ONE:
assert( 0 );
for (i = 0; i < QUAD_SIZE; i++)
if (execmask & (1 << i)) {
if (chan->f[i] < -1.0f)
dst->f[i] = -1.0f;
else if (chan->f[i] > 1.0f)
dst->f[i] = 1.0f;
else
dst->i[i] = chan->i[i];
}
break;
default: