Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: de7538e40c42ca6292df250a984e8737ca9baec6
      
https://github.com/WebKit/WebKit/commit/de7538e40c42ca6292df250a984e8737ca9baec6
  Author: Kimmo Kinnunen <kkinnu...@apple.com>
  Date:   2023-09-26 (Tue, 26 Sep 2023)

  Changed paths:
    M 
Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp
    M 
Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.h

  Log Message:
  -----------
  REGRESSION(268243@main) ~9/21: MotionMark Images 15% on multiple models
https://bugs.webkit.org/show_bug.cgi?id=262032
rdar://115907669

Reviewed by Matt Woodrow.

Before 268243@main, call ImageBuffer::copyImageForDrawing() would do the work:
  if (can use ref)
    <do the work of create native image reference>
  else
    <do the work of copy native image>

After 268243@main, the invocation was moved to 
GraphicsContext::nativeImageForDrawing():
  if (can use ref)
     imageBuffer->createNativeImageReference();
  else
     imageBuffer->copyNativeImage();

ImageBufferShareableMappedIOSurfaceBackend happened to have an
copyNativeImage() override that caused a difference in behavior.

Remove this code altogether, it was a leftover from eariler days
working around the issues of backbuffer reading from WP and updating
from GPUP. This code was not needed anymore. It is not correct, as
IOSurface seed cannot be used to determine read cache invalidation
accurately. The seed is updated during HW rasterization, which happens
at undefined time. The drawing commands might be on their way from WP
-> GPUP or from GPUP -> CG, and not yet issued at the HW rasterization
level.

The read cache is cleared when the drawing context, e.g.
RemoteDisplayListRecorderProxy detects the first modification after a
copyNativeImage() call.
RemoteImageBufferProxy::backingStoreWillChange() notification will
invalidate the read caches.

* 
Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.h:
* 
Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBackend.cpp:

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to