Jim Graham
9af7a2a64d
Migrate layers and layer_tree to DisplayList/Impeller geometry classes ( flutter/engine#57153 )
...
Migrates Layers and LayerTree and parts of the `flow/` utility classes to use DlGeometry (Impeller) classes.
2024-12-12 19:30:55 +00:00
Jim Graham
e3d616ca84
[DisplayList] migrate DlImageFilter code to Impeller geometry classes ( flutter/engine#56720 )
...
The DlImageFilter code uses Skia geometry classes for its internal computations. This PR switches those implementations to use the Impeller geometry classes for consistency and 3rd party header file independence.
2024-11-20 20:47:37 +00:00
Zachary Anderson
2afd56d187
Revert "Reland: Partial repaint platform views" ( flutter/engine#54537 )
...
Reverts flutter/engine#54231
Speculatively reverting for
https://github.com/flutter/flutter/issues/153335
2024-08-13 08:20:10 -07:00
Matej Knopp
a02e474f1b
Reland: Partial repaint platform views ( flutter/engine#54231 )
...
Relands https://github.com/flutter/engine/pull/54219 reverted in
https://github.com/flutter/engine/pull/54230 .
The tracked area of `PlatformViewLayer` now covers entire frame ensuring
full repaint when platform view is removed.
Added `FullRepaintAfterRemovingLayer` test.
## Pre-launch Checklist
- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide] and the [C++,
Objective-C, Java style guides].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or the PR is [test-exempt]. See [testing the engine] for
instructions on writing and running engine tests.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I signed the [CLA].
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2024-08-07 18:14:13 +02:00
auto-submit[bot]
55758e1e8e
Reverts "Do not disable partial repaint based on thread merging state ( #54219 )" ( flutter/engine#54230 )
...
Reverts: flutter/engine#54219
Initiated by: jonahwilliams
Reason for reverting: incorrect rendering on last frame after platform view is removed.
Original PR Author: knopp
Reviewed By: {jonahwilliams}
This change reverts the following previous change:
Currently we force full repaint when thread merging is detected, but that is not a good way to determine whether platform view is in hierarchy when thread merging is no longer needed. Alternative solution here makes the PlatformViewLayer force full repaint when diffing.
[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
2024-07-30 21:00:26 +00:00
Matej Knopp
e078967646
Do not disable partial repaint based on thread merging state ( flutter/engine#54219 )
...
Currently we force full repaint when thread merging is detected, but
that is not a good way to determine whether platform view is in
hierarchy when thread merging is no longer needed. Alternative solution
here makes the PlatformViewLayer force full repaint when diffing.
## Pre-launch Checklist
- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide] and the [C++,
Objective-C, Java style guides].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making or feature I am
adding, or the PR is [test-exempt]. See [testing the engine] for
instructions on writing and running engine tests.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I signed the [CLA].
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[C++, Objective-C, Java style guides]:
https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
[testing the engine]:
https://github.com/flutter/flutter/wiki/Testing-the-engine
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
2024-07-30 21:36:02 +02:00
Jim Graham
9a169198ec
[DisplayList] remove legacy DisplayListMatrixClipTracker ( flutter/engine#53232 )
...
The MatrixClipTracker was nothing more than a vector of MatrixClipState objects and a whole lot of duplicate delegation methods. It provided little value since nearly every use of it already had a state stack that was kept in synch with it's internal stack and so it was just adding an extra layer of delegation and extra allocations.
2024-06-05 22:28:15 +00:00
Matan Lurey
c58953c1e4
Make flow/... compatible with .clang_tidy. ( flutter/engine#48148 )
2023-11-16 17:23:08 -08:00
Brandon DeRosier
30fe68f402
[Impeller] Don't cull readbacks outside the damage rect. ( flutter/engine#46705 )
...
Resolves https://github.com/flutter/flutter/issues/136058 .
The damage rect properly expands to include the backdrop filter readback area to a certain extent, but it suddenly gets excluded once it no longer partially overlaps with the damage rect. This caused the illusion of EntityPass improperly culling the backdrop entity, leading me into a bit of a wild goose chase.
Before:
https://github.com/flutter/engine/assets/919017/94b8c077-0945-4a2c-96e0-27230d980c38
After:
https://github.com/flutter/engine/assets/919017/f1c78365-6e9b-46cb-9e69-33472d488831
2023-10-10 20:55:05 +00:00
Jonah Williams
02bee3abf0
[Impeller] Avoid inserting additional save layers based on clip configuration. ( flutter/engine#43759 )
...
Fixes https://github.com/flutter/flutter/issues/130775
On the Skia backend, antiAliasWithSaveLayer is the highest fidelity clipping option. In the Impeller backend, there isn't any difference in how we clip, since the stencil buffer is always used. Nevertheless we were still inserting the save layer, which results in an extra offscreen texture and is wasteful.
Track if impeller is enabled in the diff/preroll/paint context and avoid inserting a save layer.
2023-07-18 17:21:42 +00:00
Jim Graham
77514c4f43
Use full 4x4 matrix transforms in TransformLayer ( flutter/engine#43536 )
...
Fixes: https://github.com/flutter/flutter/issues/82961
Fixes: https://github.com/flutter/flutter/issues/113346
The fix was a simple fallout from the previous work to add support for SkM44 throughout the DL and Diff mechanisms (see https://github.com/flutter/flutter/issues/82955 , https://github.com/flutter/flutter/issues/116198 , https://github.com/flutter/engine/pull/37394 )
Tested with its own existing and new unit tests as well as the test case from https://github.com/flutter/flutter/issues/113346
2023-07-11 01:55:07 +00:00
Jonah Williams
dfff522046
Remove physical model layer ( flutter/engine#41593 )
...
Removes the physical model layer and associated engine code. This was already deprecated and removed in the framework. By removing it in the engine, we can also remove the need for layer tree diff/paint/preroll to have the device pixel ratio. This will simplify some of the multi-view work
Fixes https://github.com/flutter/flutter/issues/125720
2023-05-03 20:28:53 +00:00
Jim Graham
37317c5984
restructure DL sources into sub-directories and new file naming conventions ( flutter/engine#40157 )
...
restructure DL sources into sub-directories and new file naming conventions
2023-03-21 02:34:48 +00:00
Matej Knopp
066c6c6d8f
Use DisplayListMatrixClipTracker in DiffContext ( flutter/engine#38010 )
2023-02-10 20:50:28 +00:00
gaaclarke
e41c775200
Removed instances of unnecessary values ( flutter/engine#36221 )
2022-09-26 21:28:04 +00:00
Jonah Williams
614a9bde21
Revert "DiffContext: Remove transform_override" ( flutter/engine#36285 )
2022-09-26 20:56:20 +00:00
Jonah Williams
c4d3db0133
add pixel snapping conditional on presence of raster cache ( flutter/engine#35981 )
2022-09-09 01:10:01 +00:00
Matej Knopp
89c5675052
DiffContext: Remove transform_override ( flutter/engine#35601 )
...
This has been originally added to account for different
parts of rendering process applying integer CTM inconsistently. With Integer CTM removed this is dead code.
2022-08-27 09:13:04 +02:00
Matej Knopp
190cee38d1
Specify clip alignment for partial repaint ( flutter/engine#31359 )
...
* Specify clip alignment for partial repaint
2022-03-31 23:53:42 +02:00
Matej Knopp
7e8fc6005e
Fix partial repaint when TextureLayer is inside retained layer ( flutter/engine#29482 )
2021-11-02 15:40:48 -07:00
Matej Knopp
66a708c874
Enable partial repaint for iOS/Metal ( flutter/engine#28801 )
2021-11-02 07:20:01 -07:00
Matej Knopp
9fcd8ab06f
ImageFilterLayer should adjust child layer bounds during diffing ( flutter/engine#29317 )
2021-10-27 09:07:08 -07:00
Matej Knopp
ee25910702
Take SUPPORT_FRACTIONAL_TRANSLATION into account when diffing layers ( flutter/engine#29001 )
...
* Take SUPPORT_FRACTIONAL_TRANSLATION into account when diffing layers
* Store cull_rect in device coordinates
This removes the need to update cull rect coordinates when overriding transform
and is also consistent with how Layer::needs_painting() works.
* Use original transform for culling, but overriden transform to get paint coordinates.
This is to replicate the paint process during diffing, where layers are culled first and only then after paint the matrix is overriden.
* Rewrite AddLayerBounds based on @flar's suggestions
2021-10-12 18:44:50 +02:00
Zachary Anderson
422f4b85e7
Add missing license headers ( flutter/engine#26988 )
2021-06-26 09:19:10 -07:00
Matej Knopp
7de5184eb9
Add DiffContext ( flutter/engine#21824 )
2021-02-18 14:41:01 -08:00