Skip to content

Fix nougat blank rendering with antialiased border radius clipping - #56336

Closed
Abbondanzo wants to merge 2 commits into
react:mainfrom
Abbondanzo:export-D99677658
Closed

Fix nougat blank rendering with antialiased border radius clipping#56336
Abbondanzo wants to merge 2 commits into
react:mainfrom
Abbondanzo:export-D99677658

Conversation

@Abbondanzo

Copy link
Copy Markdown
Contributor

Summary:
Moves clipRect inside the outer saveLayer in clipWithAntiAliasing() to fix blank rendering on API 24 (Nougat) devices.

#55762 added canvas.withClip() to fix black pixels on partially off-screen views. However, it wrapped the entire compositing chain in an extra save()/clipRect/restore(), creating a triple-nested save/restore stack (save -> saveLayer -> saveLayer(DST_IN)) that breaks Porter-Duff compositing on API 24's HWUI renderer.

Moving clipRect inside the saveLayer reduces nesting from 3 to 2 levels while preserving the black-pixel mitigation. The saveLayer already saves and restores clip state, so a separate save()/restore() wrapper is unnecessary.

Changelog: [Android][Fixed] - Fix image content disappearing on API 24 (Nougat) when antialiased border radius clipping is applied

Differential Revision: D99677658

Summary:

Rolls out the antialiased clipping code path introduced in #54525

Changelog: [Internal]

Reviewed By: NickGerleman

Differential Revision: D92742063
Summary:
Moves `clipRect` inside the outer `saveLayer` in `clipWithAntiAliasing()` to fix blank rendering on API 24 (Nougat) devices.

#55762 added `canvas.withClip()` to fix black pixels on partially off-screen views. However, it wrapped the entire compositing chain in an extra `save()`/`clipRect`/`restore()`, creating a triple-nested save/restore stack (`save` -> `saveLayer` -> `saveLayer(DST_IN)`) that breaks Porter-Duff compositing on API 24's HWUI renderer.

Moving `clipRect` inside the `saveLayer` reduces nesting from 3 to 2 levels while preserving the black-pixel mitigation. The `saveLayer` already saves and restores clip state, so a separate `save()`/`restore()` wrapper is unnecessary.

Changelog: [Android][Fixed] - Fix image content disappearing on API 24 (Nougat) when antialiased border radius clipping is applied

Differential Revision: D99677658
@meta-codesync

meta-codesync Bot commented Apr 6, 2026

Copy link
Copy Markdown

@Abbondanzo has exported this pull request. If you are a Meta employee, you can view the originating Diff in D99677658.

@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Apr 6, 2026
@facebook-github-tools facebook-github-tools Bot added p: Facebook Partner: Facebook Partner labels Apr 6, 2026
@meta-codesync meta-codesync Bot closed this in fdd6ca5 Apr 7, 2026
@meta-codesync

meta-codesync Bot commented Apr 7, 2026

Copy link
Copy Markdown

This pull request has been merged in fdd6ca5.

@facebook-github-tools facebook-github-tools Bot added the Merged This PR has been merged. label Apr 7, 2026
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 Merged This PR has been merged. meta-exported p: Facebook Partner: Facebook Partner

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant