Tracking bug for multi flush Design doc: https://docs.google.com/document/d/1mvX3VGIrlWtIP8ZBJdzPp9Nf-7TfnrN-cyPy6angVU4/edit CL: https://chromium-review.googlesource.com/c/chromium/src/+/611481
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9b8fb34db903643b759635086dcf0da90b1e3082 commit 9b8fb34db903643b759635086dcf0da90b1e3082 Author: Sunny Sachanandani <sunnyps@chromium.org> Date: Sat Aug 26 00:49:56 2017 gpu: Command buffer multi flush. Collect ordering barriers for all contexts on a channel in a list and flush those together whenever any context flushes explicitly. This replaces the implicit flush in ordering barrier when switching between contexts in a stream and when waiting on sync tokens across streams. Design doc: https://docs.google.com/document/d/1mvX3VGIrlWtIP8ZBJdzPp9Nf-7TfnrN-cyPy6angVU4/edit Local testing has shown that this reduces total thread times by ~0.6ms (total ~11ms) per frame in the infinite scrolling benchmark in webview on nexus 6, mostly by reducing IO and GPU thread times. Bug: 757629 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel Change-Id: Ic5a0015d46d3bc12f548b0c93ad109533565acfb Reviewed-on: https://chromium-review.googlesource.com/611481 Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Cr-Commit-Position: refs/heads/master@{#497615} [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/raster/gpu_raster_buffer_provider.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/raster/one_copy_raster_buffer_provider.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/resources/layer_tree_resource_provider.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/test/test_context_support.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/test/test_context_support.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/tiles/tile_manager.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/tiles/tile_manager.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/tiles/tile_manager_perftest.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/tiles/tile_manager_unittest.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/cc/trees/layer_tree_host_impl.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/client/client_test_helper.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/client/context_support.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/client/gles2_implementation.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/client/gles2_implementation.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/client/gles2_implementation_unittest.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/client/gpu_control.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/service/scheduler.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/service/scheduler.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/service/scheduler_unittest.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/tests/gl_manager.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/command_buffer/tests/gl_manager.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/gles2_conform_support/egl/context.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/gles2_conform_support/egl/context.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/client/command_buffer_proxy_impl.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/client/command_buffer_proxy_impl.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/client/gpu_channel_host.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/client/gpu_channel_host.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/common/BUILD.gn [add] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/common/flush_params.cc [add] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/common/flush_params.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/common/gpu_messages.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/common/gpu_param_traits_macros.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/in_process_command_buffer.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/in_process_command_buffer.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/service/gpu_channel.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/service/gpu_command_buffer_stub.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/gpu/ipc/service/gpu_command_buffer_stub.h [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/ppapi/proxy/ppapi_command_buffer_proxy.cc [modify] https://crrev.com/9b8fb34db903643b759635086dcf0da90b1e3082/ppapi/proxy/ppapi_command_buffer_proxy.h
Comment 1 by sunn...@chromium.org
, Aug 21 2017