-
Notifications
You must be signed in to change notification settings - Fork 24.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RenderScript Impl of Box Shadow #43988
Open
NickGerleman
wants to merge
5
commits into
facebook:main
Choose a base branch
from
NickGerleman:export-D55896447
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
facebook-github-bot
added
CLA Signed
This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.
p: Facebook
Partner: Facebook
Partner
labels
Apr 9, 2024
This pull request was exported from Phabricator. Differential Revision: D55896447 |
Differential Revision: D55565035
Differential Revision: D55563775
Differential Revision: D55635743
Summary: Pull Request resolved: facebook#43722 This change adds a drawable, when when drawn on the bounds of a border-box sized view, will draw a spec compliant box-shadow outside the box. This is reliant on Android `RenderNode` and `RenderEffect` APIs provided by API 31. Inset box shadows can also be added using a similar method, but this is not done yet. The code which manages this is in flux, but the underlying drawable should be good. Will add some tests once it's more wired up. Changelog: [Internal] Differential Revision: D55561465 Reviewed By: joevilches
Summary: Pull Request resolved: facebook#43988 The supported path for blur composition effects on API 31+ is RenderNode, but that is pretty new. This adds a RendderScript path, deprecated for newer versions of Android. We still need API 26+ for clipOutPath (we need to clip original BG out of shadow, e.g. for transparent BG), but this should be supported in many more places. It is not perfect. RenderScript's built-in blur implementation has a maximum physical pixel radius of 25px. On an xxhdpi device, this means shadows stop getting larger after ~8 CSS pixels. I also think this path can end up with blurry bitmaps if scale transform enlarged, unlike RenderNode path. I think this is probably an acceptable degradation path for older devices, and probably not work home-rolling more complex RenderScript shaders. We should potentially add an OS API level check on the JS side with a dev time warning. We don't have RenderScript path for blur filter yet, which I imagine might end up stealing some of this code later. Changelog: [Internal] Differential Revision: D55896447
This pull request was exported from Phabricator. Differential Revision: D55896447 |
NickGerleman
force-pushed
the
export-D55896447
branch
from
April 9, 2024 02:01
27fdf68
to
35b798b
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
CLA Signed
This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed.
fb-exported
p: Facebook
Partner: Facebook
Partner
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
The supported path for blur composition effects on API 31+ is RenderNode, but that is pretty new.
This adds a RendderScript path, deprecated for newer versions of Android.
We still need API 26+ for clipOutPath (we need to clip original BG out of shadow, e.g. for transparent BG), but this should be supported in many more places.
It is not perfect. RenderScript's built-in blur implementation has a maximum physical pixel radius of 25px. On an xxhdpi device, this means shadows stop getting larger after ~8 CSS pixels. I also think this path can end up with blurry bitmaps if scale transform enlarged, unlike RenderNode path.
I think this is probably an acceptable degradation path for older devices, and probably not work home-rolling more complex RenderScript shaders. We should potentially add an OS API level check on the JS side with a dev time warning.
We don't have RenderScript path for blur filter yet, which I imagine might end up stealing some of this code later.
Changelog: [Internal]
Differential Revision: D55896447