<div dir="auto">Reviewed-by: Marek Olšák <<a href="mailto:marek.olsak@amd.com">marek.olsak@amd.com</a>></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 13, 2018, 2:34 PM Rob Clark <<a href="mailto:robdclark@gmail.com">robdclark@gmail.com</a> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">For RGB surfaces (for example) we don't really care that the colormask<br>
is 0x7 instead of 0xf.  This should not trigger clear_with_quad()<br>
slowpath.<br>
<br>
Signed-off-by: Rob Clark <<a href="mailto:robdclark@gmail.com" target="_blank" rel="noreferrer">robdclark@gmail.com</a>><br>
---<br>
This avoids some mem->gmem for webgl and probably other things using<br>
a RGB surface.  This should be ok for 24b packed RGB, but not sure<br>
about 32b RGBx.  In my case, I have a WRITEMASK for the thing I use<br>
for clears, which I think should make this work properly for RGBx<br>
as well.  (And, well, I probably don't even need the whole<br>
clear_with_quad() path for colormask in the first place.)<br>
<br>
 src/mesa/state_tracker/st_cb_clear.c | 10 ++++++++--<br>
 1 file changed, 8 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c<br>
index 3b51bd2c8a7..88fc12789e3 100644<br>
--- a/src/mesa/state_tracker/st_cb_clear.c<br>
+++ b/src/mesa/state_tracker/st_cb_clear.c<br>
@@ -392,12 +392,18 @@ st_Clear(struct gl_context *ctx, GLbitfield mask)<br>
             if (!strb || !strb->surface)<br>
                continue;<br>
<br>
-            if (!GET_COLORMASK(ctx->Color.ColorMask, colormask_index))<br>
+            unsigned colormask =<br>
+               GET_COLORMASK(ctx->Color.ColorMask, colormask_index);<br>
+<br>
+            if (!colormask)<br>
                continue;<br>
<br>
+            unsigned surf_colormask =<br>
+               util_format_colormask(util_format_description(strb->surface->format));<br>
+<br>
             if (is_scissor_enabled(ctx, rb) ||<br>
                 is_window_rectangle_enabled(ctx) ||<br>
-                GET_COLORMASK(ctx->Color.ColorMask, colormask_index) != 0xf)<br>
+                ((colormask & surf_colormask) != surf_colormask))<br>
                quad_buffers |= PIPE_CLEAR_COLOR0 << i;<br>
             else<br>
                clear_buffers |= PIPE_CLEAR_COLOR0 << i;<br>
-- <br>
2.19.1<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank" rel="noreferrer">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</blockquote></div>