llvmpipe: Obey back writemask.
Tested with a modified glean tstencil2 test. NOTE: This is a candidate for stable branches. Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
parent
470952f751
commit
f69fc36127
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue