diff options
author | José Fonseca <[email protected]> | 2009-09-09 21:17:20 +0100 |
---|---|---|
committer | José Fonseca <[email protected]> | 2009-09-09 21:48:50 +0100 |
commit | abc160b664c3fbd4c18a2cd3402c9a84f5f2d00f (patch) | |
tree | 3062490940511e946958ffc614849a5f224c58d8 | |
parent | cdbbcdf3bdb114d79cf7b9474436c3d26b135592 (diff) |
llvmpipe: Fix depth mask computation.
Fixes depth test for 24bit depth formats.
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_bld_depth.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c index 2cd6e6b9217..3f88a14b5d3 100644 --- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c +++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c @@ -179,12 +179,13 @@ lp_build_depth_test(LLVMBuilderRef builder, padding_right = 0; for(chan = 0; chan < z_swizzle; ++chan) padding_right += format_desc->channel[chan].size; - padding_left = format_desc->block.bits - format_desc->channel[z_swizzle].size; + padding_left = format_desc->block.bits - + (padding_right + format_desc->channel[z_swizzle].size); if(padding_left || padding_right) { - const long long mask_left = ((long long)1 << (format_desc->block.bits - padding_left)) - 1; - const long long mask_right = ((long long)1 << (padding_right)) - 1; - z_bitmask = lp_build_int_const_scalar(type, mask_left & mask_right); + const unsigned long long mask_left = ((unsigned long long)1 << (format_desc->block.bits - padding_left)) - 1; + const unsigned long long mask_right = ((unsigned long long)1 << (padding_right)) - 1; + z_bitmask = lp_build_int_const_scalar(type, mask_left ^ mask_right); } if(padding_left) |