Mesa (master): llvmpipe: Obey back writemask.

Jose Fonseca jrfonseca at kemper.freedesktop.org
Wed Oct 31 16:46:43 UTC 2012


Module: Mesa
Branch: master
Commit: f69fc3612768d9cfed974b9d6ecf6a70fa0db99c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f69fc3612768d9cfed974b9d6ecf6a70fa0db99c

Author: José Fonseca <jose.r.fonseca at gmail.com>
Date:   Tue Oct 30 19:45:25 2012 +0000

llvmpipe: Obey back writemask.

Tested with a modified glean tstencil2 test.

NOTE: This is a candidate for stable branches.

Reviewed-by: Brian Paul <brianp at vmware.com>

---

 src/gallium/drivers/llvmpipe/lp_bld_depth.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_bld_depth.c b/src/gallium/drivers/llvmpipe/lp_bld_depth.c
index 8efa75c..5c3715a 100644
--- a/src/gallium/drivers/llvmpipe/lp_bld_depth.c
+++ b/src/gallium/drivers/llvmpipe/lp_bld_depth.c
@@ -273,11 +273,17 @@ lp_build_stencil_op(struct lp_build_context *bld,
       res = lp_build_select(bld, front_facing, res, back_res);
    }
 
-   /* XXX what about the back-face writemask? */
-   if (stencil[0].writemask != 0xff) {
+   if (stencil[0].writemask != 0xff ||
+       (stencil[1].enabled && front_facing != NULL && stencil[1].writemask != 0xff)) {
       /* mask &= stencil[0].writemask */
       LLVMValueRef writemask = lp_build_const_int_vec(bld->gallivm, bld->type,
                                                       stencil[0].writemask);
+      if (stencil[1].enabled && stencil[1].writemask != stencil[0].writemask && front_facing != NULL) {
+         LLVMValueRef back_writemask = lp_build_const_int_vec(bld->gallivm, bld->type,
+                                                         stencil[1].writemask);
+         writemask = lp_build_select(bld, front_facing, writemask, back_writemask);
+      }
+
       mask = LLVMBuildAnd(builder, mask, writemask, "");
       /* res = (res & mask) | (stencilVals & ~mask) */
       res = lp_build_select_bitwise(bld, mask, res, stencilVals);




More information about the mesa-commit mailing list