From: Marek Olšák Date: Sat, 8 May 2010 03:26:31 +0000 (+0200) Subject: r300/compiler: fake equal/notequal for shadow samplers X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e812c0439cc6a6ee7b0cda33d30dc5cbc9159733;p=mesa.git 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). --- diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c index f7c54d0fe81..53154f7fbb8 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c @@ -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)