116 Commits

Author SHA1 Message Date
Dan Field
5a2244c581
Reland path volatility tracker, disabling it if deterministic rendering is requested (#23226)
* Reland path volatility tracker (#23063)" (#23220)

This reverts commit fceef3aaa9d156e8ec3f4a079c142921882f70d8.

* allow disabling based on whether deterministic rendering is needed
2020-12-22 08:25:20 -08:00
Dan Field
fceef3aaa9
Revert "Reland path volatility tracker (#23063)" (#23220)
This reverts commit 205d2b8e188be518c313c9b537429b566d36fa35.
2020-12-21 13:53:18 -08:00
Dan Field
205d2b8e18
Reland path volatility tracker (#23063)
* Revert "Revert "Set SkPath::setIsVolatile based on whether the path survives at least two frames (#22620)" (#23044)"

This reverts commit 4f914253bd7cd2a5cca3fd97213df37494e9bf37.

* Fix tracing
2020-12-14 17:21:55 -08:00
gaaclarke
f37c8c5796
Implemented FlutterEngineGroup and Spawn API. (#22975) 2020-12-14 17:07:44 -08:00
Dan Field
4f914253bd
Revert "Set SkPath::setIsVolatile based on whether the path survives at least two frames (#22620)" (#23044)
This reverts commit 2efc7c10aa12005010c837a1023024bb26bee143.
2020-12-11 15:39:24 -08:00
Dan Field
2efc7c10aa
Set SkPath::setIsVolatile based on whether the path survives at least two frames (#22620)
This patch defaults the volatility bit on SkPaths to false, and then flips it to true if the path survives at least two frames.
2020-12-10 13:57:23 -08:00
Gary Qian
8d4b7f3a68
Add split AOT loading unit failure/error code path (#22857) 2020-12-08 22:58:01 -08:00
zljj0818
48befc59d4
More rename from GPU thread to raster thread (#22819) 2020-12-03 15:03:02 -08:00
Gary Qian
fcbfa9f527
Split AOT Engine Runtime (#22624) 2020-12-02 13:28:01 -08:00
Gary Qian
53fc019aab
Split AOT Android Embedder and shell (#22179) 2020-11-19 17:22:26 -08:00
Kaushik Iska
caf678d30f
Move common graphics utils to //flutter/common/graphics (#22320) 2020-11-10 12:34:02 -08:00
Gary Qian
e231e3bc93
Remove extra method in ComputePlatformResolvedLocale (#22362) 2020-11-06 16:34:45 -08:00
Yuqian Li
190fd8eb51
Reland "Create root isolate asynchronously (#20142)" (#21747)
This reverts commit 5585ed99039efb3705025e1c58170cdb86af111b.

Additionally, the following _flutter.runInView deadlock is fixed.

Previously, a deadlock would occur when service protocol
_flutter.runInView is used to restart the engine wihtout tearing down
the shell: the shared mutex of the service protocol will be locked
during the restart as it's in the middle of handling a service protocol
message; if ServiceProtocol::AddHandler is also called during the
restart, the deadlock happens as AddHandler also requires such lock.

test/integration.shard/background_isolate_test.dart would fail
without this fix.
2020-10-12 12:02:30 -07:00
Jonah Williams
3c0da65c0c
Allow hot reload without syncing all asset files to devFS (#21436)
Always add the asset resolver from the configuration settings directory when restarting or recreating the asset manager
2020-10-02 14:09:07 -07:00
Kaushik Iska
149df4318d
Reland multiple display support for embedder API (#21464) 2020-09-28 12:35:34 -07:00
Kaushik Iska
8d165faca1
Revert multiple display support for embedder API (#21456)
This reverts commits
- 67fdd7ededcbb161a857cc187619ae115c8c8e7f.
- 854943d5c8670a241524b71945b2c8ca77246556.

See: https://github.com/flutter/flutter/issues/66829
2020-09-28 09:46:46 -07:00
Kaushik Iska
67fdd7eded
Embedder API Support for display settings (#21355)
Embedders can now notify shell during startup about the various displays and their corresponding settings.
Adds a notion of Display update type which can later include chages to displays during runtime such as addition / removal / reconfiguration of displays.

We also remove the responsibility of providing the refresh rate from `vsync_waiter` to `DisplayManager`.
Rewires existing platform implementations of the said API to use `Shell::OnDisplayUpdate` to notify the display manager of the startup configuration.

DisplayManager is also thread-safe to account for rasterizer and UI thread accesses.
2020-09-25 11:04:10 -07:00
Matej Knopp
5c9dddc376
Discard wrong size layer tree instead of rendering it (#21179) 2020-09-18 12:37:02 -07:00
0xZero
ac8b9c4c52
Member variables should appear before the |WeakPtrFactory|. (#20899) 2020-09-03 14:34:01 -07:00
Dan Field
634e499bcc
Use hint freed specifically for image disposal (#20754)
* Use hint freed specifically for image disposal
2020-09-02 13:41:58 -07:00
Yuqian Li
5585ed9903
Revert "Create root isolate asynchronously (#20142)" (#20937)
This reverts commit 95f2b72728ee7e51800f1784e458e45dac675b3a.
2020-09-01 22:05:53 -07:00
chenjianguang
95f2b72728
Create root isolate asynchronously (#20142)
## Description
As the related issue refer, the application may be doing too much work on its main thread even in a simple hello_world demo.
That is because the creation of `Engine` on the ui thread takes a noticeable time, and it is blocking the platform thread in order to run `Shell::Setup` synchronously.
The cost of `Engine`'s constructor is mainly about the creating of root isolate. Actually, there used to be another time-consuming process, the default font manager setup, which was resolved by https://github.com/flutter/engine/pull/18225. 
Similar to https://github.com/flutter/engine/pull/18225, this pr move the creation of root isolate out from creating `Engine`. After this action, the main thread blocking is quite an acceptable slice.

## Related Issues
https://github.com/flutter/flutter/issues/40563 could be resolved by this pr.
2020-09-01 13:31:00 -07:00
Dan Field
4a88d5e109
Revert hint_freed (#20746)
This caused over-aggressive GCs, which vastly increased CPU usage benchmarks.

* Revert "fix build (#20644)"

This reverts commit b59793ee20be29463fac7a79635bf20253f04107.

* Revert "Hint freed (#19842)"

This reverts commit 3930ac1b25820baee3c67d921a0b009606cb3dae.
2020-08-25 11:55:40 -07:00
Dan Field
3930ac1b25
Hint freed (#19842)
* Hint the VM when a layer or picture goes out of scope
2020-08-19 14:04:31 -07:00
Yuqian Li
f644d03500
Add a service protocol for raster cache memory (#20466)
Related issue: https://github.com/flutter/flutter/issues/56719
2020-08-13 20:11:47 -07:00
Dan Field
6d44559b7d
Remove the dummy rasterizer delegate now that flutter_runner is in tree, and cleanup ctor params (#20486) 2020-08-13 14:46:01 -07:00
Zachary Anderson
7dd092dd31
Enable more linting (#20187) 2020-07-31 21:30:58 -07:00
Greg Spencer
98cfd1db78
Move platform specific information to PlatformConfiguration class (#19652) 2020-07-31 17:21:02 -07:00
Kaushik Iska
c8b077fa1a
Revert "Remove pipeline in favor of layer tree holder (#18901)" (#19066)
Reverting for b/158816279
2020-06-16 13:15:57 -07:00
Gary Qian
3a96741247
Platform resolved locale and Android localization refactor (#18645) 2020-06-16 04:29:50 -07:00
David Worsham
66d85bceb7
Move Surface and friends to flow/ (#18938) 2020-06-09 16:03:01 -07:00
Kaushik Iska
28e7b7999f
Remove pipeline in favor of layer tree holder (#18901)
Relanding of a change that was reverted in:
https://github.com/flutter/engine/pull/18427
2020-06-09 12:19:34 -07:00
Chris Yang
9ce1e5c5c7
Introduce TaskRunnerAffineWeakPtrFactory to generate TaskRunnerAffineWeakPtrs (#18346) 2020-05-19 16:36:17 -07:00
Kaushik Iska
2494d1ca70
Revert "Remove pipeline in favor of layer tree holder (#18285)" (#18427)
This reverts commit 2cdbc7f92793125d9312138877c05af6ad708683.
2020-05-15 12:27:32 -07:00
Kaushik Iska
2cdbc7f927
Remove pipeline in favor of layer tree holder (#18285)
go/flutter-pipeline-improvements for more details.
2020-05-14 10:46:14 -07:00
Kaushik Iska
8d76518011
Fix latest_frame_target_time race (#18279)
There are some cases where onAnimatorDraw gets called before
onAnimatorBeginFrame, in these cases we need to update the
latest_frame_target_time to be the target time for the current frame.

This manifested as an issue in release mode Android builds:
https://firebase.corp.google.com/project/flutter-infra/testlab/histories/bh.27c33c672e9b01f2/matrices/4903344583855476919/executions/bs.ee4f6f7ad8671a34
2020-05-11 14:52:22 -07:00
Kaushik Iska
4418ce8825
Revert "Remove pipeline in favor of layer tree holder (#17688)" (#18242) 2020-05-08 16:09:02 -07:00
Kaushik Iska
983de2c402
Remove pipeline in favor of layer tree holder (#17688)
go/flutter-pipeline-improvements for more details.
2020-05-08 10:51:10 -07:00
Chris Yang
2622cb9c33
Introduce TaskRunnerChecker, TaskRunnerAffineWeakPtr (#17649) 2020-05-01 11:28:20 -07:00
Jason Simmons
983d1e1703
Fix include paths of fml/time headers in the shell and rasterizer (#17502) 2020-04-03 12:33:54 -07:00
Kaushik Iska
abc72933e7
[pipeline] Add trace event for lag between target and display times (#17384)
This change also adds TimeRecorder which records time at the start
of each frame to capture the latest vsync target display time and
wires it in to the rasterizer to add trace events when there is a lag.
2020-04-02 17:15:45 -07:00
liyuqian
b3075b3091
Rename GPU thread to raster thread in code comments (#17329)
1. Simple "GPU thread" to "raster thread" replacement.

2. Regex replace "GPU([\n\r\s]+//+ thread)" with "raster$1".

3. Regex replace "// gpu$" with "// raster".

4. Simple test change.

5. Run ci/format.sh
2020-03-25 22:49:59 -07:00
liyuqian
bb35963050
Add service protocol to get SkSLs (#17300)
Fixes https://github.com/flutter/flutter/issues/53114
2020-03-24 21:42:12 -07:00
Chinmay Garde
c5329ef5c4
Allow embedders to schedule a callback on all engine managed threads. (#15980)
`FlutterEnginePostCallbackOnAllNativeThreads` schedule a callback to be run on
all engine managed threads. The engine will attempt to service this callback the
next time the message loops for each managed thread is idle. Since the engine
manages the entire lifecycle of multiple threads, there is no opportunity for
the embedders to finely tune the priorities of threads directly, or, perform
other thread specific configuration (for example, setting thread names for
tracing). This callback gives embedders a chance to affect such tuning.

Fixes flutter/flutter#49551
Fixes b/143774406
Fixes b/148278215
Fixes b/148278931
2020-01-27 13:49:39 -08:00
chunhtai
7a27e75c67
Add shell api to set default for windows data (#14002) 2020-01-08 19:36:10 -08:00
gaaclarke
97a23a80e1
Made a way to turn off the OpenGL operations on the IO thread for backgrounded apps (#13908) 2019-11-22 14:08:33 -08:00
gaaclarke
89e395853c
Refactor to passing functions by const ref (#13975)
Moved our code to passing functions by const ref
2019-11-22 12:20:02 -08:00
Michael Klimushyn
8a99d10748
Turn on RasterCache based on view hierarchy (#13762)
This is a duplicate of flutter/engine#13360 with the test switched to use the software backend instead of the GL backend.

After some debugging and testing on another GL embedder I think the issue with the test is some bug having to do with the GL implementation in the test harness specifically. 

Fixes flutter/flutter#38903
2019-11-08 17:14:50 -08:00
Michael Klimushyn
e609577d12
Revert "Turn on RasterCache based on view hierarchy (#13360)" (#13442)
This caused EmbedderTest.VerifyB143464703 to fail after merging into
master.

```
../../flutter/shell/platform/embedder/tests/embedder_unittests.cc:3111: Failure
Value of: ImageMatchesFixture("verifyb143464703.png", renderered_scene)
  Actual: false
Expected: true
[  FAILED  ] EmbedderTest.VerifyB143464703 (2507 ms)
```

This reverts commit 3ad3bc76a5825210603d4afd12013de8ba7d7668.
2019-10-30 11:25:29 -07:00
Michael Klimushyn
3ad3bc76a5
Turn on RasterCache based on view hierarchy (#13360)
Previously the cache was disabled on whether or not PlatformViews were
globally enabled. Instead track their existence in the view hierarchy
and only disable RasterCache if a PlatformView is actually present.
2019-10-30 10:45:15 -07:00