gpu: Command buffer multi flush

Desktop / Chromium - Sunny Sachanandani [chromium.org] - 25 August 2017 20:49 UTC

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

9b8fb34 gpu: Command buffer multi flush.
cc/raster/gpu_raster_buffer_provider.cc | 9 +-
cc/raster/one_copy_raster_buffer_provider.cc | 9 +-
cc/resources/layer_tree_resource_provider.cc | 4 +
cc/test/test_context_support.cc | 6 +-
cc/test/test_context_support.h | 3 +-
cc/tiles/tile_manager.cc | 22 +--
cc/tiles/tile_manager.h | 4 +-
cc/tiles/tile_manager_perftest.cc | 2 +-
cc/tiles/tile_manager_unittest.cc | 2 +-
cc/trees/layer_tree_host_impl.cc | 2 +-
gpu/command_buffer/client/client_test_helper.h | 3 +-
gpu/command_buffer/client/context_support.h | 7 +-
gpu/command_buffer/client/gles2_implementation.cc | 24 +--
gpu/command_buffer/client/gles2_implementation.h | 3 +-
.../client/gles2_implementation_unittest.cc | 7 -
gpu/command_buffer/client/gpu_control.h | 8 +-
gpu/command_buffer/service/scheduler.cc | 30 +++-
gpu/command_buffer/service/scheduler.h | 21 ++-
gpu/command_buffer/service/scheduler_unittest.cc | 158 ++++++++++---------
gpu/command_buffer/tests/gl_manager.cc | 6 +-
gpu/command_buffer/tests/gl_manager.h | 3 +-
gpu/gles2_conform_support/egl/context.cc | 6 +-
gpu/gles2_conform_support/egl/context.h | 3 +-
gpu/ipc/client/command_buffer_proxy_impl.cc | 143 ++++-------------
gpu/ipc/client/command_buffer_proxy_impl.h | 16 +-
gpu/ipc/client/gpu_channel_host.cc | 169 ++++++---------------
gpu/ipc/client/gpu_channel_host.h | 70 +++------
gpu/ipc/common/BUILD.gn | 2 +
gpu/ipc/common/flush_params.cc | 16 ++
gpu/ipc/common/flush_params.h | 41 +++++
gpu/ipc/common/gpu_messages.h | 13 +-
gpu/ipc/common/gpu_param_traits_macros.h | 11 ++
gpu/ipc/in_process_command_buffer.cc | 12 +-
gpu/ipc/in_process_command_buffer.h | 3 +-
gpu/ipc/service/gpu_channel.cc | 71 ++++++---
gpu/ipc/service/gpu_command_buffer_stub.cc | 13 +-
gpu/ipc/service/gpu_command_buffer_stub.h | 7 +-
ppapi/proxy/ppapi_command_buffer_proxy.cc | 6 +-
ppapi/proxy/ppapi_command_buffer_proxy.h | 3 +-
39 files changed, 414 insertions(+), 524 deletions(-)

Upstream: git.chromium.org


  • Share