Plumbing input event latency reporting through Mus GPU.

Desktop / Chromium - mfomitchev [chromium.org] - 13 April 2017 23:09 EDT

Adds support for input event latency reporting for Mus. There's two subtle differences between the Mus flow and the non-Mus flow:- DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT is logged if there are ANY latency components present.- OnGpuSwapBuffersCompleted() is called if there are ANY latency components present. In non-Mus flow these are done only when there are browser-specific latency components present. In practice this shouldn't have any effect on UMA latency reporting, because currently OnGpuSwapBuffersCompleted() exits early if it doesn't see RWH-specific latency components. However it should prove useful for getting latency data for non-blink use cases in the future.

Other changes:- Adds logging of DISPLAY_COMPOSITOR_RECEIVED_FRAME_COMPONENT in SurfaceFactory::SubmitCompositorFrame().- Plumbs through LatencyInfo propagation for the in-process GPU command buffer case (i.e. for Mus GPU).- Adds LatencyTracker to DisplayOutputSurface, and calls LatencyTracker::OnGpuSwapBuffersCompleted from DisplayOutputSurface::OnGpuSwapBuffersCompleted, which ensures UMA latency data is reported in Mus.

TBR=bbudge@chromium.org,danakj@chromium.org BUG=686865

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

Review-Url: https://codereview.chromium.org/2806163004 Cr-Commit-Position: refs/heads/master@{#464664}

426ea5dd Plumbing input event latency reporting through Mus GPU.
.../compositor_frame_sink_support_unittest.cc | 30 ++++++++++++++++++--
cc/surfaces/surface_factory.cc | 8 ++++++
cc/test/test_context_support.cc | 3 ++
cc/test/test_context_support.h | 2 ++
gpu/BUILD.gn | 1 +
gpu/command_buffer/client/DEPS | 3 ++
gpu/command_buffer/client/client_test_helper.h | 2 ++
gpu/command_buffer/client/context_support.h | 9 ++++++
gpu/command_buffer/client/gles2_implementation.cc | 5 ++++
gpu/command_buffer/client/gles2_implementation.h | 2 ++
gpu/command_buffer/client/gpu_control.h | 9 ++++++
gpu/command_buffer/tests/gl_manager.cc | 3 ++
gpu/command_buffer/tests/gl_manager.h | 2 ++
gpu/gles2_conform_support/egl/context.cc | 3 ++
gpu/gles2_conform_support/egl/context.h | 2 ++
gpu/ipc/DEPS | 3 ++
gpu/ipc/client/command_buffer_proxy_impl.cc | 14 +++++-----
gpu/ipc/client/command_buffer_proxy_impl.h | 3 +-
gpu/ipc/in_process_command_buffer.cc | 32 ++++++++++++++++++++--
gpu/ipc/in_process_command_buffer.h | 13 ++++++++-
ppapi/proxy/ppapi_command_buffer_proxy.cc | 3 ++
ppapi/proxy/ppapi_command_buffer_proxy.h | 2 ++
services/ui/surfaces/BUILD.gn | 1 +
services/ui/surfaces/DEPS | 1 +
services/ui/surfaces/display_output_surface.cc | 10 ++++++-
services/ui/surfaces/display_output_surface.h | 5 +++-
ui/latency/BUILD.gn | 11 ++++++++
ui/latency/latency_info.h | 6 ++++
ui/latency/latency_info_test_support.cc | 13 +++++++++
29 files changed, 184 insertions(+), 17 deletions(-)

Upstream: git.chromium.org


  • Share