From: Marek Olšák Date: Fri, 6 Dec 2013 17:58:52 +0000 (+0100) Subject: st/mesa: always prefer pipe->clear over clear_with_quad (v2) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9ea3f88c0acc547bbff39d489abda99bc71f376f;p=mesa.git st/mesa: always prefer pipe->clear over clear_with_quad (v2) v2: clear depth and stencil together --- diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 887e58bd9b6..363f2f74699 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -476,14 +476,23 @@ st_Clear(struct gl_context *ctx, GLbitfield mask) } } - /* - * If we're going to use clear_with_quad() for any reason, use it for - * everything possible. + /* Always clear depth and stencil together. + * This can only happen when the stencil writemask is not a full mask. + */ + if (quad_buffers & PIPE_CLEAR_DEPTHSTENCIL && + clear_buffers & PIPE_CLEAR_DEPTHSTENCIL) { + quad_buffers |= clear_buffers & PIPE_CLEAR_DEPTHSTENCIL; + clear_buffers &= ~PIPE_CLEAR_DEPTHSTENCIL; + } + + /* Only use quad-based clearing for the renderbuffers which cannot + * use pipe->clear. We want to always use pipe->clear for the other + * renderbuffers, because it's likely to be faster. */ if (quad_buffers) { - quad_buffers |= clear_buffers; clear_with_quad(ctx, quad_buffers); - } else if (clear_buffers) { + } + if (clear_buffers) { /* We can't translate the clear color to the colorbuffer format, * because different colorbuffers may have different formats. */