Implement border-shape interpolation type [chromium/src : main]

0 views
Skip to first unread message

Kevin Ellis (Gerrit)

unread,
Oct 14, 2025, 3:56:55 PM (yesterday) Oct 14
to Daniil Sakhapov, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-revie...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org
Attention needed from Daniil Sakhapov

Kevin Ellis added 1 comment

File third_party/blink/renderer/core/animation/compositor_animations.cc
Line 960, Patchset 3 (Latest): case CSSPropertyID::kBorderShape:
Kevin Ellis . unresolved

Why is this neeeded?

clip-path and background-color animations are treated differently due to being implemented via native paint worklets. border-shape is not a composited property.

Open in Gerrit

Related details

Attention is currently required from:
  • Daniil Sakhapov
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib98df13ecdf741b1797027bf438e9cd3bacb3b6a
Gerrit-Change-Number: 7036598
Gerrit-PatchSet: 3
Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Kevin Ellis <kev...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Comment-Date: Tue, 14 Oct 2025 19:56:48 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniil Sakhapov (Gerrit)

unread,
Oct 14, 2025, 4:21:30 PM (yesterday) Oct 14
to Kevin Ellis, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-revie...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org
Attention needed from Kevin Ellis

Daniil Sakhapov added 1 comment

File third_party/blink/renderer/core/animation/compositor_animations.cc
Line 960, Patchset 3 (Latest): case CSSPropertyID::kBorderShape:
Kevin Ellis . unresolved

Why is this neeeded?

clip-path and background-color animations are treated differently due to being implemented via native paint worklets. border-shape is not a composited property.

Daniil Sakhapov

Sorry, I overtook a project and it was defined as such already - https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/css/css_properties.json5;l=2639;drc=53ab9a8435e0ea52281a56144f84ea023f1cd309, so I added this line here.
So you are saying I can just make it non-composited?

Open in Gerrit

Related details

Attention is currently required from:
  • Kevin Ellis
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib98df13ecdf741b1797027bf438e9cd3bacb3b6a
Gerrit-Change-Number: 7036598
Gerrit-PatchSet: 3
Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Kevin Ellis <kev...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Kevin Ellis <kev...@chromium.org>
Gerrit-Comment-Date: Tue, 14 Oct 2025 20:20:42 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Kevin Ellis <kev...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Kevin Ellis (Gerrit)

unread,
Oct 14, 2025, 4:52:20 PM (yesterday) Oct 14
to Daniil Sakhapov, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-revie...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org
Attention needed from Daniil Sakhapov

Kevin Ellis added 1 comment

File third_party/blink/renderer/core/animation/compositor_animations.cc
Line 960, Patchset 3 (Latest): case CSSPropertyID::kBorderShape:
Kevin Ellis . unresolved

Why is this neeeded?

clip-path and background-color animations are treated differently due to being implemented via native paint worklets. border-shape is not a composited property.

Daniil Sakhapov

Sorry, I overtook a project and it was defined as such already - https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/css/css_properties.json5;l=2639;drc=53ab9a8435e0ea52281a56144f84ea023f1cd309, so I added this line here.
So you are saying I can just make it non-composited?

Kevin Ellis

This json5 suggests that it can be composited and not that it will be composited. In order to be composited, the property must run the gauntlet of tests in Animation::CheckCanStartAnimationOnCompositor. This will return a failure reason that includes the bit for unsupported CSS property. I think the json5 ruling on eligibility is based on whether a layout is required when animating the property in which case it must run on main.

If you take a look at CompositorAnimations::GetAnimationOnCompositor You'll see a large switch that creates animation curves for animations running in cc. kBorderShape is not in the list, and thus we don't know how to composite it. No action is required to force it to run on the main thread as that is the default if no able to start on the compositor.

CompositedPropertyRequiresSnapshot returns whether we need to generate a fresh set of property specific keyframes for an animation running on the compositor. Native paint worklets don't use this mechanism, which is why they return false, while all other composited properties return true. As this is not supported on the compositor it shouldn't be added to the list. If we get around to supporting on the compositor then it should use the default value of true, unless implemented as a native paint worklet.

Long winded way of saying we don't need this line. :)

Open in Gerrit

Related details

Attention is currently required from:
  • Daniil Sakhapov
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib98df13ecdf741b1797027bf438e9cd3bacb3b6a
Gerrit-Change-Number: 7036598
Gerrit-PatchSet: 3
Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Kevin Ellis <kev...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Comment-Date: Tue, 14 Oct 2025 20:52:13 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Kevin Ellis <kev...@chromium.org>
Comment-In-Reply-To: Daniil Sakhapov <sakh...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniil Sakhapov (Gerrit)

unread,
4:53 AM (16 hours ago) 4:53 AM
to Kevin Ellis, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-revie...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org
Attention needed from Kevin Ellis

Daniil Sakhapov voted and added 1 comment

Votes added by Daniil Sakhapov

Commit-Queue+1

1 comment

File third_party/blink/renderer/core/animation/compositor_animations.cc
Line 960, Patchset 3: case CSSPropertyID::kBorderShape:
Kevin Ellis . unresolved

Why is this neeeded?

clip-path and background-color animations are treated differently due to being implemented via native paint worklets. border-shape is not a composited property.

Daniil Sakhapov

Sorry, I overtook a project and it was defined as such already - https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/css/css_properties.json5;l=2639;drc=53ab9a8435e0ea52281a56144f84ea023f1cd309, so I added this line here.
So you are saying I can just make it non-composited?

Kevin Ellis

This json5 suggests that it can be composited and not that it will be composited. In order to be composited, the property must run the gauntlet of tests in Animation::CheckCanStartAnimationOnCompositor. This will return a failure reason that includes the bit for unsupported CSS property. I think the json5 ruling on eligibility is based on whether a layout is required when animating the property in which case it must run on main.

If you take a look at CompositorAnimations::GetAnimationOnCompositor You'll see a large switch that creates animation curves for animations running in cc. kBorderShape is not in the list, and thus we don't know how to composite it. No action is required to force it to run on the main thread as that is the default if no able to start on the compositor.

CompositedPropertyRequiresSnapshot returns whether we need to generate a fresh set of property specific keyframes for an animation running on the compositor. Native paint worklets don't use this mechanism, which is why they return false, while all other composited properties return true. As this is not supported on the compositor it shouldn't be added to the list. If we get around to supporting on the compositor then it should use the default value of true, unless implemented as a native paint worklet.

Long winded way of saying we don't need this line. :)

Daniil Sakhapov

Thanks for the detailed explanation!

However, if I remove that line I crash around https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/animation/css/css_animations.cc;l=2693;drc=07836fac7be4e6d77355bd9c673b4be0de3a41aa when calling CompositorKeyframeValueFactory::Create. Since border-shape is not supported in Create. Now I remember, why I added that line 😊

I guess, I can set compositable to false in json?

Open in Gerrit

Related details

Attention is currently required from:
  • Kevin Ellis
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib98df13ecdf741b1797027bf438e9cd3bacb3b6a
Gerrit-Change-Number: 7036598
Gerrit-PatchSet: 5
Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Kevin Ellis <kev...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Kevin Ellis <kev...@chromium.org>
Gerrit-Comment-Date: Wed, 15 Oct 2025 08:53:04 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Kevin Ellis (Gerrit)

unread,
10:31 AM (11 hours ago) 10:31 AM
to Daniil Sakhapov, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-revie...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org
Attention needed from Daniil Sakhapov

Kevin Ellis added 1 comment

File third_party/blink/renderer/core/animation/compositor_animations.cc
Line 960, Patchset 3: case CSSPropertyID::kBorderShape:
Kevin Ellis . unresolved

Why is this neeeded?

clip-path and background-color animations are treated differently due to being implemented via native paint worklets. border-shape is not a composited property.

Daniil Sakhapov

Sorry, I overtook a project and it was defined as such already - https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/css/css_properties.json5;l=2639;drc=53ab9a8435e0ea52281a56144f84ea023f1cd309, so I added this line here.
So you are saying I can just make it non-composited?

Kevin Ellis

This json5 suggests that it can be composited and not that it will be composited. In order to be composited, the property must run the gauntlet of tests in Animation::CheckCanStartAnimationOnCompositor. This will return a failure reason that includes the bit for unsupported CSS property. I think the json5 ruling on eligibility is based on whether a layout is required when animating the property in which case it must run on main.

If you take a look at CompositorAnimations::GetAnimationOnCompositor You'll see a large switch that creates animation curves for animations running in cc. kBorderShape is not in the list, and thus we don't know how to composite it. No action is required to force it to run on the main thread as that is the default if no able to start on the compositor.

CompositedPropertyRequiresSnapshot returns whether we need to generate a fresh set of property specific keyframes for an animation running on the compositor. Native paint worklets don't use this mechanism, which is why they return false, while all other composited properties return true. As this is not supported on the compositor it shouldn't be added to the list. If we get around to supporting on the compositor then it should use the default value of true, unless implemented as a native paint worklet.

Long winded way of saying we don't need this line. :)

Daniil Sakhapov

Thanks for the detailed explanation!

However, if I remove that line I crash around https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/animation/css/css_animations.cc;l=2693;drc=07836fac7be4e6d77355bd9c673b4be0de3a41aa when calling CompositorKeyframeValueFactory::Create. Since border-shape is not supported in Create. Now I remember, why I added that line 😊

I guess, I can set compositable to false in json?

Kevin Ellis

That's odd. Before we update the json5 file, let me take a quick look to see if we have others that are not supported on the compositor yet marked as compositable. I'll get right back to you.

Open in Gerrit

Related details

Attention is currently required from:
  • Daniil Sakhapov
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: Ib98df13ecdf741b1797027bf438e9cd3bacb3b6a
Gerrit-Change-Number: 7036598
Gerrit-PatchSet: 5
Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Reviewer: Kevin Ellis <kev...@chromium.org>
Gerrit-CC: Alexis Menard <alexis...@intel.com>
Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
Gerrit-Attention: Daniil Sakhapov <sakh...@chromium.org>
Gerrit-Comment-Date: Wed, 15 Oct 2025 14:31:39 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Kevin Ellis (Gerrit)

unread,
10:33 AM (11 hours ago) 10:33 AM
to Daniil Sakhapov, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-revie...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org
Attention needed from Daniil Sakhapov

Kevin Ellis added 1 comment

File third_party/blink/renderer/core/animation/compositor_animations.cc
Line 960, Patchset 3: case CSSPropertyID::kBorderShape:
Kevin Ellis . unresolved

Why is this neeeded?

clip-path and background-color animations are treated differently due to being implemented via native paint worklets. border-shape is not a composited property.

Daniil Sakhapov

Sorry, I overtook a project and it was defined as such already - https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/css/css_properties.json5;l=2639;drc=53ab9a8435e0ea52281a56144f84ea023f1cd309, so I added this line here.
So you are saying I can just make it non-composited?

Kevin Ellis

This json5 suggests that it can be composited and not that it will be composited. In order to be composited, the property must run the gauntlet of tests in Animation::CheckCanStartAnimationOnCompositor. This will return a failure reason that includes the bit for unsupported CSS property. I think the json5 ruling on eligibility is based on whether a layout is required when animating the property in which case it must run on main.

If you take a look at CompositorAnimations::GetAnimationOnCompositor You'll see a large switch that creates animation curves for animations running in cc. kBorderShape is not in the list, and thus we don't know how to composite it. No action is required to force it to run on the main thread as that is the default if no able to start on the compositor.

CompositedPropertyRequiresSnapshot returns whether we need to generate a fresh set of property specific keyframes for an animation running on the compositor. Native paint worklets don't use this mechanism, which is why they return false, while all other composited properties return true. As this is not supported on the compositor it shouldn't be added to the list. If we get around to supporting on the compositor then it should use the default value of true, unless implemented as a native paint worklet.

Long winded way of saying we don't need this line. :)

Daniil Sakhapov

Thanks for the detailed explanation!

However, if I remove that line I crash around https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/animation/css/css_animations.cc;l=2693;drc=07836fac7be4e6d77355bd9c673b4be0de3a41aa when calling CompositorKeyframeValueFactory::Create. Since border-shape is not supported in Create. Now I remember, why I added that line 😊

I guess, I can set compositable to false in json?

Kevin Ellis

That's odd. Before we update the json5 file, let me take a quick look to see if we have others that are not supported on the compositor yet marked as compositable. I'll get right back to you.

Kevin Ellis

border-shape is the only outlier. Updating the json5 file sounds like the right call.

Gerrit-Comment-Date: Wed, 15 Oct 2025 14:33:38 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Daniil Sakhapov (Gerrit)

unread,
12:27 PM (9 hours ago) 12:27 PM
to Kevin Ellis, AyeAye, Chromium LUCI CQ, Alexis Menard, chromium...@chromium.org, Olga Gerchikov, blink-re...@chromium.org, apavlo...@chromium.org, blink-revie...@chromium.org, blink-revie...@chromium.org, blink-...@chromium.org
Attention needed from Kevin Ellis

Daniil Sakhapov added 1 comment

File third_party/blink/renderer/core/animation/compositor_animations.cc
Line 960, Patchset 3: case CSSPropertyID::kBorderShape:
Kevin Ellis . resolved

Why is this neeeded?

clip-path and background-color animations are treated differently due to being implemented via native paint worklets. border-shape is not a composited property.

Daniil Sakhapov

Sorry, I overtook a project and it was defined as such already - https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/css/css_properties.json5;l=2639;drc=53ab9a8435e0ea52281a56144f84ea023f1cd309, so I added this line here.
So you are saying I can just make it non-composited?

Kevin Ellis

This json5 suggests that it can be composited and not that it will be composited. In order to be composited, the property must run the gauntlet of tests in Animation::CheckCanStartAnimationOnCompositor. This will return a failure reason that includes the bit for unsupported CSS property. I think the json5 ruling on eligibility is based on whether a layout is required when animating the property in which case it must run on main.

If you take a look at CompositorAnimations::GetAnimationOnCompositor You'll see a large switch that creates animation curves for animations running in cc. kBorderShape is not in the list, and thus we don't know how to composite it. No action is required to force it to run on the main thread as that is the default if no able to start on the compositor.

CompositedPropertyRequiresSnapshot returns whether we need to generate a fresh set of property specific keyframes for an animation running on the compositor. Native paint worklets don't use this mechanism, which is why they return false, while all other composited properties return true. As this is not supported on the compositor it shouldn't be added to the list. If we get around to supporting on the compositor then it should use the default value of true, unless implemented as a native paint worklet.

Long winded way of saying we don't need this line. :)

Daniil Sakhapov

Thanks for the detailed explanation!

However, if I remove that line I crash around https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/animation/css/css_animations.cc;l=2693;drc=07836fac7be4e6d77355bd9c673b4be0de3a41aa when calling CompositorKeyframeValueFactory::Create. Since border-shape is not supported in Create. Now I remember, why I added that line 😊

I guess, I can set compositable to false in json?

Kevin Ellis

That's odd. Before we update the json5 file, let me take a quick look to see if we have others that are not supported on the compositor yet marked as compositable. I'll get right back to you.

Kevin Ellis

border-shape is the only outlier. Updating the json5 file sounds like the right call.

Daniil Sakhapov

Nice, thanks!

Open in Gerrit

Related details

Attention is currently required from:
  • Kevin Ellis
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: Ib98df13ecdf741b1797027bf438e9cd3bacb3b6a
    Gerrit-Change-Number: 7036598
    Gerrit-PatchSet: 5
    Gerrit-Owner: Daniil Sakhapov <sakh...@chromium.org>
    Gerrit-Reviewer: Daniil Sakhapov <sakh...@chromium.org>
    Gerrit-Reviewer: Kevin Ellis <kev...@chromium.org>
    Gerrit-CC: Alexis Menard <alexis...@intel.com>
    Gerrit-CC: Olga Gerchikov <gerc...@microsoft.com>
    Gerrit-Attention: Kevin Ellis <kev...@chromium.org>
    Gerrit-Comment-Date: Wed, 15 Oct 2025 16:26:17 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy
    Reply all
    Reply to author
    Forward
    0 new messages