[webkit-changes] [WebKit/WebKit] 4a0a44: [view-transitions] Resolving styles with a large s...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4a0a4473f9267a3fe5de4d7de102e1bb68140170 https://github.com/WebKit/WebKit/commit/4a0a4473f9267a3fe5de4d7de102e1bb68140170 Author: Matt Woodrow Date: 2024-05-29 (Wed, 29 May 2024) Changed paths: M Source/WebCore/style/ElementRuleCollector.cpp M Source/WebCore/style/RuleSet.cpp M Source/WebCore/style/RuleSet.h Log Message: --- [view-transitions] Resolving styles with a large set of named view-transition elements is slow. https://bugs.webkit.org/show_bug.cgi?id=274739 Reviewed by Antti Koivisto. For every named element in a view transition, 4 styles are inserted in the UA style sheet. View transitions currently restyle the entire view transition pseudo tree for changes to any of them (since mutations are keyed to the owning element, which is the document element for the whole tree). There are 4 named pseudo elements per view transition name, resulting in pretty slow O(n^2) restyling. We can improve this somewhat by putting pseudo element selectors with a name argument (like ::view-transition-group(name)) into a hash map, so that we only need to iterate the somewhat-relevant ones. * Source/WebCore/style/ElementRuleCollector.cpp: (WebCore::Style::ElementRuleCollector::collectMatchingRules): * Source/WebCore/style/RuleSet.cpp: (WebCore::Style::RuleSet::addRule): (WebCore::Style::RuleSet::traverseRuleDatas): (WebCore::Style::RuleSet::shrinkToFit): * Source/WebCore/style/RuleSet.h: (WebCore::Style::RuleSet::namedPseudoElementRules const): Canonical link: https://commits.webkit.org/279484@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 14d2ee: [view-transitions] Visible clipping at the end of ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 14d2ee99d4aaacbe10cb5f00a01b783ee45a0708 https://github.com/WebKit/WebKit/commit/14d2ee99d4aaacbe10cb5f00a01b783ee45a0708 Author: Matt Woodrow Date: 2024-05-29 (Wed, 29 May 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/inline-with-offset-from-containing-block-clipped-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped.html M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp Log Message: --- [view-transitions] Visible clipping at the end of animation on https://www.kvin.me/posts/cards https://bugs.webkit.org/show_bug.cgi?id=274404 Reviewed by Alan Baradlay. RenderLayer's use of RenderInline doesn't include any padding from its containing block in its position, and instead accounts for it in the position of the lines boxes themselves. This means that the computed (web visible) transform (using the renderer's position) for the ::view-transition-group doesn't include the offset between the inline element and its container. It also means that an overflow:clip on the ::view-transition-image-pair applies the clip in the wrong coordinate space for the snapshots. This change computes the offset between the position of the renderer, and that used by RenderLayer. It uses this to adjust the computed transform, and the overflow rect of the snapshot so that they correctly account for the position of the renderer. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/inline-with-offset-from-containing-block-clipped-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-inline-with-offset-from-containing-block-clipped.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-inline-with-offset-from-containing-block-clipped.html: Added. * Source/WebCore/dom/ViewTransition.cpp: (WebCore::layerToLayoutOffset): (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::setCapturedSize): (WebCore::RenderViewTransitionCapture::layout): (WebCore::RenderViewTransitionCapture::setSize): Deleted. * Source/WebCore/rendering/RenderViewTransitionCapture.h: * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::createRendererIfNeeded): Canonical link: https://commits.webkit.org/279433@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4c7681: [view-transitions] Old snapshot for the root eleme...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4c7681b6487b2aa3283a4b92ca2796874fe06f4b https://github.com/WebKit/WebKit/commit/4c7681b6487b2aa3283a4b92ca2796874fe06f4b Author: Matt Woodrow Date: 2024-05-29 (Wed, 29 May 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background.html R LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html R LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html M Source/WebCore/dom/ViewTransition.cpp Log Message: --- [view-transitions] Old snapshot for the root element is misplaced when the page is scrolled. https://bugs.webkit.org/show_bug.cgi?id=274403 Reviewed by Tim Nguyen. This causes flashes on https://malcolmkee.com/blog/view-transition-api-in-react-app/#practical-use-cases When capturing the root, the snapshot is of the visible viewport area, not the whole element. Adjust the snapshot capture rect by the scroll position to account for this. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background-expected.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-root-scrollbar-with-fixed-background.html: Copied from LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background-expected.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/old-content-root-scrollbar-with-fixed-background.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html. * Source/WebCore/dom/ViewTransition.cpp: (WebCore::snapshotElementVisualOverflowClippedToViewport): Canonical link: https://commits.webkit.org/279432@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 2058ec: [view-transitions] Captured root element with marg...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2058eceb3fd5f84b7d394aa7281110088f9f62e1 https://github.com/WebKit/WebKit/commit/2058eceb3fd5f84b7d394aa7281110088f9f62e1 Author: Matt Woodrow Date: 2024-05-28 (Tue, 28 May 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderObject.cpp M Source/WebCore/rendering/RenderObject.h Log Message: --- [view-transitions] Captured root element with margins display snapshots in incorrect position. https://bugs.webkit.org/show_bug.cgi?id=274397 Reviewed by Tim Nguyen. If the root element is captured in the view transition, then we effectively do snapshotting of the RenderView instead. Computing the element-to-screen transform should be skipped, since it would include any margin on the root element relative the view. Most of the code in RenderLayerBacking that prepares a captured layer for attachment into the pseduo element tree also needs to operate on the RenderView's layer in this case, so a new 'effectiveCapturedInViewTransition' added to make this simpler. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::copyElementBaseProperties): * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintList): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateTransform): (WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint): (WebCore::RenderLayerBacking::shouldClipCompositedBounds const): (WebCore::RenderLayerBacking::updateGeometry): * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const): * Source/WebCore/rendering/RenderObject.cpp: (WebCore::RenderObject::effectiveCapturedInViewTransition const): * Source/WebCore/rendering/RenderObject.h: Canonical link: https://commits.webkit.org/279372@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f74645: [view-transitions] Async animation of snapshot pos...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f74645a452f8d62be08217bb1def567fd4d9b96e https://github.com/WebKit/WebKit/commit/f74645a452f8d62be08217bb1def567fd4d9b96e Author: Matt Woodrow Date: 2024-05-27 (Mon, 27 May 2024) Changed paths: M Source/WebCore/animation/KeyframeEffect.cpp M Source/WebCore/rendering/updating/RenderTreeUpdater.cpp M Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp M Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.h Log Message: --- [view-transitions] Async animation of snapshot position via transform looks jumpy with sync animation of size https://bugs.webkit.org/show_bug.cgi?id=274437 Reviewed by Cameron McCormack. The default pseudo element structure results in an asynchronous animation of the snapshot position via transform, and a sync animation of the width/height. If there's any slowness at all on the main thread, then this looks super jumpy. Also fixes a bug where Element::invalidateStyleForAnimation()'s forced composition update wasn't being propagated to some pseudo elements, even if it originated from an animation on those pseudos. * Source/WebCore/animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeHasSizeDependentTransform): * Source/WebCore/rendering/updating/RenderTreeUpdater.cpp: (WebCore::RenderTreeUpdater::updateAfterDescendants): * Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.cpp: (WebCore::RenderTreeUpdater::GeneratedContent::updateBackdropRenderer): (WebCore::RenderTreeUpdater::GeneratedContent::updateWritingSuggestionsRenderer): * Source/WebCore/rendering/updating/RenderTreeUpdaterGeneratedContent.h: * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree): (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup): * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.h: Canonical link: https://commits.webkit.org/279362@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] d61142: Toggling visibility:hidden on the parent of a
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: d6114259cba014fee42ac469271069b0c4f887d4 https://github.com/WebKit/WebKit/commit/d6114259cba014fee42ac469271069b0c4f887d4 Author: Matt Woodrow Date: 2024-05-24 (Fri, 24 May 2024) Changed paths: A LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden-expected.html A LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden.html M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- Toggling visibility:hidden on the parent of a can cause the previous frame's contents to be shown. https://bugs.webkit.org/show_bug.cgi?id=274262 Reviewed by Simon Fraser. We should only try to use 'copy' compositing mode to transfer the canvas buffer into the layer (and thus omit any pixel clearing) if there is visible content to copy. * LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden-expected.html: Added. * LayoutTests/compositing/canvas/copy-backing-store-visibility-hidden.html: Added. * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateConfiguration): Canonical link: https://commits.webkit.org/279302@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 159906: [view-transitions] Mispositioned snapshots on http...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 159906e6201b73d5b59b2ac3aed6788b66c7a7e7 https://github.com/WebKit/WebKit/commit/159906e6201b73d5b59b2ac3aed6788b66c7a7e7 Author: Matt Woodrow Date: 2024-05-23 (Thu, 23 May 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-ref.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/platform/graphics/transforms/TransformState.cpp M Source/WebCore/platform/graphics/transforms/TransformState.h M Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp M Source/WebCore/platform/graphics/transforms/TransformationMatrix.h M Source/WebCore/rendering/RenderObject.cpp M Source/WebCore/rendering/RenderObject.h Log Message: --- [view-transitions] Mispositioned snapshots on https://codepen.io/bramus/full/mdowgYX https://bugs.webkit.org/show_bug.cgi?id=272185 rdar://125931829 Reviewed by Simon Fraser. We were previously unconditionally substracting the scroll position from the transform when positioning the snapshots. This is incorrect in some cases, like when the element is fixed positioned. This makes use of the existing TransformState/mapLocalToContainer code to correctly account for position:fixed when accumulating transforms through ancestors. It also adds support for flattening the 'tracked' transform when crossing 3d rendering context boundaries, by setting the 3rd row and column of the TransformationMatrix to 0. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-flat-transform-ancestor.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-preserve-3d-ancestor.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-transform-position-fixed.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-expected.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background-ref.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/root-scrollbar-with-fixed-background.html: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::copyElementBaseProperties): * Source/WebCore/platform/graphics/transforms/TransformState.cpp: (WebCore::TransformState::translateMappedCoordinates): (WebCore::TransformState::flattenWithTransform): * Source/WebCore/platform/graphics/transforms/TransformState.h: * Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp: (WebCore::TransformationMatrix::flatten): * Source/WebCore/platform/graphics/transforms/TransformationMatrix.h: * Source/WebCore/rendering/RenderObject.cpp:
[webkit-changes] [WebKit/WebKit] a0dd96: [view-transitions] Spinner animation on https://ww...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a0dd96a17f0a14f6ceab095230852d772289c052 https://github.com/WebKit/WebKit/commit/a0dd96a17f0a14f6ceab095230852d772289c052 Author: Matt Woodrow Date: 2024-05-22 (Wed, 22 May 2024) Changed paths: M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- [view-transitions] Spinner animation on https://www.kvin.me/posts/button-interaction jumps https://bugs.webkit.org/show_bug.cgi?id=274400 Reviewed by Tim Nguyen. When an element is captured in a view transition, its 'transform' gets applied to the ::view-transition-group pseudo element, and we stop it being applied to the layer for the element itself. This makes sure we don't accidentally put it back again with an async animation. * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation): Canonical link: https://commits.webkit.org/279170@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] de3095: [view-transitions] Async animation of snapshot pos...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: de30955ecaa15582965bf1863c2c13f130e4db16 https://github.com/WebKit/WebKit/commit/de30955ecaa15582965bf1863c2c13f130e4db16 Author: Matt Woodrow Date: 2024-05-21 (Tue, 21 May 2024) Changed paths: M Source/WebCore/animation/KeyframeEffect.cpp Log Message: --- [view-transitions] Async animation of snapshot position via transform looks jumpy with sync animation of size https://bugs.webkit.org/show_bug.cgi?id=274437 Reviewed by Antoine Quint. The default pseudo element structure results in an asynchronous animation of the snapshot position via transform, and a sync animation of the width/height. If there's any slowness at all on the main thread, then this looks super jumpy. * Source/WebCore/animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeHasSizeDependentTransform): Canonical link: https://commits.webkit.org/279093@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 0a9688: [view-transitions] https://pokedex-dev.vercel.app/...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 0a968814a2437db3e6cf179e6109a26c6be0e64f https://github.com/WebKit/WebKit/commit/0a968814a2437db3e6cf179e6109a26c6be0e64f Author: Matt Woodrow Date: 2024-05-21 (Tue, 21 May 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2.html M Source/WebCore/rendering/RenderLayerCompositor.cpp Log Message: --- [view-transitions] https://pokedex-dev.vercel.app/pokemons incorrectly applies clips from ancestors of the captured element. https://bugs.webkit.org/show_bug.cgi?id=274436 Reviewed by Tim Nguyen. Effects from ancestors shouldn't be applied. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-2.html: Added. * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::clippedByAncestor const): Canonical link: https://commits.webkit.org/279091@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] a3c503: [view-transitions] https://pokedex-dev.vercel.app/...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: a3c50349375a13f4f925ec6b5dba329ab1d5ac17 https://github.com/WebKit/WebKit/commit/a3c50349375a13f4f925ec6b5dba329ab1d5ac17 Author: Matt Woodrow Date: 2024-05-21 (Tue, 21 May 2024) Changed paths: M Source/WebCore/css/MutableStyleProperties.cpp M Source/WebCore/css/MutableStyleProperties.h M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h Log Message: --- [view-transitions] https://pokedex-dev.vercel.app/pokemons has super low framerate. https://bugs.webkit.org/show_bug.cgi?id=274439 Reviewed by Tim Nguyen. We invalidate the stylesheet every frame, resulting in way too much painting. Instead, only invalidate the stylesheet if we actually inserted new styles. Also invalidate layout, and the layer configuration for the pseudo if we change those. * Source/WebCore/css/MutableStyleProperties.cpp: (WebCore::MutableStyleProperties::mergeAndOverrideOnConflict): * Source/WebCore/css/MutableStyleProperties.h: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::setSize): * Source/WebCore/rendering/RenderViewTransitionCapture.h: Canonical link: https://commits.webkit.org/279049@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4e2c9b: Adding release logging for repeated deferrals of p...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4e2c9bd8f56ac5d7e7606ded13217a8004fe6d9d https://github.com/WebKit/WebKit/commit/4e2c9bd8f56ac5d7e7606ded13217a8004fe6d9d Author: Matt Woodrow Date: 2024-05-08 (Wed, 08 May 2024) Changed paths: M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/WebPageProxy.h Log Message: --- Adding release logging for repeated deferrals of processNextQueuedMouseEvent. https://bugs.webkit.org/show_bug.cgi?id=273908 Reviewed by Abrar Rahman Protyasha. We defer calling processNextQueuedMouseEvent when receiving a mouse event, if the previous one hasn't yet had a response from WebContent. We should add release logging to catch if this happens too many times in a row, since it's possibly stuck. * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::handleMouseEvent): (WebKit::WebPageProxy::processNextQueuedMouseEvent): * Source/WebKit/UIProcess/WebPageProxy.h: Canonical link: https://commits.webkit.org/278540@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] adf1f0: transform-style:preserve-3d doesn't work across di...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: adf1f00fb1ff19e7927fb3f519fe19e7d99caf22 https://github.com/WebKit/WebKit/commit/adf1f00fb1ff19e7927fb3f519fe19e7d99caf22 Author: Matt Woodrow Date: 2024-05-08 (Wed, 08 May 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014.html M LayoutTests/platform/mac/TestExpectations M Source/WebCore/rendering/RenderLayer.cpp Log Message: --- transform-style:preserve-3d doesn't work across display:contents ancestors https://bugs.webkit.org/show_bug.cgi?id=273627 Reviewed by Alan Baradlay. When looking for the ancestor element to see if it has 'preserve-3d', any intermediate ancestors with display:contents should be skipped. * LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/transform3d-preserve3d-014.html: Added. * LayoutTests/platform/mac/TestExpectations: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::flattenedParent): (WebCore::RenderLayer::ancestorLayerIsDOMParent const): Canonical link: https://commits.webkit.org/278499@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b3f021: [view-transitions] Offscreen elements that are vis...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b3f0213101ac9e79466d8100303705d0906d07c7 https://github.com/WebKit/WebKit/commit/b3f0213101ac9e79466d8100303705d0906d07c7 Author: Matt Woodrow Date: 2024-05-06 (Mon, 06 May 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/rendering/RenderBlock.cpp M Source/WebCore/rendering/RenderBlock.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- [view-transitions] Offscreen elements that are visible onscreen via their pseudo are not rendered https://bugs.webkit.org/show_bug.cgi?id=273751 Reviewed by Tim Nguyen. Ensure that the snapshot code doesn't skip over offscreen position:fixed layers, since we frequently want to capture layer regardless of whether they'd be visible for normal painting. Don't restrict the compositing bounds to the viewport for layers that are captured in a view transition. * LayoutTests/TestExpectations: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-right-of-viewport-offscreen-old.html: * LayoutTests/platform/glib/TestExpectations: * Source/WebCore/rendering/RenderBlock.cpp: (WebCore::RenderBlock::debugDescription const): * Source/WebCore/rendering/RenderBlock.h: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintLayer): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::shouldClipCompositedBounds const): Canonical link: https://commits.webkit.org/278439@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 26c33a: The RenderView layer shouldn't need to set shouldR...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 26c33a981702dd6c1df6d4d0da255b68290d47f8 https://github.com/WebKit/WebKit/commit/26c33a981702dd6c1df6d4d0da255b68290d47f8 Author: Matt Woodrow Date: 2024-05-06 (Mon, 06 May 2024) Changed paths: M LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt A LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-add-more-layers-expected.txt A LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-excessive-expected.txt A LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-ok-expected.txt M Source/WebCore/platform/graphics/GraphicsLayer.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- The RenderView layer shouldn't need to set shouldRasterize for backdrop filters. https://bugs.webkit.org/show_bug.cgi?id=273611 Reviewed by Simon Fraser. Doing so uses more memory, and shouldn't be needed if the RenderView is opaque. Skip making the RenderView a backdrop root for the GraphicsLayers if its opaque. Make sure any backdrop filters that will capture up to the root can still use the opaque blur settings. * LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt: * LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt: * LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt: * LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt: * LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt: * LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt: * LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-add-more-layers-expected.txt: Copied from LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt. * LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-excessive-expected.txt: Copied from LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt. * LayoutTests/platform/mac-wk1/css3/filters/backdrop/resource-use-ok-expected.txt: Copied from LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt. * Source/WebCore/platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::dumpProperties const): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::flushCompositingState): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateBackdropRoot): Canonical link: https://commits.webkit.org/278397@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 2e0c7a: [view-transitions] Support view transitions on top...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2e0c7a1325e77dfe9a67c60778af5ce27efa4c78 https://github.com/WebKit/WebKit/commit/2e0c7a1325e77dfe9a67c60778af5ce27efa4c78 Author: Matt Woodrow Date: 2024-05-02 (Thu, 02 May 2024) Changed paths: M LayoutTests/TestExpectations A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/support/dialog-in-rtl-iframe-child-old.html M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/gtk/TestExpectations M Source/WebCore/dom/Document.cpp M Source/WebCore/dom/Document.h M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElement.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerBacking.h M Source/WebCore/rendering/RenderLayerCompositor.cpp Log Message: --- [view-transitions] Support view transitions on top layer elements https://bugs.webkit.org/show_bug.cgi?id=265169 Reviewed by Tim Nguyen. If the captured element is the document element, then the captured images should be of the RenderView instead. We already adjust the sizing to that of the view, this changes the actual snapshots to happen from the view so that the top layer is included. Changes the layer parenting for the new snapshot so that the RenderView's layer gets added to the ::view-transition-new(pseudo), and the ::view-transition root pseudo get directly parented in place of the RenderView. The render tree for this situation is this: Content-root | RenderView / \ ::view-transition \ ::view-transition-group(root) | ::view-transition-image-pair(root) | ::view-transition-new(root) We want to build a GraphicsLayer tree where the RenderView and all its contents (except the view-transition tree) are attached to the ::view-transition-new. Content-root | ::view-transition | ::view-transition-group(root) | ::view-transition-image-pair(root) | ::view-transition-new(root) | RenderView | This happens by: RenderLayerCompositor::collectViewTransitionNewContentLayers detects when the captured element is the , and adjusts to reparent the RenderView instead. This ensures the 'top layer' is included, as required. RenderLayerCompositor::updateBackingAndHierarchy skips attaching the ::view-transition's GraphicsLayer to the parent obtained via the RenderLayer hierarchy (the RenderView's layer). RenderLayerBacking::childForSuperlayers detects when it's a RenderView and will already be attached to the ::view-transition-new, and forwards the request through to the ::view-transition's RenderLayer, so that ::view-transition gets attached to the parent of the RenderView instead. Adds a new test for the ::view-transition-old(root) case. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe-old.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/support/dialog-in-rtl-iframe-child-old.html: Added. * Source/WebCore/dom/Document.cpp: (WebCore::Document::activeViewTransitionCapturedDocumentElement const): * Source/WebCore/dom/Document.h: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::snapshotElementVisualOverflowClippedToViewport): (WebCore::ViewTransition::documentElementIsCaptured const): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::isViewTransitionRoot const): * Source/WebCore/rendering/RenderElement.h: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintList): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::childForSuperlayers const): (WebCore::RenderLayerBacking::childForSuperlayersExcludingViewTransitions const): * Source/WebCore/rendering/RenderLayerBacking.h: * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers): (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): Canonical link: https://commits.webkit.org/278256@main To unsubscribe from these emails, change your notification settings at
[webkit-changes] [WebKit/WebKit] 84e133: [view-transitions] https://spotify-astro-transitio...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 84e133272f1e3d267014c0b78953c25750b3ed9b https://github.com/WebKit/WebKit/commit/84e133272f1e3d267014c0b78953c25750b3ed9b Author: Matt Woodrow Date: 2024-05-01 (Wed, 01 May 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped.html M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- [view-transitions] https://spotify-astro-transitions.vercel.app glitches due to incorrect layer position with overflow:hidden ancestor. https://bugs.webkit.org/show_bug.cgi?id=273537 Reviewed by Tim Nguyen. Rather than just moving the existing parent graphics layer rect (which isn't relevant, since this layer will be reparented), use the rect that the pseudo (to which this layer will be reparented) represents directly. It still needs to be moved into the coordinate space of the current compositing ancestor, since that's what the following code expects. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-ancestor-clipped.html: Added. * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): Canonical link: https://commits.webkit.org/278230@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 85a241: inputNormalizeEdgesTransparent blur isn't availabl...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 85a241ca1e5f23b30574ccfa51d54f17b6e3932a https://github.com/WebKit/WebKit/commit/85a241ca1e5f23b30574ccfa51d54f17b6e3932a Author: Matt Woodrow Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h M Source/WebCore/platform/graphics/ca/PlatformCAFilters.h M Source/WebCore/platform/graphics/ca/PlatformCALayer.h M Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm Log Message: --- inputNormalizeEdgesTransparent blur isn't available on all platforms. https://bugs.webkit.org/show_bug.cgi?id=273280 Reviewed by Darin Adler. We currently try to set this everywhere, but the key isn't always available. We should use inputHardEdges instead, but since this looks worse, we should try to use inputNormalizeEdges when we know the blurred area is opaque. This detects when the layer that establishes a backdrop root also has an opaque background color, and passes that down to descendants in order to pick the right blur mode. * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): (WebCore::GraphicsLayerCA::updateBackdropFilters): (WebCore::GraphicsLayerCA::updateBackdropRoot): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h: * Source/WebCore/platform/graphics/ca/PlatformCAFilters.h: * Source/WebCore/platform/graphics/ca/PlatformCALayer.h: * Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm: (WebCore::PlatformCAFilters::setFiltersOnLayer): * Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h: * Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::setBackdropRootIsOpaque): (WebCore::PlatformCALayerCocoa::setFilters): * Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm: (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h: * Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm: (WebKit::RemoteAcceleratedEffectStack::applyEffectsFromMainThread const): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h: (WebKit::RemoteLayerTreeNode::backdropRootIsOpaque const): (WebKit::RemoteLayerTreeNode::setBackdropRootIsOpaque): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: (WebKit::RemoteLayerTreeNode::setAcceleratedEffectsAndBaseValues): * Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: (WebKit::RemoteScrollingCoordinatorProxyIOS::updateAnimations): * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm: (WebKit::PlatformCALayerRemote::setBackdropRootIsOpaque): Canonical link: https://commits.webkit.org/278155@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3ba31e: [view-transitions] Pseudo elements can't be captured.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3ba31ee3b3d5e5a87e409978bc11eb8aa0c7f1c5 https://github.com/WebKit/WebKit/commit/3ba31ee3b3d5e5a87e409978bc11eb8aa0c7f1c5 Author: Matt Woodrow Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/dom/Element.cpp M Source/WebCore/dom/Element.h M Source/WebCore/dom/Node.h M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElement.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderObject.h M Source/WebCore/style/StyleAdjuster.cpp M Source/WebCore/style/StyleAdjuster.h M Source/WebCore/style/StyleResolver.cpp M Source/WebCore/style/StyleResolver.h M Source/WebCore/style/Styleable.cpp M Source/WebCore/style/Styleable.h Log Message: --- [view-transitions] Pseudo elements can't be captured. https://bugs.webkit.org/show_bug.cgi?id=273166 Reviewed by Tim Nguyen. Pseudo elements (like ::backdrop) don't have an associated Element, so can't be found by ViewTransition's forEachElementInPaintOrder. Rather than holding an Element in CapturedElement, hold a Styleable instead which can represent these pseudo elements as well. Since the normal Styleable class uses an Element reference, introduces a WeakStyleable object which uses a WeakPtr to an Element and can (maybe) be converted back into a Styleable when needed. Changes most of the ViewTransition code to operator on the RenderElement from the Styleable, instead of the Element. Adds capturedInViewTransition to Styleable, so that we can look this up in cases where the renderer hasn't yet been created. * LayoutTests/TestExpectations: * Source/WebCore/dom/Element.cpp: (WebCore::operator<<): * Source/WebCore/dom/Element.h: (WebCore::Element::capturedInViewTransition const): Deleted. (WebCore::Element::setCapturedInViewTransition): Deleted. * Source/WebCore/dom/Node.h: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::effectiveViewTransitionName): (WebCore::captureOverflowRect): (WebCore::snapshotElementVisualOverflowClippedToViewport): (WebCore::forEachRendererInPaintOrder): (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::captureNewState): (WebCore::ViewTransition::activateViewTransition): (WebCore::ViewTransition::clearViewTransition): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): (WebCore::ViewTransition::viewTransitionNewPseudoForCapturedElement): (WebCore::forEachElementInPaintOrder): Deleted. * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::initializeStyle): (WebCore::RenderElement::capturedInViewTransition const): Deleted. * Source/WebCore/rendering/RenderElement.h: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::rebuildZOrderLists): (WebCore::RenderLayer::paintList): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateTransform): (WebCore::RenderLayerBacking::updateGeometry): * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers): * Source/WebCore/rendering/RenderObject.h: (WebCore::RenderObject::capturedInViewTransition const): (WebCore::RenderObject::setCapturedInViewTransition): * Source/WebCore/style/Styleable.cpp: (WebCore::Styleable::capturedInViewTransition const): * Source/WebCore/style/Styleable.h: (WebCore::WeakStyleable::operator bool const): (WebCore::WeakStyleable::operator=): (WebCore::WeakStyleable::styleable const): Canonical link: https://commits.webkit.org/278123@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 500fd5: [view-transitions] css/css-view-transitions/conten...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 500fd5004df14f04bfeb13a58634e5506073d910 https://github.com/WebKit/WebKit/commit/500fd5004df14f04bfeb13a58634e5506073d910 Author: Matt Woodrow Date: 2024-04-29 (Mon, 29 Apr 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp Log Message: --- [view-transitions] css/css-view-transitions/content-with-clip.html fails due to duplicate pseudo renderers. https://bugs.webkit.org/show_bug.cgi?id=273388 Reviewed by Tim Nguyen. The root element is included in the old state, but not the new, and is the first name in the namedElements map. Each frame during updatePseudoElementTree, `buildPseudoElementGroup` is called for the root, and nothing is created (as expected).. currentGroup then gets moved to the previous sibling, which is nullptr, and then is in a broken state for further iterations. All other iterated names then create new renderers, without removing the existing ones. * LayoutTests/TestExpectations: * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree): Canonical link: https://commits.webkit.org/278120@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b4321a: [view-transitions] Handle overflow:hidden on ::vie...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b4321a0a6e7085a38a340b6353a0ddef31d9f5f8 https://github.com/WebKit/WebKit/commit/b4321a0a6e7085a38a340b6353a0ddef31d9f5f8 Author: Matt Woodrow Date: 2024-04-24 (Wed, 24 Apr 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden.html M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h Log Message: --- [view-transitions] Handle overflow:hidden on ::view-transition-new/old. https://bugs.webkit.org/show_bug.cgi?id=273058 Reviewed by Tim Nguyen. Implement updateFromStyle, and make sure setHasNonVisibleOverflow gets called if necessary. Normally this only happens for RenderBlock subclasses, not RenderReplaced (which don't really support overflow properly yet, see bug 273055). If overflow is hidden, fall back to snapshotting each frame of the transition instead of using compositing layer attachment, since overflow hidden isn't supported there either. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-overflow-hidden.html: Added. * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers): * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::updateFromStyle): * Source/WebCore/rendering/RenderViewTransitionCapture.h: Canonical link: https://commits.webkit.org/277959@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ff9cef: [view-transitions] Replaced content rect offset is...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ff9ceff0e3c78e5c80ff0d55f972f0a0f585352e https://github.com/WebKit/WebKit/commit/ff9ceff0e3c78e5c80ff0d55f972f0a0f585352e Author: Matt Woodrow Date: 2024-04-22 (Mon, 22 Apr 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h Log Message: --- [view-transitions] Replaced content rect offset isn't respected when using layer attachment. https://bugs.webkit.org/show_bug.cgi?id=273057 Reviewed by Tim Nguyen. If the 'replaced content rect' starts outside of the content box (like happens with `object-fit: none;`), then the layer attachment path doesn't handle this correctly. Moves the addition of the replaced content rect location into the stored local overflow, rather than doing so in a temporary in the painting code. Adjusts the position of the attached layer by the difference between the renderer's visual overflow rect, and where the capture layer actually begins (the local overflow rect for the capture). * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateTransform): (WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint): * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::paintReplaced): (WebCore::RenderViewTransitionCapture::layout): (WebCore::RenderViewTransitionCapture::updateFromStyle): (WebCore::RenderViewTransitionCapture::captureContentInset const): (WebCore::RenderViewTransitionCapture::debugDescription const): * Source/WebCore/rendering/RenderViewTransitionCapture.h: Canonical link: https://commits.webkit.org/277835@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 124d36: [view-transitions] View transition pseudo elements...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 124d36f180e38519cebcf56b356ea7e5e53b245b https://github.com/WebKit/WebKit/commit/124d36f180e38519cebcf56b356ea7e5e53b245b Author: Matt Woodrow Date: 2024-04-22 (Mon, 22 Apr 2024) Changed paths: M Source/WebCore/rendering/RenderBox.cpp M Source/WebCore/rendering/RenderBoxModelObject.cpp M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElement.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderObject.cpp M Source/WebCore/rendering/RenderObject.h Log Message: --- [view-transitions] View transition pseudo elements should be anonymous. https://bugs.webkit.org/show_bug.cgi?id=273056 Reviewed by Tim Nguyen. We have existing code that expects renderers that return false from isAnonymous to also have a valid Element. Rather than making the view-transition pseudo elements not-anonymous, we should instead change the consumers of isAnonymous so that these pseudo-renderers can still be containing blocks. * Source/WebCore/rendering/RenderBox.cpp: (WebCore::RenderBox::skipContainingBlockForPercentHeightCalculation const): (WebCore::RenderBox::computeReplacedLogicalHeightUsing const): * Source/WebCore/rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::containingBlockForAutoHeightDetection const): (WebCore::RenderBoxModelObject::requiresLayer const): * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::isViewTransitionPseudo const): Deleted. * Source/WebCore/rendering/RenderElement.h: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::canCreateStackingContext): (WebCore::RenderLayer::shouldBeCSSStackingContext const): * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const): * Source/WebCore/rendering/RenderObject.cpp: (WebCore::RenderObject::RenderObject): (WebCore::shouldBeAnonymous): Deleted. * Source/WebCore/rendering/RenderObject.h: (WebCore::RenderObject::isViewTransitionPseudo const): (WebCore::RenderObject::isAnonymousForPercentageResolution const): (WebCore::RenderObject::node const): Canonical link: https://commits.webkit.org/277834@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 6e1c47: [view-transitions] view-transition-name should cau...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 6e1c477fdf2bbdc8a92c50af9c3d8961e430b665 https://github.com/WebKit/WebKit/commit/6e1c477fdf2bbdc8a92c50af9c3d8961e430b665 Author: Matt Woodrow Date: 2024-04-22 (Mon, 22 Apr 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/mac/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderBoxModelObject.cpp M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElement.h M Source/WebCore/rendering/RenderInline.cpp M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderTableRow.cpp M Source/WebCore/style/StyleAdjuster.cpp Log Message: --- [view-transitions] view-transition-name should cause flattening of 3d transforms. https://bugs.webkit.org/show_bug.cgi?id=272951 Reviewed by Tim Nguyen. Adjuster::adjust should force the used value of transform-style to flat, if a view-transition-name value is present, or the element is captured in a view transition. Adds RenderElement::requiresRenderingConsolidationForViewTransition() for this state (which can't be used for Adjuster unfortunately, since the style isn't yet set), and switch other callsites to use it (so that we also get a layer and backdrop root for the same conditions). RenderLayerBacking can no longer rely on querying the name from style (since it might be removed or changed), so adds viewTransitionNewPseudoForCapturedElement for looking up the pseudo element via the captured elements list. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::viewTransitionNewPseudoForCapturedElement): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::requiresLayer const): * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::capturedInViewTransition const): (WebCore::RenderElement::requiresRenderingConsolidationForViewTransition const): * Source/WebCore/rendering/RenderElement.h: * Source/WebCore/rendering/RenderInline.cpp: (WebCore::RenderInline::requiresLayer const): * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::canCreateStackingContext): (WebCore::RenderLayer::shouldBeCSSStackingContext const): (WebCore::RenderLayer::computeCanBeBackdropRoot const): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateTransform): (WebCore::RenderLayerBacking::updateGeometry): * Source/WebCore/rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::requiresLayer const): * Source/WebCore/style/StyleAdjuster.cpp: (WebCore::Style::Adjuster::adjust const): Canonical link: https://commits.webkit.org/277801@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 554ffc: [view-transitions] Image capture rectangle doesn't...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 554ffc8d53654f1534876ec80ce8857162e005b9 https://github.com/WebKit/WebKit/commit/554ffc8d53654f1534876ec80ce8857162e005b9 Author: Matt Woodrow Date: 2024-04-18 (Thu, 18 Apr 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/platform/wpe/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h Log Message: --- [view-transitions] Image capture rectangle doesn't include positioned descendants. https://bugs.webkit.org/show_bug.cgi?id=272875 Reviewed by Tim Nguyen. Consolidate three different callers of 'localBoundingBox' into a single helper 'captureOverflowRect', or read from the previous value on RenderViewTransitionCapture. Switch to using 'calculateLayerBounds' instead of 'localBoundingBox', since this also recurses through descendant layers. Adds a new flag 'PreserveAncestorFlags' to ensure that 'UseLocalClipRectIfPossible' isn't added when recursing through descendants (which incorrectly applies overflow clipping to descendants that have a containing block outside). If the captured element is the root element, use the snapshot containing block size instead of the ink overflow rectangle. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::captureOverflowRect): (WebCore::snapshotElementVisualOverflowClippedToViewport): (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::updatePseudoElementStyles): (WebCore::snapshotNodeVisualOverflowClippedToViewport): Deleted. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects const): * Source/WebCore/rendering/RenderLayer.h: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): * Source/WebCore/rendering/RenderViewTransitionCapture.h: Canonical link: https://commits.webkit.org/277714@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 84c369: [view-transitions] https://simple-set-demos.glitch...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 84c369e893d8167a747e771777a93565c0d7e9df https://github.com/WebKit/WebKit/commit/84c369e893d8167a747e771777a93565c0d7e9df Author: Matt Woodrow Date: 2024-04-17 (Wed, 17 Apr 2024) Changed paths: A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d.html M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/style/RenderStyleConstants.h M Source/WebCore/style/StyleTreeResolver.cpp Log Message: --- [view-transitions] https://simple-set-demos.glitch.me/gross-cube-transition doesn't render 3d effects. https://bugs.webkit.org/show_bug.cgi?id=272713 Reviewed by Tim Nguyen. ancestorLayerIsDOMParent (used for determing if 'transform-style: preserve-3d' from the parent should be applied) was only taking into account 'Element' ancestors. Add support for also checking for pseudo-element parents in the view-transition tree. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/pseudo-element-preserve-3d.html: Added. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::ancestorLayerIsDOMParent const): (WebCore::RenderLayer::participatesInPreserve3D const): (WebCore::parentLayerIsDOMParent): Deleted. * Source/WebCore/rendering/RenderLayer.h: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateTransformFlatteningLayer): (WebCore::ancestorLayerIsDOMParent): Deleted. * Source/WebCore/rendering/style/RenderStyleConstants.h: (WebCore::parentPseudoElement): * Source/WebCore/style/StyleTreeResolver.cpp: (WebCore::Style::TreeResolver::makeResolutionContextForPseudoElement): Canonical link: https://commits.webkit.org/277639@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 61f529: [view-transitions] Occasional fade while animating...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 61f529e65a3fce776e8c04a65ffda08901656751 https://github.com/WebKit/WebKit/commit/61f529e65a3fce776e8c04a65ffda08901656751 Author: Matt Woodrow Date: 2024-04-17 (Wed, 17 Apr 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/platform/gtk/TestExpectations M LayoutTests/platform/mac-wk2/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderObject.cpp M Source/WebCore/rendering/RenderObject.h M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp Log Message: --- [view-transitions] Occasional fade while animating on https://codepen.io/argyleink/pen/dyLNgpX. https://bugs.webkit.org/show_bug.cgi?id=272184 Reviewed by Tim Nguyen. Captured view-transition snapshots need to be rescaled when the intrinsic size of the image is different to the layout size of the pseduo element. The captured image covers the overflow rect of the original element, but the border-box subset defines the intrinsic size. This computes the scale factors required to scale the intrinsic size of the up the replaced content size of the pseudo renderer. It then scales the overflow rect (in coordinates of the original element) into coordinates for the pseudo renderer. Painting of the pseudo element (both new and old variants) are updated to factor this scale in to the draw commands or layer attributes. Doing this sizing during painting correctly exposed bugs where the computed layout of the pseduo renderer was incorrect. ViewTransition:::copyElementBaseProperties is changed to use the 'frameRect' of the view (instead of the 'contentsWidth') when computing the size of the root element, so that space taken up by scrollbars isn't removed. RenderObject's calculation of the 'IsAnonymous' flag is changed so that the view-transition pseudo elements are not considered anonymous and then correctly can be containing blocks for their descendants. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateTransform): (WebCore::RenderLayerBacking::updateChildrenTransformAndAnchorPoint): * Source/WebCore/rendering/RenderObject.cpp: (WebCore::shouldBeAnonymous): (WebCore::RenderObject::RenderObject): * Source/WebCore/rendering/RenderObject.h: (WebCore::RenderObject::isRenderViewTransitionContainer const): (WebCore::RenderObject::hasIntrinsicAspectRatio const): (WebCore::RenderObject::node const): * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::paintReplaced): (WebCore::RenderViewTransitionCapture::layout): * Source/WebCore/rendering/RenderViewTransitionCapture.h: (WebCore::RenderViewTransitionCapture::scale const): * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree): (WebCore::createRendererIfNeeded): Canonical link: https://commits.webkit.org/277636@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 913ff8: [view-transitions] Visual overflow rect should be ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 913ff8ca74490f55505e0e1211cda10dbd7ac43f https://github.com/WebKit/WebKit/commit/913ff8ca74490f55505e0e1211cda10dbd7ac43f Author: Matt Woodrow Date: 2024-04-14 (Sun, 14 Apr 2024) Changed paths: M LayoutTests/TestExpectations A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left.html M LayoutTests/platform/glib/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp Log Message: --- [view-transitions] Visual overflow rect should be recomputed at every frame https://bugs.webkit.org/show_bug.cgi?id=272496 Reviewed by Tim Nguyen. The existing code only read the visual overflow rect of the old element, and used it for both the new and old pseudo elements. The visual overflow of the new element should be copied every frame, and updated on the relevant pseudo element. This also exposed a bug where we were used the computed value for width and height as the specified style for the group pseudo, instead of using the border-box size. * LayoutTests/TestExpectations: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/new-content-changes-overflow-left.html: Added. * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::setImage): (WebCore::RenderViewTransitionCapture::setSize): * Source/WebCore/rendering/RenderViewTransitionCapture.h: * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::createRendererIfNeeded): Canonical link: https://commits.webkit.org/277482@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 977b09: hideContentUntilPendingUpdate should not unconditi...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 977b091711224b2a2d8dffaaf449d13d064d9808 https://github.com/WebKit/WebKit/commit/977b091711224b2a2d8dffaaf449d13d064d9808 Author: Matt Woodrow Date: 2024-04-11 (Thu, 11 Apr 2024) Changed paths: M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm Log Message: --- hideContentUntilPendingUpdate should not unconditionally create a process throttler activity. https://bugs.webkit.org/show_bug.cgi?id=272423 Reviewed by Tim Horton. hideContentUntilPendingUpdate uses a round-trip to the WebContent process, where the reply is bundled into the following layer transaction. This ensures that any previous IPC messages from the UI process have been received, and we remain hidden until the next layer transaction sent after those messages. We don't need to hold a background activity and keep the WebProcess unsuspended during this process, and applicationDidFinishSnapshottingAfterEnteringBackground is explicitly trying to suspend with the intent that the un-hiding happens on the first paint after returning from the background. * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate): Canonical link: https://commits.webkit.org/277398@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3a5477: [view-transitions] Incorrect position when view tr...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3a5477d552d99df32f465dd33b9725df8c49e283 https://github.com/WebKit/WebKit/commit/3a5477d552d99df32f465dd33b9725df8c49e283 Author: Matt Woodrow Date: 2024-04-11 (Thu, 11 Apr 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/platform/glib/TestExpectations M Source/WebCore/dom/ViewTransition.cpp Log Message: --- [view-transitions] Incorrect position when view transition is partially scrolled off viewport. https://bugs.webkit.org/show_bug.cgi?id=270147 Reviewed by Tim Nguyen. The ::view-transition-group pseudo-element is position:fixed, and thus attached to the initial containing block. The computed transfrom from the old element to it's position as a child of this pseudo needs to include the scroll position of the RenderView. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::copyElementBaseProperties): Canonical link: https://commits.webkit.org/277371@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 703822: REGRESSION (274863@main): Safari loads website con...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 703822b1f44ff45ca41be77a163a7adef9478ab4 https://github.com/WebKit/WebKit/commit/703822b1f44ff45ca41be77a163a7adef9478ab4 Author: Matt Woodrow Date: 2024-04-11 (Thu, 11 Apr 2024) Changed paths: A LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale-expected.html A LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale.html M LayoutTests/platform/mac-wk1/TestExpectations M Source/WebCore/platform/graphics/ca/cocoa/WebTiledBackingLayer.mm Log Message: --- REGRESSION (274863@main): Safari loads website content at a lower resolution with in-process layers and backdrop-filter. https://bugs.webkit.org/show_bug.cgi?id=272430 Reviewed by Simon Fraser. WebTiledBackingLayer wasn't forwarding the contentScale/rasterizationScale onto the underlying CALayer, and this value gets used when the layer forces rasterization as a backdrop root. * LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale-expected.html: Added. * LayoutTests/css3/filters/hidpi-backdrop-filter-rasterization-scale.html: Added. * Source/WebCore/platform/graphics/ca/cocoa/WebTiledBackingLayer.mm: (-[WebTiledBackingLayer createTileController:]): (-[WebTiledBackingLayer setContentsScale:]): Canonical link: https://commits.webkit.org/277370@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] bf2e58: Text on daringfireball.net (with backdrop-filter) ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bf2e585595911f4c963b4603c4e1fb32c444053e https://github.com/WebKit/WebKit/commit/bf2e585595911f4c963b4603c4e1fb32c444053e Author: Matt Woodrow Date: 2024-04-10 (Wed, 10 Apr 2024) Changed paths: A LayoutTests/css3/filters/backdrop-filter-page-scale-expected.html A LayoutTests/css3/filters/backdrop-filter-page-scale.html M LayoutTests/platform/mac-wk1/TestExpectations M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp Log Message: --- Text on daringfireball.net (with backdrop-filter) looks fuzzy when zoomed in. https://bugs.webkit.org/show_bug.cgi?id=272432 Reviewed by Simon Fraser. UI-side compositing equivalent of bug 272430. We need to make sure the content scale is forwarded to the underlying CALayer for the container, as well as the tile controller. * LayoutTests/css3/filters/backdrop-filter-page-scale-expected.html: Added. * LayoutTests/css3/filters/backdrop-filter-page-scale.html: Added. * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemoteTiledBacking.cpp: (WebKit::PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking): (WebKit::PlatformCALayerRemoteTiledBacking::setContentsScale): Canonical link: https://commits.webkit.org/277352@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ce9d97: [Site Isolation] Resizing the window causes render...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ce9d973285487efd092c8d5f8d4737e9506d5221 https://github.com/WebKit/WebKit/commit/ce9d973285487efd092c8d5f8d4737e9506d5221 Author: Matt Woodrow Date: 2024-04-10 (Wed, 10 Apr 2024) Changed paths: M LayoutTests/http/tests/site-isolation/scrolling/basic-scrolling-tree-expected.txt M Source/WebCore/page/Page.cpp Log Message: --- [Site Isolation] Resizing the window causes rendering issues inside cross-origin iframe. https://bugs.webkit.org/show_bug.cgi?id=272419 Reviewed by Alex Christensen. When Page::layoutIfNeeded tries to layout all documents (and flush their compositing layers), it should do so for all root frames, not just the main frame. * Source/WebCore/page/Page.cpp: (WebCore::Page::layoutIfNeeded): Canonical link: https://commits.webkit.org/277339@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ef653e: [view-transitions] Capturing the root background s...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ef653ed93c60ee008719cea7d3ef926d4725d203 https://github.com/WebKit/WebKit/commit/ef653ed93c60ee008719cea7d3ef926d4725d203 Author: Matt Woodrow Date: 2024-04-08 (Mon, 08 Apr 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/dom/ViewTransition.cpp Log Message: --- [view-transitions] Capturing the root background shows a white area at bottom https://bugs.webkit.org/show_bug.cgi?id=272186 Reviewed by Tim Nguyen. When capturing the image for the root element, we want to use the size of the snapshot containing block, which covers the full view, not just the size of the root element itself. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::snapshotNodeVisualOverflowClippedToViewport): Canonical link: https://commits.webkit.org/277224@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 08b68e: [view-transitions] Visual overflow extending beyon...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 08b68eceb0a3c8e04f8dac5fb5c98bf3712e2956 https://github.com/WebKit/WebKit/commit/08b68eceb0a3c8e04f8dac5fb5c98bf3712e2956 Author: Matt Woodrow Date: 2024-04-07 (Sun, 07 Apr 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- [view-transitions] Visual overflow extending beyond the viewport causes incorrect snapshot positioning. https://bugs.webkit.org/show_bug.cgi?id=272130 Reviewed by Tim Nguyen. The RenderViewTransitionCapture renderer is created with visual overflow matching the overflow of the element that will be captured. If the RenderLayerBacking ends up with smaller compositedBounds() due to clipping, then we need to adjust the layer positioning by the difference in the origins. * LayoutTests/TestExpectations: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): Canonical link: https://commits.webkit.org/277183@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 7ffc7f: Backdrop-filter forces compositing on the root ele...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7ffc7f9fd02ae05936e368c7a7c2d6774ff1f6a9 https://github.com/WebKit/WebKit/commit/7ffc7f9fd02ae05936e368c7a7c2d6774ff1f6a9 Author: Matt Woodrow Date: 2024-03-27 (Wed, 27 Mar 2024) Changed paths: A LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root-expected.txt A LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root.html M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt A LayoutTests/platform/glib/compositing/filters/backdrop-filter-root-element-no-backdrop-root-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt M LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt M LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt M LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt M LayoutTests/platform/mac-wk1/TestExpectations A LayoutTests/platform/mac-wk1/compositing/layer-creation/will-change-on-normal-flow-content-expected.txt M LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt M LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt A LayoutTests/platform/mac-wk1/layer-creation/will-change-on-normal-flow-content-expected.txt M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderView.cpp M Tools/DumpRenderTree/TestOptions.cpp Log Message: --- Backdrop-filter forces compositing on the root element and uses extra memory. https://bugs.webkit.org/show_bug.cgi?id=271340 Reviewed by Simon Fraser. The backdrop-filter spec requires that the root element be a backdrop root, and creates a separate compositing layer, separate from the base background color of the view. However, most tests are expecting the base white color to be included in the captured backdrop. I've filed https://github.com/w3c/fxtf-drafts/issues/557 to try resolve the spec/implementation mismatch. This change makes the root element only a backdrop root if it also has one of the other grouping graphics properties. Notably not included is the 'view-transition-name' property, since this is present on the root as a default UA style. It also changes RenderView::rootElementShouldPaintBaseBackground so that we don't paint the base background color as part of the root element's background, if we did end up making the root element a backdrop root. It also ensures the default value of CSSUnprefixedBackdropFilterEnabled is always false for WebKitLegacy, rather than correctly support root background rendering with backdrop filter. * LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root-expected.txt: Added. * LayoutTests/compositing/filters/backdrop-filter-root-element-no-backdrop-root.html: Added. *
[webkit-changes] [WebKit/WebKit] 72a544: Backdrop-filter: blur() with a transparent backdro...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 72a54445957dedd746d7958426195091e80fe77a https://github.com/WebKit/WebKit/commit/72a54445957dedd746d7958426195091e80fe77a Author: Matt Woodrow Date: 2024-03-20 (Wed, 20 Mar 2024) Changed paths: M Source/WebCore/platform/graphics/GraphicsLayerClient.h M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h M Source/WebCore/platform/graphics/ca/PlatformCAFilters.h M Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h M Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerBacking.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm Log Message: --- Backdrop-filter: blur() with a transparent backdrop renders incorrectly. https://bugs.webkit.org/show_bug.cgi?id=176830 This sets the 'inputNormalizeEdgesTransparent' property on the CoreAnimation blur filter function, required to get correct blur behaviour on the edge of a partially transparent surface. Reviewed by Simon Fraser. I haven't found a good way to test this that isn't super fuzzy unfortunately. This is only enabled when unprefixed backdrop filter is enabled, since it requires a backdrop root (part of unprefixing) to restrict the blur area correctly. * Source/WebCore/platform/graphics/GraphicsLayerClient.h: (WebCore::GraphicsLayerClient::cssUnprefixedBackdropFilterEnabled const): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::platformCALayerCSSUnprefixedBackdropFilterEnabled const): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h: * Source/WebCore/platform/graphics/ca/PlatformCAFilters.h: * Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h: (WebCore::PlatformCALayerClient::platformCALayerCSSUnprefixedBackdropFilterEnabled const): * Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm: (WebCore::PlatformCAFilters::setFiltersOnLayer): * Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::setFilters): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::cssUnprefixedBackdropFilterEnabled const): * Source/WebCore/rendering/RenderLayerBacking.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm: (WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h: * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: (WebKit::RemoteLayerTreeHost::cssUnprefixedBackdropFilterEnabled const): Canonical link: https://commits.webkit.org/276430@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b3f5cc: Speedometer 3: buildTransaction spends a lot of ti...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b3f5ccb38cd2800b166d39aeb366186f94a38f93 https://github.com/WebKit/WebKit/commit/b3f5ccb38cd2800b166d39aeb366186f94a38f93 Author: Matt Woodrow Date: 2024-03-20 (Wed, 20 Mar 2024) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in 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/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp Log Message: --- Speedometer 3: buildTransaction spends a lot of time destroying mach port objects. https://bugs.webkit.org/show_bug.cgi?id=270549 Reviewed by Kimmo Kinnunen. Flusing a RemoteImageBufferSetProxy waits on both the `didPrepareForDisplay` message to be delivered to the WorkQueue, and the semaphore to be signaled when drawing command flushing is completed. This was previously required, since building of the transaction on the main thread was blocked on the didPrepareForDisplay message, so it was delivered as early as possible. The current state is that all waiting happens on a background thread, so there's no longer any benefit to having two separate notifications. This changes moves sending of the didPrepareForDisplay message to happen once drawing flushing is completed, and removes the seamphore signaling. This should be a small performance win in some cases, since we no longer need to allocate and destroy the semaphore objects. * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::RemoteImageBufferSet): (WebKit::RemoteImageBufferSet::endPrepareForDisplay): (WebKit::RemoteImageBufferSet::ensureBufferForDisplay): (WebKit::RemoteImageBufferSet::setFlushSignal): Deleted. (WebKit::RemoteImageBufferSet::flush): Deleted. * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h: * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in: * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplay): (WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplaySync): * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h: * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in: * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp: (WebKit::RemoteImageBufferSetProxyFlushFence::create): (WebKit::RemoteImageBufferSetProxyFlushFence::waitFor): (WebKit::RemoteImageBufferSetProxyFlushFence::RemoteImageBufferSetProxyFlushFence): (WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync): (WebKit::RemoteImageBufferSetProxy::willPrepareForDisplay): (WebKit::RemoteImageBufferSetProxyFlushFence::~RemoteImageBufferSetProxyFlushFence): Deleted. (WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent): Deleted. (WebKit::RemoteImageBufferSetProxyFlushFence::setWaitingForSignal): Deleted. (): Deleted. (WebKit::RemoteImageBufferSetProxy::createFlushFence): Deleted. * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h: * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp: (WebKit::RemoteRenderingBackendProxy::prepareImageBufferSetsForDisplay): Canonical link: https://commits.webkit.org/276421@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] afd161: REGRESSION(268173@main) Safari rendered bdiusa.com...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: afd16103076c8029ee4527728da0ff1926fc7483 https://github.com/WebKit/WebKit/commit/afd16103076c8029ee4527728da0ff1926fc7483 Author: Matt Woodrow Date: 2024-03-18 (Mon, 18 Mar 2024) Changed paths: A LayoutTests/fast/clip/offscreen-transparency-clip-expected.html A LayoutTests/fast/clip/offscreen-transparency-clip.html M Source/WebCore/rendering/RenderLayer.cpp Log Message: --- REGRESSION(268173@main) Safari rendered bdiusa.com as all white. https://bugs.webkit.org/show_bug.cgi?id=270926 Reviewed by Simon Fraser. We're using transparencyClipBox to determine the size of the transparency layer to push, and it's returning an empty rectangle. It recurses through descendants, and finds a child layer positioned way off to the left of the screen (at -33553151). Due to limits of int32, adding the bounds of that child into the original rect (0,0) width=1686 height=18933.45, results in (-33554430,0) width=33554432 height=18933.45 which no longer includes the visible area of the screen (except for the very left edge). This fix moves the intersection with the dirty rect down to happen per-layer, so that we clip before unioning the descendants in, and avoid this problem. As the existing code comment mentions, it would still be preferable to take CSS clips into account when computing these rectangles. * LayoutTests/fast/clip/offscreen-transparency-clip-expected.html: Added. * LayoutTests/fast/clip/offscreen-transparency-clip.html: Added. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::transparencyClipBox): (WebCore::expandClipRectForDescendantsAndReflection): (WebCore::RenderLayer::beginTransparencyLayers): (WebCore::paintingExtent): Deleted. Canonical link: https://commits.webkit.org/276294@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b6a5d7: [view-transitions] Computed transform for captured...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b6a5d7eb40fbaebf2bd491ea66de0b527ede0a7e https://github.com/WebKit/WebKit/commit/b6a5d7eb40fbaebf2bd491ea66de0b527ede0a7e Author: Matt Woodrow Date: 2024-03-07 (Thu, 07 Mar 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderLayerCompositor.cpp Log Message: --- [view-transitions] Computed transform for captured elements with 3d transforms is incorrect https://bugs.webkit.org/show_bug.cgi?id=270428 Reviewed by Tim Nguyen. This reverses the order that the matrices are concatenated when walking ancestors. It also applies the inverse of the changes that will be applied for transform-origin, since the computed transform already takes that into account. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers): Canonical link: https://commits.webkit.org/275810@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 525f85: import-w3c-tests should rewrite reference file nam...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 525f853875c0dcaebc7df8ba2317ce8ab0734156 https://github.com/WebKit/WebKit/commit/525f853875c0dcaebc7df8ba2317ce8ab0734156 Author: Matt Woodrow Date: 2024-03-06 (Wed, 06 Mar 2024) Changed paths: M Tools/Scripts/webkitpy/w3c/test_converter.py M Tools/Scripts/webkitpy/w3c/test_importer.py Log Message: --- import-w3c-tests should rewrite reference file names in meta fuzzy annotations. https://bugs.webkit.org/show_bug.cgi?id=270426 Reviewed by Jonathan Bedard. * Tools/Scripts/webkitpy/w3c/test_converter.py: (convert_for_webkit): (_W3CTestConverter.__init__): (_W3CTestConverter.convert_attributes_if_needed): * Tools/Scripts/webkitpy/w3c/test_importer.py: (TestImporter.find_importable_tests): (TestImporter.import_tests): Canonical link: https://commits.webkit.org/275750@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] db2e97: [view-transitions] Reimport view-transitions WPTs.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: db2e977c3266b1fa5601ffd6aa305bd3e3584538 https://github.com/WebKit/WebKit/commit/db2e977c3266b1fa5601ffd6aa305bd3e3584538 Author: Matt Woodrow Date: 2024-03-06 (Wed, 06 Mar 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/imported/w3c/resources/resource-files.json M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/3d-transform-incoming.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/3d-transform-outgoing.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/block-with-overflowing-text.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/break-inside-avoid-child.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/capture-with-offscreen-child.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/capture-with-opacity-zero-child.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/capture-with-visibility-mixed-descendants.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/class-specificity-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/class-specificity-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/class-specificity.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/clip-path-larger-than-border-box-on-child-of-named-element.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/content-with-transform-new-image.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/content-with-transform-old-image.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/css-tags-paint-order-with-entry.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/dialog-in-rtl-iframe.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/far-away-capture.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/fractional-box-with-overflow-children-new.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/fractional-box-with-overflow-children-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-new-has-scrollbar.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-old-has-scrollbar.html A LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-transition-destroyed-document-crash.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/iframe-transition.sub.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/inline-with-offset-from-containing-block.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-new.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-and-on-top-of-viewport-partially-onscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-new.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-offscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-new.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-below-viewport-partially-onscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-offscreen-new.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-offscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-new.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-left-of-viewport-partially-onscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-new.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-offscreen-old.html M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/massive-element-on-top-of-viewport-partially-onscreen-new.html M
[webkit-changes] [WebKit/WebKit] 222378: View transition new captures apply the transform t...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 22237898bafcf2f2a364d4a42c89215c27916af0 https://github.com/WebKit/WebKit/commit/22237898bafcf2f2a364d4a42c89215c27916af0 Author: Matt Woodrow Date: 2024-02-28 (Wed, 28 Feb 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/platform/glib/TestExpectations M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- View transition new captures apply the transform twice. https://bugs.webkit.org/show_bug.cgi?id=270209 Reviewed by Tim Nguyen. The transform is added to the ::view-transform-group element as a generated style, so we need to clear it from the reparented GraphicsLayer. * LayoutTests/TestExpectations: * LayoutTests/platform/glib/TestExpectations: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateTransform): Canonical link: https://commits.webkit.org/275439@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4c5820: [Gardening] Enable some view-transition test that ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4c582037a107bdf7ad254e9860eca03b9d81e3be https://github.com/WebKit/WebKit/commit/4c582037a107bdf7ad254e9860eca03b9d81e3be Author: Matt Woodrow Date: 2024-02-27 (Tue, 27 Feb 2024) Changed paths: M LayoutTests/platform/mac-wk2/TestExpectations Log Message: --- [Gardening] Enable some view-transition test that no longer crash. https://bugs.webkit.org/show_bug.cgi?id=270014 Reviewed by Tim Nguyen. These got fixed by 75312@main. * LayoutTests/platform/mac-wk2/TestExpectations: Canonical link: https://commits.webkit.org/275420@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b560a1: Capturing the old view transition snapshot include...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b560a1bd3facf431c730f0c03dcffcd8923d94c8 https://github.com/WebKit/WebKit/commit/b560a1bd3facf431c730f0c03dcffcd8923d94c8 Author: Matt Woodrow Date: 2024-02-26 (Mon, 26 Feb 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h Log Message: --- Capturing the old view transition snapshot includes descendant view-transition. https://bugs.webkit.org/show_bug.cgi?id=270056 Reviewed by Tim Nguyen. The 'capture the image' algorithm should skip over descendant elements that also have a view transition. This changes snapshotNodeVisualOverflowClippedToViewport to call 'paint' on the RenderLayer of the element with a view-transition directly rather than calling it on the root elements Layer (with a subtree painting root set). It adds a new PaintFlag 'PaintingSkipDescendantViewTransition' which skips descending into child layers that are being separately captured in a view transition. * LayoutTests/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::snapshotNodeVisualOverflowClippedToViewport): (WebCore::ViewTransition::captureOldState): * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintList): * Source/WebCore/rendering/RenderLayer.h: Canonical link: https://commits.webkit.org/275312@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c76f59: View transition layers are positioned wrong if a c...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c76f59cd157b8728cdac41d7336553dc84c3297f https://github.com/WebKit/WebKit/commit/c76f59cd157b8728cdac41d7336553dc84c3297f Author: Matt Woodrow Date: 2024-02-25 (Sun, 25 Feb 2024) Changed paths: M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- View transition layers are positioned wrong if a clipping layer is present. https://bugs.webkit.org/show_bug.cgi?id=270058 Reviewed by Tim Nguyen. Positioning for a view-transition 'new' layer currently sets the origin of the primary graphics rect to 0,0, but this doesn't move any clipping layers positioned in updateClippingStackLayerGeometry. We can instead adjust the position of the 'parent graphics layer rect' (since all local layer positions are computed relative to that) to a value that results in 0,0 being computed for the primary rect. * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): Canonical link: https://commits.webkit.org/275307@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 559ced: ::view-transition-group(*) has the same specificit...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 559ced3ec51e3eabb61e6a5ea6f66d204a1e60bf https://github.com/WebKit/WebKit/commit/559ced3ec51e3eabb61e6a5ea6f66d204a1e60bf Author: Matt Woodrow Date: 2024-02-25 (Sun, 25 Feb 2024) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/css/CSSSelector.cpp Log Message: --- ::view-transition-group(*) has the same specificity as ::view-transition-group(). https://bugs.webkit.org/show_bug.cgi?id=270054 rdar://123606489> Reviewed by Tim Nguyen. * LayoutTests/TestExpectations: * Source/WebCore/css/CSSSelector.cpp: (WebCore::simpleSelectorSpecificity): Canonical link: https://commits.webkit.org/275300@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 34e14b: View transition old snapshots incorrectly get scal...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 34e14bf3631972e46abcee10b0b72f0339e7a493 https://github.com/WebKit/WebKit/commit/34e14bf3631972e46abcee10b0b72f0339e7a493 Author: Matt Woodrow Date: 2024-02-23 (Fri, 23 Feb 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/platform/glib/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/page/FrameSnapshotting.cpp M Source/WebCore/page/FrameSnapshotting.h M Source/WebCore/rendering/RenderBoxModelObject.cpp M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElement.h M Source/WebCore/rendering/RenderInline.cpp M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderTableRow.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp Log Message: --- View transition old snapshots incorrectly get scaled to the border-box size. https://bugs.webkit.org/show_bug.cgi?id=269954 Reviewed by Tim Nguyen. Drawing of the old snapshot rescales the image to the border-box size, even if we captured a larger area. We shouldn't apply scaling, just align the origin of the border-box in the snapshot to the border-box origin of the pseudo element. This records the overflow rect for which the snapshot is captured, and uses it to adjust the overflow rect of the pseudo element and align the painting position of the snapshot. As a slight cleanup, merges the two createRendererIfNeeded lambdas into a single static function. * LayoutTests/TestExpectations: * LayoutTests/platform/glib/TestExpectations: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::snapshotNodeVisualOverflowClippedToViewport): (WebCore::ViewTransition::captureOldState): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/page/FrameSnapshotting.cpp: (WebCore::snapshotFrameRectWithClip): * Source/WebCore/page/FrameSnapshotting.h: * Source/WebCore/rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::requiresLayer const): * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::capturedInViewTransition const): (WebCore::RenderElement::hasViewTransitionName const): * Source/WebCore/rendering/RenderElement.h: * Source/WebCore/rendering/RenderInline.cpp: (WebCore::RenderInline::requiresLayer const): * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::canCreateStackingContext): (WebCore::RenderLayer::shouldBeCSSStackingContext const): (WebCore::RenderLayer::computeCanBeBackdropRoot const): * Source/WebCore/rendering/RenderTableRow.cpp: (WebCore::RenderTableRow::requiresLayer const): * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::setImage): (WebCore::RenderViewTransitionCapture::paintReplaced): (WebCore::RenderViewTransitionCapture::layout): * Source/WebCore/rendering/RenderViewTransitionCapture.h: * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::createRendererIfNeeded): (WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup): (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup): Canonical link: https://commits.webkit.org/275227@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 35cfdf: setupTransitionPseudoElements doesn't update the v...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 35cfdf3fdab6aa072eb6203618c0f7b6189aab66 https://github.com/WebKit/WebKit/commit/35cfdf3fdab6aa072eb6203618c0f7b6189aab66 Author: Matt Woodrow Date: 2024-02-21 (Wed, 21 Feb 2024) Changed paths: M LayoutTests/TestExpectations M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/group-animation-for-root-transition-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/mix-blend-mode-only-on-transition-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/paused-animation-at-end-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/style-inheritance-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/synchronous-callback-skipped-before-run-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/view-transition-name-on-removed-element-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-expected.txt M LayoutTests/platform/glib/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/style/StyleResolver.cpp M Source/WebCore/style/StyleResolver.h Log Message: --- setupTransitionPseudoElements doesn't update the view transition dynamic style sheet. https://bugs.webkit.org/show_bug.cgi?id=265225 Reviewed by Tim Nguyen. Refactors Resolver::setViewTransitionGroupStyle to take the pseduo element type, and builds the appropriate selector, so that it can be used for all view-transition pseudo elements. Adds the generation of the view-transition dynamic style sheet styles to ViewTransition::setupTransitionPseudoElements. * LayoutTests/TestExpectations: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/mix-blend-mode-only-on-transition-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/paused-animation-at-end-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/style-inheritance-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/unset-and-initial-view-transition-name-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/view-transition-name-on-removed-element-expected.txt: * LayoutTests/imported/w3c/web-platform-tests/css/css-view-transitions/window-resize-aborts-transition-expected.txt: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::setupDynamicStyleSheet): (WebCore::ViewTransition::setupTransitionPseudoElements): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/style/StyleResolver.cpp: (WebCore::Style::viewTransitionSelector): (WebCore::Style::Resolver::setViewTransitionStyles): (WebCore::Style::Resolver::setViewTransitionGroupStyles): Deleted. * Source/WebCore/style/StyleResolver.h: Canonical link: https://commits.webkit.org/275144@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 7a77ef: Unprefixed backdrop filter should only be enabled ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7a77efe3ef06baa7d9e64828b1c583cb090ebd01 https://github.com/WebKit/WebKit/commit/7a77efe3ef06baa7d9e64828b1c583cb090ebd01 Author: Matt Woodrow Date: 2024-02-21 (Wed, 21 Feb 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WebKit/Shared/WebPreferencesDefaultValues.h M Tools/DumpRenderTree/TestOptions.cpp M Tools/WebKitTestRunner/TestOptions.cpp Log Message: --- Unprefixed backdrop filter should only be enabled when UNPREFIXED_BACKDROP_FILTER is true. https://bugs.webkit.org/show_bug.cgi?id=269755 Reviewed by Tim Nguyen. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WebKit/Shared/WebPreferencesDefaultValues.h: Canonical link: https://commits.webkit.org/275088@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 136017: [view-transitions] Implement "capture the image" a...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 1360173f7d2bb98f8b6d3eefa30d77620bd07c37 https://github.com/WebKit/WebKit/commit/1360173f7d2bb98f8b6d3eefa30d77620bd07c37 Author: Matt Woodrow Date: 2024-02-21 (Wed, 21 Feb 2024) Changed paths: M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/mac-wk2/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderBoxModelObject.cpp M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElement.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderLayerCompositor.h M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp Log Message: --- [view-transitions] Implement "capture the image" algorithm. https://bugs.webkit.org/show_bug.cgi?id=265170 Reviewed by Tim Nguyen. Uses 'snapshotNode' to capture the old image during 'captureOldState', and implements `paintReplaced` on the renderer (in the same way RenderHTMLElement does) to draw the old catpured image. Forces composited layers to be created for the ::view-transition-new/old pseudos, as well as the element with the view-transtion, and reparents the GraphicsLayer from real element into pseduo, so that the new capture is displayed using the live content. This also effectively stops the original element from being displayed normally, as required by the spec. * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::captureOldState): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::requiresLayer const): * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::hasViewTransition const): (WebCore::RenderElement::isViewTransitionPseudo const): * Source/WebCore/rendering/RenderElement.h: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::canCreateStackingContext): (WebCore::RenderLayer::shouldBeCSSStackingContext const): (WebCore::RenderLayer::computeCanBeBackdropRoot const): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers): (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): (WebCore::RenderLayerCompositor::requiresCompositingLayer const): (WebCore::RenderLayerCompositor::requiresOwnBackingStore const): (WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const): * Source/WebCore/rendering/RenderLayerCompositor.h: * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::setImage): (WebCore::RenderViewTransition::paintReplaced): * Source/WebCore/rendering/RenderViewTransitionCapture.h: * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree): (WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup): (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup): Canonical link: https://commits.webkit.org/275087@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 142e54: ::view-transition-group dynamic styles doesn't com...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 142e5436fbfb59ae112dda82b4580a33fa6bec73 https://github.com/WebKit/WebKit/commit/142e5436fbfb59ae112dda82b4580a33fa6bec73 Author: Matt Woodrow Date: 2024-02-20 (Tue, 20 Feb 2024) Changed paths: M Source/WebCore/css/ComputedStyleExtractor.cpp M Source/WebCore/css/ComputedStyleExtractor.h M Source/WebCore/dom/ViewTransition.cpp Log Message: --- ::view-transition-group dynamic styles doesn't compute the transform. https://bugs.webkit.org/show_bug.cgi?id=269692 Reviewed by Tim Nguyen. The dynamically computed style for :root::view-transition-group(transitionName) should include 'a transform that would map capturedElement’s new element's border box from the snapshot containing block origin to its current visual position.' * Source/WebCore/css/ComputedStyleExtractor.cpp: (WebCore::ComputedStyleExtractor::matrixTransformValue): (WebCore::transformOperationAsCSSValue): (WebCore::computedTransform): (WebCore::matrixTransformValue): Deleted. * Source/WebCore/css/ComputedStyleExtractor.h: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::copyElementBaseProperties): Canonical link: https://commits.webkit.org/275080@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 066b75: [view-transitions] Implement "update pseudo-elemen...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 066b75f5a58bba233bfb505248d89ba1fbbc0e1f https://github.com/WebKit/WebKit/commit/066b75f5a58bba233bfb505248d89ba1fbbc0e1f Author: Matt Woodrow Date: 2024-02-19 (Mon, 19 Feb 2024) Changed paths: M Source/WebCore/Sources.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderObject.h A Source/WebCore/rendering/RenderViewTransitionCapture.cpp A Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp M Source/WebCore/style/ElementRuleCollector.cpp M Source/WebCore/style/ElementRuleCollector.h M Source/WebCore/style/StyleResolver.cpp M Source/WebCore/style/StyleResolver.h M Source/WebCore/style/StyleScope.cpp M Source/WebCore/style/StyleScope.h M Source/WebCore/style/StyleScopeRuleSets.cpp M Source/WebCore/style/StyleScopeRuleSets.h Log Message: --- [view-transitions] Implement "update pseudo-element styles" algorithm. https://bugs.webkit.org/show_bug.cgi?id=265224 rdar://118703293> Reviewed by Tim Nguyen. Implements the basic outline of capturing the computed style from both the old and new elements, and using these to generate a style rule for the selector ':root::view-transition-group(transitionName)'. Adds a mostly empty RenderViewTransitionOld class that we will use for the replaced snapshot content, but just acts as a placeholder for the intrinsic size right now. With these changes, the size of the transitioned element now gets applied correctly to the :view-transition-new/old renderers, and styles targetting them (like background color) correctly get applied and rendered. The next step is to implement the 'capture the image' algorithm for new and old (likely splitting RenderViewTransformNew as a separate class), so that we also include the replaced content. * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::handleTransitionFrame): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/dom/ViewTransition.h: (WebCore::OrderedNamedElementsMap::map const): (WebCore::OrderedNamedElementsMap::find const): * Source/WebCore/rendering/RenderObject.h: (WebCore::RenderObject::isRenderViewTransitionOld const): * Source/WebCore/rendering/RenderViewTransitionOld.cpp: Added. (WebCore::RenderViewTransitionOld::RenderViewTransitionOld): (WebCore::RenderViewTransitionOld::setImage): * Source/WebCore/rendering/RenderViewTransitionOld.h: Added. * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup): (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup): * Source/WebCore/style/ElementRuleCollector.cpp: (WebCore::Style::ElementRuleCollector::ElementRuleCollector): (WebCore::Style::ElementRuleCollector::matchUARules): * Source/WebCore/style/ElementRuleCollector.h: * Source/WebCore/style/StyleResolver.cpp: (WebCore::Style::Resolver::applyMatchedProperties): (WebCore::Style::Resolver::setViewTransitionGroupStyles): * Source/WebCore/style/StyleResolver.h: * Source/WebCore/style/StyleScope.cpp: (WebCore::Style::Scope::createDocumentResolver): * Source/WebCore/style/StyleScope.h: * Source/WebCore/style/StyleScopeRuleSets.cpp: (WebCore::Style::ScopeRuleSets::dynamicViewTransitionsStyle const): * Source/WebCore/style/StyleScopeRuleSets.h: (WebCore::Style::ScopeRuleSets::setDynamicViewTransitionsStyle): Canonical link: https://commits.webkit.org/275005@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 251644: ::view-transition-group dynamic styles doesn't com...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2516446fe92ed2a8570e1a36a4ce2734fe77f8c2 https://github.com/WebKit/WebKit/commit/2516446fe92ed2a8570e1a36a4ce2734fe77f8c2 Author: Matt Woodrow Date: 2024-02-19 (Mon, 19 Feb 2024) Changed paths: M Source/WebCore/css/ComputedStyleExtractor.cpp M Source/WebCore/css/ComputedStyleExtractor.h M Source/WebCore/dom/ViewTransition.cpp Log Message: --- ::view-transition-group dynamic styles doesn't compute the transform. https://bugs.webkit.org/show_bug.cgi?id=269692 Reviewed by Tim Nguyen. The dynamically computed style for :root::view-transition-group(transitionName) should include 'a transform that would map capturedElement’s new element's border box from the snapshot containing block origin to its current visual position.' * Source/WebCore/css/ComputedStyleExtractor.cpp: (WebCore::ComputedStyleExtractor::matrixTransformValue): (WebCore::transformOperationAsCSSValue): (WebCore::computedTransform): (WebCore::matrixTransformValue): Deleted. * Source/WebCore/css/ComputedStyleExtractor.h: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::copyElementBaseProperties): Canonical link: https://commits.webkit.org/274964@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 115f02: [view-transitions] Implement "capture the image" a...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 115f0206bb9c8fc07b0f7d07d4e1001963b0557c https://github.com/WebKit/WebKit/commit/115f0206bb9c8fc07b0f7d07d4e1001963b0557c Author: Matt Woodrow Date: 2024-02-18 (Sun, 18 Feb 2024) Changed paths: M LayoutTests/platform/glib/TestExpectations M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderBoxModelObject.cpp M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElement.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderLayerCompositor.h M Source/WebCore/rendering/RenderViewTransitionCapture.cpp M Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp Log Message: --- [view-transitions] Implement "capture the image" algorithm. https://bugs.webkit.org/show_bug.cgi?id=265170 Reviewed by Tim Nguyen and Simon Fraser. Uses 'snapshotNode' to capture the old image during 'captureOldState', and implements `paintReplaced` on the renderer (in the same way RenderHTMLElement does) to draw the old catpured image. Forces composited layers to be created for the ::view-transition-new/old pseudos, as well as the element with the view-transtion, and reparents the GraphicsLayer from real element into pseduo, so that the new capture is displayed using the live content. This also effectively stops the original element from being displayed normally, as required by the spec. * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::captureOldState): * Source/WebCore/dom/ViewTransition.h: * Source/WebCore/rendering/RenderBoxModelObject.cpp: (WebCore::RenderBoxModelObject::requiresLayer const): * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::hasViewTransition const): (WebCore::RenderElement::isViewTransitionPseudo const): * Source/WebCore/rendering/RenderElement.h: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::canCreateStackingContext): (WebCore::RenderLayer::shouldBeCSSStackingContext const): (WebCore::RenderLayer::computeCanBeBackdropRoot const): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::updateGeometry): * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::collectViewTransitionNewContentLayers): (WebCore::RenderLayerCompositor::updateBackingAndHierarchy): (WebCore::RenderLayerCompositor::requiresCompositingLayer const): (WebCore::RenderLayerCompositor::requiresOwnBackingStore const): (WebCore::RenderLayerCompositor::requiresCompositingForViewTransition const): * Source/WebCore/rendering/RenderLayerCompositor.h: * Source/WebCore/rendering/RenderViewTransitionCapture.cpp: (WebCore::RenderViewTransitionCapture::setImage): (WebCore::RenderViewTransition::paintReplaced): * Source/WebCore/rendering/RenderViewTransitionCapture.h: * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementTree): (WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup): (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup): Canonical link: https://commits.webkit.org/274957@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 95241f: Make CSSUnprefixedBackdropFilterEnabled an embedde...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 95241f778f52a004989c772bb68d6ac79006ee5e https://github.com/WebKit/WebKit/commit/95241f778f52a004989c772bb68d6ac79006ee5e Author: Matt Woodrow Date: 2024-02-16 (Fri, 16 Feb 2024) Changed paths: M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml Log Message: --- Make CSSUnprefixedBackdropFilterEnabled an embedder feature. https://bugs.webkit.org/show_bug.cgi?id=269537 Reviewed by Cameron McCormack. We want this setting to be conditionally enabled at compile time, and only 'embedder' status allows varying default values. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: Canonical link: https://commits.webkit.org/274863@main To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 810e27: [view-transitions] Implement "update pseudo-elemen...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 810e27d205f59629bff16d325ae44e5c4d2ea5e4 https://github.com/WebKit/WebKit/commit/810e27d205f59629bff16d325ae44e5c4d2ea5e4 Author: Matt Woodrow Date: 2024-02-16 (Fri, 16 Feb 2024) Changed paths: M Source/WebCore/Sources.txt M Source/WebCore/WebCore.xcodeproj/project.pbxproj M Source/WebCore/dom/ViewTransition.cpp M Source/WebCore/dom/ViewTransition.h M Source/WebCore/rendering/RenderObject.h A Source/WebCore/rendering/RenderViewTransitionCapture.cpp A Source/WebCore/rendering/RenderViewTransitionCapture.h M Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp M Source/WebCore/style/ElementRuleCollector.cpp M Source/WebCore/style/ElementRuleCollector.h M Source/WebCore/style/StyleResolver.cpp M Source/WebCore/style/StyleResolver.h M Source/WebCore/style/StyleScope.cpp M Source/WebCore/style/StyleScope.h M Source/WebCore/style/StyleScopeRuleSets.cpp M Source/WebCore/style/StyleScopeRuleSets.h M Source/WebCore/style/Styleable.cpp Log Message: --- [view-transitions] Implement "update pseudo-element styles" algorithm. https://bugs.webkit.org/show_bug.cgi?id=265224 rdar://118703293> Reviewed by Tim Nguyen. Implements the basic outline of capturing the computed style from both the old and new elements, and using these to generate a style rule for the selector ':root::view-transition-group(transitionName)'. Adds a mostly empty RenderViewTransitionOld class that we will use for the replaced snapshot content, but just acts as a placeholder for the intrinsic size right now. With these changes, the size of the transitioned element now gets applied correctly to the :view-transition-new/old renderers, and styles targetting them (like background color) correctly get applied and rendered. The next step is to implement the 'capture the image' algorithm for new and old (likely splitting RenderViewTransformNew as a separate class), so that we also include the replaced content. * Source/WebCore/Sources.txt: * Source/WebCore/WebCore.xcodeproj/project.pbxproj: * Source/WebCore/dom/ViewTransition.cpp: (WebCore::ViewTransition::captureOldState): (WebCore::ViewTransition::handleTransitionFrame): (WebCore::ViewTransition::copyElementBaseProperties): (WebCore::ViewTransition::updatePseudoElementStyles): * Source/WebCore/dom/ViewTransition.h: (WebCore::OrderedNamedElementsMap::map const): (WebCore::OrderedNamedElementsMap::find const): * Source/WebCore/rendering/RenderObject.h: (WebCore::RenderObject::isRenderViewTransitionOld const): * Source/WebCore/rendering/RenderViewTransitionOld.cpp: Added. (WebCore::RenderViewTransitionOld::RenderViewTransitionOld): (WebCore::RenderViewTransitionOld::setImage): * Source/WebCore/rendering/RenderViewTransitionOld.h: Added. * Source/WebCore/rendering/updating/RenderTreeUpdaterViewTransition.cpp: (WebCore::RenderTreeUpdater::ViewTransition::buildPseudoElementGroup): (WebCore::RenderTreeUpdater::ViewTransition::updatePseudoElementGroup): * Source/WebCore/style/ElementRuleCollector.cpp: (WebCore::Style::ElementRuleCollector::ElementRuleCollector): (WebCore::Style::ElementRuleCollector::matchUARules): * Source/WebCore/style/ElementRuleCollector.h: * Source/WebCore/style/StyleResolver.cpp: (WebCore::Style::Resolver::applyMatchedProperties): (WebCore::Style::Resolver::setViewTransitionGroupStyles): * Source/WebCore/style/StyleResolver.h: * Source/WebCore/style/StyleScope.cpp: (WebCore::Style::Scope::createDocumentResolver): * Source/WebCore/style/StyleScope.h: * Source/WebCore/style/StyleScopeRuleSets.cpp: (WebCore::Style::ScopeRuleSets::dynamicViewTransitionsStyle const): * Source/WebCore/style/StyleScopeRuleSets.h: (WebCore::Style::ScopeRuleSets::setDynamicViewTransitionsStyle): Canonical link: https://commits.webkit.org/274817@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e89a58: [threaded-animation-resolution] Schedule animation...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e89a58c3716a2cee16351e230a760ed8e8e0358e https://github.com/WebKit/WebKit/commit/e89a58c3716a2cee16351e230a760ed8e8e0358e Author: Matt Woodrow Date: 2024-02-03 (Sat, 03 Feb 2024) Changed paths: M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.h M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm Log Message: --- [threaded-animation-resolution] Schedule animation updates from RemoteScrollingCoordinatorProxy on the main thread https://bugs.webkit.org/show_bug.cgi?id=268282 rdar://121839192 Reviewed by Simon Fraser. In 273391@main we added support for scheduling animation resolution for macOS via RemoteLayerTreeEventDispatcher. On iOS, where we don't use a scrolling thread, we schedule animations through RemoteScrollingCoordinatorProxy using a dedicated CADisplayLink in a new WKAnimationDisplayLinkHandler. When that display link fires, we resolve animations on the main thread by calling the new RemoteAcceleratedEffectStack::applyEffectsFromMainThread(). * Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h: * Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm: (WebKit::RemoteAcceleratedEffectStack::applyEffectsFromMainThread const): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: (WebKit::RemoteLayerTreeNode::setAcceleratedEffectsAndBaseValues): * Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.h: * Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm: (-[WKAnimationDisplayLinkHandler initWithCoordinator:]): (-[WKAnimationDisplayLinkHandler dealloc]): (-[WKAnimationDisplayLinkHandler displayLinkFired:]): (-[WKAnimationDisplayLinkHandler invalidate]): (-[WKAnimationDisplayLinkHandler schedule]): (-[WKAnimationDisplayLinkHandler pause]): (WebKit::RemoteScrollingCoordinatorProxyIOS::~RemoteScrollingCoordinatorProxyIOS): (WebKit::RemoteScrollingCoordinatorProxyIOS::animationsWereAddedToNode): (WebKit::RemoteScrollingCoordinatorProxyIOS::animationsWereRemovedFromNode): (WebKit::RemoteScrollingCoordinatorProxyIOS::updateAnimations): Canonical link: https://commits.webkit.org/274065@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4beae4: RemoteImageBufferSetProxy::didPrepareForDisplay ca...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4beae41dc6154ad2687f21a5fd87d09039e0d2af https://github.com/WebKit/WebKit/commit/4beae41dc6154ad2687f21a5fd87d09039e0d2af Author: Matt Woodrow Date: 2024-02-03 (Sat, 03 Feb 2024) Changed paths: M Source/WebKit/Platform/IPC/StreamClientConnection.cpp M Source/WebKit/Platform/IPC/StreamClientConnection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h Log Message: --- RemoteImageBufferSetProxy::didPrepareForDisplay can be blocked by other main thread task. https://bugs.webkit.org/show_bug.cgi?id=268506 Reviewed by Kimmo Kinnunen. This message is received on the main thread, and blocks submission of the previous layer tree transaction. It can be delayed by other work on the main thread, for arbitrary periods of time. This changes makes it be delivered it to a WorkQueue instead to prevent this blocking. * Source/WebKit/Platform/IPC/StreamClientConnection.cpp: (IPC::StreamClientConnection::addWorkQueueMessageReceiver): (IPC::StreamClientConnection::removeWorkQueueMessageReceiver): * Source/WebKit/Platform/IPC/StreamClientConnection.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm: (WebKit::RemoteLayerWithRemoteRenderingBackingStore::~RemoteLayerWithRemoteRenderingBackingStore): * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp: (WebKit::RemoteImageBufferSetProxyFlushFence::create): (WebKit::RemoteImageBufferSetProxyFlushFence::~RemoteImageBufferSetProxyFlushFence): (WebKit::RemoteImageBufferSetProxyFlushFence::waitFor): (WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent): (WebKit::RemoteImageBufferSetProxyFlushFence::setWaitingForSignal): (WebKit::RemoteImageBufferSetProxy::didPrepareForDisplay): (WebKit::RemoteImageBufferSetProxy::shutdown): (WebKit::RemoteImageBufferSetProxy::doShutdown): (WebKit::RemoteImageBufferSetProxy::createFlushFence): (WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync): (WebKit::RemoteImageBufferSetProxy::willPrepareForDisplay): (WebKit::RemoteImageBufferSetProxy::remoteBufferSetWasDestroyed): * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h: (WebKit::RemoteImageBufferSetProxy::WTF_GUARDED_BY_LOCK): * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in: * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp: (WebKit::RemoteRenderingBackendProxy::RemoteRenderingBackendProxy): (WebKit::RemoteRenderingBackendProxy::didClose): (WebKit::RemoteRenderingBackendProxy::prepareImageBufferSetsForDisplay): (WebKit::RemoteRenderingBackendProxy::dispatchMessage): (WebKit::RemoteRenderingBackendProxy::didPrepareForDisplay): Deleted. * Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h: (WebKit::RemoteRenderingBackendProxy::workQueue): Canonical link: https://commits.webkit.org/274047@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 77e5bb: Corrupt tiles when scrolling and selecting text qu...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 77e5bb39107371558f6ee94cf74b988d3231ab41 https://github.com/WebKit/WebKit/commit/77e5bb39107371558f6ee94cf74b988d3231ab41 Author: Matt Woodrow Date: 2024-01-31 (Wed, 31 Jan 2024) Changed paths: A LayoutTests/compositing/repaint/needs-no-display-volatile-repaint-expected.html A LayoutTests/compositing/repaint/needs-no-display-volatile-repaint.html M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp Log Message: --- Corrupt tiles when scrolling and selecting text quickly. https://bugs.webkit.org/show_bug.cgi?id=268430 Reviewed by Simon Fraser. If ensureBufferForDisplay returns SwapBuffersDisplayRequirement::NeedsNoDisplay, then we don't want to call prepareForDisplay. The latter copies pixels from the old front buffer into the new one, and when no display is required there wasn't a front/back swap, so no copy needed. This caused issues because we also set 'm_previouslyPaintedRect` to the (empty!) dirty area, effectively recording that the front and back buffers were identical, despite it likely not being true. The next attempt to paint these buffers would omit a back-to-front copy, thinking the buffers were identical, and then we'd do a partial update on top of stale content. This happens when scrolling, since scrolling tiles get pooled (and made volatile), then recycled. * LayoutTests/compositing/repaint/needs-no-display-volatile-repaint-expected.html: Added. * LayoutTests/compositing/repaint/needs-no-display-volatile-repaint.html: Added. * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplay): (WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplaySync): Canonical link: https://commits.webkit.org/273838@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 247a81: Add a layout test for volatile front buffer (forci...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 247a813a16d6f0364d32806a035e0a4e5d52ac32 https://github.com/WebKit/WebKit/commit/247a813a16d6f0364d32806a035e0a4e5d52ac32 Author: Matt Woodrow Date: 2024-01-30 (Tue, 30 Jan 2024) Changed paths: A LayoutTests/compositing/repaint/needs-no-display-volatile-expected.html A LayoutTests/compositing/repaint/needs-no-display-volatile.html M Source/WebCore/platform/graphics/GraphicsLayer.h M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h M Source/WebCore/platform/graphics/ca/PlatformCALayer.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerBacking.h M Source/WebCore/testing/Internals.cpp M Source/WebCore/testing/Internals.h M Source/WebCore/testing/Internals.idl M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm Log Message: --- Add a layout test for volatile front buffer (forcing a sync GPUP swap). https://bugs.webkit.org/show_bug.cgi?id=267749 Reviewed by Simon Fraser. Adds a new 'markFrontBufferVolatileForTesting' function to Internals, which sets the volatile state on the current front buffer of the Element's layer. Adds a test that uses this, and would catch the failure from bug 267300. * LayoutTests/compositing/repaint/needs-no-display-volatile-expected.html: Added. * LayoutTests/compositing/repaint/needs-no-display-volatile.html: Added. * Source/WebCore/platform/graphics/GraphicsLayer.h: (WebCore::GraphicsLayer::markFrontBufferVolatileForTesting): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::markFrontBufferVolatileForTesting): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h: * Source/WebCore/platform/graphics/ca/PlatformCALayer.h: * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects const): * Source/WebCore/rendering/RenderLayer.h: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::markFrontBufferVolatileForTesting): * Source/WebCore/rendering/RenderLayerBacking.h: * Source/WebCore/testing/Internals.cpp: (WebCore::Internals::markFrontBufferVolatile): * Source/WebCore/testing/Internals.h: * Source/WebCore/testing/Internals.idl: * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::ensureBufferForDisplay): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::markFrontBufferVolatileForTesting): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm: (WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay): (WebKit::RemoteLayerBackingStoreCollection::markFrontBufferVolatileForTesting): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm: (WebKit::RemoteLayerWithRemoteRenderingBackingStore::prepareToDisplay): * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm: (WebKit::PlatformCALayerRemote::markFrontBufferVolatileForTesting): Canonical link: https://commits.webkit.org/273814@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e20379: Corrupt/missing tile content on tab switch.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e203798dcce88cf721d6c2061ca00a63b9811c3d https://github.com/WebKit/WebKit/commit/e203798dcce88cf721d6c2061ca00a63b9811c3d Author: Matt Woodrow Date: 2024-01-24 (Wed, 24 Jan 2024) Changed paths: M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h Log Message: --- Corrupt/missing tile content on tab switch. https://bugs.webkit.org/show_bug.cgi?id=268025 Reviewed by Simon Fraser. Creating a flusher for a RemoteLayerBackingStore now waits for backend handles to be delivered as well as flushing any drawing. We need to call this even when the dirty region is empty, so that we get handles delivered. Adds an enum to describe what we want to wait for, so that can avoid flushing the drawing (or creating a flusher entirely) if no drawing commands have been issued. https://bugs.webkit.org/show_bug.cgi?id=267749 (PR #22958) adds a test that will catch this. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::paintContents): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm: (WebKit::RemoteLayerWithInProcessRenderingBackingStore::createFlusher): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm: (WebKit::RemoteLayerWithRemoteRenderingBackingStore::createFlusher): * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp: (WebKit::RemoteImageBufferSetProxyFlushFence::create): (WebKit::RemoteImageBufferSetProxyFlushFence::waitFor): (WebKit::RemoteImageBufferSetProxyFlushFence::tryTakeEvent): (WebKit::RemoteImageBufferSetProxyFlushFence::RemoteImageBufferSetProxyFlushFence): (WebKit::RemoteImageBufferSetProxy::flushFrontBufferAsync): * Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h: Canonical link: https://commits.webkit.org/273475@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e183df: [threaded-animation-resolution] Schedule animation...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e183df84221ef46786e71200591e6ef284ebc4d0 https://github.com/WebKit/WebKit/commit/e183df84221ef46786e71200591e6ef284ebc4d0 Author: Matt Woodrow Date: 2024-01-23 (Tue, 23 Jan 2024) Changed paths: M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.h M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm Log Message: --- [threaded-animation-resolution] Schedule animation updates from RemoteLayerTreeEventDispatcher on the scrolling thread. https://bugs.webkit.org/show_bug.cgi?id=266026 Reviewed by Simon Fraser. RemoteLayerTreeEventDispatcher can update the current set of animations at the same time it applies any asynchronous scrolls. This should align them with rendering updates (when scroll synchronisation succeeds), and make it simpler to integrate scroll-linked animations iOS doesn't use RemoteLayerTreeEventDispatcher/scrolling thread, so will need a separate solution to schedule animation updates. * Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.h: * Source/WebKit/UIProcess/RemoteLayerTree/RemoteAcceleratedEffectStack.mm: (WebKit::RemoteAcceleratedEffectStack::initEffectsFromMainThread): (WebKit::RemoteAcceleratedEffectStack::applyEffectsFromScrollingThread const): (WebKit::RemoteAcceleratedEffectStack::clear): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: (WebKit::RemoteLayerTreeDrawingAreaProxy::animationCurrentTime const): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.h: * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm: (WebKit::RemoteLayerTreeHost::animationCurrentTime const): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h: (WebKit::RemoteLayerTreeNode::effectStack const): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm: (WebKit::RemoteLayerTreeNode::~RemoteLayerTreeNode): (WebKit::RemoteLayerTreeNode::setAcceleratedEffectsAndBaseValues): * Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.cpp: (WebKit::RemoteLayerTreeEventDispatcher::startOrStopDisplayLinkOnMainThread): (WebKit::RemoteLayerTreeEventDispatcher::didRefreshDisplay): (WebKit::RemoteLayerTreeEventDispatcher::delayedRenderingUpdateDetectionTimerFired): (WebKit::RemoteLayerTreeEventDispatcher::waitForRenderingUpdateCompletionOrTimeout): (WebKit::RemoteLayerTreeEventDispatcher::scrollingTreeWasRecentlyActive): (WebKit::RemoteLayerTreeEventDispatcher::lockForAnimationChanges): (WebKit::RemoteLayerTreeEventDispatcher::unlockForAnimationChanges): (WebKit::RemoteLayerTreeEventDispatcher::animationsWereAddedToNode): (WebKit::RemoteLayerTreeEventDispatcher::animationsWereRemovedFromNode): (WebKit::RemoteLayerTreeEventDispatcher::updateAnimations): * Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeEventDispatcher.h: (WebKit::RemoteLayerTreeEventDispatcher::animationsLock): * Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteScrollingCoordinatorProxyMac.mm: (WebKit::RemoteScrollingCoordinatorProxyMac::willCommitLayerAndScrollingTrees): (WebKit::RemoteScrollingCoordinatorProxyMac::didCommitLayerAndScrollingTrees): Canonical link: https://commits.webkit.org/273391@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] e0a425: Speedometer 3: WebContent spends a lot of time in ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: e0a42565e3a2879ec1e7c1bc87937dc2d8b779eb https://github.com/WebKit/WebKit/commit/e0a42565e3a2879ec1e7c1bc87937dc2d8b779eb Author: Matt Woodrow Date: 2024-01-22 (Mon, 22 Jan 2024) Changed paths: M LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html M Source/WebKit/CMakeLists.txt M Source/WebKit/DerivedSources-input.xcfilelist M Source/WebKit/DerivedSources-output.xcfilelist M Source/WebKit/DerivedSources.make M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.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/Scripts/webkit/messages.py M Source/WebKit/Shared/RemoteLayerTree/BufferAndBackendInfo.h M Source/WebKit/Shared/RemoteLayerTree/BufferAndBackendInfo.serialization.in M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm M Source/WebKit/SourcesCocoa.txt M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.h A Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.messages.in M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm Log Message: --- Speedometer 3: WebContent spends a lot of time in RemoteImageBufferProxy::ensureBackendCreated. https://bugs.webkit.org/show_bug.cgi?id=266728 Reviewed by Kimmo Kinnunen. Synchronously waiting on the ImageBufferBackendHandle for an ImageBufferSet can block the main thread while trying to serialize a transaction. This splits the response to prepareImageBufferSetsForDisplay into two parts, one that is only present when needed as a sync reponse, and another as a separate message returned asynchronously. The new response message 'DidPrepareForDisplay' stores the resulting buffer backend handles on the RemoteImageBufferSetProxy and notifies a Condition, so that they can be waited on from a different thread. RemoteLayerTree transaction serialization on the main thread now just serializes an identifier for the image buffer set and doesn't block. The transaction flusher thread waits for any incoming backend handles (as well as the existing wait on drawing flushing), and builds a hashamp of image buffer set identifier to response data and appends this on to the remote layer tree transaction. RemoteLayerTreeDrawingAreaProxy uses the trailing hashmap to copy across any needed backend handles from the response hashmap into the appropriate RemoteLayerBackingStoreProperties. * Source/WebKit/CMakeLists.txt: * Source/WebKit/DerivedSources-input.xcfilelist: * Source/WebKit/DerivedSources-output.xcfilelist: * Source/WebKit/DerivedSources.make: * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::ensureBufferForDisplay): * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h: * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplay): (WebKit::RemoteRenderingBackend::prepareImageBufferSetsForDisplaySync): * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.h: (WebKit::RemoteRenderingBackend::identifier): * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.messages.in: * Source/WebKit/Scripts/webkit/messages.py: (types_that_must_be_moved): (class_template_headers): (headers_for_type): * Source/WebKit/Shared/RemoteLayerTree/BufferAndBackendInfo.h: *
[webkit-changes] [WebKit/WebKit] 243963: REGRESSION (271261@main): [ Monterey Ventura Debug...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 2439631889affe94ff5c0abaa592025f2dcf6c68 https://github.com/WebKit/WebKit/commit/2439631889affe94ff5c0abaa592025f2dcf6c68 Author: Matt Woodrow Date: 2024-01-21 (Sun, 21 Jan 2024) Changed paths: M LayoutTests/platform/mac-wk2/TestExpectations M Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp Log Message: --- REGRESSION (271261@main): [ Monterey Ventura Debug ] ASSERTION FAILED: isValid() in std::unique_ptr WebCore::ScrollingStateTree::commit(LayerRepresentation::Type) https://bugs.webkit.org/show_bug.cgi?id=267655 Reviewed by Simon Fraser. ThreadedScrollingCoordinator updates the scrolling tree state at the start of the rendering update (before rAF callbacks), so that async scrolls can be performed if the rendering update takes too long. We need to make sure the compositing layer tree is up to date in order for this to be valid. * LayoutTests/platform/mac-wk2/TestExpectations: * Source/WebCore/page/scrolling/ThreadedScrollingCoordinator.cpp: (WebCore::ThreadedScrollingCoordinator::willStartRenderingUpdate): Canonical link: https://commits.webkit.org/273275@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] f57f00: Add a way to test RemoteLayerBackingStore's copy-f...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f57f00ab6a22c7b846e9dda0fa296da77aa48e23 https://github.com/WebKit/WebKit/commit/f57f00ab6a22c7b846e9dda0fa296da77aa48e23 Author: Matt Woodrow Date: 2024-01-18 (Thu, 18 Jan 2024) Changed paths: A LayoutTests/compositing/repaint/copy-forward-dirty-region-expected.html A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer-expected.html A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-expected.html A LayoutTests/compositing/repaint/copy-forward-dirty-region-purged.html A LayoutTests/compositing/repaint/copy-forward-dirty-region.html M LayoutTests/platform/gtk/TestExpectations M Source/WebCore/platform/graphics/GraphicsLayer.h M Source/WebCore/platform/graphics/ImageBuffer.cpp M Source/WebCore/platform/graphics/ImageBuffer.h M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h M Source/WebCore/platform/graphics/ca/PlatformCALayer.h M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerBacking.h M Source/WebCore/testing/Internals.cpp M Source/WebCore/testing/Internals.h M Source/WebCore/testing/Internals.idl M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.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/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.cpp M Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm M Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp M Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp M Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h M Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp M Tools/WebKitTestRunner/InjectedBundle/TestRunner.h M Tools/WebKitTestRunner/TestInvocation.cpp M Tools/WebKitTestRunner/TestInvocation.h Log Message: --- Add a way to test RemoteLayerBackingStore's copy-forward code. https://bugs.webkit.org/show_bug.cgi?id=266674 Reviewed by Kimmo Kinnunen. We can't currently test this, because WKTR always forces a full repaint. This adds a 'dontForceRepaint()' option to the test runner, to request that no repaint is done at the end of the test, and for it to just capture whatever pixel contents are currently available. It also adds a purgeFrontBuffer/purgeBackBuffer method to the Internals interface, which try to purge (faked via clearing the buffer contents) the relevant layer buffer for the element. It adds three new tests, which would have caught each of the recent bugs (271908@main, 272069@main, 272304@main) in this area. * LayoutTests/compositing/repaint/copy-forward-dirty-region-expected.html: Added. * LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer-expected.html: Added. * LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-backbuffer.html: Added. * LayoutTests/compositing/repaint/copy-forward-dirty-region-purged-expected.html: Added. * LayoutTests/compositing/repaint/copy-forward-dirty-region-purged.html: Added. * LayoutTests/compositing/repaint/copy-forward-dirty-region.html: Added. * Source/WebCore/platform/graphics/GraphicsLayer.h: (WebCore::GraphicsLayer::purgeFrontBufferForTesting): (WebCore::GraphicsLayer::purgeBackBufferForTesting): * Source/WebCore/platform/graphics/ImageBuffer.cpp: (WebCore::ImageBuffer::forcePurgeForTesting): * Source/WebCore/platform/graphics/ImageBuffer.h: * Source/WebCore/platform/graphics/ImageBufferBackend.h: (WebCore::ImageBufferBackend::forcePurgeForTesting): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::purgeFrontBufferForTesting):
[webkit-changes] [WebKit/WebKit] 15c2dd: REGRESSION (273059@main-273058@main?): [ Sonoma IO...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 15c2dd6a0dd36311302c3f56390dc7ea79485bfa https://github.com/WebKit/WebKit/commit/15c2dd6a0dd36311302c3f56390dc7ea79485bfa Author: Matt Woodrow Date: 2024-01-17 (Wed, 17 Jan 2024) Changed paths: M LayoutTests/platform/ios-wk2/TestExpectations M LayoutTests/platform/mac-wk2/TestExpectations M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp Log Message: --- REGRESSION (273059@main-273058@main?): [ Sonoma IOS 17 Debug ] ASSERTION FAILED in virtual WebCore::GraphicsContext::~GraphicsContext() for imported/w3c/web-platform-tests/html/browsers/the-window-object/open-close/open-features-tokenization-noopener.html https://bugs.webkit.org/show_bug.cgi?id=267595 Reviewed by Kimmo Kinnunen. Ensure that we restore any saved state when releasing a RemoteImageBufferSet. This can happen during test when we destroy a RemoteRenderingBackend in the middle of drawing, and is the same as we already do for RemoteImageBuffer. * LayoutTests/platform/ios-wk2/TestExpectations: * LayoutTests/platform/mac-wk2/TestExpectations: * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::~RemoteImageBufferSet): Canonical link: https://commits.webkit.org/273141@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3eabc1: RemoteImageBufferSet is leaked if the RemoteRender...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3eabc15ebb801d9eb0ba7386f82a26ed9337b201 https://github.com/WebKit/WebKit/commit/3eabc15ebb801d9eb0ba7386f82a26ed9337b201 Author: Matt Woodrow Date: 2024-01-15 (Mon, 15 Jan 2024) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp Log Message: --- RemoteImageBufferSet is leaked if the RemoteRenderingBackend is destroyed without removing them manually. https://bugs.webkit.org/show_bug.cgi?id=267563 rdar://120057571> Reviewed by Mike Wyrzykowski. There's a reference cycle between m_remoteImageBufferSets on the RemoteRenderingBackend, and m_backend on RemoteImageBufferSet. Normally we remove them from the hash map manually, but if we shut down the rendering backend entirely, any remaining sets (and the rendering backend) are leaked. * Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp: (WebKit::RemoteRenderingBackend::workQueueUninitialize): Canonical link: https://commits.webkit.org/273054@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 39ec74: [Books] Returning from Lock Screen shows a flash o...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 39ec746c46ceb11d77d4f0f65be943905484289c https://github.com/WebKit/WebKit/commit/39ec746c46ceb11d77d4f0f65be943905484289c Author: Matt Woodrow Date: 2024-01-11 (Thu, 11 Jan 2024) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm Log Message: --- [Books] Returning from Lock Screen shows a flash of missing content https://bugs.webkit.org/show_bug.cgi?id=267300 Reviewed by Simon Fraser. If we've included an ImageBufferSet with an empty dirty region in the prepare for display set, then we always need to return a valid buffer handle. This happens when we think the front buffer is volatile (as happens when the screen is locked), and we want to confirm that the contents are still there. If they are, no drawing is needed, but we still need to update the buffer handle. * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::ensureBufferForDisplay): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm: (WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm: (WebKit::RemoteLayerWithRemoteRenderingBackingStore::prepareToDisplay): Canonical link: https://commits.webkit.org/272932@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 5ce41d: Wikipedia video control icon backgrounds flicker.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5ce41d80d50760401a9399bc7cb3d3be7b97b58e https://github.com/WebKit/WebKit/commit/5ce41d80d50760401a9399bc7cb3d3be7b97b58e Author: Matt Woodrow 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 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 ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] bdc9ba: jsc_fuz/wktr: null ptr deref in WebCore::GraphicsL...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bdc9ba2c424d1d7e95f86e454b3d08b0dd136ee7 https://github.com/WebKit/WebKit/commit/bdc9ba2c424d1d7e95f86e454b3d08b0dd136ee7 Author: Matt Woodrow Date: 2023-12-20 (Wed, 20 Dec 2023) Changed paths: A LayoutTests/fast/canvas/offscreen-giant-expected.html A LayoutTests/fast/canvas/offscreen-giant.html M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/mac-monterey/TestExpectations M Source/WTF/wtf/unix/UnixFileDescriptor.h M Source/WebCore/platform/graphics/ca/cocoa/GraphicsLayerAsyncContentsDisplayDelegateCocoa.mm M Source/WebCore/platform/graphics/cocoa/DynamicContentScalingDisplayList.h M Source/WebKit/Platform/SharedMemory.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm M Source/WebKit/Shared/ShareableBitmap.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm Log Message: --- jsc_fuz/wktr: null ptr deref in WebCore::GraphicsLayerAsyncContentsDisplayDelegateCocoa::tryCopyToLayer(WebCore::ImageBuffer&) https://bugs.webkit.org/show_bug.cgi?id=262640 Reviewed by Kimmo Kinnunen. This adds support for setDelegatedContents on a PlatformCALayerRemote having a generic ImageBufferBackendHandle (which includes shared memory), instead of only MachSendRight. Adds an explicit copy constructor to SharedMemoryHandle, UnixFileDescriptor and CGDisplayList to match MachSendRight and make this possible. Also switches Protection::ReadWrite to Protection::ReadOnly for the RemoteLayerBackingStore callers, since we were already using this for tryCopyToLayer, and we need the ::map() call in the UI process to not try ask for extra permissions. * Source/WTF/wtf/unix/UnixFileDescriptor.h: (WTF::UnixFileDescriptor::UnixFileDescriptor): * Source/WebKit/Platform/SharedMemory.h: * Source/WebKit/Shared/RemoteLayerTree/CGDisplayList.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::encode const): (WebKit::RemoteLayerBackingStore::setDelegatedContents): (WebKit::RemoteLayerBackingStoreProperties::layerContentsBufferFromBackendHandle): * Source/WebKit/Shared/ShareableBitmap.h: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/GraphicsLayerCARemote.mm: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm: (WebKit::PlatformCALayerRemote::setDelegatedContents): (WebKit::PlatformCALayerRemote::setRemoteDelegatedContents): Originally-landed-as: 267815.262@safari-7617-branch (8ac19464ff91). rdar://119570861 Canonical link: https://commits.webkit.org/272365@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3614ef: Web content renders blank on tab switch.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3614ef890007d387d7a8dc9c809eb80d645c275b https://github.com/WebKit/WebKit/commit/3614ef890007d387d7a8dc9c809eb80d645c275b Author: Matt Woodrow Date: 2023-12-19 (Tue, 19 Dec 2023) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp Log Message: --- Web content renders blank on tab switch. https://bugs.webkit.org/show_bug.cgi?id=266655 Reviewed by Simon Fraser. m_previouslyPaintedRect is used to minimize the copy-forward rect when we know the new front buffer is also previous-previous-front-buffer (N-2). In that case we only need to copy the pixels drawn last time (into N-1), minus the pixel we're going to draw this time. If the buffer is N-2, but it's been purged, then that also needs to skip the optimization, so we clear m_previouslyPaintedRect. * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::ensureBufferForDisplay): Canonical link: https://commits.webkit.org/272304@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 9941ce: REGRESSION: Black banners on webpage, sometimes co...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 9941ce56b7a17396d18b9328222046d86d300551 https://github.com/WebKit/WebKit/commit/9941ce56b7a17396d18b9328222046d86d300551 Author: Matt Woodrow Date: 2023-12-14 (Thu, 14 Dec 2023) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h Log Message: --- REGRESSION: Black banners on webpage, sometimes content doesn't fully render when tab switching. https://bugs.webkit.org/show_bug.cgi?id=266429 Reviewed by Tim Horton. If we're forcing a full display due to the existing front buffer being volatile and purged, then we also need to reset the dirty region to the full bounds of the layer. This stops us attempting a copy-forward from the old (purged) front buffer, and also makes sure we clip to the full bounds, not what the web process thought the dirty region would be. When the front buffer is potentially volatile, the web process always synchronously waits for the response of this code, so the dirty region on that side should be updated correctly already. * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::ensureBufferForDisplay): * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h: Canonical link: https://commits.webkit.org/272069@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 5061d1: Nullptr crash in RemoteLayerBackingStoreCollection...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 5061d1d61741d68e0e0b9f60dbd2afcf1ac64558 https://github.com/WebKit/WebKit/commit/5061d1d61741d68e0e0b9f60dbd2afcf1ac64558 Author: Matt Woodrow Date: 2023-12-11 (Mon, 11 Dec 2023) Changed paths: M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm Log Message: --- Nullptr crash in RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay. https://bugs.webkit.org/show_bug.cgi?id=266263 Reviewed by Jean-Yves Avenard. 'backingStore' is a WeakPtr& and might be null, so we need to check it. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm: (WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay): Canonical link: https://commits.webkit.org/271911@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8c21d1: Invalid layer contents when navigating and hoverin...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8c21d17d0a028e2002f8361b0b93c02785473dcb https://github.com/WebKit/WebKit/commit/8c21d17d0a028e2002f8361b0b93c02785473dcb Author: Matt Woodrow Date: 2023-12-11 (Mon, 11 Dec 2023) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp Log Message: --- Invalid layer contents when navigating and hovering on slack and Facebook. https://bugs.webkit.org/show_bug.cgi?id=266255 Reviewed by Mike Wyrzykowski. Sometimes when hovering text entries on slack, the previous highlight isn't fully removed. Likewise, navigating between the profile page and home page on Facebook can leave remnants of the rendering of the previous page. The code is resetting the graphics context clip to remove any partial-update clips applied from a previous draw into that context. Unfortunately this was happening after the copy forward draw, not before. This moves it up, so that we're not clipped to the old draw region. It would be nice to add a test here. * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::prepareBufferForDisplay): Canonical link: https://commits.webkit.org/271908@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] cc12d0: Second div within a rotated and overflow:hidden pa...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: cc12d007e2e9ea083b66ce8d6cc42b9fd8c9a389 https://github.com/WebKit/WebKit/commit/cc12d007e2e9ea083b66ce8d6cc42b9fd8c9a389 Author: Matt Woodrow Date: 2023-12-11 (Mon, 11 Dec 2023) Changed paths: A LayoutTests/compositing/layer-creation/overlap-transformed-clip-expected.html A LayoutTests/compositing/layer-creation/overlap-transformed-clip.html M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp Log Message: --- Second div within a rotated and overflow:hidden parent div does not render. https://bugs.webkit.org/show_bug.cgi?id=265480 Reviewed by Simon Fraser. RenderLayerCompositor::addToOverlapMap takes layer overlap bounds in the root coordinate space, computes the clip in the root coordinate space and intersect them. RenderLayer::calculateClipRects was only ever applying an offset when converting clips to an ancestor coordinate space, which is incorrect if there is a non-tranlation transform (like the rotation in the testcase). The incorrect clip resulted in an empty overlap area, and us drawing the green div into the backing store behind the composited (3d transformed) div. This makes calculateClipRects transform the clip quad, not just the top-left point. * LayoutTests/compositing/layer-creation/overlap-transformed-clip-expected.html: Added. * LayoutTests/compositing/layer-creation/overlap-transformed-clip.html: Added. * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::calculateClipRects const): * Source/WebCore/rendering/RenderLayer.h: * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::intersectsWithAncestor): Canonical link: https://commits.webkit.org/271894@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] cd9671: 60 second hang loading WebGPU samples page.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: cd96716c74c6706c65e9792fa94d26ab170ab673 https://github.com/WebKit/WebKit/commit/cd96716c74c6706c65e9792fa94d26ab170ab673 Author: Matt Woodrow Date: 2023-12-10 (Sun, 10 Dec 2023) Changed paths: M Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp Log Message: --- 60 second hang loading WebGPU samples page. https://bugs.webkit.org/show_bug.cgi?id=266113 Reviewed by Mike Wyrzykowski. Front buffer allocation can fail, if the surface dimensions are too big. This test was trying to allocate a surface 19k high. We should still notify the signal in this case, since there's no point leaving the web process waiting arbitrarily. We still don't render any content for that layer, but that's the existing behaviour. * Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp: (WebKit::RemoteImageBufferSet::flush): Canonical link: https://commits.webkit.org/271854@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 3dd074: Sync wait in RemoteLayerWithRemoteRenderingBacking...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 3dd074a9e5d206e613ec48c3d3f57388f00c62c6 https://github.com/WebKit/WebKit/commit/3dd074a9e5d206e613ec48c3d3f57388f00c62c6 Author: Matt Woodrow Date: 2023-12-08 (Fri, 08 Dec 2023) Changed paths: M Source/WTF/wtf/text/TextStream.h M Source/WebKit/CMakeLists.txt M Source/WebKit/DerivedSources-input.xcfilelist M Source/WebKit/DerivedSources-output.xcfilelist M Source/WebKit/DerivedSources.make M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.cpp M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.h M Source/WebKit/GPUProcess/graphics/RemoteImageBuffer.messages.in A Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.cpp A Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.h A Source/WebKit/GPUProcess/graphics/RemoteImageBufferSet.messages.in 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/Platform/IPC/StreamClientConnection.h M Source/WebKit/Scripts/webkit/messages.py M Source/WebKit/Scripts/webkit/tests/MessageArgumentDescriptions.cpp A Source/WebKit/Shared/RemoteImageBufferSetIdentifier.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/SwapBuffersDisplayRequirement.h M Source/WebKit/Shared/WTFArgumentCoders.serialization.in M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in M Source/WebKit/Sources.txt M Source/WebKit/SourcesCocoa.txt M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/GPU/graphics/BufferIdentifierSet.h M Source/WebKit/WebProcess/GPU/graphics/BufferIdentifierSet.serialization.in M Source/WebKit/WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.cpp M Source/WebKit/WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.h M Source/WebKit/WebProcess/GPU/graphics/PrepareBackingStoreBuffersData.serialization.in 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 A Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.cpp A Source/WebKit/WebProcess/GPU/graphics/RemoteImageBufferSetProxy.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 M Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.h M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h Log Message: --- Sync wait in RemoteLayerWithRemoteRenderingBackingStoreCollection::prepareBackingStoresForDisplay delays rendering. https://bugs.webkit.org/show_bug.cgi?id=265295 Reviewed by Kimmo Kinnunen. In order to start issuing rendering commands for a layer, we need to determine which ImageBuffer is not in-use and can be drawn to. We also need to know if the existing pixel contents have been discarded due to being marked volatile. Both of these checks can only be done in the GPU process, so the previous behaviour was to have a synchronous call to prepareBackingStoresForDisplay at the start of rendering. This changes makes that process asynchronous (in the common case), by moving management of the buffer triplet (front, back, secondary back) to the GPU process, and making the choice of which buffer is used opaque from the perspective of the web process. For each frame, the WebProcess allocates a new image buffer identifier (via RemoteDisplayListRecorderProxy), and the GPU process asynchronously ensures that this is mapped to the right ImageBuffer (either by picking an available one, or allocating if needed, similar to how recycling IOSurfaces from the pool happens). It also queues copying of the pixels from the previous frame, clipping to the new draw region, and clearing the draw region. The only case where this isn't possible
[webkit-changes] [WebKit/WebKit] 052b3e: REGRESSION(271529@main): Volatility timer stops be...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 052b3e14ae006698e648810fe1182afb2f76bef3 https://github.com/WebKit/WebKit/commit/052b3e14ae006698e648810fe1182afb2f76bef3 Author: Matt Woodrow Date: 2023-12-07 (Thu, 07 Dec 2023) Changed paths: M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm Log Message: --- REGRESSION(271529@main): Volatility timer stops before all surfaces are made volatile and never completes. https://bugs.webkit.org/show_bug.cgi?id=266034 Reviewed by Dan Glastonbury. If `identifiers` is empty it means we didn't collect any right now, not that there weren't any to be collected. We should only stop the timer if `collectedAllRemoteRenderingBuffers` is true (as well as `successfullyMadeBackingStoreVolatile`). * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm: (WebKit::RemoteLayerBackingStoreCollection::markAllBackingStoreVolatileFromTimer): Canonical link: https://commits.webkit.org/271704@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 12198a: RemoteLayerBackingStoreCollection doesn't support ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 12198a179de6bbb9c9e7da80441dfe77a3d71c27 https://github.com/WebKit/WebKit/commit/12198a179de6bbb9c9e7da80441dfe77a3d71c27 Author: Matt Woodrow Date: 2023-12-04 (Mon, 04 Dec 2023) Changed paths: M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm A Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h A Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.mm A Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.h A Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStore.mm R Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h R Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm M Source/WebKit/SourcesCocoa.txt M Source/WebKit/WebKit.xcodeproj/project.pbxproj M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm Log Message: --- RemoteLayerBackingStoreCollection doesn't support mixing remote rendering with in process rendering. https://bugs.webkit.org/show_bug.cgi?id=265617 Reviewed by Tim Horton. We currently have a polymorphic RemoteLayerBackingStoreCollection object, which requires an upfront decision about whether in-process or remote rendering will be used. We should instead have a single RemoteLayerBackingStoreCollection which supports mixing in-process and remote RemoteLayerBackingStore objects as needed. This merges RemoteLayerBackingStoreCollection with the 'WithRemoteRendering' variant, and the resulting code checks the type of each backing stores and handles them separately (for functions that require it). RemoteLayerBackingStore is split to have two subclasses ('Remote' and 'InProcess'), and code that only applies to that situation is moved out of the base class. We still currently only create a single type of backing store based on the global flag, but mixing types should now be supported. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h: (WebKit::RemoteLayerBackingStore::isRemoteLayerWithRemoteRenderingBackingStore const): (WebKit::RemoteLayerBackingStore::isRemoteLayerWithInProcessRenderingBackingStore const): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm: (WebKit::RemoteLayerBackingStore::ensureFrontBuffer): (WebKit::RemoteLayerBackingStore::swapToValidFrontBuffer): Deleted. (WebKit::RemoteLayerBackingStore::applySwappedBuffers): Deleted. (WebKit::RemoteLayerBackingStore::prepareToDisplay): Deleted. (WebKit::RemoteLayerBackingStore::prepareBuffers): Deleted. (WebKit::RemoteLayerBackingStore::setBufferVolatile): Deleted. (WebKit::RemoteLayerBackingStore::setBufferNonVolatile): Deleted. (WebKit::RemoteLayerBackingStore::setFrontBufferNonVolatile): Deleted. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h: (WebKit::RemoteLayerBackingStoreCollection::layerTreeContext const): (WebKit::RemoteLayerBackingStoreCollection::markInProcessBackingStoreVolatile): (WebKit::RemoteLayerBackingStoreCollection::gpuProcessConnectionWasDestroyed): Deleted. (WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile): Deleted. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm: (WebKit::RemoteLayerBackingStoreCollection::RemoteLayerBackingStoreCollection): (WebKit::RemoteLayerBackingStoreCollection::prepareBackingStoresForDisplay): (WebKit::RemoteLayerBackingStoreCollection::createRemoteLayerBackingStore): (WebKit::RemoteLayerBackingStoreCollection::markInProcessBackingStoreVolatile): (WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatileAfterReachabilityChange): (WebKit::RemoteLayerBackingStoreCollection::markAllBackingStoreVolatile): (WebKit::RemoteLayerBackingStoreCollection::tryMarkAllBackingStoreVolatile): (WebKit::RemoteLayerBackingStoreCollection::markAllBackingStoreVolatileFromTimer): (WebKit::RemoteLayerBackingStoreCollection::gpuProcessConnectionWasDestroyed): (WebKit::RemoteLayerBackingStoreCollection::collectRemoteRenderingBackingStoreBufferIdentifiersToMarkVolatile): (WebKit::RemoteLayerBackingStoreCollection::collectAllRemoteRenderingBufferIdentifiersToMarkVolatile): (WebKit::RemoteLayerBackingStoreCollection::sendMarkBuffersVolatile): (WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile): Deleted. (WebKit::RemoteLayerBackingStoreCollection::allocateBufferForBackingStore): Deleted. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithInProcessRenderingBackingStore.h:
[webkit-changes] [WebKit/WebKit] b6b745: Avoid calling updateCompositingLayers() more than ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b6b74556b8e6ecc165a8e1edb5fc73cc8e5853c2 https://github.com/WebKit/WebKit/commit/b6b74556b8e6ecc165a8e1edb5fc73cc8e5853c2 Author: Matt Woodrow Date: 2023-11-28 (Tue, 28 Nov 2023) Changed paths: M LayoutTests/compositing/overflow/scrolling-without-painting.html M LayoutTests/compositing/overflow/updating-scrolling-content.html M LayoutTests/compositing/scrolling/touch-scroll-to-clip.html M LayoutTests/compositing/updates/no-style-change-updates.html M LayoutTests/editing/editable-region/iframe-expected.txt M LayoutTests/fast/css/transform-function-perspective-crash.html M LayoutTests/fast/scrolling/iframe-scrollable-after-back.html M LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hit-test.html M LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hovered.html M LayoutTests/inspector/layers/layerTreeDidChange.html M LayoutTests/platform/ios/compositing/overflow/updating-scrolling-content-expected.txt M LayoutTests/platform/mac-wk1/TestExpectations M LayoutTests/platform/wpe/TestExpectations M LayoutTests/platform/wpe/fast/text/mark-matches-overflow-clip-expected.txt M LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested.html M LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow.html M LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed.html M LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-stacking-overflow-inside-transformed.html M LayoutTests/tiled-drawing/scrolling/clamp-out-of-bounds-scrolls.html M LayoutTests/tiled-drawing/scrolling/scrolling-tree-after-scroll.html M LayoutTests/tiled-drawing/scrolling/slow-scrolling.html M Source/WebCore/dom/Document.cpp M Source/WebCore/dom/Document.h M Source/WebCore/dom/Element.cpp M Source/WebCore/page/LocalDOMWindow.cpp M Source/WebCore/page/LocalFrameView.cpp M Source/WebCore/page/LocalFrameView.h M Source/WebCore/page/Page.cpp M Source/WebCore/page/Page.h M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.cpp M Source/WebCore/page/scrolling/AsyncScrollingCoordinator.h M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderTreeAsText.cpp Log Message: --- Avoid calling updateCompositingLayers() more than once before each render. https://bugs.webkit.org/show_bug.cgi?id=84393 Reviewed by Simon Fraser. Calling updateCompositingLayers after each layout causes unnecessary work, since the layers might change again before rendering. This change defers this work until Page::updateRendering if possible, and improves performance on pages that force layout flushes outside of rendering. * LayoutTests/compositing/overflow/scrolling-without-painting.html: * LayoutTests/compositing/overflow/updating-scrolling-content.html: * LayoutTests/compositing/scrolling/touch-scroll-to-clip.html: * LayoutTests/compositing/updates/no-style-change-updates.html: * LayoutTests/editing/editable-region/iframe-expected.txt: * LayoutTests/fast/css/transform-function-perspective-crash.html: * LayoutTests/fast/scrolling/iframe-scrollable-after-back.html: * LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hit-test.html: * LayoutTests/fast/scrolling/mac/scrollbars/overflow-overlay-scrollbar-hovered.html: * LayoutTests/inspector/layers/layerTreeDidChange.html: * LayoutTests/platform/gtk/compositing/scrolling/touch-scroll-to-clip-expected.txt: Copied from LayoutTests/platform/ios/compositing/overflow/updating-scrolling-content-expected.txt. * LayoutTests/platform/ios/compositing/overflow/updating-scrolling-content-expected.txt: * LayoutTests/platform/mac-wk1/TestExpectations: * LayoutTests/platform/wpe/TestExpectations: * LayoutTests/platform/wpe/fast/text/mark-matches-overflow-clip-expected.txt: * LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow-nested.html: * LayoutTests/scrollingcoordinator/scrolling-tree/clipped-layer-in-overflow.html: * LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-relative-inside-stacking-overflow-inside-transformed.html: * LayoutTests/scrollingcoordinator/scrolling-tree/fixed-inside-stacking-overflow-inside-transformed.html: * LayoutTests/tiled-drawing/scrolling/clamp-out-of-bounds-scrolls.html: * LayoutTests/tiled-drawing/scrolling/scrolling-tree-after-scroll.html: * LayoutTests/tiled-drawing/scrolling/slow-scrolling.html: * Source/WebCore/dom/Document.cpp: (WebCore::Document::updateLayoutIgnorePendingStylesheets): (WebCore::Document::updateLayout): (WebCore::Document::implicitClose): * Source/WebCore/dom/Document.h: (WebCore::Document::updateLayout): (WebCore::Document::updateLayoutIgnorePendingStylesheets): * Source/WebCore/dom/Element.cpp:
[webkit-changes] [WebKit/WebKit] 7445f2: RemoteLayerTreeDrawingAreaProxy::hideContentUntilP...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 7445f27231c062a847ee5f57970d5a950e66bf17 https://github.com/WebKit/WebKit/commit/7445f27231c062a847ee5f57970d5a950e66bf17 Author: Matt Woodrow Date: 2023-11-28 (Tue, 28 Nov 2023) Changed paths: M Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp M Source/WebKit/UIProcess/API/gtk/PageClientImpl.h M Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp M Source/WebKit/UIProcess/API/wpe/PageClientImpl.h M Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp M Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h M Source/WebKit/UIProcess/DrawingAreaProxy.cpp M Source/WebKit/UIProcess/DrawingAreaProxy.h M Source/WebKit/UIProcess/PageClient.h M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.h M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeDrawingAreaProxyIOS.mm M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.h M Source/WebKit/UIProcess/RemoteLayerTree/mac/RemoteLayerTreeDrawingAreaProxyMac.mm M Source/WebKit/UIProcess/WebPageProxy.cpp M Source/WebKit/UIProcess/ios/PageClientImplIOS.h M Source/WebKit/UIProcess/ios/PageClientImplIOS.mm M Source/WebKit/UIProcess/ios/WKContentView.h M Source/WebKit/UIProcess/ios/WKContentView.mm M Source/WebKit/UIProcess/mac/PageClientImplMac.h M Source/WebKit/UIProcess/mac/PageClientImplMac.mm M Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h M Source/WebKit/UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm M Source/WebKit/UIProcess/mac/WebViewImpl.h M Source/WebKit/UIProcess/mac/WebViewImpl.mm M Source/WebKit/UIProcess/playstation/PageClientImpl.cpp M Source/WebKit/UIProcess/playstation/PageClientImpl.h M Source/WebKit/UIProcess/wc/DrawingAreaProxyWC.cpp M Source/WebKit/UIProcess/wc/DrawingAreaProxyWC.h M Source/WebKit/UIProcess/win/PageClientImpl.cpp M Source/WebKit/UIProcess/win/PageClientImpl.h Log Message: --- RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate on a provisional DrawingAreaProxy can hide the page forever. https://bugs.webkit.org/show_bug.cgi?id=265404 Reviewed by Chris Dumez. DrawingAreaProxy always accesses the WebPageProxy to use its process' connection to send messages. If the DrawingAreaProxy was created for a ProvisionalPageProxy, then this isn't the right connection. The result is that a DispatchAfterEnsuringDrawing message can be sent to the wrong process, and we'll end up hiding the layer tree indefinitely (even after the provisional page has been committed). This change stores the right WebProcessProxy on DrawingAreaProxy, and changes all message sending to go through that. It also implements IPC::MessageSender on DrawingAreaProxy to make this simpler. * Source/WebKit/UIProcess/API/gtk/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * Source/WebKit/UIProcess/API/gtk/PageClientImpl.h: * Source/WebKit/UIProcess/API/wpe/PageClientImpl.cpp: (WebKit::PageClientImpl::createDrawingAreaProxy): * Source/WebKit/UIProcess/API/wpe/PageClientImpl.h: * Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.cpp: (WebKit::DrawingAreaProxyCoordinatedGraphics::DrawingAreaProxyCoordinatedGraphics): (WebKit::DrawingAreaProxyCoordinatedGraphics::forceUpdateIfNeeded): (WebKit::DrawingAreaProxyCoordinatedGraphics::deviceScaleFactorDidChange): (WebKit::DrawingAreaProxyCoordinatedGraphics::adjustTransientZoom): (WebKit::DrawingAreaProxyCoordinatedGraphics::commitTransientZoom): (WebKit::DrawingAreaProxyCoordinatedGraphics::update): (WebKit::DrawingAreaProxyCoordinatedGraphics::sendUpdateGeometry): (WebKit::DrawingAreaProxyCoordinatedGraphics::discardBackingStore): * Source/WebKit/UIProcess/CoordinatedGraphics/DrawingAreaProxyCoordinatedGraphics.h: * Source/WebKit/UIProcess/DrawingAreaProxy.cpp: (WebKit::DrawingAreaProxy::DrawingAreaProxy): (WebKit::DrawingAreaProxy::messageSenderConnection const): (WebKit::DrawingAreaProxy::messageSenderDestinationID const): (WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired): * Source/WebKit/UIProcess/DrawingAreaProxy.h: * Source/WebKit/UIProcess/PageClient.h: * Source/WebKit/UIProcess/ProvisionalPageProxy.cpp: (WebKit::ProvisionalPageProxy::initializeWebPage): * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::RemoteLayerTreeDrawingAreaProxy): (WebKit::RemoteLayerTreeDrawingAreaProxy::deviceScaleFactorDidChange):
[webkit-changes] [WebKit/WebKit] 923ed5: hideContentUntilPendingUpdate callbacks can be pro...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 923ed5177ec09a0a5a1e5d9c8a3f40e5cb1c1a9f https://github.com/WebKit/WebKit/commit/923ed5177ec09a0a5a1e5d9c8a3f40e5cb1c1a9f Author: Matt Woodrow Date: 2023-11-13 (Mon, 13 Nov 2023) Changed paths: M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm Log Message: --- hideContentUntilPendingUpdate callbacks can be processed too late after the transaction and cause flickering. https://bugs.webkit.org/show_bug.cgi?id=264531 Reviewed by Tim Horton. The callbacks for DispatchAfterEnsuringDrawing get processed at the end of the transaction, after we've already told the client that we've committed the transaction. In some cases, this can cause them to be included as a separate CA commit, and cause flickering. This adds a pre-transaction check for a callback for hideContentUntilPendingUpdate, and clears the reply id, so that we re-attach the root layer as part of the main commit. * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction): (WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate): Canonical link: https://commits.webkit.org/270672@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] a6666b: markAllBackingStoreVolatileFromTimer can stop the ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ab946bcc31afdea756373119ae86622de3c3 https://github.com/WebKit/WebKit/commit/ab946bcc31afdea756373119ae86622de3c3 Author: Matt Woodrow Date: 2023-11-09 (Thu, 09 Nov 2023) Changed paths: M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm Log Message: --- markAllBackingStoreVolatileFromTimer can stop the volatility timer too soon and not mark all surfaces as volatile. https://bugs.webkit.org/show_bug.cgi?id=264229 Reviewed by Simon Fraser. RemoteLayerWithRemoteRenderingBackingStoreCollection::markAllBackingStoreVolatileFromTimer stops the volatility timer if the operation is successful, since there should be no further backing stores to mark volatile. This is an async operation though, and it's possible for markBackingStoreVolatileAfterReachabilityChange to have been called in the interim and there are now new backing stores that aren't yet volatile. This change ensures that we reschedule the volatility timer if any markBackingStoreVolatileAfterReachabilityChange don't succesfully mark the relevant surfaces as volatile. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm: (WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::markBackingStoreVolatileAfterReachabilityChange): Canonical link: https://commits.webkit.org/270486@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] bb4da5: Multiple iframes in same isolated process results ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bb4da53917de7e7e3788b43bf8b9aba9ee81d718 https://github.com/WebKit/WebKit/commit/bb4da53917de7e7e3788b43bf8b9aba9ee81d718 Author: Matt Woodrow Date: 2023-11-08 (Wed, 08 Nov 2023) Changed paths: A LayoutTests/http/tests/site-isolation/double-iframe-expected.html A LayoutTests/http/tests/site-isolation/double-iframe.html M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm Log Message: --- Multiple iframes in same isolated process results in one of them not being drawn. https://bugs.webkit.org/show_bug.cgi?id=264356 Reviewed by Alex Christensen. RemoteLayerBackingStoreCollection::willCommitLayerTree collects all the backing stores that were unreachable, and includes that list in the transaction so that the UI process can ensure the buffer references are removed. This changes moves that call until we've finished building all the transactions, so that were not considering buffers only used in latter transactions to be unreachable for the first transaction. It also adds a new 'willBuildTransaction' function. The set of backing stores that need display is a property of the transaction (where we call prepareBuffersForDisplay, and then paint them), so we want to clear this state per-transaction, not per rendering update. * LayoutTests/http/tests/site-isolation/double-iframe-expected.html: Added. * LayoutTests/http/tests/site-isolation/double-iframe.html: Added. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm: (WebKit::RemoteLayerBackingStoreCollection::willFlushLayers): (WebKit::RemoteLayerBackingStoreCollection::willBuildTransaction): * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::updateRendering): Canonical link: https://commits.webkit.org/270399@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 84aabd: REGRESSION (266237@main): Poster circle animation ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 84aabd280f9ab479463a9701fd52a3d3c95b347d https://github.com/WebKit/WebKit/commit/84aabd280f9ab479463a9701fd52a3d3c95b347d Author: Matt Woodrow Date: 2023-11-06 (Mon, 06 Nov 2023) Changed paths: M Source/WebCore/platform/graphics/transforms/RotateTransformOperation.h M Source/WebCore/platform/graphics/transforms/TransformOperation.h M Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp M Source/WebCore/platform/graphics/transforms/TransformationMatrix.h Log Message: --- REGRESSION (266237@main): Poster circle animation is not continuous https://bugs.webkit.org/show_bug.cgi?id=263569 Reviewed by Simon Fraser. This is the same as the existing hasBig3DRotation rotation issue, where CA animates the shortest path between 3d rotations, because we represent them as matrices. Previously our computed matrices for rotate(180deg) didn’t have integer values, due to a float rounding issue during deg->rad. The new change computes the rotation matrix exactly, and now there’s no longer a defined direction for a 180deg rotation and we sometimes end up with a ‘backwards’ rotation. This adds an option to not do the snapping when we compute matrices for CA, so that the existing behavior is preserved. * Source/WebCore/platform/graphics/transforms/RotateTransformOperation.h: * Source/WebCore/platform/graphics/transforms/TransformOperation.h: (WebCore::TransformOperation::applyUnrounded const): * Source/WebCore/platform/graphics/transforms/TransformationMatrix.cpp: (WebCore::TransformationMatrix::rotate3d): (WebCore::TransformationMatrix::rotate): (WebCore::TransformationMatrix::rotateRadians): * Source/WebCore/platform/graphics/transforms/TransformationMatrix.h: Canonical link: https://commits.webkit.org/270294@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 359bfd: screenrant.com: webcontent blank for several secon...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 359bfd90327f3b91f80398c53404a03e6a19eecd https://github.com/WebKit/WebKit/commit/359bfd90327f3b91f80398c53404a03e6a19eecd Author: Matt Woodrow Date: 2023-10-25 (Wed, 25 Oct 2023) Changed paths: M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm Log Message: --- screenrant.com: webcontent blank for several seconds upon resume https://bugs.webkit.org/show_bug.cgi?id=263614 Reviewed by Tim Horton. The existing code for hideContentUntilPendingUpdate waited for `nextLayerTreeTransactionID()`, which is usually the next layer tree transaction to come from the WebProcess (and may already be in the incoming message queue). The exception is when we've already received the `willCommitLayerTree` message, but not the `commitLayerTree` one (probably because it's still working on buffer flushing). In that case it's the second layer tree transaction after the current point. In some cases that means we hide the layer tree, only to immediately show it again. This changes the code to use a DispatchAfterEnsuringDrawing() IPC message, so that we show the content on the next presentation update after the current set of IPC messages being sent to the WebProcess have been received. It tracks the AsyncReplyID of any request in flight, so that if we get a second we can cancel the existing one and replace it, thus extending the hidden state to the new deadline. * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h: * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction): (WebKit::RemoteLayerTreeDrawingAreaProxy::hideContentUntilPendingUpdate): Canonical link: https://commits.webkit.org/269776@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4bd0c1: TestWebKitAPI.GPUProcess.WebProcessTerminationAfte...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4bd0c17eea89ee6f3c609105a538196e5d518886 https://github.com/WebKit/WebKit/commit/4bd0c17eea89ee6f3c609105a538196e5d518886 Author: Matt Woodrow Date: 2023-10-25 (Wed, 25 Oct 2023) Changed paths: M Source/WebKit/Platform/IPC/Connection.cpp M Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp Log Message: --- TestWebKitAPI.GPUProcess.WebProcessTerminationAfterTooManyGPUProcessCrashes is a flaky failure. https://bugs.webkit.org/show_bug.cgi?id=263338 Reviewed by Kimmo Kinnunen. nderingBackendProxy::ensureGPUProcessConnection can create both the main connection to the GPU process, and then send the creation for the stream connection over that. If the GPUP crashes before that main connection finishes connecting, then the message containing the stream connection constructor is still in m_outgoingMessages. We then block the main thread waiting on a sync message from the stream connection. We can’t process the incoming did close message from the main connection, since we’re blocking the thread, and the stream connection doesn’t stop waiting because the construction handle is still alive. Making Connection::connectionDidClose() also clear m_outgoingMessages fixes the timeout. * Source/WebKit/Platform/IPC/Connection.cpp: (IPC::Connection::connectionDidClose): * Tools/TestWebKitAPI/Tests/IPC/ConnectionTests.cpp: (TestWebKitAPI::MockTestSyncMessage::name): (TestWebKitAPI::MockTestSyncMessage::arguments): (TestWebKitAPI::MockTestSyncMessage::MockTestSyncMessage): (TestWebKitAPI::TEST_F): Canonical link: https://commits.webkit.org/269773@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] dff0f0: Layer contents are not invalidated when the GPUP c...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: dff0f0bbe2c58d24fb850b3f4caaa8fb019b73b4 https://github.com/WebKit/WebKit/commit/dff0f0bbe2c58d24fb850b3f4caaa8fb019b73b4 Author: Matt Woodrow Date: 2023-10-19 (Thu, 19 Oct 2023) Changed paths: M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm M Source/WebKit/WebProcess/WebPage/WebPage.cpp M Source/WebKit/WebProcess/WebPage/WebPage.h M Source/WebKit/WebProcess/WebProcess.cpp Log Message: --- Layer contents are not invalidated when the GPUP crashes. https://bugs.webkit.org/show_bug.cgi?id=263211 Reviewed by Simon Fraser. GPUP crashes result in any remote image buffers have new backends created in the new process, but nothing currently notifies the rendering code that we need to repaint the pixel contents. * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h: (WebKit::RemoteLayerBackingStoreCollection::gpuProcessConnectionWasDestroyed): * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.h: * Source/WebKit/Shared/RemoteLayerTree/RemoteLayerWithRemoteRenderingBackingStoreCollection.mm: (WebKit::RemoteLayerWithRemoteRenderingBackingStoreCollection::gpuProcessConnectionWasDestroyed): * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.h: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeContext.mm: (WebKit::RemoteLayerTreeContext::gpuProcessConnectionWasDestroyed): * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h: * Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm: (WebKit::RemoteLayerTreeDrawingArea::gpuProcessConnectionWasDestroyed): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::gpuProcessConnectionWasDestroyed): * Source/WebKit/WebProcess/WebPage/WebPage.h: * Source/WebKit/WebProcess/WebProcess.cpp: (WebKit::WebProcess::gpuProcessConnectionClosed): Canonical link: https://commits.webkit.org/269546@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ee5c4b: waitForDidUpdateActivityState can block for 250ms ...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ee5c4b70a09cc5c2050d08b3bf0005c06b3cf3db https://github.com/WebKit/WebKit/commit/ee5c4b70a09cc5c2050d08b3bf0005c06b3cf3db Author: Matt Woodrow Date: 2023-10-18 (Wed, 18 Oct 2023) Changed paths: M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm Log Message: --- waitForDidUpdateActivityState can block for 250ms waiting for a message that isn't pending. https://bugs.webkit.org/show_bug.cgi?id=263275 Reviewed by Simon Fraser. RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState sends a didRefreshDisplay message to the web content process (if one was pending) to ensure that the web process knows it can commit a new layer tree. If the incoming CommitLayerTree message didn't include the right activity state change, then we wait again, but don't send a new didRefreshDisplay, and we wait for a message that isn't coming. * Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm: (WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState): Canonical link: https://commits.webkit.org/269486@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] b6fc29: Composited mix-blend-mode inside backdrop-filter d...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: b6fc29dd94bdc86d254249e952947f1ca287dd11 https://github.com/WebKit/WebKit/commit/b6fc29dd94bdc86d254249e952947f1ca287dd11 Author: Matt Woodrow Date: 2023-09-26 (Tue, 26 Sep 2023) Changed paths: A LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode-expected.html A LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode.html M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp Log Message: --- Composited mix-blend-mode inside backdrop-filter doesn't use the backdrop-filter as its composited group. https://bugs.webkit.org/show_bug.cgi?id=149553 Reviewed by Simon Fraser. Backdrop-filter creates a stacking context (and isolated group for blend modes), so we should add child layers onto the primary layer, not as siblings of the backdrop layer. * LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode-expected.html: Added. * LayoutTests/css3/filters/backdrop/backdrop-filter-with-composited-blend-mode.html: Added. * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::updateSublayerList): Canonical link: https://commits.webkit.org/268477@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 93bef5: Combining backface-visibility:hidden and backdrop-...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 93bef5855560f6abc5817869e36e81473204974f https://github.com/WebKit/WebKit/commit/93bef5855560f6abc5817869e36e81473204974f Author: Matt Woodrow Date: 2023-09-25 (Mon, 25 Sep 2023) Changed paths: A LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility-expected.html A LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility.html M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp Log Message: --- Combining backface-visibility:hidden and backdrop-filter stops the backface from being hidden. https://bugs.webkit.org/show_bug.cgi?id=249952 Reviewed by Simon Fraser. Structural layers created for backdrop-filter should still have the double sided property set. * LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility-expected.html: Added. * LayoutTests/css3/filters/backdrop/backdrop-filter-with-backface-visibility.html: Added. * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::updateBackfaceVisibility): Canonical link: https://commits.webkit.org/268427@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] ad3536: Backdrop-filter: blur() with a transparent backdro...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: ad353604370c322f67b905d964c46a1d744105fb https://github.com/WebKit/WebKit/commit/ad353604370c322f67b905d964c46a1d744105fb Author: Matt Woodrow Date: 2023-09-25 (Mon, 25 Sep 2023) Changed paths: M Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm Log Message: --- Backdrop-filter: blur() with a transparent backdrop renders incorrectly. https://bugs.webkit.org/show_bug.cgi?id=176830 Reviewed by Simon Fraser. I haven't found a good way to test this that isn't super fuzzy unfortunately. * Source/WebCore/platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm: (WebCore::PlatformCAFilters::setFiltersOnLayer): Canonical link: https://commits.webkit.org/268426@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] c950ad: Add unprefixed backdrop-filter behind a pref.
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: c950ad9bd9cc4f7d07bafd0cf2e739bc9421740d https://github.com/WebKit/WebKit/commit/c950ad9bd9cc4f7d07bafd0cf2e739bc9421740d Author: Matt Woodrow Date: 2023-09-24 (Sun, 24 Sep 2023) Changed paths: M LayoutTests/TestExpectations M LayoutTests/compositing/layer-creation/will-change-on-normal-flow-content-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/css-typed-om/the-stylepropertymap/properties/backdrop-filter-expected.txt M LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/inheritance-expected.txt M LayoutTests/platform/gtk/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt M LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt M LayoutTests/platform/ios/compositing/layer-creation/will-change-on-normal-flow-content-expected.txt M LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt M LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/css/css-cascade/all-prop-revert-layer-expected.txt M LayoutTests/platform/wpe/imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml-expected.txt M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml M Source/WTF/wtf/PlatformEnable.h M Source/WebCore/animation/CSSPropertyAnimation.cpp M Source/WebCore/animation/KeyframeEffect.cpp M Source/WebCore/css/CSSProperties.json M Source/WebCore/css/ComputedStyleExtractor.cpp M Source/WebCore/platform/animation/AcceleratedEffect.cpp M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/style/WillChangeData.cpp Log Message: --- Add unprefixed backdrop-filter behind a pref. https://bugs.webkit.org/show_bug.cgi?id=261923 Reviewed by Simon Fraser. We want to start being able to test this, before it's fully ready. * Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml: * Source/WTF/wtf/PlatformEnable.h: * Source/WebCore/animation/CSSPropertyAnimation.cpp: (WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): * Source/WebCore/animation/KeyframeEffect.cpp: (WebCore::KeyframeEffect::computeHasReferenceFilter): (WebCore::acceleratedPropertyDidChange): * Source/WebCore/css/CSSProperties.json: * Source/WebCore/css/ComputedStyleExtractor.cpp: (WebCore::isLayoutDependent): (WebCore::ComputedStyleExtractor::valueForPropertyInStyle const): * Source/WebCore/platform/animation/AcceleratedEffect.cpp: (WebCore::acceleratedPropertyFromCSSProperty): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::startAnimation): (WebCore::RenderLayerBacking::cssToGraphicsLayerProperty): * Source/WebCore/rendering/RenderLayerCompositor.cpp: (WebCore::RenderLayerCompositor::requiresCompositingForAnimation const): * Source/WebCore/rendering/style/WillChangeData.cpp: (WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const): (WebCore::WillChangeData::canBeBackdropRoot const): (WebCore::WillChangeData::propertyCreatesStackingContext): (WebCore::propertyTriggersCompositing): Canonical link: https://commits.webkit.org/268367@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 8e7519: Implement the 'backdrop root' concept for backdrop...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 8e751933d8eb396635770f297097ea577893dbba https://github.com/WebKit/WebKit/commit/8e751933d8eb396635770f297097ea577893dbba Author: Matt Woodrow Date: 2023-09-23 (Sat, 23 Sep 2023) Changed paths: M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-add-more-layers-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-excessive-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-ok-expected.txt M LayoutTests/platform/glib/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt M LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt M LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt M LayoutTests/platform/ios/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt M Source/JavaScriptCore/inspector/protocol/LayerTree.json M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp M Source/WebCore/platform/graphics/GraphicsLayer.cpp M Source/WebCore/platform/graphics/GraphicsLayer.h M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h M Source/WebCore/platform/graphics/ca/PlatformCALayer.h M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerBacking.h M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderLayerCompositor.h M Source/WebCore/rendering/style/WillChangeData.cpp M Source/WebCore/rendering/style/WillChangeData.h M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js M Source/WebInspectorUI/UserInterface/Views/LayerTreeDetailsSidebarPanel.js M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm Log Message: --- Implement the 'backdrop root' concept for backdrop-filter. https://bugs.webkit.org/show_bug.cgi?id=261717 Reviewed by Simon Fraser. https://drafts.fxtf.org/filter-effects-2/#backdrop-root Backdrop-filter should only uses the backdrop of the content behind up to the nearest backdrop-root, which isn't yet implemented. Unfortunately no new WPT passes yet, due to other platform rendering issues, but this gets us much closer to spec compliance. * Source/JavaScriptCore/inspector/protocol/LayerTree.json: * Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp: (WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer): * Source/WebCore/platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::GraphicsLayer): * Source/WebCore/platform/graphics/GraphicsLayer.h: (WebCore::GraphicsLayer::setIsBackdropRoot): (WebCore::GraphicsLayer::isBackdropRoot const): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
[webkit-changes] [WebKit/WebKit] f20a3c: ASSERTION FAILED: foundContainer on media/modern-m...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: f20a3ce20e867a081396437e684de72bf8d52320 https://github.com/WebKit/WebKit/commit/f20a3ce20e867a081396437e684de72bf8d52320 Author: Matt Woodrow Date: 2023-09-22 (Fri, 22 Sep 2023) Changed paths: A LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block-expected.html A LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block.html M LayoutTests/platform/mac-wk2/TestExpectations M Source/WebCore/rendering/RenderGeometryMap.cpp Log Message: --- ASSERTION FAILED: foundContainer on media/modern-media-controls/pip-support/pip-support-click.html. https://bugs.webkit.org/show_bug.cgi?id=258325 Reviewed by Simon Fraser. Running layout for a subtree calls RenderGeometryMap::pushMappingsToAncestor with a nullptr ancestor layer to push all the mappings up to the RenderView. Since we don't have an ancestor layer, we instead walk up the render tree. The render tree container walk can jump over repaint containers (see containerForElement in RenderObject.cpp) to the nearest containing block ancestor. The expected behaviour for pushMappingsToAncestor is that the ancestor layer provided is the nearest repaint container, so that any render tree walk with be bounded by that. In this case we don't have one, so we fail to push mappings for repaint containers in some cases and then crash when trying to find them later. This adds code for the nullptr case, and breaks the render tree walk down into per-layer-ancestor chunks to prevent this. Also adds a test that crashes without the fix. * LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block-expected.html: Added. * LayoutTests/compositing/geometry/geometry-map-compositing-layer-without-containing-block.html: Added. * LayoutTests/platform/mac-wk2/TestExpectations: * Source/WebCore/rendering/RenderGeometryMap.cpp: (WebCore::RenderGeometryMap::pushMappingsToAncestor): Canonical link: https://commits.webkit.org/268304@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] bbffe1: css/filter-effects/backdrop-filter-plus-filter.htm...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: bbffe15319f386bd5e7e7790d84cd7c5aab46ebb https://github.com/WebKit/WebKit/commit/bbffe15319f386bd5e7e7790d84cd7c5aab46ebb Author: Matt Woodrow Date: 2023-09-20 (Wed, 20 Sep 2023) Changed paths: M LayoutTests/TestExpectations M LayoutTests/platform/gtk/TestExpectations M LayoutTests/platform/wpe/TestExpectations M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp Log Message: --- css/filter-effects/backdrop-filter-plus-filter.html fails because the filter isn't set on the structural layer. https://bugs.webkit.org/show_bug.cgi?id=261664 Reviewed by Simon Fraser. If we have a structural layer to wrap the backdrop layer and primary layer, then the filter should be applied to that outer layer to affect both. * LayoutTests/TestExpectations: * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::updateFilters): (WebCore::GraphicsLayerCA::ensureStructuralLayer): Canonical link: https://commits.webkit.org/268187@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 4f2634: Mix-blend-mode incorrectly blends with view base c...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 4f26343f6d0bd701a726e1967b7d65cd24f98d51 https://github.com/WebKit/WebKit/commit/4f26343f6d0bd701a726e1967b7d65cd24f98d51 Author: Matt Woodrow Date: 2023-09-19 (Tue, 19 Sep 2023) Changed paths: R LayoutTests/css3/blending/blend-mode-body-child-expected.html R LayoutTests/css3/blending/blend-mode-body-child.html R LayoutTests/css3/blending/blend-mode-body-composited-child-expected.html R LayoutTests/css3/blending/blend-mode-body-composited-child.html R LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-expected.html R LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-ref.html R LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div.html A LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-expected.html A LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-ref.html A LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group.html M LayoutTests/platform/glib/TestExpectations M LayoutTests/platform/mac-wk1/TestExpectations M LayoutTests/svg/css/mix-blend-mode-with-inline-svg.html M Source/WebCore/rendering/BackgroundPainter.cpp M Source/WebCore/rendering/RenderLayerInlines.h M Source/WebCore/rendering/RenderView.cpp M Source/WebCore/rendering/RenderView.h Log Message: --- Mix-blend-mode incorrectly blends with view base color. https://bugs.webkit.org/show_bug.cgi?id=261708 Reviewed by Simon Fraser. Mix-blend-mode on an element that blends into the 'Root Element Group' should have only the root element's background color, or transparent if none. We're including the opaque white base color of the RenderView too, which is incorrect. This change changes BackgroundPainter so that we only draw the base color if it's ok to draw it as part of the root element background (if the root background isn't an isolated group). It also changes RenderView to make sure we do paint the base color (for iframes, particularly) if the root element won't be painting it. Removes some tests (including one WPT) that were explicitly trying to test the wrong thing (and failed on everything except WebKit). * LayoutTests/css3/blending/blend-mode-body-child-expected.html: Removed. * LayoutTests/css3/blending/blend-mode-body-child.html: Removed. * LayoutTests/css3/blending/blend-mode-body-composited-child-expected.html: Removed. * LayoutTests/css3/blending/blend-mode-body-composited-child.html: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-expected.html: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div-ref.html: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/compositing/compositing_simple_div.html: Removed. * LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-expected.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group-ref.html: Added. * LayoutTests/imported/w3c/web-platform-tests/css/compositing/mix-blend-mode/mix-blend-mode-root-element-group.html: Added. * LayoutTests/svg/css/mix-blend-mode-with-inline-svg.html: * Source/WebCore/rendering/BackgroundPainter.cpp: (WebCore::BackgroundPainter::paintFillLayer): * Source/WebCore/rendering/RenderLayerInlines.h: (WebCore::RenderLayer::hasNonOpacityTransparency const): * Source/WebCore/rendering/RenderView.cpp: (WebCore::RenderView::paintBoxDecorations): (WebCore::RenderView::rootElementShouldPaintBaseBackground const): * Source/WebCore/rendering/RenderView.h: Canonical link: https://commits.webkit.org/268173@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes
[webkit-changes] [WebKit/WebKit] 75e7dc: Implement the 'backdrop root' concept for backdrop...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 75e7dc79cac94cf706b9f77f016cbd4c805b4719 https://github.com/WebKit/WebKit/commit/75e7dc79cac94cf706b9f77f016cbd4c805b4719 Author: Matt Woodrow Date: 2023-09-19 (Tue, 19 Sep 2023) Changed paths: M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-absolute-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-does-not-size-properly-border-and-padding-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-with-cliprect-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-filter-with-mask-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-changing-expected.txt M LayoutTests/css3/filters/backdrop/backdrop-with-visibility-hidden-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-add-more-layers-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-excessive-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-ok-expected.txt M LayoutTests/css3/filters/backdrop/resource-use-remove-some-layers-expected.txt M Source/JavaScriptCore/inspector/protocol/LayerTree.json M Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp M Source/WebCore/platform/graphics/GraphicsLayer.cpp M Source/WebCore/platform/graphics/GraphicsLayer.h M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h M Source/WebCore/platform/graphics/ca/PlatformCALayer.h M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm M Source/WebCore/rendering/RenderLayer.cpp M Source/WebCore/rendering/RenderLayer.h M Source/WebCore/rendering/RenderLayerBacking.cpp M Source/WebCore/rendering/RenderLayerBacking.h M Source/WebCore/rendering/RenderLayerCompositor.cpp M Source/WebCore/rendering/RenderLayerCompositor.h M Source/WebCore/rendering/style/WillChangeData.cpp M Source/WebCore/rendering/style/WillChangeData.h M Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js M Source/WebInspectorUI/UserInterface/Views/LayerTreeDetailsSidebarPanel.js M Source/WebKit/Shared/RemoteLayerTree/LayerProperties.h M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTree.serialization.in M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm Log Message: --- Implement the 'backdrop root' concept for backdrop-filter. https://bugs.webkit.org/show_bug.cgi?id=261717 Reviewed by Simon Fraser. https://drafts.fxtf.org/filter-effects-2/#backdrop-root Backdrop-filter should only uses the backdrop of the content behind up to the nearest backdrop-root, which isn't yet implemented. Unfortunately no new WPT passes yet, due to other platform rendering issues, but this gets us much closer to spec compliance. * Source/JavaScriptCore/inspector/protocol/LayerTree.json: * Source/WebCore/inspector/agents/InspectorLayerTreeAgent.cpp: (WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer): * Source/WebCore/platform/graphics/GraphicsLayer.cpp: (WebCore::GraphicsLayer::GraphicsLayer): * Source/WebCore/platform/graphics/GraphicsLayer.h: (WebCore::GraphicsLayer::setIsBackdropRoot): (WebCore::GraphicsLayer::isBackdropRoot const): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::setIsBackdropRoot): (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): (WebCore::GraphicsLayerCA::updateBackdropRoot): (WebCore::GraphicsLayerCA::ensureStructuralLayer): (WebCore::GraphicsLayerCA::layerChangeAsString): (WebCore::GraphicsLayerCA::changeLayerTypeTo): * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h: * Source/WebCore/platform/graphics/ca/PlatformCALayer.h: * Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h: * Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: (WebCore::PlatformCALayerCocoa::setIsBackdropRoot): * Source/WebCore/rendering/RenderLayer.cpp: (WebCore::RenderLayer::RenderLayer): (WebCore::RenderLayer::shouldBeBackdropRootCandidate const): (WebCore::RenderLayer::setIsBackdropRootCandidate): (WebCore::RenderLayer::calculateClipRects const): * Source/WebCore/rendering/RenderLayer.h: (WebCore::RenderLayer::hasBackdropFilterDescendantsWithoutRoot const): (WebCore::RenderLayer::setHasBackdropFilterDescendantsWithoutRoot): (WebCore::RenderLayer::isBackdropRootCandidate const): (WebCore::RenderLayer::isBackdropRoot const): * Source/WebCore/rendering/RenderLayerBacking.cpp: (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer): (WebCore::RenderLayerBacking::updateBackdropRoot):
[webkit-changes] [WebKit/WebKit] 0f4cd6: css/filter-effects/backdrop-filter-containing-bloc...
Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 0f4cd6871883de54429c34b5e162609d0c1c2005 https://github.com/WebKit/WebKit/commit/0f4cd6871883de54429c34b5e162609d0c1c2005 Author: Matt Woodrow Date: 2023-09-19 (Tue, 19 Sep 2023) Changed paths: M LayoutTests/TestExpectations M Source/WebCore/rendering/RenderElement.cpp M Source/WebCore/rendering/RenderElementInlines.h M Source/WebCore/rendering/style/WillChangeData.cpp M Source/WebCore/rendering/style/WillChangeData.h Log Message: --- css/filter-effects/backdrop-filter-containing-block.html fails because backdrop-filter doesn't create a containing block. https://bugs.webkit.org/show_bug.cgi?id=261662 Reviewed by Simon Fraser. Backdrop-filter should establish a containing block for absolute and fixed position descendants, except if it's on the root element. * LayoutTests/TestExpectations: * Source/WebCore/rendering/RenderElement.cpp: (WebCore::RenderElement::adjustFragmentedFlowStateOnContainingBlockChangeIfNeeded): * Source/WebCore/rendering/RenderElementInlines.h: (WebCore::RenderElement::canContainAbsolutelyPositionedObjects const): (WebCore::RenderElement::canContainFixedPositionObjects const): * Source/WebCore/rendering/style/WillChangeData.cpp: (WebCore::WillChangeData::createsContainingBlockForAbsolutelyPositioned const): (WebCore::WillChangeData::createsContainingBlockForOutOfFlowPositioned const): * Source/WebCore/rendering/style/WillChangeData.h: Canonical link: https://commits.webkit.org/268161@main ___ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes