<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Replaying recording surfaces with OVER has far worse performance than when using the SOURCE operator"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=88203#c4">Comment # 4</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Replaying recording surfaces with OVER has far worse performance than when using the SOURCE operator"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=88203">bug 88203</a>
              from <span class="vcard"><a class="email" href="mailto:emanuele.aina@collabora.com" title="Emanuele Aina <emanuele.aina@collabora.com>"> <span class="fn">Emanuele Aina</span></a>
</span></b>
        <pre><span class="quote">> Right, an OVER operator with no mask need no incur the replay onto an
> intermediate surface.</span >

\o/

<span class="quote">>      /* Are we just copying a recording surface? */
> -    if (inplace &&
> +    if ((inplace || (op == CAIRO_OPERATOR_OVER && no_mask)) &&</span >

Is it safe to ignore need_clip_mask when the operator is OVER?

<span class="quote">>         /* first clear the area about to be overwritten */
> -       if (! dst->is_clear) {
> +       if (! dst->is_clear && op_is_source) {
>             status = compositor->fill_boxes (dst,
>                                              CAIRO_OPERATOR_CLEAR,
>                                              CAIRO_COLOR_TRANSPARENT,</span >


If I got the code right, using op_is_source instead of checking for
CAIRO_OPERATOR_SOURCE here would produce some redundant clears in case we're
using CAIRO_OPERATOR_OVER or CAIRO_OPERATOR_ADD with an opaque pattern.

<span class="quote">> or even replace that op_is_source with inplace for consistency.</span >

I'm not sure what you meant here, sorry. :(

<span class="quote">> Can you please check that the recording_surface_over test hits the new path
> and check that it missed the optimisation before.</span >

I'm having some issue with the testsuite.

Even when using `Xvfb -screen 0 1680x1024x24 -ac -nolisten tcp :2` and
`DISPLAY=:2 CAIRO_TEST_TARGET=xlib ./cairo-test-suite recording-surface-over` I
only get xlib.argb32 and xlib-render-0_0.rgb24 to PASS, while xlib.rgb24,
xlib-window.rgb24 and xlib-fallback.rgb24 FAIL (with or without the patch
applied).

The two tests using CAIRO_TEST_TARGET=image PASS cleanly, without limiting
CAIRO_TEST_TARGET I get other failures.

But I also get lots of failures when I run the full testsuite, so I'm quite at
a loss here. :(</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>