Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

[Reland] Add rects to accumulator rather than bounds (#37435) #37451

Merged
merged 2 commits into from
Nov 9, 2022

Conversation

iskakaushik
Copy link
Contributor

When the accumulator is an RTreeBoundsAccumulator rather than a RectBoundsAccumulator just accumulating the bounds results in incorrect results as the rtree would need to be aware of the constituent non-overlapping rectangles. This would work fine for RectBoundsAccumulator as it would just adjust its bounds based on the passed rects.

Fixes: flutter/flutter#113251

@iskakaushik iskakaushik requested review from jmagman and flar November 8, 2022 23:10
@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests before merging. If you need an exemption to this rule, contact Hixie on the #hackers channel in Chat (don't just cc him here, he won't see it! He's on Discord!).

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for filing the follow-on issue!

display_list->rtree()->searchNonOverlappingDrawnRects(bounds);
for (const SkRect& rect : rects) {
// TODO (https://github.com/flutter/flutter/issues/114919): Attributes
// are not neccessarily `kDrawDisplayListFlags`.
Copy link
Contributor

@flar flar Nov 9, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo on necessarily.

@flar
Copy link
Contributor

flar commented Nov 9, 2022

Also, would it be easy to add a unit test to display_list_unittests.cc that constructs nested DLs and gets their RTrees and see if the sparse nesting is preserved?

@iskakaushik
Copy link
Contributor Author

iskakaushik commented Nov 9, 2022

Also, would it be easy to add a unit test to display_list_unittests.cc that constructs nested DLs and gets their RTrees and see if the sparse nesting is preserved?

Done! Made sure that the test fails without the change as well 😀

@iskakaushik iskakaushik added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 9, 2022
@auto-submit
Copy link
Contributor

auto-submit bot commented Nov 9, 2022

auto label is removed for flutter/engine, pr: 37451, due to - The status or check suite Mac mac_host_engine has failed. Please fix the issues identified (or deflake) before re-applying this label.

@auto-submit auto-submit bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Nov 9, 2022
Copy link
Contributor

@flar flar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

When the accumulator is an `RTreeBoundsAccumulator` rather than a `RectBoundsAccumulator` just accumulating the bounds results in incorrect results as the `rtree` would need to be aware of the constituent non-overlapping rectangles. This would work fine for `RectBoundsAccumulator` as it would just adjust its bounds based on the passed rects.

Fixes: flutter/flutter#113251
@iskakaushik iskakaushik added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 9, 2022
@auto-submit auto-submit bot merged commit f8048be into flutter:main Nov 9, 2022
iskakaushik added a commit to iskakaushik/engine that referenced this pull request Nov 9, 2022
naudzghebre pushed a commit to naudzghebre/engine that referenced this pull request Nov 9, 2022
…lutter#37451)

* [Reland] Add rects to accumulator rather than bounds (flutter#37435)

When the accumulator is an `RTreeBoundsAccumulator` rather than a `RectBoundsAccumulator` just accumulating the bounds results in incorrect results as the `rtree` would need to be aware of the constituent non-overlapping rectangles. This would work fine for `RectBoundsAccumulator` as it would just adjust its bounds based on the passed rects.

Fixes: flutter/flutter#113251

* Add a test for nested display list rtree
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Nov 9, 2022
…115025)

* 6daa75ad4 Roll Skia from 0c8127b3dd7d to 6a056a26b3c5 (16 revisions) (flutter/engine#37438)

* 6517ee8ee Roll Skia from 6a056a26b3c5 to 3cecb22c5827 (1 revision) (flutter/engine#37439)

* c1200c44f Sdk roll failure - add facet to allowlist test_manager and other packages. (flutter/engine#37395)

* 179154ec1 Revert "Sdk roll failure - add facet to allowlist test_manager and other packages. (#37395)" (flutter/engine#37449)

* c171f27c4 Revert "Add rects to accumulator rather than bounds (#37435)" (flutter/engine#37444)

* 583c71ce4 Clang-tidy: Fixed math on shard-id validator. (flutter/engine#37433)

* d224648fc Roll Skia from 3cecb22c5827 to 94450cd1df4e (4 revisions) (flutter/engine#37445)

* 5df42a87b Oops, accidentally compiled the non-null-safe platform file as null safe. (flutter/engine#37453)

* 05455ac0a Roll Skia from 94450cd1df4e to 22526b55be02 (6 revisions) (flutter/engine#37455)

* 9628070ee Roll Skia from 22526b55be02 to 511aa59461f3 (1 revision) (flutter/engine#37458)

* fc7293441 [Impeller] Don't double-convert include path encodings in ImpellerC (flutter/engine#37408)

* d82a2df8a Roll Skia from 511aa59461f3 to 790aedd91cd8 (2 revisions) (flutter/engine#37463)

* be54e3ea0 Roll Skia from 790aedd91cd8 to fe143a0dc368 (3 revisions) (flutter/engine#37467)

* 410f270e6 Roll Dart SDK from c15cdb978761 to 874a662f7507 (3 revisions) (flutter/engine#37466)

* e778ca4e0 Roll Fuchsia Mac SDK from d4l6A1aPw6Z0YjxmA... to vEw8iuSZYmlfk1JiE... (flutter/engine#37468)

* f8048be39 [Reland] Add rects to accumulator rather than bounds (#37435) (flutter/engine#37451)

* 214b84137 Roll Dart SDK from 874a662f7507 to 4fcefaf03496 (1 revision) (flutter/engine#37470)

* 8ecb1c913 [macOS] Remove OpenGL rendering backend (flutter/engine#37448)

* 1a8888b51 Roll Skia from fe143a0dc368 to 0854badd5783 (1 revision) (flutter/engine#37471)

* ca303bfd4 Roll Dart SDK from 4fcefaf03496 to fa6586382e5d (1 revision) (flutter/engine#37473)

* 5d0df764b Use traingle strip for difference clip (flutter/engine#37469)

* eeba9b3c8 Support HLSL ingestion in ImpellerC (flutter/engine#37461)

* 5f88ee42b Use IndexError.check instead of RangeError.checkValidIndex in buffers. (flutter/engine#37450)

* b65ac4ac4 Roll expat to 2.5.0 (flutter/engine#37383)

* ddde8300e [sdk_roll_failure] add facet to allowlist test_manager and other packages. (flutter/engine#37479)

* 62b581ee0 Roll CanvasKit to 0.37.1 (flutter/engine#37454)

* aa4b3ea2f Turned on performance-unnecessary-value-param everywhere. (flutter/engine#37447)
schwa423 pushed a commit to schwa423/engine that referenced this pull request Nov 16, 2022
…lutter#37451)

* [Reland] Add rects to accumulator rather than bounds (flutter#37435)

When the accumulator is an `RTreeBoundsAccumulator` rather than a `RectBoundsAccumulator` just accumulating the bounds results in incorrect results as the `rtree` would need to be aware of the constituent non-overlapping rectangles. This would work fine for `RectBoundsAccumulator` as it would just adjust its bounds based on the passed rects.

Fixes: flutter/flutter#113251

* Add a test for nested display list rtree
shogohida pushed a commit to shogohida/flutter that referenced this pull request Dec 7, 2022
…lutter#115025)

* 6daa75ad4 Roll Skia from 0c8127b3dd7d to 6a056a26b3c5 (16 revisions) (flutter/engine#37438)

* 6517ee8ee Roll Skia from 6a056a26b3c5 to 3cecb22c5827 (1 revision) (flutter/engine#37439)

* c1200c44f Sdk roll failure - add facet to allowlist test_manager and other packages. (flutter/engine#37395)

* 179154ec1 Revert "Sdk roll failure - add facet to allowlist test_manager and other packages. (flutter#37395)" (flutter/engine#37449)

* c171f27c4 Revert "Add rects to accumulator rather than bounds (flutter#37435)" (flutter/engine#37444)

* 583c71ce4 Clang-tidy: Fixed math on shard-id validator. (flutter/engine#37433)

* d224648fc Roll Skia from 3cecb22c5827 to 94450cd1df4e (4 revisions) (flutter/engine#37445)

* 5df42a87b Oops, accidentally compiled the non-null-safe platform file as null safe. (flutter/engine#37453)

* 05455ac0a Roll Skia from 94450cd1df4e to 22526b55be02 (6 revisions) (flutter/engine#37455)

* 9628070ee Roll Skia from 22526b55be02 to 511aa59461f3 (1 revision) (flutter/engine#37458)

* fc7293441 [Impeller] Don't double-convert include path encodings in ImpellerC (flutter/engine#37408)

* d82a2df8a Roll Skia from 511aa59461f3 to 790aedd91cd8 (2 revisions) (flutter/engine#37463)

* be54e3ea0 Roll Skia from 790aedd91cd8 to fe143a0dc368 (3 revisions) (flutter/engine#37467)

* 410f270e6 Roll Dart SDK from c15cdb978761 to 874a662f7507 (3 revisions) (flutter/engine#37466)

* e778ca4e0 Roll Fuchsia Mac SDK from d4l6A1aPw6Z0YjxmA... to vEw8iuSZYmlfk1JiE... (flutter/engine#37468)

* f8048be39 [Reland] Add rects to accumulator rather than bounds (flutter#37435) (flutter/engine#37451)

* 214b84137 Roll Dart SDK from 874a662f7507 to 4fcefaf03496 (1 revision) (flutter/engine#37470)

* 8ecb1c913 [macOS] Remove OpenGL rendering backend (flutter/engine#37448)

* 1a8888b51 Roll Skia from fe143a0dc368 to 0854badd5783 (1 revision) (flutter/engine#37471)

* ca303bfd4 Roll Dart SDK from 4fcefaf03496 to fa6586382e5d (1 revision) (flutter/engine#37473)

* 5d0df764b Use traingle strip for difference clip (flutter/engine#37469)

* eeba9b3c8 Support HLSL ingestion in ImpellerC (flutter/engine#37461)

* 5f88ee42b Use IndexError.check instead of RangeError.checkValidIndex in buffers. (flutter/engine#37450)

* b65ac4ac4 Roll expat to 2.5.0 (flutter/engine#37383)

* ddde8300e [sdk_roll_failure] add facet to allowlist test_manager and other packages. (flutter/engine#37479)

* 62b581ee0 Roll CanvasKit to 0.37.1 (flutter/engine#37454)

* aa4b3ea2f Turned on performance-unnecessary-value-param everywhere. (flutter/engine#37447)
gspencergoog pushed a commit to gspencergoog/flutter that referenced this pull request Jan 19, 2023
…lutter#115025)

* 6daa75ad4 Roll Skia from 0c8127b3dd7d to 6a056a26b3c5 (16 revisions) (flutter/engine#37438)

* 6517ee8ee Roll Skia from 6a056a26b3c5 to 3cecb22c5827 (1 revision) (flutter/engine#37439)

* c1200c44f Sdk roll failure - add facet to allowlist test_manager and other packages. (flutter/engine#37395)

* 179154ec1 Revert "Sdk roll failure - add facet to allowlist test_manager and other packages. (flutter#37395)" (flutter/engine#37449)

* c171f27c4 Revert "Add rects to accumulator rather than bounds (flutter#37435)" (flutter/engine#37444)

* 583c71ce4 Clang-tidy: Fixed math on shard-id validator. (flutter/engine#37433)

* d224648fc Roll Skia from 3cecb22c5827 to 94450cd1df4e (4 revisions) (flutter/engine#37445)

* 5df42a87b Oops, accidentally compiled the non-null-safe platform file as null safe. (flutter/engine#37453)

* 05455ac0a Roll Skia from 94450cd1df4e to 22526b55be02 (6 revisions) (flutter/engine#37455)

* 9628070ee Roll Skia from 22526b55be02 to 511aa59461f3 (1 revision) (flutter/engine#37458)

* fc7293441 [Impeller] Don't double-convert include path encodings in ImpellerC (flutter/engine#37408)

* d82a2df8a Roll Skia from 511aa59461f3 to 790aedd91cd8 (2 revisions) (flutter/engine#37463)

* be54e3ea0 Roll Skia from 790aedd91cd8 to fe143a0dc368 (3 revisions) (flutter/engine#37467)

* 410f270e6 Roll Dart SDK from c15cdb978761 to 874a662f7507 (3 revisions) (flutter/engine#37466)

* e778ca4e0 Roll Fuchsia Mac SDK from d4l6A1aPw6Z0YjxmA... to vEw8iuSZYmlfk1JiE... (flutter/engine#37468)

* f8048be39 [Reland] Add rects to accumulator rather than bounds (flutter#37435) (flutter/engine#37451)

* 214b84137 Roll Dart SDK from 874a662f7507 to 4fcefaf03496 (1 revision) (flutter/engine#37470)

* 8ecb1c913 [macOS] Remove OpenGL rendering backend (flutter/engine#37448)

* 1a8888b51 Roll Skia from fe143a0dc368 to 0854badd5783 (1 revision) (flutter/engine#37471)

* ca303bfd4 Roll Dart SDK from 4fcefaf03496 to fa6586382e5d (1 revision) (flutter/engine#37473)

* 5d0df764b Use traingle strip for difference clip (flutter/engine#37469)

* eeba9b3c8 Support HLSL ingestion in ImpellerC (flutter/engine#37461)

* 5f88ee42b Use IndexError.check instead of RangeError.checkValidIndex in buffers. (flutter/engine#37450)

* b65ac4ac4 Roll expat to 2.5.0 (flutter/engine#37383)

* ddde8300e [sdk_roll_failure] add facet to allowlist test_manager and other packages. (flutter/engine#37479)

* 62b581ee0 Roll CanvasKit to 0.37.1 (flutter/engine#37454)

* aa4b3ea2f Turned on performance-unnecessary-value-param everywhere. (flutter/engine#37447)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
autosubmit Merge PR when tree becomes green via auto submit App needs tests
Projects
None yet
2 participants