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 <robdclark@gmail.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
Rob Clark 2018-11-13 14:19:38 -05:00
parent 65cee01430
commit 09300bbe03

View file

@ -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;