-
Notifications
You must be signed in to change notification settings - Fork 30.5k
[Impeller] Use CanvasSpy or DlOpSpy in more embedders #125318
Copy link
Copy link
Closed
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work liste: impellerImpeller rendering backend issues and features requestsImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.r: solvedIssue is closed as solvedIssue is closed as solvedteam-engineOwned by Engine teamOwned by Engine teamtriaged-engineTriaged by Engine teamTriaged by Engine team
Metadata
Metadata
Assignees
Labels
P2Important issues not at the top of the work listImportant issues not at the top of the work liste: impellerImpeller rendering backend issues and features requestsImpeller rendering backend issues and features requestsengineflutter/engine related. See also e: labels.flutter/engine related. See also e: labels.r: solvedIssue is closed as solvedIssue is closed as solvedteam-engineOwned by Engine teamOwned by Engine teamtriaged-engineTriaged by Engine teamTriaged by Engine team
Type
Fields
Give feedbackNo fields configured for issues without a type.
When rendering platform views, Flutter will break the scene up into N layers and render these to different surfaces, using combinations of clear and clips. Generally, if there is nothing either over a platform view or under it, one or more of these layers is likely to be "trivial", that is result in no drawing at all.
Nevertheless, we will still go through a lot of work to process this layer, wait on the drawable, queue up clip commands that do nothing, et cetera. Though this doesn't really hurt GPU utilization, it does hurt overall raster time.
We should be able to detect these cases, and shortcircuit more of the workload. Rather than just making the engine better at detecting difference clips, this is a feature request for the display list to be able to determine that it doesn't actually render anything. That way we can stop before we even dispatch to impeller or attempt to acquire the drawable.
For example:
This second render pass contains only clips and a solid fill that gets clipped out. The resulting texture is entirely transparent.