Bug 215959 - CoreImage CSS Filter Rendering Path Fallback Heuristic
Summary: CoreImage CSS Filter Rendering Path Fallback Heuristic
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: CSS (show other bugs)
Version: Other
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: frankhome61
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2020-08-28 16:33 PDT by frankhome61
Modified: 2020-09-10 15:59 PDT (History)
10 users (show)

See Also:


Attachments
Patch (1.42 KB, patch)
2020-09-10 15:40 PDT, frankhome61
no flags Details | Formatted Diff | Diff
Patch (2.24 KB, patch)
2020-09-10 15:47 PDT, frankhome61
no flags Details | Formatted Diff | Diff
Renderer using both CoreImage path and software path causes artifacts (45.95 MB, video/quicktime)
2020-09-10 15:52 PDT, frankhome61
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description frankhome61 2020-08-28 16:33:25 PDT
CoreImage performance is worse than Software path when the image size is less than 250x250px, so a fallback logic based on the size of the image is needed to determine the right time to select CoreImage path or the software path
Comment 1 Radar WebKit Bug Importer 2020-08-28 16:33:51 PDT
<rdar://problem/67968396>
Comment 2 frankhome61 2020-09-10 15:40:59 PDT
Created attachment 408487 [details]
Patch
Comment 3 frankhome61 2020-09-10 15:47:26 PDT
Created attachment 408488 [details]
Patch
Comment 4 frankhome61 2020-09-10 15:52:59 PDT
Created attachment 408489 [details]
Renderer using both CoreImage path and software path causes artifacts
Comment 5 frankhome61 2020-09-10 15:59:48 PDT
This current patch doesn't work when the window goes into background, where it starts to render in multiple smaller tiles. As shown in the video, the two tiles on the right is rendered with wrong contents. The cause is that, the decision of whether or not taking CoreImage path is on the per tile level (each tile will have its own CSS filter) and there will be cases where part of the large element is rendered using CoreImage path (with IOSurface), and other parts are rendered using software path (with CGBitmap image buffer).