[webkit-changes] [WebKit/WebKit] 73cd74: Disable sorting of CALayers that aren't CATransfor...

mattwoodrow noreply at github.com
Mon Dec 5 15:52:41 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 73cd744e169091de20b1ca62d31cdb37b37bad6f
      https://github.com/WebKit/WebKit/commit/73cd744e169091de20b1ca62d31cdb37b37bad6f
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2022-12-05 (Mon, 05 Dec 2022)

  Changed paths:
    M Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp
    M Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h
    M Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h
    M Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm

  Log Message:
  -----------
  Disable sorting of CALayers that aren't CATransformLayers.
https://bugs.webkit.org/show_bug.cgi?id=248292
rdar://problem/102634551>

Reviewed by Simon Fraser.

CoreAnimation currently sorts all layers by depth, and disabling sorting for a layer also disables
sorting for any transform-layer children.

If supported, this disables sorting for all normal layers and re-enables it for transform-layers,
so that only preserve-3d content is sorted (as specified by css-transforms-2).

This brings the CA rendering in line with other rendering backends, as well as hit-testing/point-mapping.

This doesn't make any change if we can't enable sorting just for transform-layers, but this isn't a regression,
as we already have a mismatch between rendering and hit-testing for that case.

One thing we could do in the future is disable sorting for layers that don't have any transform-layer children,
and fix a subset of the bugs fixed by the full change here. Keeping track of the child list adds complexity though,
and this is a long-standing bug, so that change isn't made here.

* Source/WebCore/PAL/pal/spi/cocoa/QuartzCoreSPI.h:
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::platformCALayerUseCSS3DTransformInteroperability const):
* Source/WebCore/platform/graphics/ca/GraphicsLayerCA.h:
* Source/WebCore/platform/graphics/ca/PlatformCALayerClient.h:
(WebCore::PlatformCALayerClient::platformCALayerUseCSS3DTransformInteroperability const):
* Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::commonInit):

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




More information about the webkit-changes mailing list