-
Notifications
You must be signed in to change notification settings - Fork 6k
Fix damage calculation when not providing populate_existing_damage for gl embedder #45611
Conversation
92bb9ae to
4d805dc
Compare
|
Thanks for raising this, I facing same problem. |
82e8b3d to
a518c0b
Compare
|
This looks like a sound change. Perhaps @knopp can also review? |
shell/platform/embedder/embedder.cc
Outdated
| existing_damage_rect = SkIRect::MakeEmpty(); | ||
| partial_repaint_enabled = false; | ||
| } else if (existing_damage.num_rects > 1) { | ||
| // Log message notifying users that multi-damage is not yet available in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we should join the rectangles here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done. Also added one more test.
0277297 to
a3ddee6
Compare
|
|
|
Thanks for doing this @ajihyf . How about rebasing the change? It should trigger the CI tests. |
a3ddee6 to
49337d5
Compare
…_damage for gl embedder (flutter/engine#45611)
…135717) flutter/engine@cc7c3c1...485543c 2023-09-28 [email protected] Roll Fuchsia Linux SDK from cu6apvEZ2P6zhishc... to l2RxJKPfYn7QzGOoL... (flutter/engine#46382) 2023-09-28 [email protected] Remove opacity layer dcheck. (flutter/engine#46160) 2023-09-28 [email protected] Add initial support for 4x MSAA in OpenGLES backend. (flutter/engine#46381) 2023-09-28 [email protected] Reland: [macOS] performKeyEquivalent cleanup (flutter/engine#46377) 2023-09-28 [email protected] [macOS] TextInputPlugin should mark navigation events in IME popover as handled (flutter/engine#46141) 2023-09-28 [email protected] Removed unnecessary dynamic dispatch (flutter/engine#46369) 2023-09-28 [email protected] [Impeller] Fix OpenGLES EGL_BAD_ACCESS due to context being current on multiple threads. (flutter/engine#46287) 2023-09-28 [email protected] Fix damage calculation when not providing populate_existing_damage for gl embedder (flutter/engine#45611) Also rolling transitive DEPS: fuchsia/sdk/core/linux-amd64 from cu6apvEZ2P6z to l2RxJKPfYn7Q If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…lutter#135717) flutter/engine@cc7c3c1...485543c 2023-09-28 [email protected] Roll Fuchsia Linux SDK from cu6apvEZ2P6zhishc... to l2RxJKPfYn7QzGOoL... (flutter/engine#46382) 2023-09-28 [email protected] Remove opacity layer dcheck. (flutter/engine#46160) 2023-09-28 [email protected] Add initial support for 4x MSAA in OpenGLES backend. (flutter/engine#46381) 2023-09-28 [email protected] Reland: [macOS] performKeyEquivalent cleanup (flutter/engine#46377) 2023-09-28 [email protected] [macOS] TextInputPlugin should mark navigation events in IME popover as handled (flutter/engine#46141) 2023-09-28 [email protected] Removed unnecessary dynamic dispatch (flutter/engine#46369) 2023-09-28 [email protected] [Impeller] Fix OpenGLES EGL_BAD_ACCESS due to context being current on multiple threads. (flutter/engine#46287) 2023-09-28 [email protected] Fix damage calculation when not providing populate_existing_damage for gl embedder (flutter/engine#45611) Also rolling transitive DEPS: fuchsia/sdk/core/linux-amd64 from cu6apvEZ2P6z to l2RxJKPfYn7Q If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-engine-flutter-autoroll Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…r gl embedder (#45611) # Description This PR fixes the `gl_populate_existing_damage` in embedder.cc, which currently returns an empty rectangle when a full repaint is needed. This leads to the `frame_damage` being considered empty in rasterizer.cc, causing incorrect partial repaint within Flutter when `gl_populate_existing_damage` is not provided by the embedder. # Related Issue flutter/flutter#119601 # Tests Add a new test. Also fixes damage calculation related tests in EmbedderTest by * Use a new Dart embedder fixture entry point `render_gradient_retained` which retains the old layer to make sure layer tree diff happens. * Add `latch.Wait()` after `SetGLPresentCallback` to make sure assertions have been executed. * Make `existing_damage_rects` static since it should be valid after `populate_existing_damage` returns.
Description
This PR fixes the
gl_populate_existing_damagein embedder.cc, which currently returns an empty rectangle when a full repaint is needed. This leads to theframe_damagebeing considered empty in rasterizer.cc, causing incorrect partial repaint within Flutter whengl_populate_existing_damageis not provided by the embedder.Related Issue
flutter/flutter#119601
Tests
Add a new test. Also fixes damage calculation related tests in EmbedderTest by
render_gradient_retainedwhich retains the old layer to make sure layer tree diff happens.latch.Wait()afterSetGLPresentCallbackto make sure assertions have been executed.existing_damage_rectsstatic since it should be valid afterpopulate_existing_damagereturns.