diff options
author | Marek Olšák <[email protected]> | 2010-05-08 05:26:31 +0200 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2010-05-08 23:03:45 +0200 |
commit | e812c0439cc6a6ee7b0cda33d30dc5cbc9159733 (patch) | |
tree | 0384b4fa7fed631c76ba1c29bfc9878b5317c99c /src | |
parent | 35a6df573090e31d9eb921d6863b0939458f880c (diff) |
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).
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c | 7 |
1 files changed, 7 insertions, 0 deletions
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) |