[webkit-changes] [WebKit/WebKit] 10b1c1: Versioning.
MyahCobbs
noreply at github.com
Mon Nov 27 16:24:10 PST 2023
Branch: refs/heads/safari-7616.1.14.11-branch
Home: https://github.com/WebKit/WebKit
Commit: 10b1c1a40933e8b2dc73527c5056f3918a071963
https://github.com/WebKit/WebKit/commit/10b1c1a40933e8b2dc73527c5056f3918a071963
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 262728.1070 at safari-7616.1.14.11-branch
Commit: aa29b14404cd7244a710f6b95c44dfbbb4cf911f
https://github.com/WebKit/WebKit/commit/aa29b14404cd7244a710f6b95c44dfbbb4cf911f
Author: Eric Carlson <eric.carlson at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebCore/PAL/pal/spi/mac/ScreenCaptureKitSPI.h
Log Message:
-----------
Cherry-pick 9fd6c7e3607b. rdar://problem/109162122
[macOS] Update ScreenCaptureKitSPI.h
https://bugs.webkit.org/show_bug.cgi?id=256605
rdar://109162122
Reviewed by Jer Noble.
* Source/WebCore/PAL/pal/spi/mac/ScreenCaptureKitSPI.h: Include new header.
Canonical link: https://commits.webkit.org/263927@main
Identifier: 263769.30 at safari-7616.1.14.11-branch
Commit: c55f2b970a4d959422cfc39b7e44a72d4c5c3cae
https://github.com/WebKit/WebKit/commit/c55f2b970a4d959422cfc39b7e44a72d4c5c3cae
Author: Sammy Gill <sammy.gill at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M LayoutTests/TestExpectations
A LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html
A LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
M Source/WebCore/rendering/GridTrackSizingAlgorithm.h
M Source/WebCore/rendering/RenderGrid.cpp
Log Message:
-----------
Cherry-pick ff409be22993. rdar://problem/109170495
[css-grid][masonry] Containing block for items in a masonry columns grid should be the grid's content box logical width
https://bugs.webkit.org/show_bug.cgi?id=256611
rdar://109170495
Reviewed by Matt Woodrow.
The masonry spec states, "The containing block for a grid item is
formed by its grid area in the grid axis and the grid container’s
content-box in the masonry axis."
This means that for a grid that has masonry columns specified, the
masonry axis will be in the logical width direction of the grid. The
items should have their containing block set to the content box logical
box of the grid.
We can modify GridTrackSizingAlgorithm::gridAreaBreadthForChild to
return this value when the grid is a masonry columns grid since normally
the grid area would be used as the containing block in non-masonry
grids. This allows the rest of the code to use the grid area sizes of
the containing block in both masonry and non-masonry scenarios.
Previously, this function would have attempted to compute the
value by iterating over the tracks in the specified direction, but there
are no tracks in the masonry direction so we use the logic specified by
the masonry spec instead.
However, in order for this change to work properly we had to make a
change in RenderGrid::layoutMasonry by removing code that was
incorrectly overriding the logical width of the grid. The previous code
was attempting to set the logical width of the grid to the masonry
content size when the grid had masonry columns specified and an auto
logical width. There were 2 main issues with this piece of code:
1.) m_masonryLayout.gridContentSize() will always return 0 since we
actually haven't performed masonry layout at this point
2.) The grid shouldn't be overriding its logical width like this anyways
and it should instead be set by sized by the rules of the formatting
context it is participating in (e.g. block or inline layout).
By removing this code we can get the actual width of the grid later on
when we call m_renderGrid->contentLogicalWidth() rather than the
incorrect 0 value that it was being set to.
The following example highlights the changes that were made.
<style>
grid {
display: grid;
grid-template-columns:masonry;
grid-template-rows: auto;
}
</style>
<grid>
<svg width="100" height="100" viewBox="0 0 1 1" style="width: 100%; max-width: 100px; background: green;"></svg>
</grid>
By removing the extra code in RenderGrid::layoutMasonry, the grid will
get sizes as a block level box in the block formatting context it is
participating in, giving it a logical width that takes up its available
space. The svg's containing block logical width is set to its value so
it is able to resolve its percentage width to the correct value whereas
before the containing block logical width would have been 0px.
https://drafts.csswg.org/css-grid-3/#containing-block
* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html: Added.
* LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html: Added.
* LayoutTests/platform/glib/TestExpectations:
* Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp:
(WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild const):
* Source/WebCore/rendering/GridTrackSizingAlgorithm.h:
* Source/WebCore/rendering/RenderGrid.cpp:
(WebCore::RenderGrid::layoutMasonry):
Canonical link: https://commits.webkit.org/264011@main
Identifier: 263769.31 at safari-7616.1.14.11-branch
Commit: 4f0beb88f91788251d4573d0b04831e322cc5cf4
https://github.com/WebKit/WebKit/commit/4f0beb88f91788251d4573d0b04831e322cc5cf4
Author: Sihui Liu <sihui_liu at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebCore/workers/service/server/SWRegistrationDatabase.cpp
M Source/WebCore/workers/service/server/SWRegistrationDatabase.h
M Source/WebKit/NetworkProcess/storage/ServiceWorkerStorageManager.cpp
M Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm
Log Message:
-----------
Cherry-pick abde730eecbb. rdar://problem/108841865
ServiceWorkerStorageManager should only delete its own files when clearing registrations
https://bugs.webkit.org/show_bug.cgi?id=256725
rdar://108841865
Reviewed by Chris Dumez.
Existing SPI allows clients to set the same path for different data types, so directory of ServiceWorkerStorageManager
might contain files for other types. Therefore, ServiceWorkerStorageManager should not remove the directory when
clearing registrations.
Test: WKWebsiteDataStoreConfiguration.SameCustomPathForDifferentTypes
* Source/WebCore/workers/service/server/SWRegistrationDatabase.cpp:
(WebCore::SWRegistrationDatabase::~SWRegistrationDatabase):
(WebCore::SWRegistrationDatabase::close):
(WebCore::SWRegistrationDatabase::clearAllRegistrations):
* Source/WebCore/workers/service/server/SWRegistrationDatabase.h:
* Source/WebKit/NetworkProcess/storage/ServiceWorkerStorageManager.cpp:
(WebKit::ServiceWorkerStorageManager::clearAllRegistrations):
* Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:
(TEST):
Canonical link: https://commits.webkit.org/264036@main
Identifier: 263769.32 at safari-7616.1.14.11-branch
Commit: 66ca569e11ec1995f88958216c6b0492db1fffd8
https://github.com/WebKit/WebKit/commit/66ca569e11ec1995f88958216c6b0492db1fffd8
Author: Matthew Finkel <sysrqb at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/Sources.txt
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/html/CanvasBase.cpp
M Source/WebCore/html/CanvasBase.h
A Source/WebCore/html/CanvasNoiseInjection.cpp
A Source/WebCore/html/CanvasNoiseInjection.h
M Source/WebCore/html/HTMLCanvasElement.cpp
Log Message:
-----------
Cherry-pick 9084db41d592. rdar://problem/107371244
Refactor Canvas noise injection logic and improve support for gradients in post-processed ImageData
https://bugs.webkit.org/show_bug.cgi?id=255993
rdar://107371244
Reviewed by Kimmo Kinnunen.
Gradients present an interesting problem when post-processing canvas ImageData
because tweaking colors result in significant visual anomalies. This change
introduces some naive gradient detection by looking at all of the immediate
neighbors of a pixel. We decide that a pixel is within a gradient if the
current color is between its opposing adjacent colors (e.g., above and below,
left and right, etc). If a color is decided to be within a gradient, then we
set those adjacent colors as bounds within which we can tweak the current
color.
In addition, within this change, we move the noise injection logic into its own
class, it removes the dependency on supplied colors for post-processing, and it
reduces the magnitude of noise from ~5% to ~1%.
* Source/WebCore/Headers.cmake:
* Source/WebCore/Sources.txt:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/html/CanvasBase.cpp:
(WebCore::CanvasBase::makeRenderingResultsAvailable):
(WebCore::CanvasBase::didDraw): We clip the rect before passing it into
CanvasNoiseInjection, and if the rect is std::nullopt then we pass in the
entire canvas.
(WebCore::CanvasBase::postProcessPixelBufferResults const):
(WebCore::CanvasBase::postProcessDirtyCanvasBuffer const): Deleted.
* Source/WebCore/html/CanvasBase.h:
* Source/WebCore/html/CanvasNoiseInjection.cpp: Added.
(WebCore::CanvasNoiseInjection::updateDirtyRect):
(WebCore::isIndexInBounds):
(WebCore::setTightnessBounds):
(WebCore::getGradientNeighbors):
(WebCore::CanvasNoiseInjection::postProcessDirtyCanvasBuffer):
(WebCore::CanvasNoiseInjection::postProcessPixelBufferResults const):
* Source/WebCore/html/CanvasNoiseInjection.h: Added.
* Source/WebCore/html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getImageData):
Originally-landed-as: 264019 at main (bfc25dc6ca1c). rdar://107371244
Identifier: 263769.33 at safari-7616.1.14.11-branch
Commit: 4031e0e6617a18cfaf6c2c9da5d1825033e2ba5a
https://github.com/WebKit/WebKit/commit/4031e0e6617a18cfaf6c2c9da5d1825033e2ba5a
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M LayoutTests/TestExpectations
R LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width-expected.html
R LayoutTests/imported/w3c/web-platform-tests/css/css-grid/masonry/tentative/masonry-columns-item-containing-block-is-grid-content-width.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/rendering/GridTrackSizingAlgorithm.cpp
M Source/WebCore/rendering/GridTrackSizingAlgorithm.h
M Source/WebCore/rendering/RenderGrid.cpp
Log Message:
-----------
Revert ff409be22993. rdar://problem/109170495
Identifier: 262728.1075 at safari-7616.1.14.11-branch
Commit: 8267ba90289c35ac4ca8e6e921ac72f7353716b8
https://github.com/WebKit/WebKit/commit/8267ba90289c35ac4ca8e6e921ac72f7353716b8
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-15 (Mon, 15 May 2023)
Changed paths:
M Source/WebKit/Shared/cg/ShareableBitmapCG.cpp
Log Message:
-----------
Cherry-pick 58702859275c. rdar://problem/108072383
[GPU Process] (REGRESSION 262607 at main): Copy pixels of CGImage only if it is not a sub-image
https://bugs.webkit.org/show_bug.cgi?id=255677
rdar://108072383
Reviewed by Simon Fraser.
In ShareableBitmap::createFromImagePixels(), CGImage and its CGDataProvider
may disagree about how many bytes are in the pixels buffers. CGImage is most
likely a sub-image of another CGImage which inherits its meta data but not
the full pixels buffer.
In this case we should fallback to ShareableBitmap::createFromImageDraw().
Ortherwise ShareableBitmapConfiguration will falsely describe the data in the
SharedMemory.
* Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:
(WebKit::ShareableBitmap::createFromImagePixels):
Canonical link: https://commits.webkit.org/264021@main
Identifier: 263319.485 at safari-7616.1.14.11-branch
Commit: 0df13e89ca39aa30fd0ea76b3267665a97edb74b
https://github.com/WebKit/WebKit/commit/0df13e89ca39aa30fd0ea76b3267665a97edb74b
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 263319.486 at safari-7616.1.14.11-branch
Commit: 064508f94c287c4cb583fef1d1adb460c483e80f
https://github.com/WebKit/WebKit/commit/064508f94c287c4cb583fef1d1adb460c483e80f
Author: Simon Fraser <simon.fraser at apple.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
M Source/WTF/wtf/NumberOfCores.cpp
M Source/WTF/wtf/NumberOfCores.h
M Source/WebKit/Shared/WebPreferencesDefaultValues.cpp
M Source/WebKit/Shared/WebPreferencesDefaultValues.h
M Source/WebKit/UIProcess/mac/WebViewImpl.mm
Log Message:
-----------
Cherry-pick 52e75d6babbd. rdar://problem/109234446
[GPU Process] Disable GPU Process on 2-core macOS devices
https://bugs.webkit.org/show_bug.cgi?id=256681
rdar://109234446
Reviewed by Chris Dumez.
Disable UI-side compositing and GPU Process by default on 2-core macOS devices, for performance reasons.
* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WTF/wtf/NumberOfCores.cpp:
(WTF::numberOfPhysicalProcessorCores): New function to get the number of physical cores. Currently
only has an implementation that works for Darwin OSes.
* Source/WTF/wtf/NumberOfCores.h:
* Source/WebKit/Shared/WebPreferencesDefaultValues.cpp:
(WebKit::defaultUseGPUProcessForDOMRenderingEnabled):
* Source/WebKit/Shared/WebPreferencesDefaultValues.h:
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::WebViewImpl):
Canonical link: https://commits.webkit.org/264056@main
Identifier: 263319.487 at safari-7616.1.14.11-branch
Commit: b68e81404888c481d41589694ae8f72fe8385915
https://github.com/WebKit/WebKit/commit/b68e81404888c481d41589694ae8f72fe8385915
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-16 (Tue, 16 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.3
Canonical link: https://commits.webkit.org/263769.38@safari-7616.1.14.11-branch
Commit: 02f15ad8f7a0aa2d7c2eb5ece83bbfae00235205
https://github.com/WebKit/WebKit/commit/02f15ad8f7a0aa2d7c2eb5ece83bbfae00235205
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-17 (Wed, 17 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 263319.489 at safari-7616.1.14.11-branch
Commit: e3a263997a2b1e3c23706d2c97f15cc0738c8485
https://github.com/WebKit/WebKit/commit/e3a263997a2b1e3c23706d2c97f15cc0738c8485
Author: Ryan Reno <rreno at apple.com>
Date: 2023-05-17 (Wed, 17 May 2023)
Changed paths:
M Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm
Log Message:
-----------
Cherry-pick b85d783df356. rdar://problem/109210266
Add a null check for the current process' name when launching a new process on macOS
https://bugs.webkit.org/show_bug.cgi?id=256853
rdar://109210266
Reviewed by Chris Dumez.
-[NSRunningApplication localizedName] is nullable. This adds a null
check and falls back to the -[NSProcessInfo processName] if it is null
on macOS.
* Source/WebKit/UIProcess/Launcher/cocoa/ProcessLauncherCocoa.mm:
(WebKit::ProcessLauncher::launchProcess):
Canonical link: https://commits.webkit.org/264128@main
Identifier: 263319.490 at safari-7616.1.14.11-branch
Commit: 2f665bfc8f3d6a55bdbd93d2c61bbb3f0b9e9fbf
https://github.com/WebKit/WebKit/commit/2f665bfc8f3d6a55bdbd93d2c61bbb3f0b9e9fbf
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-18 (Thu, 18 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 263319.491 at safari-7616.1.14.11-branch
Commit: f4a1681d87d4ea2235ae9f7a1d90964c5d514ca2
https://github.com/WebKit/WebKit/commit/f4a1681d87d4ea2235ae9f7a1d90964c5d514ca2
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
Identifier: 263319.492 at safari-7616.1.14.11-branch
Commit: 39a6a3c948597d22ef86d75e6053c30e4a347d66
https://github.com/WebKit/WebKit/commit/39a6a3c948597d22ef86d75e6053c30e4a347d66
Author: Alan Baradlay <zalan at apple.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
A LayoutTests/fast/inline/range-replace-partial-layout-invalidation-expected.html
A LayoutTests/fast/inline/range-replace-partial-layout-invalidation.html
M Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp
Log Message:
-----------
Cherry-pick 8922f7c4d332. rdar://problem/109538333
(REGRESSION 262148 at main) No repaint when deleting text, possibly only when the deleted text spans more than one line
https://bugs.webkit.org/show_bug.cgi?id=257043
<rdar://109538333>
Reviewed by Antti Koivisto.
Normally while editing inline content in a content-editable container e.g
"This is some long
long long long
long text content"
and select/delete "long long text" (spanning over line#2 and #3)
What happens is RenderText receives a content mutation event pointing to the _beginning_ of "long long text".
As a result we damage line #2 and run a partial layout staring from line#2 until after we see no layout change anymore or we hit content end.
However some JS based editors call innerHTML instead to mimic editing steps turning the above example to a "range replace"
type of mutation where the entire text content is getting replaced with the "new", shortened content.
In such cases, instead of receiving the position of the actual damage, we end up with the offset value of 0
since the entire content is being replaced (even though it's just a slight change in the text content)
Now we damage line#0 and start running layout from the very first line until we see no layout change...which is the second line
since the actual damage is on the third line.
Since IFC does not support such mutations yet, in this patch we disable range based bailout which means while
we still run partial inline layout, we always go all the way to the bottom of the content.
/fast/inline/range-replace-partial-layout-invalidation-expected.html: Added.
* LayoutTests/fast/inline/range-replace-partial-layout-invalidation.html: Added.
* Source/WebCore/layout/formattingContexts/inline/invalidation/InlineInvalidation.cpp:
(WebCore::Layout::InlineInvalidation::textWillBeRemoved):
Canonical link: https://commits.webkit.org/264274@main
Identifier: 263769.43 at safari-7616.1.14.11-branch
Commit: 07d7aa3b5f2518af55881b4645d254e894195383
https://github.com/WebKit/WebKit/commit/07d7aa3b5f2518af55881b4645d254e894195383
Author: Brady Eidson <beidson at apple.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj
Log Message:
-----------
Cherry-pick fbe202e644f1. rdar://problem/108176822
WebKitSwiftOverlay should (once again) include a WebKitAdditions overlay
https://bugs.webkit.org/show_bug.cgi?id=257046
rdar://109577606
Reviewed by Andy Estes.
Include WebKitAdditionsSwiftOverlay from a well known location.
* Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/264278@main
Identifier: 263319.494 at safari-7616.1.14.11-branch
Commit: 41ca1ef990f283afb0788cc642ac85d4fb6f3e13
https://github.com/WebKit/WebKit/commit/41ca1ef990f283afb0788cc642ac85d4fb6f3e13
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-19 (Fri, 19 May 2023)
Changed paths:
M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj
Log Message:
-----------
Revert fbe202e644f1. rdar://problem/108176822
Identifier: 263319.495 at safari-7616.1.14.11-branch
Commit: 01cd2d2c3f8bcafaeea6b71ba16053ff5625c5bf
https://github.com/WebKit/WebKit/commit/01cd2d2c3f8bcafaeea6b71ba16053ff5625c5bf
Author: Russell Epstein <repstein at apple.com>
Date: 2023-05-20 (Sat, 20 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.7
Identifier: 263322.493 at safari-7616.1.14.11-branch
Commit: 05d675f07897795c58d6c8c7fdeb932e58d2a3d1
https://github.com/WebKit/WebKit/commit/05d675f07897795c58d6c8c7fdeb932e58d2a3d1
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebCore/platform/graphics/RenderingResource.h
M Source/WebCore/platform/graphics/filters/Filter.cpp
M Source/WebCore/platform/graphics/filters/Filter.h
M Source/WebCore/platform/graphics/filters/FilterFunction.cpp
M Source/WebCore/platform/graphics/filters/FilterFunction.h
M Source/WebCore/svg/graphics/filters/SVGFilter.cpp
M Source/WebCore/svg/graphics/filters/SVGFilter.h
M Source/WebKit/Shared/WebCoreArgumentCoders.cpp
Log Message:
-----------
Cherry-pick 9a8998b85a0a. rdar://problem/109673458
[GPU Process][Filters] Make FilterFunction a RenderingResource
https://bugs.webkit.org/show_bug.cgi?id=256318
rdar://108900138
Reviewed by Simon Fraser.
This will allow caching the SVGFilter in GPU Process and will allow referencing
it in DisplayList items by its RenderingResourceIdentifier.
To do that, FilterFunction has to be a RenderingResource. This will overcome a
layering violation because we should not reference SVGFilter in platform sources.
Also this will overcome a ref-counting problem since FilterFunction and
RenderingResource are both RefCounted classes.
* Source/WebCore/platform/graphics/RenderingResource.h:
(WebCore::RenderingResource::renderingResourceIdentifierIfExists const):
* Source/WebCore/platform/graphics/filters/Filter.cpp:
(WebCore::Filter::Filter):
* Source/WebCore/platform/graphics/filters/Filter.h:
(WebCore::Filter::Filter):
* Source/WebCore/platform/graphics/filters/FilterFunction.cpp:
(WebCore::FilterFunction::FilterFunction):
* Source/WebCore/platform/graphics/filters/FilterFunction.h:
* Source/WebCore/svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::SVGFilter::SVGFilter):
* Source/WebCore/svg/graphics/filters/SVGFilter.h:
* Source/WebKit/Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<SVGFilter>::encode):
(IPC::ArgumentCoder<SVGFilter>::decode):
Canonical link: https://commits.webkit.org/263820@main
Identifier: 263769.47 at safari-7616.1.14.11-branch
Commit: f6d7fdfeb933f634021f4b55f5aec06c23b935cd
https://github.com/WebKit/WebKit/commit/f6d7fdfeb933f634021f4b55f5aec06c23b935cd
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebCore/platform/graphics/DecomposedGlyphs.h
M Source/WebCore/platform/graphics/Gradient.h
M Source/WebCore/platform/graphics/NativeImage.h
M Source/WebCore/platform/graphics/RenderingResource.h
M Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h
M Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h
M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h
Log Message:
-----------
Cherry-pick d67761f1060a. rdar://problem/109673458
[GPU Process] Cache all RenderingResources as one type
https://bugs.webkit.org/show_bug.cgi?id=256408
<rdar://problem/108977457>
Reviewed by Simon Fraser.
This makes adding a new RenderingResource less pervasive. RenderingResources are
mainly cached to control their lifetime between WebProcess and GPUProcess. Their
concrete types are rarely used especially in WebProcess. So replace the pointers
to NativeImage, DecomposedGlyphs and Gradient to just a pointer to RenderingResource.
Add traits to these classes so RenderingResource can be casted to any of them.
* Source/WebCore/platform/graphics/DecomposedGlyphs.h:
(isType):
* Source/WebCore/platform/graphics/Gradient.h:
(isType):
* Source/WebCore/platform/graphics/NativeImage.h:
(isType):
* Source/WebCore/platform/graphics/RenderingResource.h:
(WebCore::RenderingResource::isNativeImage const):
(WebCore::RenderingResource::isGradient const):
(WebCore::RenderingResource::isDecomposedGlyphs const):
* Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:
(WebCore::DisplayList::LocalResourceHeap::add):
* Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:
(WebKit::QualifiedResourceHeap::add):
(WebKit::QualifiedResourceHeap::getNativeImage const):
(WebKit::QualifiedResourceHeap::getDecomposedGlyphs const):
(WebKit::QualifiedResourceHeap::getGradient const):
(WebKit::QualifiedResourceHeap::removeRenderingResource):
(WebKit::QualifiedResourceHeap::releaseAllResources):
(WebKit::QualifiedResourceHeap::releaseAllImageResources):
(WebKit::QualifiedResourceHeap::checkInvariants const):
(WebKit::QualifiedResourceHeap::removeNativeImage): Deleted.
(WebKit::QualifiedResourceHeap::removeDecomposedGlyphs): Deleted.
(WebKit::QualifiedResourceHeap::removeGradient): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:
(WebKit::RemoteResourceCache::releaseRenderingResource):
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::~RemoteResourceCacheProxy):
(WebKit::RemoteResourceCacheProxy::clear):
(WebKit::RemoteResourceCacheProxy::imagesCount const):
(WebKit::RemoteResourceCacheProxy::cachedNativeImage const):
(WebKit::RemoteResourceCacheProxy::recordDecomposedGlyphsUse):
(WebKit::RemoteResourceCacheProxy::recordGradientUse):
(WebKit::RemoteResourceCacheProxy::recordNativeImageUse):
(WebKit::RemoteResourceCacheProxy::releaseRenderingResource):
(WebKit::RemoteResourceCacheProxy::clearRenderingResourceMap):
(WebKit::RemoteResourceCacheProxy::clearNativeImageMap):
(WebKit::RemoteResourceCacheProxy::remoteResourceCacheWasDestroyed):
(WebKit::RemoteResourceCacheProxy::releaseMemory):
(WebKit::RemoteResourceCacheProxy::clearDecomposedGlyphsMap): Deleted.
(WebKit::RemoteResourceCacheProxy::clearGradientMap): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
(WebKit::RemoteResourceCacheProxy::imagesCount const): Deleted.
Canonical link: https://commits.webkit.org/263824@main
Identifier: 263769.48 at safari-7616.1.14.11-branch
Commit: 4a63d837404a73d384e020369685bff9b160db98
https://github.com/WebKit/WebKit/commit/4a63d837404a73d384e020369685bff9b160db98
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebCore/Headers.cmake
M Source/WebCore/WebCore.xcodeproj/project.pbxproj
M Source/WebCore/svg/graphics/filters/SVGFilter.cpp
M Source/WebCore/svg/graphics/filters/SVGFilter.h
M Source/WebCore/svg/graphics/filters/SVGFilterExpression.h
R Source/WebCore/svg/graphics/filters/SVGFilterExpressionReference.h
M Source/WebCore/svg/graphics/filters/SVGFilterGraph.h
M Source/WebKit/Shared/WebCoreArgumentCoders.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
Log Message:
-----------
Cherry-pick 56cc7591e5e3. rdar://problem/109673458
[GPU Process][Filters] Make SVGFilter own a vector of unique FilterEffects
https://bugs.webkit.org/show_bug.cgi?id=256333
rdar://109060794
Reviewed by Simon Fraser.
Currently, SVGFilterExpressionTerm holds a Ref<FilterEffect> which may be referenced
more than once by multiple SVGFilterExpressionTerms.
We need make SVGFilter own a Vector of unique FilterEffects. SVGFilterExpressionTerm
will hold an index to this Vector. This will allow building an SVGFilterTransaction
which is a set of altered unique FilterEffects identified by the index in the vector
of unique FilterEffects of SVGFilter.
* Source/WebCore/Headers.cmake:
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::create):
(WebCore::SVGFilter::SVGFilter):
(WebCore::SVGFilter::buildExpression):
(WebCore::SVGFilter::supportedFilterRenderingModes const):
(WebCore::SVGFilter::effectsOfType const):
(WebCore::SVGFilter::apply):
(WebCore::SVGFilter::createFilterStyles const):
(WebCore::SVGFilter::externalRepresentation const):
* Source/WebCore/svg/graphics/filters/SVGFilter.h:
* Source/WebCore/svg/graphics/filters/SVGFilterExpression.h:
* Source/WebCore/svg/graphics/filters/SVGFilterExpressionReference.h: Removed.
* Source/WebCore/svg/graphics/filters/SVGFilterGraph.h:
(WebCore::SVGFilterGraph::SVGFilterGraph):
(WebCore::SVGFilterGraph::nodes const):
* Source/WebKit/Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<SVGFilter>::encode):
(IPC::ArgumentCoder<SVGFilter>::decode):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
Canonical link: https://commits.webkit.org/263886@main
Identifier: 263769.49 at safari-7616.1.14.11-branch
Commit: 48a02f5386b1ff4c7a0451e64fe9d1657294405d
https://github.com/WebKit/WebKit/commit/48a02f5386b1ff4c7a0451e64fe9d1657294405d
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebCore/platform/graphics/filters/FilterResults.h
M Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
M Source/WebCore/rendering/svg/RenderSVGResourceFilter.h
M Source/WebCore/svg/graphics/filters/SVGFilter.cpp
M Source/WebCore/svg/graphics/filters/SVGFilter.h
Log Message:
-----------
Cherry-pick b860110f0ae4. rdar://problem/109673458
[GPU Process][Filters] Top level SVGFilter should own its FilterResults
https://bugs.webkit.org/show_bug.cgi?id=256535
rdar://109107572
Reviewed by Simon Fraser.
This allows caching the FilterResults along with the SVGFilter in RemoteResourceCache.
SVGFilter::ensureResults() returns FilterResults& but it takes FilterResultsCreator.
FilterResultsCreator returns a std::unique_ptr<FilterResults> which SVGFilter
will maintain.
* Source/WebCore/platform/graphics/filters/FilterResults.h:
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
(WebCore::RenderSVGResourceFilter::markFilterForRepaint):
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.h:
* Source/WebCore/svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::ensureResults):
(WebCore::SVGFilter::clearEffectResult):
* Source/WebCore/svg/graphics/filters/SVGFilter.h:
Canonical link: https://commits.webkit.org/263996@main
Identifier: 263769.50 at safari-7616.1.14.11-branch
Commit: 1cef389cb253bcf73669dc564f462898e00ab07c
https://github.com/WebKit/WebKit/commit/1cef389cb253bcf73669dc564f462898e00ab07c
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebCore/platform/graphics/SourceImage.cpp
M Source/WebCore/platform/graphics/SourceImage.h
M Source/WebCore/platform/graphics/filters/DistantLightSource.cpp
M Source/WebCore/platform/graphics/filters/DistantLightSource.h
M Source/WebCore/platform/graphics/filters/FEBlend.cpp
M Source/WebCore/platform/graphics/filters/FEBlend.h
M Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp
M Source/WebCore/platform/graphics/filters/FEColorMatrix.h
M Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp
M Source/WebCore/platform/graphics/filters/FEComponentTransfer.h
M Source/WebCore/platform/graphics/filters/FEComposite.cpp
M Source/WebCore/platform/graphics/filters/FEComposite.h
M Source/WebCore/platform/graphics/filters/FEConvolveMatrix.cpp
M Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h
M Source/WebCore/platform/graphics/filters/FEDiffuseLighting.h
M Source/WebCore/platform/graphics/filters/FEDisplacementMap.cpp
M Source/WebCore/platform/graphics/filters/FEDisplacementMap.h
M Source/WebCore/platform/graphics/filters/FEDropShadow.cpp
M Source/WebCore/platform/graphics/filters/FEDropShadow.h
M Source/WebCore/platform/graphics/filters/FEFlood.cpp
M Source/WebCore/platform/graphics/filters/FEFlood.h
M Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp
M Source/WebCore/platform/graphics/filters/FEGaussianBlur.h
M Source/WebCore/platform/graphics/filters/FEImage.cpp
M Source/WebCore/platform/graphics/filters/FEImage.h
M Source/WebCore/platform/graphics/filters/FELighting.cpp
M Source/WebCore/platform/graphics/filters/FELighting.h
M Source/WebCore/platform/graphics/filters/FEMerge.cpp
M Source/WebCore/platform/graphics/filters/FEMerge.h
M Source/WebCore/platform/graphics/filters/FEMorphology.cpp
M Source/WebCore/platform/graphics/filters/FEMorphology.h
M Source/WebCore/platform/graphics/filters/FEOffset.cpp
M Source/WebCore/platform/graphics/filters/FEOffset.h
M Source/WebCore/platform/graphics/filters/FESpecularLighting.h
M Source/WebCore/platform/graphics/filters/FETurbulence.cpp
M Source/WebCore/platform/graphics/filters/FETurbulence.h
M Source/WebCore/platform/graphics/filters/FilterEffect.cpp
M Source/WebCore/platform/graphics/filters/FilterEffect.h
M Source/WebCore/platform/graphics/filters/LightSource.h
M Source/WebCore/platform/graphics/filters/PointLightSource.cpp
M Source/WebCore/platform/graphics/filters/PointLightSource.h
M Source/WebCore/platform/graphics/filters/SpotLightSource.cpp
M Source/WebCore/platform/graphics/filters/SpotLightSource.h
M Source/WebCore/svg/SVGPreserveAspectRatioValue.h
Log Message:
-----------
Cherry-pick 5f6cc633dcd4. rdar://problem/109673458
[GPU Process][Filters] Implement equality operator for FilterEffect
https://bugs.webkit.org/show_bug.cgi?id=256759
rdar://109303025
Reviewed by Simon Fraser.
The FilterEffect::operator==() will be virtual and will be overridden by all the
superclasses. All the properties of the superclass and the properties of FilterEffect
will be compared for equality.
* Source/WebCore/platform/graphics/SourceImage.cpp:
(WebCore::SourceImage::operator== const):
* Source/WebCore/platform/graphics/SourceImage.h:
* Source/WebCore/platform/graphics/filters/DistantLightSource.cpp:
(WebCore::DistantLightSource::operator== const):
* Source/WebCore/platform/graphics/filters/DistantLightSource.h:
* Source/WebCore/platform/graphics/filters/FEBlend.cpp:
(WebCore::FEBlend::operator== const):
* Source/WebCore/platform/graphics/filters/FEBlend.h:
* Source/WebCore/platform/graphics/filters/FEColorMatrix.cpp:
(WebCore::FEColorMatrix::operator== const):
* Source/WebCore/platform/graphics/filters/FEColorMatrix.h:
* Source/WebCore/platform/graphics/filters/FEComponentTransfer.cpp:
(WebCore::FEComponentTransfer::operator== const):
* Source/WebCore/platform/graphics/filters/FEComponentTransfer.h:
* Source/WebCore/platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::operator== const):
* Source/WebCore/platform/graphics/filters/FEComposite.h:
* Source/WebCore/platform/graphics/filters/FEConvolveMatrix.cpp:
(WebCore::FEConvolveMatrix::operator== const):
* Source/WebCore/platform/graphics/filters/FEConvolveMatrix.h:
* Source/WebCore/platform/graphics/filters/FEDiffuseLighting.h:
(WebCore::FEDiffuseLighting::operator== const):
* Source/WebCore/platform/graphics/filters/FEDisplacementMap.cpp:
(WebCore::FEDisplacementMap::operator== const):
* Source/WebCore/platform/graphics/filters/FEDisplacementMap.h:
* Source/WebCore/platform/graphics/filters/FEDropShadow.cpp:
(WebCore::FEDropShadow::operator== const):
* Source/WebCore/platform/graphics/filters/FEDropShadow.h:
* Source/WebCore/platform/graphics/filters/FEFlood.cpp:
(WebCore::FEFlood::operator== const):
* Source/WebCore/platform/graphics/filters/FEFlood.h:
* Source/WebCore/platform/graphics/filters/FEGaussianBlur.cpp:
(WebCore::FEGaussianBlur::operator== const):
* Source/WebCore/platform/graphics/filters/FEGaussianBlur.h:
* Source/WebCore/platform/graphics/filters/FEImage.cpp:
(WebCore::FEImage::operator== const):
* Source/WebCore/platform/graphics/filters/FEImage.h:
* Source/WebCore/platform/graphics/filters/FELighting.cpp:
(WebCore::FELighting::operator== const):
* Source/WebCore/platform/graphics/filters/FELighting.h:
* Source/WebCore/platform/graphics/filters/FEMerge.cpp:
(WebCore::FEMerge::operator== const):
* Source/WebCore/platform/graphics/filters/FEMerge.h:
* Source/WebCore/platform/graphics/filters/FEMorphology.cpp:
(WebCore::FEMorphology::operator== const):
* Source/WebCore/platform/graphics/filters/FEMorphology.h:
* Source/WebCore/platform/graphics/filters/FEOffset.cpp:
(WebCore::FEOffset::operator== const):
* Source/WebCore/platform/graphics/filters/FEOffset.h:
* Source/WebCore/platform/graphics/filters/FESpecularLighting.h:
(WebCore::FESpecularLighting::operator== const):
* Source/WebCore/platform/graphics/filters/FETurbulence.cpp:
(WebCore::FETurbulence::operator== const):
* Source/WebCore/platform/graphics/filters/FETurbulence.h:
* Source/WebCore/platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::operator== const):
* Source/WebCore/platform/graphics/filters/FilterEffect.h:
(WebCore::FilterEffect::areEqual):
* Source/WebCore/platform/graphics/filters/LightSource.h:
(WebCore::LightSource::operator== const):
(WebCore::LightSource::areEqual):
* Source/WebCore/platform/graphics/filters/PointLightSource.cpp:
(WebCore::PointLightSource::operator== const):
* Source/WebCore/platform/graphics/filters/PointLightSource.h:
* Source/WebCore/platform/graphics/filters/SpotLightSource.cpp:
(WebCore::SpotLightSource::operator== const):
* Source/WebCore/platform/graphics/filters/SpotLightSource.h:
* Source/WebCore/svg/SVGPreserveAspectRatioValue.h:
Canonical link: https://commits.webkit.org/264050@main
Identifier: 263769.51 at safari-7616.1.14.11-branch
Commit: b8409a737f9b44858b5eb86c2822f466f13d3764
https://github.com/WebKit/WebKit/commit/b8409a737f9b44858b5eb86c2822f466f13d3764
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebCore/platform/graphics/RenderingResource.h
M Source/WebCore/platform/graphics/displaylists/DisplayList.h
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp
M Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h
M Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h
M Source/WebCore/platform/graphics/filters/Filter.h
M Source/WebCore/platform/graphics/filters/FilterFunction.h
M Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp
M Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h
Log Message:
-----------
Cherry-pick e4cb3bdcaddc. rdar://problem/109673458
[GPU Process][Filters] Make RemoteResourceCache be capable of caching Filter
https://bugs.webkit.org/show_bug.cgi?id=256324
rdar://109069946
Reviewed by Simon Fraser.
This will allow sending the SVGFilter once to the GPU Process and referencing it
later by its RenderingResourceIdentifier in the StreamConnection message.
* Source/WebCore/platform/graphics/RenderingResource.h:
(WebCore::RenderingResource::isFilter const):
* Source/WebCore/platform/graphics/displaylists/DisplayList.h:
(WebCore::DisplayList::DisplayList::cacheFilter):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorder.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.cpp:
(WebCore::DisplayList::RecorderImpl::recordResourceUse):
* Source/WebCore/platform/graphics/displaylists/DisplayListRecorderImpl.h:
* Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h:
(WebCore::DisplayList::LocalResourceHeap::add):
* Source/WebCore/platform/graphics/filters/Filter.h:
(isType):
* Source/WebCore/platform/graphics/filters/FilterFunction.h:
(WebCore::FilterFunction::isFilter const): Deleted.
* Source/WebKit/GPUProcess/graphics/QualifiedResourceHeap.h:
(WebKit::QualifiedResourceHeap::add):
(WebKit::QualifiedResourceHeap::getFilter const):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::cacheFilter):
(WebKit::RemoteRenderingBackend::cacheFilterWithQualifiedIdentifier):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp:
(WebKit::RemoteResourceCache::cacheFilter):
(WebKit::RemoteResourceCache::cachedFilter const):
* Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::recordResourceUse):
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::cacheFilter):
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.cpp:
(WebKit::RemoteResourceCacheProxy::recordFilterUse):
* Source/WebKit/WebProcess/GPU/graphics/RemoteResourceCacheProxy.h:
Canonical link: https://commits.webkit.org/264001@main
Identifier: 263769.52 at safari-7616.1.14.11-branch
Commit: d37854b362b067ea53810d43c2b80c5f6171fb05
https://github.com/WebKit/WebKit/commit/d37854b362b067ea53810d43c2b80c5f6171fb05
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
M Source/WebCore/svg/graphics/filters/SVGFilter.cpp
M Source/WebCore/svg/graphics/filters/SVGFilter.h
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
Log Message:
-----------
Cherry-pick b686ba471d7a. rdar://problem/109673458
[GPU Process] [Filters] Cache the SVGFilter applying results in RemoteResourceCache
https://bugs.webkit.org/show_bug.cgi?id=232845
rdar://85426641
Reviewed by Simon Fraser.
This allows caching the results of applying an SVGFilter to a source ImageBuffer
in GPU Process. We should be able to use the cached result if the Filter was not
changed. We should be also able to clear some of the result FilterImages if a
FilterEffect was changed.
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::applyResource):
* Source/WebCore/svg/graphics/filters/SVGFilter.cpp:
(WebCore::SVGFilter::mergeEffects):
* Source/WebCore/svg/graphics/filters/SVGFilter.h:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::drawFilteredImageBufferInternal):
(WebKit::RemoteDisplayListRecorder::drawFilteredImageBuffer):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::recordDrawFilteredImageBuffer):
Canonical link: https://commits.webkit.org/264087@main
Identifier: 263769.53 at safari-7616.1.14.11-branch
Commit: d5dc16911ffef2ec34128099c7bb65ed74fab658
https://github.com/WebKit/WebKit/commit/d5dc16911ffef2ec34128099c7bb65ed74fab658
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.8
Identifier: 263769.54 at safari-7616.1.14.11-branch
Commit: 49eadf462ca2355439b5fff1c404b5845084e941
https://github.com/WebKit/WebKit/commit/49eadf462ca2355439b5fff1c404b5845084e941
Author: Brady Eidson <beidson at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj
Log Message:
-----------
Cherry-pick 8792d34445e2. rdar://problem/109674033
WebKitSwiftOverlay should (once again) include a WebKitAdditions overlay
https://bugs.webkit.org/show_bug.cgi?id=257046
rdar://109674033
Reviewed by Tim Horton.
Informal review by James Savage.
Include WebKitAdditionsSwiftOverlay from a well known location.
* Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj:
Canonical link: https://commits.webkit.org/264381@main
Identifier: 263769.55 at safari-7616.1.14.11-branch
Commit: 59318f8f05a747e9abb09e9532354f20ba9bee2c
https://github.com/WebKit/WebKit/commit/59318f8f05a747e9abb09e9532354f20ba9bee2c
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h
M Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h
M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in
Log Message:
-----------
RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread blocks on a task running on the main thread.
https://bugs.webkit.org/show_bug.cgi?id=256073
<rdar://108642579>
Reviewed by Simon Fraser.
We attempt to wait for flushes of RemoteImageBufferProxy on a background thread, but the 'didFlush' IPC message is received on the main thread.
This can mean it gets delayed (and we don't know the flush is completed) if the main thread is otherwise busy. This delays first-paint on CPLT.
This change passes a Semphore across to the GPUP instead of the flush identifier, and we signal it when the flush is completed rather than sending a return 'didFlush' message.
The WebProcess waits on each flush Semaphore in a background WorkQueue, and then processes the equivalent of 'didFlush' asynchronously and notifies the condition variable to wake any waiting threads.
waitForDidFlushWithTimeout is removed, and all waiters now use the waitForDidFlushOnSecondaryThread code path (renamed) since all waiters are now 'secondary' WRT the flushing WorkQueue.
Synchronous flushes now use a proper synchronous IPC message, rather than relying on async + wait.
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::flushContext):
(WebKit::RemoteDisplayListRecorder::flushContextSync):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::didFlush): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::sendSync):
(WebKit::RemoteDisplayListRecorderProxy::flushContext):
(WebKit::RemoteDisplayListRecorderProxy::flushContextSync):
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp:
(WebKit::RemoteImageBufferProxy::flushDrawingContext):
(WebKit::RemoteImageBufferProxy::flushDrawingContextAsync):
(WebKit::RemoteImageBufferProxyFlushState::waitForDidFlush):
(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout): Deleted.
(WebKit::RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::disconnectGPUProcess):
(WebKit::RemoteRenderingBackendProxy::addPendingFlush):
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush): Deleted.
(WebKit::RemoteRenderingBackendProxy::didFlush): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
Canonical link: https://commits.webkit.org/263572@main
Identifier: 263769.56 at safari-7616.1.14.11-branch
Commit: 74158dd5d3f917fce77df6a55b5914bc039a4904
https://github.com/WebKit/WebKit/commit/74158dd5d3f917fce77df6a55b5914bc039a4904
Author: Matt Woodrow <mattwoodrow at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm
Log Message:
-----------
Cherry-pick d2f31696424a. rdar://problem/108642579
RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread blocks on a task running on the main thread.
https://bugs.webkit.org/show_bug.cgi?id=256073
<rdar://108642579>
Reviewed by Simon Fraser.
We attempt to wait for flushes of RemoteImageBufferProxy on a background thread, but the 'didFlush' IPC message is received on the main thread.
This can mean it gets delayed (and we don't know the flush is completed) if the main thread is otherwise busy. This delays first-paint on CPLT.
This change passes a Semphore across to the GPUP instead of the flush identifier, and we signal it when the flush is completed rather than sending a return 'didFlush' message.
The WebProcess waits on each flush Semaphore in a background WorkQueue, and then processes the equivalent of 'didFlush' asynchronously and notifies the condition variable to wake any waiting threads.
waitForDidFlushWithTimeout is removed, and all waiters now use the waitForDidFlushOnSecondaryThread code path (renamed) since all waiters are now 'secondary' WRT the flushing WorkQueue.
Synchronous flushes now use a proper synchronous IPC message, rather than relying on async + wait.
Adds a 0-delay asynchronous callOnMainThread hop when triggering the rendering update from RemoteLaterTreeDisplayRefreshMonitor::requestRefreshCallback.
It appears that when doing the first requestRefreshCallback after idle, we currently just trigger a rendering update immediately, rather than waiting for displayDidRefresh. This differs
from the non-GPUP code.
This 0-delay step makes our behaviour more similar to the old code, but adding a proper displayDidRefresh wait would be preferable in the longer term.
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.cpp:
(WebKit::RemoteDisplayListRecorder::flushContext):
(WebKit::RemoteDisplayListRecorder::flushContextSync):
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.h:
* Source/WebKit/GPUProcess/graphics/RemoteDisplayListRecorder.messages.in:
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::didFlush): Deleted.
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::sendSync):
(WebKit::RemoteDisplayListRecorderProxy::flushContext):
(WebKit::RemoteDisplayListRecorderProxy::flushContextSync):
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.cpp:
(WebKit::RemoteImageBufferProxy::flushDrawingContext):
(WebKit::RemoteImageBufferProxy::flushDrawingContextAsync):
(WebKit::RemoteImageBufferProxyFlushState::waitForDidFlush):
(WebKit::RemoteImageBufferProxy::waitForDidFlushWithTimeout): Deleted.
(WebKit::RemoteImageBufferProxyFlushState::waitForDidFlushOnSecondaryThread): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp:
(WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy):
(WebKit::RemoteRenderingBackendProxy::disconnectGPUProcess):
(WebKit::RemoteRenderingBackendProxy::addPendingFlush):
(WebKit::RemoteRenderingBackendProxy::waitForDidFlush): Deleted.
(WebKit::RemoteRenderingBackendProxy::didFlush): Deleted.
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.messages.in:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDisplayRefreshMonitor.mm:
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback):
Canonical link: https://commits.webkit.org/263993@main
Identifier: 263769.57 at safari-7616.1.14.11-branch
Commit: 59c8eb664fcc63bc5fd4cf9d83cfcfb1c299bf0c
https://github.com/WebKit/WebKit/commit/59c8eb664fcc63bc5fd4cf9d83cfcfb1c299bf0c
Author: Dan Robson <dtr_bugzilla at apple.com>
Date: 2023-05-22 (Mon, 22 May 2023)
Changed paths:
M Source/WebKit/SwiftOverlay/WebKitSwiftOverlay.xcodeproj/project.pbxproj
Log Message:
-----------
Apply patch. rdar://problem/109674033
Identifier: 263769.58 at safari-7616.1.14.11-branch
Commit: 33c1065d575698fb69ab07117d3ebc6b6cfccd06
https://github.com/WebKit/WebKit/commit/33c1065d575698fb69ab07117d3ebc6b6cfccd06
Author: Tyler Wilcock <tyler_w at apple.com>
Date: 2023-05-23 (Tue, 23 May 2023)
Changed paths:
M Source/WebCore/accessibility/AccessibilityObjectInterface.h
M Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm
M Source/WebCore/accessibility/isolatedtree/AXIsolatedTree.cpp
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h
M Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm
M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.h
M Source/WebKit/WebProcess/WebPage/mac/WKAccessibilityWebPageObjectBase.mm
Log Message:
-----------
Cherry-pick 9c6ff227993d. rdar://problem/109586801
AX: WebAccessibilityObjectWrapperBase and WKAccessibilityWebPageObjectBase should hold WeakPtrs to their associated backing objects
https://bugs.webkit.org/show_bug.cgi?id=257071
rdar://109586801
Reviewed by Andres Gonzalez.
Continue the transition to ubiquitous smart pointer member usage per
https://github.com/WebKit/WebKit/wiki/Smart-Pointer-Usage-Guidelines.
* Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper axBackingObject]):
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h:
* Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:
(-[WebAccessibilityObjectWrapperBase attachIsolatedObject:]):
(-[WebAccessibilityObjectWrapperBase hasIsolatedObject]):
(-[WebAccessibilityObjectWrapperBase axBackingObject]):
Canonical link: https://commits.webkit.org/264429@main
Identifier: 263322.506 at safari-7616.1.14.11-branch
Commit: 0258c15df5b165b19e0459ae24bb556268ae03a2
https://github.com/WebKit/WebKit/commit/0258c15df5b165b19e0459ae24bb556268ae03a2
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-23 (Tue, 23 May 2023)
Changed paths:
A LayoutTests/fast/images/decode-decoding-change-image-src-expected.html
A LayoutTests/fast/images/decode-decoding-change-image-src.html
M LayoutTests/fast/images/decoding-attribute-async-small-image.html
M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html
M Source/WebCore/rendering/RenderBoxModelObject.cpp
Log Message:
-----------
Cherry-pick 36adb36a799f. rdar://problem/108930635
Charts on sixcolors.com flicker when zooming in
https://bugs.webkit.org/show_bug.cgi?id=256620
rdar://108930635
Reviewed by Simon Fraser.
If
1. An image is in the current viewport,
2. It has the attribute decoding="async",
3. The layer has already painted at least once,
4. And the image frame is being re-decoded
Then the decoding="async" attribute should be ignored to avoid flickering.
RenderBoxModelObject::decodingModeForImageDraw() is re-factored such that caces
which return DecodingMode::Synchronous are checked first. Then flickering case
is checked. Then cases which return DecodingMode::Asynchronous are checked last.
Two layout tests are changed to ensure the image is displayed on a fresh layer
when the image has the decoding="async".
* LayoutTests/fast/images/decode-decoding-change-image-src-expected.html: Added.
* LayoutTests/fast/images/decode-decoding-change-image-src.html: Added.
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::decodingModeForImageDraw const):
Canonical link: https://commits.webkit.org/264433@main
Identifier: 263322.507 at safari-7616.1.14.11-branch
Commit: 805eb5976bcfbf7eb4b20c272f401b0a04ed9563
https://github.com/WebKit/WebKit/commit/805eb5976bcfbf7eb4b20c272f401b0a04ed9563
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-23 (Tue, 23 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.9
Identifier: 263322.508 at safari-7616.1.14.11-branch
Commit: 020ec3aa668d2922ffb369e1c7fd91197550dd03
https://github.com/WebKit/WebKit/commit/020ec3aa668d2922ffb369e1c7fd91197550dd03
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-23 (Tue, 23 May 2023)
Changed paths:
R LayoutTests/fast/images/decode-decoding-change-image-src-expected.html
R LayoutTests/fast/images/decode-decoding-change-image-src.html
M LayoutTests/fast/images/decoding-attribute-async-small-image.html
M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html
M Source/WebCore/rendering/RenderBoxModelObject.cpp
Log Message:
-----------
Revert 36adb36a799f. rdar://problem/108930635
Identifier: 263322.509 at safari-7616.1.14.11-branch
Commit: d43cbc4bc24a0d7a60bbbbdd246a3d9e6ae0a429
https://github.com/WebKit/WebKit/commit/d43cbc4bc24a0d7a60bbbbdd246a3d9e6ae0a429
Author: Said Abou-Hallawa <said at apple.com>
Date: 2023-05-23 (Tue, 23 May 2023)
Changed paths:
A LayoutTests/fast/images/decode-decoding-change-image-src-expected.html
A LayoutTests/fast/images/decode-decoding-change-image-src.html
M LayoutTests/fast/images/decoding-attribute-async-small-image.html
M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html
M Source/WebCore/rendering/RenderBoxModelObject.cpp
Log Message:
-----------
Cherry-pick 36adb36a799f. rdar://problem/108930635
Charts on sixcolors.com flicker when zooming in
https://bugs.webkit.org/show_bug.cgi?id=256620
rdar://108930635
Reviewed by Simon Fraser.
If
1. An image is in the current viewport,
2. It has the attribute decoding="async",
3. The layer has already painted at least once,
4. And the image frame is being re-decoded
Then the decoding="async" attribute should be ignored to avoid flickering.
RenderBoxModelObject::decodingModeForImageDraw() is re-factored such that caces
which return DecodingMode::Synchronous are checked first. Then flickering case
is checked. Then cases which return DecodingMode::Asynchronous are checked last.
Two layout tests are changed to ensure the image is displayed on a fresh layer
when the image has the decoding="async".
* LayoutTests/fast/images/decode-decoding-change-image-src-expected.html: Added.
* LayoutTests/fast/images/decode-decoding-change-image-src.html: Added.
* Source/WebCore/rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::decodingModeForImageDraw const):
Canonical link: https://commits.webkit.org/264433@main
Identifier: 263322.510 at safari-7616.1.14.11-branch
Commit: 2422f56571aa4a65c15c0fb79a187963ca849f47
https://github.com/WebKit/WebKit/commit/2422f56571aa4a65c15c0fb79a187963ca849f47
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-23 (Tue, 23 May 2023)
Changed paths:
R LayoutTests/fast/images/decode-decoding-change-image-src-expected.html
R LayoutTests/fast/images/decode-decoding-change-image-src.html
M LayoutTests/fast/images/decoding-attribute-async-small-image.html
M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html
M Source/WebCore/rendering/RenderBoxModelObject.cpp
Log Message:
-----------
Revert 0258c15df5b1. rdar://problem/108930635
Identifier: 263322.511 at safari-7616.1.14.11-branch
Commit: d231f837f6aeacd679dc53e448c3c00ad04a3221
https://github.com/WebKit/WebKit/commit/d231f837f6aeacd679dc53e448c3c00ad04a3221
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.10
Identifier: 263769.65 at safari-7616.1.14.11-branch
Commit: b20627b5a7ffdccb59d28da8a96e1c7749ee4132
https://github.com/WebKit/WebKit/commit/b20627b5a7ffdccb59d28da8a96e1c7749ee4132
Author: Jer Noble <jer.noble at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
Log Message:
-----------
Cherry-pick 0c7bb633923a. rdar://problem/109528876
[iOS] Auto-PiP on Yahoo.com may display black feed
https://bugs.webkit.org/show_bug.cgi?id=257059
rdar://109528876
Reviewed by Eric Carlson.
Auto-PiP (as opposed to an explicit PiP operation) works by creating a empty WebAVPlayerLayerView,
and WebAVPlayerViewController, and returning YES from the
-playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground: delegate. However,
auto-PiP will transfer the video view from the empty WebAVPlayerLayerView to the PiP window, and if
the empty view doesn't have a video view, the resulting PiP window will be empty.
* Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm:
(VideoFullscreenInterfaceAVKit::doSetup):
Canonical link: https://commits.webkit.org/264307@main
Identifier: 263769.66 at safari-7616.1.14.11-branch
Commit: 383b52b75cbac9e21320c4f347dd34e129c87946
https://github.com/WebKit/WebKit/commit/383b52b75cbac9e21320c4f347dd34e129c87946
Author: Brent Fulgham <bfulgham at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm
Log Message:
-----------
Cherry-pick fe4af8b17fb6. rdar://problem/109380900
Cherry-pick 264460 at main (fe4af8b17fb6). <rdar://109380900>
[Cocoa] Call [AVCaptureDevice ensureServerConnection] when new extensions are made to the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=257241
<rdar://109380900>
Reviewed by Eric Carlson.
Our current code only calls [AVCaptureDevice ensureServerConnection] the first time we extend the sandbox.
This can lead to problems if the user visits a site that only needs Microphone access (for example), and
then visits a site that needs Camera access. Because the camera-related extensions are only recognized by
the video capture system when [AVCaptureDevice ensureServiceConnection] is called, the fact that we called
it before the new sandbox extensions were in place mean we never activate the relevant features.
To fix this, we should simply call [AVCaptureDevice ensureServerConnection] any time we extend the sandbox.
I have confirmed with the relevant teams that this call is low-cost (performance wise), and is not harmful
to call repeatedly for things that have already been activated.
This patch also adds new logging to help debug similar problems in the future.
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::updateSandboxAccess): Add logging.
(WebKit::GPUProcess::updateCaptureAccess): Ditto.
* Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm:
(WebKit::GPUProcess::ensureAVCaptureServerConnection): Add new logging, no longer make this a 'std::call_once'.
Canonical link: https://commits.webkit.org/264460@main
Identifier: 263769.67 at safari-7616.1.14.11-branch
Commit: f0bd22f8802084634fe0aa265e685a8ea8811ffb
https://github.com/WebKit/WebKit/commit/f0bd22f8802084634fe0aa265e685a8ea8811ffb
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm
Log Message:
-----------
Revert 383b52b75cba. rdar://problem/109380900
Identifier: 263769.68 at safari-7616.1.14.11-branch
Commit: 54d0a5767da4bbbeb581b806ff580a73966c7a79
https://github.com/WebKit/WebKit/commit/54d0a5767da4bbbeb581b806ff580a73966c7a79
Author: Brent Fulgham <bfulgham at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/GPUProcess/GPUProcess.cpp
M Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm
Log Message:
-----------
Cherry-pick 264460 at main (fe4af8b17fb6). <rdar://109380900>
[Cocoa] Call [AVCaptureDevice ensureServerConnection] when new extensions are made to the GPU Process
https://bugs.webkit.org/show_bug.cgi?id=257241
<rdar://109380900>
Reviewed by Eric Carlson.
Our current code only calls [AVCaptureDevice ensureServerConnection] the first time we extend the sandbox.
This can lead to problems if the user visits a site that only needs Microphone access (for example), and
then visits a site that needs Camera access. Because the camera-related extensions are only recognized by
the video capture system when [AVCaptureDevice ensureServiceConnection] is called, the fact that we called
it before the new sandbox extensions were in place mean we never activate the relevant features.
To fix this, we should simply call [AVCaptureDevice ensureServerConnection] any time we extend the sandbox.
I have confirmed with the relevant teams that this call is low-cost (performance wise), and is not harmful
to call repeatedly for things that have already been activated.
This patch also adds new logging to help debug similar problems in the future.
* Source/WebKit/GPUProcess/GPUProcess.cpp:
(WebKit::GPUProcess::updateSandboxAccess): Add logging.
(WebKit::GPUProcess::updateCaptureAccess): Ditto.
* Source/WebKit/GPUProcess/cocoa/GPUProcessCocoa.mm:
(WebKit::GPUProcess::ensureAVCaptureServerConnection): Add new logging, no longer make this a 'std::call_once'.
Canonical link: https://commits.webkit.org/264460@main
Identifier: 263769.69 at safari-7616.1.14.11-branch
Commit: ff724d100bcfb2e88227d671517af587d21b8dd5
https://github.com/WebKit/WebKit/commit/ff724d100bcfb2e88227d671517af587d21b8dd5
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
A LayoutTests/fast/images/decode-decoding-change-image-src-expected.html
A LayoutTests/fast/images/decode-decoding-change-image-src.html
M LayoutTests/fast/images/decoding-attribute-async-small-image.html
M LayoutTests/fast/images/decoding-attribute-dynamic-async-small-image.html
M Source/WebCore/rendering/RenderBoxModelObject.cpp
Log Message:
-----------
Apply patch 0258c15df5b1 rdar://108930635 (Images on sixcolors.com and other sites flicker when zooming in)
Identifier: 263769.70 at safari-7616.1.14.11-branch
Commit: 482524e77a12073b99364a37150a97f625c080ce
https://github.com/WebKit/WebKit/commit/482524e77a12073b99364a37150a97f625c080ce
Author: J Pascoe <j_pascoe at apple.com>
Date: 2023-05-24 (Wed, 24 May 2023)
Changed paths:
M Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.h
M Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.mm
Log Message:
-----------
Cherry-pick 52e6f05d3e91. rdar://problem/109060751
[WebAuthn] Clean up observers in CcidService
https://bugs.webkit.org/show_bug.cgi?id=257240
rdar://109060751
Reviewed by Brent Fulgham.
This change ensures removeObserver:forKeyPath: is called for each observer we
add via addObserver in CcidService.
* Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.h:
* Source/WebKit/UIProcess/WebAuthentication/Cocoa/CcidService.mm:
(WebKit::CcidService::~CcidService):
(WebKit::CcidService::removeObservers):
(WebKit::CcidService::platformStartDiscovery):
(WebKit::CcidService::updateSlots):
(-[_WKSmartCardSlotStateObserver observeValueForKeyPath:ofObject:change:context:]):
(-[_WKSmartCardSlotStateObserver removeObserver]):
Canonical link: https://commits.webkit.org/264485@main
Identifier: 263769.71 at safari-7616.1.14.11-branch
Commit: 4f89809fa512d635abfa78f8de781f5f9aa28d32
https://github.com/WebKit/WebKit/commit/4f89809fa512d635abfa78f8de781f5f9aa28d32
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-25 (Thu, 25 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.11
Identifier: 263769.72 at safari-7616.1.14.11-branch
Commit: 0ab29f95cba3dd2d9614678f5e0735f1ba52fa8a
https://github.com/WebKit/WebKit/commit/0ab29f95cba3dd2d9614678f5e0735f1ba52fa8a
Author: Kimmo Kinnunen <kkinnunen at apple.com>
Date: 2023-05-25 (Thu, 25 May 2023)
Changed paths:
M Source/WebCore/platform/ScrollbarsController.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.h
M Source/WebCore/platform/graphics/cocoa/IOSurface.mm
M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp
M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in
M Source/WebKit/SourcesCocoa.txt
M Source/WebKit/WebKit.xcodeproj/project.pbxproj
M Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp
A Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp
A Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h
M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h
Log Message:
-----------
Cherry-pick b9e5b9ff4fe9. rdar://problem/106651668
Cocoa Small RemoteLayerBackingStores should be drawn with software
https://bugs.webkit.org/show_bug.cgi?id=253447
rdar://problem/106651668
Reviewed by Simon Fraser.
Add a specific GPUP side backend for ImageBitmaps used for LayerBacking
purposes, e.g. RemoteLayerBackingStore buffers. The buffers are drawn
to with software rasterization.
Fixes a bug in RemoteDisplayListRecorderProxy::createImageBuffer where
intermediate ImageBuffers for filters would be created as Layer
rendering purpose, where as the Layer purpose is supposed to be only
for the Layer backing stores.
Fixes a bug in RenderingPurpose where missing ShareableLocalSnapshot
was not part of the enum serialization, making the serialization
incorrect.
* Source/WebCore/platform/ScrollbarsController.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.h:
* Source/WebCore/platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::createBitmapPlatformContext):
* Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::isSmallLayerBacking):
(WebKit::RemoteRenderingBackend::createImageBufferWithQualifiedIdentifier):
(WebKit::RemoteRenderingBackend::prepareLayerBuffersForDisplay):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:
* Source/WebKit/SourcesCocoa.txt:
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:
* Source/WebKit/WebProcess/GPU/graphics/RemoteDisplayListRecorderProxy.cpp:
(WebKit::RemoteDisplayListRecorderProxy::createImageBuffer const):
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.cpp: Added.
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::create):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::ImageBufferShareableMappedIOSurfaceBitmapBackend):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::createBackendHandle const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::context):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setOwnershipIdentity):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::backendSize const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::bytesPerRow const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::copyNativeImage):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::copyNativeImageForDrawing):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::sinkIntoNativeImage):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::isInUse const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::releaseGraphicsContext):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setVolatile):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setNonVolatile):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::volatilityState const):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::setVolatilityState):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::transferToNewContext):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::getPixelBuffer):
(WebKit::ImageBufferShareableMappedIOSurfaceBitmapBackend::putPixelBuffer):
* Source/WebKit/WebProcess/GPU/graphics/cocoa/ImageBufferShareableMappedIOSurfaceBitmapBackend.h: Added.
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteScrollbarsController.h:
Canonical link: https://commits.webkit.org/264004@main
Identifier: 263769.73 at safari-7616.1.14.11-branch
Commit: 6bfde3ff757fbbbe2f22308e5a4aec0c03ef9a6e
https://github.com/WebKit/WebKit/commit/6bfde3ff757fbbbe2f22308e5a4aec0c03ef9a6e
Author: Matthew Finkel <sysrqb at apple.com>
Date: 2023-05-25 (Thu, 25 May 2023)
Changed paths:
M Source/WebCore/html/CanvasBase.cpp
Log Message:
-----------
Cherry-pick 1212e9728215. rdar://problem/109318643
Ensure we have an image buffer before considering Canvas noise
https://bugs.webkit.org/show_bug.cgi?id=257143
rdar://109318643
Reviewed by Matt Woodrow.
If we don't have a ImageBuffer, then we don't have a canvas that needs
post-processing. We can shortcircuit this path by checking if the image buffer
is present.
* Source/WebCore/html/CanvasBase.cpp:
(WebCore::CanvasBase::shouldInjectNoiseBeforeReadback const):
Canonical link: https://commits.webkit.org/264427@main
Identifier: 263769.74 at safari-7616.1.14.11-branch
Commit: ad49b3d1867c253080c763d8590c8e115ded568a
https://github.com/WebKit/WebKit/commit/ad49b3d1867c253080c763d8590c8e115ded568a
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-26 (Fri, 26 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.12
Identifier: 263319.525 at safari-7616.1.14.11-branch
Commit: 1f44c529755dfe8fe994bbba05e2f32f9dd0e114
https://github.com/WebKit/WebKit/commit/1f44c529755dfe8fe994bbba05e2f32f9dd0e114
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-30 (Tue, 30 May 2023)
Changed paths:
M Configurations/Version.xcconfig
Log Message:
-----------
Versioning.
WebKit-7616.1.14.11.13
Identifier: 263319.526 at safari-7616.1.14.11-branch
Commit: 24069ade6e4f3739b47722bfe1f0209454e91fd7
https://github.com/WebKit/WebKit/commit/24069ade6e4f3739b47722bfe1f0209454e91fd7
Author: Youenn Fablet <youennf at gmail.com>
Date: 2023-05-30 (Tue, 30 May 2023)
Changed paths:
M Source/WebKit/UIProcess/UserMediaProcessManager.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm
Log Message:
-----------
Cherry-pick 6406adae9bf2. rdar://problem/109896538
getDisplayMedia capture should mute other tabs when starting
https://bugs.webkit.org/show_bug.cgi?id=257386
rdar://problem/109896538
Reviewed by Eric Carlson.
We were muting other tabs within UserMediaProcessManager::willCreateMediaStream but only for microphone and camera
as the screen/window code path was exiting early.
Move the call to mute other tabs in WebPageProxy::willStartCapture so that it covers all code paths.
Covered by API test.
* Source/WebKit/UIProcess/UserMediaProcessManager.cpp:
(WebKit::UserMediaProcessManager::willCreateMediaStream):
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::willStartCapture):
* Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm:
(TestWebKitAPI::TEST):
Canonical link: https://commits.webkit.org/264611@main
Identifier: 263319.527 at safari-7616.1.14.11-branch
Commit: d4905a4d528d79021fe11b5adbc30f5ddf45499d
https://github.com/WebKit/WebKit/commit/d4905a4d528d79021fe11b5adbc30f5ddf45499d
Author: Myah Cobbs <mcobbs at apple.com>
Date: 2023-05-30 (Tue, 30 May 2023)
Changed paths:
M Source/WebKit/UIProcess/UserMediaProcessManager.cpp
M Source/WebKit/UIProcess/WebPageProxy.cpp
M Tools/TestWebKitAPI/Tests/WebKit/GetUserMedia.mm
Log Message:
-----------
Revert "Cherry-pick 6406adae9bf2. rdar://problem/109896538"
This reverts commit 24069ade6e4f3739b47722bfe1f0209454e91fd7.
Identifier: 263319.528 at safari-7616.1.14.11-branch
Compare: https://github.com/WebKit/WebKit/compare/10b1c1a40933%5E...d4905a4d528d
More information about the webkit-changes
mailing list