diff options
author | Marek Olšák <maraeo@gmail.com> | 2010-05-08 05:59:28 +0200 |
---|---|---|
committer | Marek Olšák <maraeo@gmail.com> | 2010-05-08 23:03:45 +0200 |
commit | 78e881368b392d8a6945990c20493560fcd73231 (patch) | |
tree | 1979b9d4c840fd1ebaef2029626bfd7e50cb2761 /src/mesa/drivers | |
parent | e812c0439cc6a6ee7b0cda33d30dc5cbc9159733 (diff) |
r300g: respect compare mode regardless of sampler type
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/r300/compiler/radeon_code.h | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_code.h b/src/mesa/drivers/dri/r300/compiler/radeon_code.h index 17703a9ad3..1979e7e4e4 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_code.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_code.h @@ -144,6 +144,12 @@ struct r300_fragment_program_external_state { unsigned texture_compare_func : 3; /** + * No matter what the sampler type is, + * this field turns it into a shadow sampler. + */ + unsigned compare_mode_enabled : 1; + + /** * If the sampler needs to fake NPOT, this field is set. */ unsigned fake_npot : 1; 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 53154f7fbb..42c08cd550 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c @@ -97,7 +97,8 @@ int radeonTransformTEX( /* ARB_shadow & EXT_shadow_funcs */ if (inst->U.I.Opcode != RC_OPCODE_KIL && - c->Program.ShadowSamplers & (1 << inst->U.I.TexSrcUnit)) { + ((c->Program.ShadowSamplers & (1 << inst->U.I.TexSrcUnit)) || + (compiler->state.unit[inst->U.I.TexSrcUnit].compare_mode_enabled))) { rc_compare_func comparefunc = compiler->state.unit[inst->U.I.TexSrcUnit].texture_compare_func; if (comparefunc == RC_COMPARE_FUNC_NEVER || comparefunc == RC_COMPARE_FUNC_ALWAYS) { |