diff options
author | Roland Scheidegger <[email protected]> | 2013-05-18 00:16:03 +0200 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2013-05-18 00:32:33 +0200 |
commit | 070a9afb5476b58a2824fac5c94bbe4f78a2d8b9 (patch) | |
tree | e77b6e523a25460af9b97fe45e6793e4ab7c0297 /src/gallium/drivers/llvmpipe/lp_setup.c | |
parent | f3ad716e8f36fa1360703b73eafed1824c29db6e (diff) |
llvmpipe: handle z32s8x24 depth/stencil format
We need to split up the depth and stencil values in this case, and there's
some new logic required to handle float depth and stencil simultaneously.
Also make sure we get the 64bit zs clear values and masks propagated
correctly.
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_setup.c')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_setup.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c index f9cbdaba62c..9fef34e77e0 100644 --- a/src/gallium/drivers/llvmpipe/lp_setup.c +++ b/src/gallium/drivers/llvmpipe/lp_setup.c @@ -390,8 +390,8 @@ lp_setup_try_clear( struct lp_setup_context *setup, unsigned stencil, unsigned flags ) { - uint32_t zsmask = 0; - uint32_t zsvalue = 0; + uint64_t zsmask = 0; + uint64_t zsvalue = 0; union lp_rast_cmd_arg color_arg; unsigned i; @@ -404,16 +404,16 @@ lp_setup_try_clear( struct lp_setup_context *setup, if (flags & PIPE_CLEAR_DEPTHSTENCIL) { uint32_t zmask = (flags & PIPE_CLEAR_DEPTH) ? ~0 : 0; - uint32_t smask = (flags & PIPE_CLEAR_STENCIL) ? ~0 : 0; + uint8_t smask = (flags & PIPE_CLEAR_STENCIL) ? ~0 : 0; - zsvalue = util_pack_z_stencil(setup->fb.zsbuf->format, - depth, - stencil); + zsvalue = util_pack64_z_stencil(setup->fb.zsbuf->format, + depth, + stencil); - zsmask = util_pack_mask_z_stencil(setup->fb.zsbuf->format, - zmask, - smask); + zsmask = util_pack64_mask_z_stencil(setup->fb.zsbuf->format, + zmask, + smask); zsvalue &= zsmask; } |