summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2016-05-22 14:34:28 -0400
committerIlia Mirkin <imirkin@alum.mit.edu>2016-05-22 14:48:56 -0400
commitcb9a51d1f6db4c5a3baa2aed309875bf2e8746bd (patch)
treea880809b0bc6142b9964d500b141e433750c539b /src/gallium/drivers
parentf57a8440d53b8cdffb78d16bfed0c15e6e8abd5d (diff)
nv30: reset the stencil mask when fast-clearing
Apparently the stencil mask applies to clears on nv30/nv40. Reset it to 0xff before doing a stencil clear. This fixes gl-1.0-readpixsanity and a number of other piglit tests. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r--src/gallium/drivers/nouveau/nv30/nv30_clear.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gallium/drivers/nouveau/nv30/nv30_clear.c b/src/gallium/drivers/nouveau/nv30/nv30_clear.c
index 118cac77277..c8fa38e20c7 100644
--- a/src/gallium/drivers/nouveau/nv30/nv30_clear.c
+++ b/src/gallium/drivers/nouveau/nv30/nv30_clear.c
@@ -73,8 +73,13 @@ nv30_clear(struct pipe_context *pipe, unsigned buffers,
zeta = pack_zeta(fb->zsbuf->format, depth, stencil);
if (buffers & PIPE_CLEAR_DEPTH)
mode |= NV30_3D_CLEAR_BUFFERS_DEPTH;
- if (buffers & PIPE_CLEAR_STENCIL)
+ if (buffers & PIPE_CLEAR_STENCIL) {
mode |= NV30_3D_CLEAR_BUFFERS_STENCIL;
+ BEGIN_NV04(push, NV30_3D(STENCIL_ENABLE(0)), 2);
+ PUSH_DATA (push, 0);
+ PUSH_DATA (push, 0x000000ff);
+ nv30->dirty |= NV30_NEW_ZSA;
+ }
}
/*XXX: wtf? fixes clears sometimes not clearing on nv3x... */