Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
- Loading branch information