r300/compiler: fake equal/notequal for shadow samplers

This is actually better than a real implementation, which would be useless
due to inaccuracy (I know because I've tried to implement it).
This commit is contained in:
Marek Olšák 2010-05-08 05:26:31 +02:00
parent 35a6df5730
commit e812c0439c

View file

@ -162,6 +162,13 @@ int radeonTransformTEX(
inst_mad->U.I.SrcReg[tex].Index = tmp_texsample;
inst_mad->U.I.SrcReg[tex].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle;
/* Fake EQUAL/NOTEQUAL, it seems to pass some tests suprisingly. */
if (comparefunc == RC_COMPARE_FUNC_EQUAL) {
comparefunc = RC_COMPARE_FUNC_GEQUAL;
} else if (comparefunc == RC_COMPARE_FUNC_NOTEQUAL) {
comparefunc = RC_COMPARE_FUNC_LESS;
}
/* Recall that SrcReg[0] is r, SrcReg[tex] is tex and:
* LESS: r < tex <=> -tex+r < 0
* GEQUAL: r >= tex <=> not (-tex+r < 0)