-
Notifications
You must be signed in to change notification settings - Fork 6k
[Impeller] flush all GLES cmd buffers together. #56724
[Impeller] flush all GLES cmd buffers together. #56724
Conversation
chinmaygarde
left a comment
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.
LGTM but I am not able to tell which operation guarantees a flush.
| render_pass->commands_, tracer); | ||
| FML_CHECK(result) << "Must be able to encode GL commands without error."; | ||
| }); | ||
| return reactor_->AddOperation( |
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.
Whats the operation that finally enqueues a non-deferred operation? Is there guaranteed to be one? Otherwise, these operations will be pending in the reactor for a potentially long time.
I'm thinking of texture, pipeline, and perhaps blits also adding non-deferred operations. But nothing jumps out at being always present no matter what.
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.
CommandBuffer::Submit also performs a flush: https://github.com/flutter/engine/blob/main/impeller/renderer/backend/gles/command_buffer_gles.cc#L32-L38
…159214) flutter/engine@80d7750...3245c89 2024-11-20 [email protected] [Impeller] flush all GLES cmd buffers together. (flutter/engine#56724) 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] 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://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
|
Here is a good indicator of the benefit of this change, about 2x on our 90th percentile raster time |
Locally this gives much better performance, about doubling frame time on the Pixel 4. This avoids multiple glbuffersubdata calls that seems to perform particularly bad on mobile devices. Thinking about it more, I'm not sure that having a separate EncodeCommands API is useful for RenderPass/BlitPass. instead they should probably just use submit. but that is a refactor for another day. flutter#159177
Locally this gives much better performance, about doubling frame time on the Pixel 4. This avoids multiple glbuffersubdata calls that seems to perform particularly bad on mobile devices.
Thinking about it more, I'm not sure that having a separate EncodeCommands API is useful for RenderPass/BlitPass. instead they should probably just use submit. but that is a refactor for another day.
flutter/flutter#159177