[webkit-changes] [WebKit/WebKit] 5ce41d: Wikipedia video control icon backgrounds flicker.

mattwoodrow noreply at github.com
Wed Dec 20 17:26:02 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5ce41d80d50760401a9399bc7cb3d3be7b97b58e
      https://github.com/WebKit/WebKit/commit/5ce41d80d50760401a9399bc7cb3d3be7b97b58e
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2023-12-20 (Wed, 20 Dec 2023)

  Changed paths:
    A LayoutTests/compositing/repaint/copy-forward-clear-rect-expected.html
    A LayoutTests/compositing/repaint/copy-forward-clear-rect.html
    M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp

  Log Message:
  -----------
  Wikipedia video control icon backgrounds flicker.
https://bugs.webkit.org/show_bug.cgi?id=266726
<rdar://119868478>

Reviewed by Simon Fraser.

The previous code always required a full repaint of the layer whenever a buffer was allocated,
so the copy-forward code didn't run on the second paint of a layer. This meant the copy-forward
code, and the 'buffer is already clear' optimization were mutually exclusive.

The new code uses copy-forward and partial repaints whenever possible, even if the front buffer
was newly allocated (or existing, but purged).

The copy-forward code tries to only copy pixels that won't be re-drawn this frame, but is rounded
out to a single rectangle, not a complex region.

If the copy-forwards ends up copying pixels that we'll also drawn this frame, we can no longer
consider the buffer to be 'clear' and have to manually clear the paint region.

* LayoutTests/compositing/repaint/copy-forward-clear-rect-expected.html: Added.
* LayoutTests/compositing/repaint/copy-forward-clear-rect.html: Added.
* Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp:
(WebKit::RemoteImageBufferSet::prepareBufferForDisplay):

Canonical link: https://commits.webkit.org/272394@main




More information about the webkit-changes mailing list