-
Notifications
You must be signed in to change notification settings - Fork 6k
Reduce layer tree pipeline depth to 2. #3909
Conversation
|
FYI this landed as part of flutter/flutter#11318 which regressed flutter_gallery_ios__transition_perf average_frame_rasterizer_time_millis by about 20%. |
|
Of the three patches that were in that roll, this is the most likely candidate. There's no obvious impact on any other benchmark. |
|
@chinmaygarde Did you have a chance to investigate the performance regression? |
|
I haven't as I am still investigating the color correctness issue. Though I don't see how this patch can affect the average frame rasterization time. This controls how many frames are in the pipeline, not how long they take to rasterize. |
|
Yeah I don't understand it either. |
|
Would it affect CPU contention? Could having a larger pipeline have allowed the frames to render at more open cpu times? |
|
I recommend collecting traces from the device in each mode. The pattern
should become more obvious.
Depending on how your logic is constructed you might be ending up in a
double buffered mode instead of triple buffered and that can make all the
difference. Noting of course that there's a trade-off between latency and
throughput.
…On Tue, Jul 25, 2017, 8:27 PM Eric Seidel ***@***.***> wrote:
Would it affect CPU contention? Could having a larger pipeline have
allowed the frames to render at more open cpu times?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#3909 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/AAGPhNnrEt8QjOBl-D9pdCsCUIylsEbuks5sRrI8gaJpZM4OddrO>
.
|

Setting the pipeline depth to three solves no use cases and causes the effects of jank to be exacerbated. Consider the following:
We do need some pipelining because we want to be able to simultaneously consume one item on the GPU thread while another one is being produced on the UI thread.
But we don't want excess room in the pipeline to cause the UI thread to fill up the pipeline with pictures for intervals (as determined by interpolators) that are different from the ones that the GPU thread will consume the SkPictures.
So reduce the pipeline depth to 2.
Traces attached: PipelineTo2.json.zip