From e812c0439cc6a6ee7b0cda33d30dc5cbc9159733 Mon Sep 17 00:00:00 2001 From: Marek Olšák Date: Sat, 8 May 2010 05:26:31 +0200 Subject: 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). --- src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c | 7 +++++++ 1 file changed, 7 insertions(+) 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 f7c54d0fe8..53154f7fbb 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) -- cgit v1.2.3