Make sure root surface transformations survive resetting the matrix directly in Flow.#13405
Conversation
|
xref b/143464703 |
…irectly in Flow. This used to only be handled correctly for non-root layer backing stores. This was mostly a side effect of the fact that we used recording canvases instead of rendering directly into the backing store. We now use recording canvases consistently. Fixes b/143464703
a8884a0 to
00eed48
Compare
|
Fixes flutter/flutter#43732 |
amirh
left a comment
There was a problem hiding this comment.
LGTM modulo the canvas->clear (unless we have a good answer there)
| // the rasterizer before the submit call layer to access the surface surface | ||
| // canvas. | ||
| // If there is no root render target, create one now. | ||
| // TODO(chinmaygarde): This can now be moved to be later in the submit call. |
There was a problem hiding this comment.
nit: If it's something you think we should do let's have a tracking bug and change the language from "can" to "should"
| // while making sure to take into account any surface transformations. | ||
| if (auto root_canvas = root_render_target_->GetRenderSurface()->getCanvas()) { | ||
| root_canvas->setMatrix(pending_surface_transformation_); | ||
| root_canvas->clear(SK_ColorTRANSPARENT); |
There was a problem hiding this comment.
Isn't this redundant for the root canvas? do you know if there's a performance cost for doing it twice?
There was a problem hiding this comment.
No. The embedder may have unnecessary stuff on the render target that we need to get rid of.
| } | ||
|
|
||
| @pragma('vm:entry-point') | ||
| void verify_b143464703() { |
There was a problem hiding this comment.
Maybe include a link to a GitHub issue if you're referring a bug, this number is pretty mysterious for non googlers
There was a problem hiding this comment.
Done. There was no GitHub issue when I began work on this.
chinmaygarde
left a comment
There was a problem hiding this comment.
Addressed all comments.
| // the rasterizer before the submit call layer to access the surface surface | ||
| // canvas. | ||
| // If there is no root render target, create one now. | ||
| // TODO(chinmaygarde): This can now be moved to be later in the submit call. |
| // while making sure to take into account any surface transformations. | ||
| if (auto root_canvas = root_render_target_->GetRenderSurface()->getCanvas()) { | ||
| root_canvas->setMatrix(pending_surface_transformation_); | ||
| root_canvas->clear(SK_ColorTRANSPARENT); |
There was a problem hiding this comment.
No. The embedder may have unnecessary stuff on the render target that we need to get rid of.
| } | ||
|
|
||
| @pragma('vm:entry-point') | ||
| void verify_b143464703() { |
There was a problem hiding this comment.
Done. There was no GitHub issue when I began work on this.
…matrix directly in Flow. (flutter/engine#13405)
[email protected]:flutter/engine.git/compare/36303c61b63f...5051bef git log 36303c6..5051bef --no-merges --oneline 2019-10-30 [email protected] Roll src/third_party/skia ebdae1144978..7da048b5e8f1 (1 commits) (flutter/engine#13438) 2019-10-30 [email protected] Roll fuchsia/sdk/core/mac-amd64 from DfLN8... to p7XYM... (flutter/engine#13437) 2019-10-30 [email protected] Roll src/third_party/dart eb4ab61349..d3a5b82355 (4 commits) 2019-10-30 [email protected] Roll fuchsia/sdk/core/linux-amd64 from goLxs... to nhX22... (flutter/engine#13435) 2019-10-30 [email protected] Roll src/third_party/skia c3a51a5e47ba..ebdae1144978 (1 commits) (flutter/engine#13434) 2019-10-30 [email protected] Roll src/third_party/skia 1ae54bc22fc2..c3a51a5e47ba (1 commits) (flutter/engine#13433) 2019-10-30 [email protected] Roll src/third_party/dart ae5a86d790..eb4ab61349 (7 commits) 2019-10-30 [email protected] Set the install name at link time for darwin dylibs (flutter/engine#13428) 2019-10-30 [email protected] Add isRunningInRobolectricTest back (flutter/engine#13424) 2019-10-30 [email protected] Roll src/third_party/skia 76d22d1ee8cb..1ae54bc22fc2 (26 commits) (flutter/engine#13430) 2019-10-30 [email protected] Roll src/third_party/dart ebd059030b..ae5a86d790 (3 commits) 2019-10-30 [email protected] Roll fuchsia/clang/linux-amd64 from Vghc_... to WxGHg... (flutter/engine#13420) 2019-10-30 [email protected] Roll fuchsia/sdk/core/mac-amd64 from mc3jR... to DfLN8... (flutter/engine#13413) 2019-10-30 [email protected] Roll src/third_party/dart 780af0fcfc..ebd059030b (17 commits) 2019-10-30 [email protected] Make sure root surface transformations survive resetting the matrix directly in Flow. (flutter/engine#13405) 2019-10-30 [email protected] [fuchsia] [packaging] Create a script to upload debug symbols to CIPD (flutter/engine#13422) 2019-10-29 [email protected] Revert "fix fml_unittes is not run during presubmit (#13395)" (flutter/engine#13425) 2019-10-29 [email protected] Made it so we clean up gl resources when view controllers get deleted. (flutter/engine#13396) 2019-10-29 [email protected] Added back in empty lifecycle events so we don't break people that used to call `super`. (flutter/engine#13421) 2019-10-29 [email protected] fix fml_unittes is not run during presubmit (flutter/engine#13395) 2019-10-29 [email protected] Roll src/third_party/skia f22dda960136..76d22d1ee8cb (2 commits) (flutter/engine#13411) 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] on the revert to ensure that a human is aware of the problem. 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/+/master/autoroll/README.md
…matrix directly in Flow. (flutter#13405)" This reverts commit e3aff2c. Fixes b/144093523 Reopens b/143464703 Reopens flutter/flutter#43732
[email protected]:flutter/engine.git/compare/36303c61b63f...5051bef git log 36303c6..5051bef --no-merges --oneline 2019-10-30 [email protected] Roll src/third_party/skia ebdae1144978..7da048b5e8f1 (1 commits) (flutter/engine#13438) 2019-10-30 [email protected] Roll fuchsia/sdk/core/mac-amd64 from DfLN8... to p7XYM... (flutter/engine#13437) 2019-10-30 [email protected] Roll src/third_party/dart eb4ab61349..d3a5b82355 (4 commits) 2019-10-30 [email protected] Roll fuchsia/sdk/core/linux-amd64 from goLxs... to nhX22... (flutter/engine#13435) 2019-10-30 [email protected] Roll src/third_party/skia c3a51a5e47ba..ebdae1144978 (1 commits) (flutter/engine#13434) 2019-10-30 [email protected] Roll src/third_party/skia 1ae54bc22fc2..c3a51a5e47ba (1 commits) (flutter/engine#13433) 2019-10-30 [email protected] Roll src/third_party/dart ae5a86d790..eb4ab61349 (7 commits) 2019-10-30 [email protected] Set the install name at link time for darwin dylibs (flutter/engine#13428) 2019-10-30 [email protected] Add isRunningInRobolectricTest back (flutter/engine#13424) 2019-10-30 [email protected] Roll src/third_party/skia 76d22d1ee8cb..1ae54bc22fc2 (26 commits) (flutter/engine#13430) 2019-10-30 [email protected] Roll src/third_party/dart ebd059030b..ae5a86d790 (3 commits) 2019-10-30 [email protected] Roll fuchsia/clang/linux-amd64 from Vghc_... to WxGHg... (flutter/engine#13420) 2019-10-30 [email protected] Roll fuchsia/sdk/core/mac-amd64 from mc3jR... to DfLN8... (flutter/engine#13413) 2019-10-30 [email protected] Roll src/third_party/dart 780af0fcfc..ebd059030b (17 commits) 2019-10-30 [email protected] Make sure root surface transformations survive resetting the matrix directly in Flow. (flutter/engine#13405) 2019-10-30 [email protected] [fuchsia] [packaging] Create a script to upload debug symbols to CIPD (flutter/engine#13422) 2019-10-29 [email protected] Revert "fix fml_unittes is not run during presubmit (flutter#13395)" (flutter/engine#13425) 2019-10-29 [email protected] Made it so we clean up gl resources when view controllers get deleted. (flutter/engine#13396) 2019-10-29 [email protected] Added back in empty lifecycle events so we don't break people that used to call `super`. (flutter/engine#13421) 2019-10-29 [email protected] fix fml_unittes is not run during presubmit (flutter/engine#13395) 2019-10-29 [email protected] Roll src/third_party/skia f22dda960136..76d22d1ee8cb (2 commits) (flutter/engine#13411) 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] on the revert to ensure that a human is aware of the problem. 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/+/master/autoroll/README.md
This used to only be handled correctly for non-root layer backing stores. This
was mostly a side effect of the fact that we used recording canvases instead of
rendering directly into the backing store. We now use recording canvases
consistently.
Fixes b/143464703