[webkit-changes] [WebKit/WebKit] 1fc252: Cherry-pick 285116 at main (2b8b7072fa8e). https://bu...

Adrian Perez noreply at github.com
Tue Oct 15 02:38:10 PDT 2024


  Branch: refs/heads/webkitglib/2.46
  Home:   https://github.com/WebKit/WebKit
  Commit: 1fc252fdd5fe146607f483640caec11eaa2bf222
      https://github.com/WebKit/WebKit/commit/1fc252fdd5fe146607f483640caec11eaa2bf222
  Author: Adrian Perez de Castro <aperez at igalia.com>
  Date:   2024-10-15 (Tue, 15 Oct 2024)

  Changed paths:
    M Source/WebCore/platform/SourcesSkia.txt
    M Source/WebCore/platform/graphics/IntRect.h
    M Source/WebCore/platform/graphics/skia/ImageBufferSkiaAcceleratedBackend.cpp
    A Source/WebCore/platform/graphics/skia/IntRectSkia.cpp

  Log Message:
  -----------
  Cherry-pick 285116 at main (2b8b7072fa8e). https://bugs.webkit.org/show_bug.cgi?id=281042

    [WPE][GTK][Skia] High memory usage repeatedly using putImageData on accelerated canvas
    https://bugs.webkit.org/show_bug.cgi?id=281042

    Reviewed by Carlos Garcia Campos.

    Change ImageBufferSkiaAcceleratedBackend::putPixelBuffer() to avoid
    making a temporary scratch buffer with the same size as the canvas
    backing SkSurface on each canvas.putImageData() invocation, which may
    happen many times in between each composition.

    Instead of using the ImageBufferBackend::putPixelBuffer() helper on
    a temporary buffer with the same size as the canvas backing surface,
    bring inline part of the source/destination rectangle calculations to
    operate strictly on the part of the source PixelBuffer that will be
    applied onto the backing surface. The source pixel data gets passed
    directly to Skia in the rather common case where the destination
    alpha mode matches that of the canvas backing surface (and Skia will
    handle any other conversions, if needed); otherwise going through
    a scratch buffer is still done, but its size is limited to that of
    the clipped source rectangle to convert only the pixel area that
    gets applied onto the canvas backing surface.

    On top of reducing memory usage, this makes the MotionMark Images
    test ~2.5x faster, and its Canvas putPixel/getPixel test ~1.2x faster.

    * Source/WebCore/platform/SourcesSkia.txt: List IntRectSkia.cpp file.
    * Source/WebCore/platform/graphics/IntRect.h: Add SkIRect forward
      declaration and operator methods to convert instances to/from
      WebCore::IntRect.
    * Source/WebCore/platform/graphics/skia/ImageBufferSkiaAcceleratedBackend.cpp:
    (WebCore::ImageBufferSkiaAcceleratedBackend::putPixelBuffer):
    * Source/WebCore/platform/graphics/skia/IntRectSkia.cpp: Added.
    (WebCore::IntRect::IntRect):
    (WebCore::IntRect::operator SkIRect const):

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

Canonical link: https://commits.webkit.org/282416.210@webkitglib/2.46



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list