From: Rob Clark Date: Tue, 13 Nov 2018 19:19:38 +0000 (-0500) Subject: mesa/st: better colormask check for clear fallback X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=09300bbe03c05af6c212ae9dff86882e14019007;p=mesa.git mesa/st: better colormask check for clear fallback For RGB surfaces (for example) we don't really care that the colormask is 0x7 instead of 0xf. This should not trigger clear_with_quad() slowpath. Signed-off-by: Rob Clark Reviewed-by: Marek Olšák --- diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 3b51bd2c8a7..88fc12789e3 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -392,12 +392,18 @@ st_Clear(struct gl_context *ctx, GLbitfield mask) if (!strb || !strb->surface) continue; - if (!GET_COLORMASK(ctx->Color.ColorMask, colormask_index)) + unsigned colormask = + GET_COLORMASK(ctx->Color.ColorMask, colormask_index); + + if (!colormask) continue; + unsigned surf_colormask = + util_format_colormask(util_format_description(strb->surface->format)); + if (is_scissor_enabled(ctx, rb) || is_window_rectangle_enabled(ctx) || - GET_COLORMASK(ctx->Color.ColorMask, colormask_index) != 0xf) + ((colormask & surf_colormask) != surf_colormask)) quad_buffers |= PIPE_CLEAR_COLOR0 << i; else clear_buffers |= PIPE_CLEAR_COLOR0 << i;