8787 Commits

Author SHA1 Message Date
skia-flutter-autoroll
89cd2ebeb4 Roll src/third_party/skia c1bb9cba16be..7281a8623799 (9 commits) (flutter/engine#16665) 2020-02-18 14:16:03 -08:00
Chinmay Garde
277bc6c62b Lift restriction that embedders may not trample the render thread OpenGL context in composition callbacks. (flutter/engine#16653)
During the implementation of custom compositor integration, the embedder gets
callbacks on the render thread to prepare render targets (framebuffers,
textures, etc) for the engine to render into, callbacks to present these render
targets along with platform managed contents, and, callbacks to collect render
targets once they can no longer be recycled by the engine in subsequent frames.
During these callbacks, the engine mandates the OpenGL state on the render
thread be preserved. This restriction has been the source of hard to isolate
issues where the embedder trampled on the OpenGL bindings state in the callback
but failed to restore state before control went back to the engine. Due to the
nature of the OpenGL API, such errors are easy to make and overlook. This patch
lifts the restriction from the embedder. Embedders may now freely work with the
OpenGL state in custom compositor callbacks and the engine will make sure to
disregard OpenGL bindings when control flows back to it.

Disregarding current OpenGL state has a certain performance penalty and the
majority of this patch handles refactoring various engine embedder components
such that this happens only once per frame. The most trivial version of this
patch would reset context bindings on every transition of control flow from the
embedder to the engine. However, that naive approach would have necessitated
more than 50 binding resets in existing unit-test cases (depending on the number
of platform view interleaving levels and render target recycling hit rates). In
this implementation, bindings will be reset only once per frame and this does
not depend on the number of platform views in the scene.

The majority of this patch is a refactoring of engine subsystems used in
`ExternalViewEmbedder::SubmitFrame` which is thoroughly documented with each
opportunity for the embedder to invalidate OpenGL state tagged.

The refactoring also enables the implementation of the following optimizations
to engine behavior which should aid in reducing the memory needed for the
creation of render targets. These optimization include:
* The engine will only ask the embedder for render targets in which it expects
  to render into. This was a quirk in the way in which root and non-root render
  targets were handled. The engine could require the embedder to create a render
  target but then realize it didn’t have anything to render into it. In the
  presentation callback, it would skip that render target. But the embedder
  still had to allocate that extra render target. This will no longer be the
  case and should reduce memory use.
* The engine may now skip always realizing (via the embedder render target
  creation callback) and presenting the root render target. This was also a side
  effect of the same quirk. Previously, the engine would always ask the embedder
  to present the root render target even if it was empty. Since this is no
  longer the case, few render targets should be allocated which will reduce
  memory consumption.
* The engine will now ask the embedder to collect unused render targets before
  it asks it to create new ones. The previous behavior was to ask the embedder
  for new targets and then collect old ones. This would cause spikes in memory
  use when the size of the render targets would change. These memory use spikes
  should now be troughs.
* The previous render target cache also considered the platform view ID in cache
  viability considerations (instead of just the size of the render target). This
  was a bug which has been fixed. This should lead to better cache utilization
  in some situations.

These optimizations are now codified in unit-tests and the updated test
expectations are a result of these optimizations now being in place.

* Fixes https://github.com/flutter/flutter/issues/50751
* Fixes https://github.com/flutter/flutter/issues/46911
* Fixes https://github.com/flutter/flutter/issues/43778
* Fixes b/146142979
2020-02-18 12:51:49 -08:00
Yegor
2782ec758d update hash code logic on the web (flutter/engine#16624) 2020-02-18 12:29:17 -08:00
Nurhan Turgut
97d1caffaa [web] Skipping failing edge tests (flutter/engine#16626)
* making edge default test browser on windows. adding some skips (not all) for methods failing on edge

* skip failing tests. make egde default for testing

* skip one more test

* addressing reviewer comments. removing extra bat file
2020-02-18 09:36:04 -08:00
skia-flutter-autoroll
b98a0c5838 Roll src/third_party/skia 78b471760dd9..c1bb9cba16be (1 commits) (flutter/engine#16662) 2020-02-18 08:46:04 -08:00
skia-flutter-autoroll
e8ecaa8ae1 Roll src/third_party/dart a314cff6ee03..999eeea5a3ff (15 commits) (flutter/engine#16661) 2020-02-18 08:11:03 -08:00
skia-flutter-autoroll
24843a3eb2 Roll fuchsia/sdk/core/linux-amd64 from Uc8XS... to 2W9Xr... (flutter/engine#16659) 2020-02-18 04:31:02 -08:00
skia-flutter-autoroll
c851855a44 Roll src/third_party/dart b20c35c7d90f..a314cff6ee03 (4 commits) (flutter/engine#16657) 2020-02-18 02:41:02 -08:00
skia-flutter-autoroll
fb5829d5d6 Roll src/third_party/skia 9dbb98007b7b..4af17e434cdc (2 commits) (flutter/engine#16656) 2020-02-18 01:51:03 -08:00
skia-flutter-autoroll
a680469f3c Roll src/third_party/skia 3c4f3c178ade..9dbb98007b7b (2 commits) (flutter/engine#16655) 2020-02-17 22:51:03 -08:00
skia-flutter-autoroll
3ec52112ca Roll fuchsia/sdk/core/linux-amd64 from m7Xt4... to Uc8XS... (flutter/engine#16652) 2020-02-17 14:51:02 -08:00
skia-flutter-autoroll
dcda71ca49 Roll src/third_party/skia 706f6b4069b1..3c4f3c178ade (1 commits) (flutter/engine#16650) 2020-02-17 13:36:02 -08:00
skia-flutter-autoroll
1a10eb0f75 Roll src/third_party/skia c65cd5c8dba9..706f6b4069b1 (1 commits) (flutter/engine#16649) 2020-02-17 11:36:03 -08:00
skia-flutter-autoroll
2c8aae0d95 Roll src/third_party/dart 374c9c448fdc..7ed1690b4ed6 (1 commits) (flutter/engine#16647) 2020-02-17 03:56:03 -08:00
skia-flutter-autoroll
799b970ec7 Roll fuchsia/sdk/core/linux-amd64 from CNbNp... to m7Xt4... (flutter/engine#16645) 2020-02-17 01:16:03 -08:00
skia-flutter-autoroll
5534a80c44 Roll src/third_party/skia 660a73ada09d..c65cd5c8dba9 (2 commits) (flutter/engine#16644) 2020-02-17 00:11:02 -08:00
skia-flutter-autoroll
35e0f55272 Roll src/third_party/skia bfe80bb552b0..660a73ada09d (1 commits) (flutter/engine#16643) 2020-02-16 22:26:08 -08:00
skia-flutter-autoroll
776c8be83e Roll src/third_party/skia 8935981317ca..bfe80bb552b0 (1 commits) (flutter/engine#16642) 2020-02-16 13:36:02 -08:00
skia-flutter-autoroll
c44138b675 Roll src/third_party/dart 6ae9dedc6058..374c9c448fdc (1 commits) (flutter/engine#16641) 2020-02-16 12:46:04 -08:00
skia-flutter-autoroll
2567016fd1 Roll src/third_party/skia a27ca5566533..8935981317ca (1 commits) (flutter/engine#16640) 2020-02-16 06:11:03 -08:00
skia-flutter-autoroll
649f4214e9 Roll fuchsia/sdk/core/linux-amd64 from Dx_qu... to CNbNp... (flutter/engine#16639) 2020-02-16 00:26:03 -08:00
skia-flutter-autoroll
175a148347 Roll src/third_party/skia 2c5ee187245a..a27ca5566533 (1 commits) (flutter/engine#16638) 2020-02-15 22:56:04 -08:00
skia-flutter-autoroll
35c088d24a Roll src/third_party/skia 81e84a6e7f03..2c5ee187245a (1 commits) (flutter/engine#16637) 2020-02-15 12:21:02 -08:00
skia-flutter-autoroll
203a964a81 Roll src/third_party/skia b7ceaa8efd2b..81e84a6e7f03 (2 commits) (flutter/engine#16636) 2020-02-15 10:46:03 -08:00
skia-flutter-autoroll
10fe54c858 Roll fuchsia/sdk/core/linux-amd64 from J-_s6... to Dx_qu... (flutter/engine#16635) 2020-02-15 04:31:03 -08:00
skia-flutter-autoroll
ad6af671c9 Roll src/third_party/skia 05676f7bc238..b7ceaa8efd2b (1 commits) (flutter/engine#16633) 2020-02-15 01:36:03 -08:00
skia-flutter-autoroll
431fff96bd Roll src/third_party/skia 55f040bcb943..05676f7bc238 (47 commits) (flutter/engine#16631) 2020-02-14 18:41:03 -08:00
skia-flutter-autoroll
9a4684b9e1 Roll src/third_party/dart edd64e6d5c79..11ae06e988de (44 commits) (flutter/engine#16628) 2020-02-14 16:51:03 -08:00
Kaushik Iska
cb045feae7 Kick LUCI (flutter/engine#16629) 2020-02-14 16:01:17 -08:00
skia-flutter-autoroll
7f638df041 Roll fuchsia/sdk/core/linux-amd64 from Bmq1m... to J-_s6... (flutter/engine#16592)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter-engine
Please CC  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
2020-02-14 14:29:35 -08:00
Ben Konyi
d32975f387 Remove usage of Dart_AllocateWithNativeFields from tonic (flutter/engine#16588)
This API is being removed from the Dart SDK.
2020-02-14 13:55:38 -08:00
Ferhat
5b6f5f36ed Implement Path extractPath, tangent APIs (flutter/engine#16599)
* Add pathMeasure
* Implement tangetAt
* add extractPath segment iterator
* Implement extractPath/chopCubicAt/chopQuadAt
* Wire up extractPath and add tests for cubic/quadratic
* Switch to interpolate on chopCubic
* addressed review comments
2020-02-14 13:29:27 -08:00
George Wright
f99b991c2b Revert "[shell tests] Integrate Vulkan with Shell Tests"
This reverts commit 57a8e04df9bd24b313ca4c309e7c8ba904559ea1.
2020-02-14 13:02:38 -08:00
Forrest Reiling
57a8e04df9 [shell tests] Integrate Vulkan with Shell Tests
This change creates a test only implementation of flutter::Surface backed by an
offscreen Vulkan GrContext. Much of the code in this test Surface was lifted
from flutter::VulkanWindow which I was unable to use without extricating it
from the VkSurface/VkSwapchain code which we do not want to use in offscreen
tests. I would recommend refactoring VulkanWindow to separate GrContext
creation and VkSwapchain creation in order to promote greater code reuse
between onscreen and offscreen vulkan paths.

This change is excersised thoroughly by the shell tests and was manually
tested against these tests on Fuchsia on Intel.
2020-02-14 12:56:16 -08:00
Mouad Debbar
7f9d005477 [web] Unskip tests that are already passing in Safari (flutter/engine#16567) 2020-02-14 10:27:32 -08:00
Nurhan Turgut
fb1b707879 [web] Fixing launching Safari. This should solve the LUCI issue (flutter/engine#16590)
* Fixing launching Safari. This should solve the LUCI issue

* more comments and linking the issue
2020-02-14 10:27:20 -08:00
Mouad Debbar
72edf47d71 [web] Handle alignment correctly in Paragraph.getPositionForOffset (flutter/engine#16569) 2020-02-14 10:24:13 -08:00
Ferhat
3ed6b577e9 Fix drawRRect failure when shader is specified (flutter/engine#16601) 2020-02-14 09:08:28 -08:00
Yegor
e2a5925457 improve surface state assert error messages (flutter/engine#16595) 2020-02-14 08:04:31 -08:00
Harry Terkelsen
3dfb7710f9 Set the current GL context to the most recently acquired Surface (flutter/engine#16572) 2020-02-13 10:49:13 -08:00
skia-flutter-autoroll
d4cd863858 Roll src/third_party/skia 3bf3b92dfab0..55f040bcb943 (3 commits) (flutter/engine#16587) 2020-02-13 10:03:06 -08:00
skia-flutter-autoroll
d2846df8f9 Roll src/third_party/skia 1d1333fcedf8..3bf3b92dfab0 (1 commits) (flutter/engine#16584) 2020-02-13 07:38:02 -08:00
skia-flutter-autoroll
6913c4fea7 Roll src/third_party/skia 1a733b5b760a..1d1333fcedf8 (3 commits) (flutter/engine#16578) 2020-02-12 23:48:02 -08:00
skia-flutter-autoroll
39b4ade7d2 Roll src/third_party/skia 6029cbd560b7..1a733b5b760a (1 commits) (flutter/engine#16577) 2020-02-12 22:08:02 -08:00
Matt Carroll
bd50ab762a Exposes FlutterSurfaceView, and FlutterTextureView to FlutterActivity and FlutterFragment. (#41984, #47557) (flutter/engine#16552) 2020-02-12 19:21:00 -08:00
skia-flutter-autoroll
ef030acc55 Roll src/third_party/skia 9102c86a81ad..6029cbd560b7 (2 commits) (flutter/engine#16575) 2020-02-12 19:13:02 -08:00
skia-flutter-autoroll
4d650e65ca Roll src/third_party/skia 886e8500a9f2..9102c86a81ad (1 commits) (flutter/engine#16570) 2020-02-12 17:43:02 -08:00
George Wright
63ec7cb5e3 Revert "Re-arm timer as necessary in MessageLoopFuchsia" (flutter/engine#16568)
This reverts commit da0fcfec7aa70d363d57bc4bb63e94bb65db2941.
2020-02-12 17:22:02 -08:00
Gary Qian
45f630128d Samsung keyboard duplication workaround: updateSelection (flutter/engine#16547) 2020-02-12 19:51:40 -05:00
skia-flutter-autoroll
d6eaa9a0a3 Roll src/third_party/skia 67da665c27ff..886e8500a9f2 (3 commits) (flutter/engine#16566) 2020-02-12 16:08:03 -08:00