llvmpipe: fix early depth test / late depth write stencil issues
authorRoland Scheidegger <sroland@vmware.com>
Tue, 21 May 2013 21:57:33 +0000 (23:57 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 22 May 2013 20:57:27 +0000 (22:57 +0200)
commite108716429f85aca3d2a70c609248b7b82f050b4
tree84dc39bf3731a9cd80443639fc8ffc5a9984dfb1
parent82d7733b52e7c124a268c68395de140641b50c05
llvmpipe: fix early depth test / late depth write stencil issues

We actually did early depth/stencil test and late depth/stencil write even
when the shader could kill the fragment (alpha test or discard). Since it
matters for the new stencil value if the fragment is killed by depth/stencil
test or by the shader (in which case it will not reach the depth/stencil
test) this simply cannot work (we also would possibly skip writing the new
stencil value due to mask checks but this is a secondary issue).
So use late depth test / late depth write instead in this case.
(No piglit changes as it doesn't seem to hit such bogus early depth test
/ late depth write path.)

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
src/gallium/drivers/llvmpipe/lp_state_fs.c