Issue metadata
Sign in to add a comment
|
rAF Aligned Touch Input |
||||||||||||||||||||||||||||||||||||||||||||
Issue descriptionTechnical feature description: Run an experiment where we turn on RAF aligned input on Canary and Dev. Continuous events will be dispatched according to the BeginFrame callback instead of immediately. Eng owner: dtapuska Design doc: https://docs.google.com/document/d/1aM9AqyYuceRHOmsJZXFKcgi_D4jvFAymYvI36OEwIpI/edit?usp=sharing Finch/experimentation: 50/50 trial A number of histograms will likely change: Event.MainThreadEventQueue.CoalescedCount should increase Event.MainThreadEventQueue.Continuous.QueueingTime should be below a single frame but should move around to be more of a random distribution Event.MainThreadEventQueue.NonContinuous.QueueingTime should stay the same
,
Sep 9 2016
,
Sep 12 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4d208cf0fb7fcad671dcf97c4c9c95af05f1b666 commit 4d208cf0fb7fcad671dcf97c4c9c95af05f1b666 Author: dtapuska <dtapuska@chromium.org> Date: Mon Sep 12 15:33:31 2016 Enable RAF Aligned Input on waterfall BUG= 642368 Review-Url: https://codereview.chromium.org/2324803005 Cr-Commit-Position: refs/heads/master@{#417946} [modify] https://crrev.com/4d208cf0fb7fcad671dcf97c4c9c95af05f1b666/testing/variations/fieldtrial_testing_config_android.json [modify] https://crrev.com/4d208cf0fb7fcad671dcf97c4c9c95af05f1b666/testing/variations/fieldtrial_testing_config_chromeos.json [modify] https://crrev.com/4d208cf0fb7fcad671dcf97c4c9c95af05f1b666/testing/variations/fieldtrial_testing_config_linux.json [modify] https://crrev.com/4d208cf0fb7fcad671dcf97c4c9c95af05f1b666/testing/variations/fieldtrial_testing_config_mac.json [modify] https://crrev.com/4d208cf0fb7fcad671dcf97c4c9c95af05f1b666/testing/variations/fieldtrial_testing_config_win.json
,
Sep 12 2016
,
Sep 22 2016
,
Sep 27 2016
,
Oct 26 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/36b767654b6b6701cd41dc97371b71b35a876ed5 commit 36b767654b6b6701cd41dc97371b71b35a876ed5 Author: dtapuska <dtapuska@chromium.org> Date: Wed Oct 26 13:29:49 2016 Separate rAF aligned Touch and Mouse Input settings We wish to ship rAF aligned touch input without shipping the mouse part due to historical points. So break them into two separate settings. BUG= 642368 Review-Url: https://codereview.chromium.org/2450833003 Cr-Commit-Position: refs/heads/master@{#427676} [modify] https://crrev.com/36b767654b6b6701cd41dc97371b71b35a876ed5/content/public/common/content_features.cc [modify] https://crrev.com/36b767654b6b6701cd41dc97371b71b35a876ed5/content/public/common/content_features.h [modify] https://crrev.com/36b767654b6b6701cd41dc97371b71b35a876ed5/content/renderer/input/main_thread_event_queue.cc [modify] https://crrev.com/36b767654b6b6701cd41dc97371b71b35a876ed5/content/renderer/input/main_thread_event_queue.h [modify] https://crrev.com/36b767654b6b6701cd41dc97371b71b35a876ed5/content/renderer/input/main_thread_event_queue_unittest.cc [modify] https://crrev.com/36b767654b6b6701cd41dc97371b71b35a876ed5/testing/variations/fieldtrial_testing_config.json
,
Nov 1 2016
,
Jan 4 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/5494d50ab65532c64a28e91e23b0a722ebbfe8ed commit 5494d50ab65532c64a28e91e23b0a722ebbfe8ed Author: dtapuska <dtapuska@chromium.org> Date: Wed Jan 04 22:00:09 2017 Remove the requirement to only rAF align non-blocking touch moves. We want to align all touchmoves regardless of whether they cause a regression in scroll start. The expected regression would on average half a frame. BUG= 642368 Review-Url: https://codereview.chromium.org/2612823002 Cr-Commit-Position: refs/heads/master@{#441478} [modify] https://crrev.com/5494d50ab65532c64a28e91e23b0a722ebbfe8ed/content/renderer/input/main_thread_event_queue.cc [modify] https://crrev.com/5494d50ab65532c64a28e91e23b0a722ebbfe8ed/content/renderer/input/main_thread_event_queue_unittest.cc
,
Jan 27 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/73607ca60d8d03e9ac7397da44a9744d64e444b8 commit 73607ca60d8d03e9ac7397da44a9744d64e444b8 Author: dtapuska <dtapuska@chromium.org> Date: Fri Jan 27 17:20:19 2017 Move the TouchEventQueue to be completely virtual. We need to provide a new implementation of the TouchEventQueue and the easiest is to rewrite it according to the external interface. So make the interface completely virtual to support two implementations for now. Move the old implementation to LegacyTouchEventQueue. BUG= 642368 TBR=creis@chromium.org Review-Url: https://codereview.chromium.org/2663493003 Cr-Commit-Position: refs/heads/master@{#446701} [modify] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/BUILD.gn [modify] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/renderer_host/input/input_router_impl.cc [modify] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/renderer_host/input/input_router_impl.h [modify] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/renderer_host/input/input_router_impl_unittest.cc [rename] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/renderer_host/input/legacy_touch_event_queue.cc [add] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/renderer_host/input/legacy_touch_event_queue.h [modify] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/renderer_host/input/touch_event_queue.h [modify] https://crrev.com/73607ca60d8d03e9ac7397da44a9744d64e444b8/content/browser/renderer_host/input/touch_event_queue_unittest.cc
,
Feb 22 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/48fd5b949faacbd387904d9844283bfcf1fe837a commit 48fd5b949faacbd387904d9844283bfcf1fe837a Author: dtapuska <dtapuska@chromium.org> Date: Wed Feb 22 15:16:04 2017 Remove the touch ack timeout handler out of the legacy touch event queue. This class needs to be re-used for the new touch event queue. So extract the code out to a separate class (it was already an internal class) so just move it into a separate file. BUG= 642368 TBR=clamy@chromium.org Review-Url: https://codereview.chromium.org/2709813002 Cr-Commit-Position: refs/heads/master@{#452054} [modify] https://crrev.com/48fd5b949faacbd387904d9844283bfcf1fe837a/content/browser/BUILD.gn [modify] https://crrev.com/48fd5b949faacbd387904d9844283bfcf1fe837a/content/browser/renderer_host/input/legacy_touch_event_queue.cc [modify] https://crrev.com/48fd5b949faacbd387904d9844283bfcf1fe837a/content/browser/renderer_host/input/legacy_touch_event_queue.h [modify] https://crrev.com/48fd5b949faacbd387904d9844283bfcf1fe837a/content/browser/renderer_host/input/touch_event_queue.h [add] https://crrev.com/48fd5b949faacbd387904d9844283bfcf1fe837a/content/browser/renderer_host/input/touch_timeout_handler.cc [add] https://crrev.com/48fd5b949faacbd387904d9844283bfcf1fe837a/content/browser/renderer_host/input/touch_timeout_handler.h
,
Feb 22 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/ec3a4f60b7c9ca26b32424abe1fc0c238eee739b commit ec3a4f60b7c9ca26b32424abe1fc0c238eee739b Author: dtapuska <dtapuska@chromium.org> Date: Wed Feb 22 20:21:55 2017 Merging of touch event ack ids was inconsistent. The merging of event ids was slightly off that the ack type would be sent for the wrong type. The newly merged dispatch type should reflect the type of the ack event id. ie; if 17 was non-blocking it should continue as non-blocking not be 17 and have type blocking afterwards. BUG= 642368 Review-Url: https://codereview.chromium.org/2710663003 Cr-Commit-Position: refs/heads/master@{#452183} [modify] https://crrev.com/ec3a4f60b7c9ca26b32424abe1fc0c238eee739b/content/renderer/input/main_thread_event_queue.cc [modify] https://crrev.com/ec3a4f60b7c9ca26b32424abe1fc0c238eee739b/content/renderer/input/main_thread_event_queue_unittest.cc
,
Feb 23 2017
I don't like the new behavior. Deleting events is bad. Chrome should just deliver all events on rAF.
,
Feb 23 2017
You'll still be able to access all events via the new coalesced points API (https://bugs.chromium.org/p/chromium/issues/detail?id=656781). For most use cases, folks don't need all events. If you do, you can use the new API. This is equivalent to how most native platform handle events (e.g., https://developer.android.com/reference/android/view/MotionEvent.html#getHistoricalX(int, int) ).
,
Feb 23 2017
Delete events, only to then add yet another api to recover the deleted events? What a mess!
,
Feb 23 2017
It is one thing to coalesce events when the system is busy. It is quite another for Chrome to coalesce events when the computer is only 5% busy. Why?
,
Feb 23 2017
jerryj@ what's your use case here? Android (and iOS) already have this property - 60hz touchmove by default, explicitly opt-in to high-frequency points for the rare art use cases. See "Batching": https://developer.android.com/reference/android/view/MotionEvent.html. So we're not really "deleting events" at all, just keeping them at the 60hz frequency supplied by the OS. So this is effectively already the case in Chrome for Android (since we never "opt-in" ourselves). We would never start sending touchmove events at 120hz or 240hz by default because we know in ~99% of the use cases, it would result in wasted work (and risk causing increased jank).
,
Feb 23 2017
That is simply not true at all under Windows. The native OS WM_MOUSEMOVE messages can easily be delivered faster than vsync. Why are you forcing the Windows peg into the Android and iOS hole? I have a canvas app that easily gets 120 mouse moves/sec now under Chrome release (native Win32 and Chrome/JavaScript). But under Chrome snapshots builds, the JS build gets only 40 mouse moves/sec on one system -- which is NOT good. And the CPU is barely even used. You need to rethink turning this 'always on'. So, yes you are deleting mouse move messages if in Chrome release I now see 120/sec, and on snapshot builds I only see 40/sec.
,
Feb 24 2017
And who thought that it was a good idea to add a significant DELAY to the rAF callback, by aligning mouse input to rAF? What is THAT going to do to jank? The attached chart displays the delta time from true vsync that the rAF callback is called -- and more importantly -- the delay in calling the rAF callback that happens when the mouse is moved! At first I thought the delay/jump of over one millisecond must somehow be caused by my code, so I changed my code so that the mouse event callback was blank/empty/donothing function. The result was unchanged. That means Chrome itself is responsible for the delay. The 1ms delay seems inconsequential until you compare that to the entire frame time of 16.6 ms for 60fps, or 8.3 ms for 120fps. The delay of 1.2ms then becomes a very important REGRESSION.
,
Feb 24 2017
The mouse raf sync code is only an experiment to gather feedback. Move to beta or stable channel and you won't see it.
,
Feb 24 2017
And you got your feedback. It significantly delays rAF callback. Please never enable that in the stable channel.
,
Feb 24 2017
Could you share your example app? But your feedback is very helpful. I think we should add some uma metrics to see what on average this is causing delay to the raf signal. I wonder if it is causing delay due to slow main thread hit testing from a complex layout tree. In such cases mousemove events would delay the raf event signal it just might not be measurable. So ideally I'd like to reproduce what you are seeing.
,
Feb 24 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/97286c88bded97a7254edd950b26712fd2a616e7 commit 97286c88bded97a7254edd950b26712fd2a616e7 Author: dtapuska <dtapuska@chromium.org> Date: Fri Feb 24 23:14:43 2017 Teach MainThreadEventQueue about touchmove throttling. Avoid the rAF callbacks when we are throttling touch moves. To do this we check the last rAF time and see if there is a single touch move in the queue that is non-cancelable (only occurs during scrolling) BUG= 642368 Review-Url: https://codereview.chromium.org/2713093005 Cr-Commit-Position: refs/heads/master@{#452985} [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/input_event_filter.cc [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/input_event_filter.h [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/input_handler_manager.cc [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/input_handler_manager.h [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/input_handler_manager_client.h [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/main_thread_event_queue.cc [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/main_thread_event_queue.h [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/input/main_thread_event_queue_unittest.cc [modify] https://crrev.com/97286c88bded97a7254edd950b26712fd2a616e7/content/renderer/render_widget.cc
,
Feb 27 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/53f9f4ee5790ce47bf43eee521fdd3536cd1763a commit 53f9f4ee5790ce47bf43eee521fdd3536cd1763a Author: dtapuska <dtapuska@chromium.org> Date: Mon Feb 27 01:14:26 2017 Add a passthrough touch event queue. The passthrough touch event queue does no queuing of sending events. It does handle the fact that touch events can be ack'd out of order and it makes it appear to the higher layers in the browsers that the acks are all in order. ie; You can get an ack for a touchend before a touchstart from the renderer. If the compositor acks the touchend and the touchstart is sent to the main thread. This class makes this appear logical to the browser which relies upon things like the touchstart being ack before the touchend. This change allows coalescing to only happen in the main thread event queue. It also removes the async sending of touchmoves. All touchmoves are sent right away. BUG= 642368 TBR=clamy@chromium.org Review-Url: https://codereview.chromium.org/2715623002 Cr-Commit-Position: refs/heads/master@{#453133} [modify] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/browser/BUILD.gn [modify] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/browser/renderer_host/input/input_router_impl.cc [modify] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/browser/renderer_host/input/legacy_touch_event_queue.h [rename] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/browser/renderer_host/input/legacy_touch_event_queue_unittest.cc [add] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/browser/renderer_host/input/passthrough_touch_event_queue.cc [add] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/browser/renderer_host/input/passthrough_touch_event_queue.h [add] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/browser/renderer_host/input/passthrough_touch_event_queue_unittest.cc [modify] https://crrev.com/53f9f4ee5790ce47bf43eee521fdd3536cd1763a/content/test/BUILD.gn
,
Mar 2 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/48e55aa69627f177a523bbf80f753454764ac2ac commit 48e55aa69627f177a523bbf80f753454764ac2ac Author: dtapuska <dtapuska@chromium.org> Date: Thu Mar 02 13:07:06 2017 Fix unit tests to enable them testing with the rAF aligned touch input. rAF aligned touch input enables a passthrough touch event queue and a number of tests were testing the number of ACKs or messages sent. Explicitly enable the tests so that it is independent of the actual feature setting. In certain test cases run both the rAF enabled and disabled. For tests where it doesn't really matter just enable it. Most of the changes here are related to GestureScrollUpdate which then generates 2 messages sent immediately (instead of 1 sent and 1 queued). BUG= 642368 Review-Url: https://codereview.chromium.org/2727683002 Cr-Commit-Position: refs/heads/master@{#454243} [modify] https://crrev.com/48e55aa69627f177a523bbf80f753454764ac2ac/content/browser/renderer_host/input/input_router_impl_unittest.cc [modify] https://crrev.com/48e55aa69627f177a523bbf80f753454764ac2ac/content/browser/renderer_host/render_widget_host_unittest.cc [modify] https://crrev.com/48e55aa69627f177a523bbf80f753454764ac2ac/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/48e55aa69627f177a523bbf80f753454764ac2ac/content/renderer/input/input_event_filter_unittest.cc [modify] https://crrev.com/48e55aa69627f177a523bbf80f753454764ac2ac/content/renderer/input/input_handler_manager.h [modify] https://crrev.com/48e55aa69627f177a523bbf80f753454764ac2ac/content/renderer/input/main_thread_event_queue_unittest.cc
,
Mar 2 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a1b99feca7254bceaabcf4feb3db2532de0b3608 commit a1b99feca7254bceaabcf4feb3db2532de0b3608 Author: dtapuska <dtapuska@chromium.org> Date: Thu Mar 02 14:35:01 2017 Enabled rAF aligned touch input Enable rAF aligned touch input. Approved intent to ship: https://groups.google.com/a/chromium.org/d/msg/blink-dev/axrIk4FPw7A/8X9WVwO5BAAJ BUG= 642368 Review-Url: https://codereview.chromium.org/2724043002 Cr-Commit-Position: refs/heads/master@{#454255} [modify] https://crrev.com/a1b99feca7254bceaabcf4feb3db2532de0b3608/content/public/common/content_features.cc
,
Mar 2 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9a97d2d1d08b39636a0a6c014ff06320a78f1375 commit 9a97d2d1d08b39636a0a6c014ff06320a78f1375 Author: dtapuska <dtapuska@chromium.org> Date: Thu Mar 02 16:38:11 2017 Revert of Enabled rAF aligned touch input (patchset #3 id:40001 of https://codereview.chromium.org/2724043002/ ) Reason for revert: We are holding back rAF aligned input right now because of perf bot regression with the passthrough touch event queue. And we don't want to ship rAF alignment without that. Original issue's description: > Enabled rAF aligned touch input > > Enable rAF aligned touch input. Approved intent to ship: > https://groups.google.com/a/chromium.org/d/msg/blink-dev/axrIk4FPw7A/8X9WVwO5BAAJ > > BUG= 642368 > > Review-Url: https://codereview.chromium.org/2724043002 > Cr-Commit-Position: refs/heads/master@{#454255} > Committed: https://chromium.googlesource.com/chromium/src/+/a1b99feca7254bceaabcf4feb3db2532de0b3608 TBR=dgozman@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 642368 Review-Url: https://codereview.chromium.org/2725163003 Cr-Commit-Position: refs/heads/master@{#454281} [modify] https://crrev.com/9a97d2d1d08b39636a0a6c014ff06320a78f1375/content/public/common/content_features.cc
,
Mar 3 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/550f89fa439bba1a6aad2d2e343259bca9d0e731 commit 550f89fa439bba1a6aad2d2e343259bca9d0e731 Author: dtapuska <dtapuska@chromium.org> Date: Fri Mar 03 01:55:39 2017 Revert of Fix unit tests to enable them testing with the rAF aligned touch input. (patchset #3 id:40001 of https://codereview.chromium.org/2727683002/ ) Reason for revert: Rolling back passthrough event queue being enabled. Original issue's description: > Fix unit tests to enable them testing with the rAF aligned touch input. > > rAF aligned touch input enables a passthrough touch event queue and a > number of tests were testing the number of ACKs or messages sent. > Explicitly enable the tests so that it is independent of the actual feature > setting. In certain test cases run both the rAF enabled and disabled. For > tests where it doesn't really matter just enable it. Most of the changes > here are related to GestureScrollUpdate which then generates 2 messages > sent immediately (instead of 1 sent and 1 queued). > > BUG= 642368 > > Review-Url: https://codereview.chromium.org/2727683002 > Cr-Commit-Position: refs/heads/master@{#454243} > Committed: https://chromium.googlesource.com/chromium/src/+/48e55aa69627f177a523bbf80f753454764ac2ac TBR=tdresser@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= 642368 Review-Url: https://codereview.chromium.org/2725263002 Cr-Commit-Position: refs/heads/master@{#454463} [modify] https://crrev.com/550f89fa439bba1a6aad2d2e343259bca9d0e731/content/browser/renderer_host/input/input_router_impl_unittest.cc [modify] https://crrev.com/550f89fa439bba1a6aad2d2e343259bca9d0e731/content/browser/renderer_host/render_widget_host_unittest.cc [modify] https://crrev.com/550f89fa439bba1a6aad2d2e343259bca9d0e731/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/550f89fa439bba1a6aad2d2e343259bca9d0e731/content/renderer/input/input_event_filter_unittest.cc [modify] https://crrev.com/550f89fa439bba1a6aad2d2e343259bca9d0e731/content/renderer/input/input_handler_manager.h [modify] https://crrev.com/550f89fa439bba1a6aad2d2e343259bca9d0e731/content/renderer/input/main_thread_event_queue_unittest.cc
,
Mar 3 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/abf462cdff2f095ab1ab69beb78c8b658bfb634a commit abf462cdff2f095ab1ab69beb78c8b658bfb634a Author: dtapuska <dtapuska@chromium.org> Date: Fri Mar 03 03:46:57 2017 Disable the passthrough touch event queue for now. Due to perf regressions disable the passthrough touch event queue it causes GestureScrollUpdate events to take more time. BUG= 697871 , 642368 Review-Url: https://codereview.chromium.org/2722113007 Cr-Commit-Position: refs/heads/master@{#454504} [modify] https://crrev.com/abf462cdff2f095ab1ab69beb78c8b658bfb634a/content/browser/renderer_host/input/input_router_impl.cc [modify] https://crrev.com/abf462cdff2f095ab1ab69beb78c8b658bfb634a/content/browser/renderer_host/input/input_router_impl_unittest.cc
,
Mar 6 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6e69ab6bfafc78b6037ee64329e6af6974e3afb6 commit 6e69ab6bfafc78b6037ee64329e6af6974e3afb6 Author: Dave Tapuska <dtapuska@chromium.org> Date: Mon Mar 06 15:23:26 2017 Disable the passthrough touch event queue for now. Due to perf regressions disable the passthrough touch event queue it causes GestureScrollUpdate events to take more time. BUG= 697871 , 642368 Review-Url: https://codereview.chromium.org/2722113007 Cr-Commit-Position: refs/heads/master@{#454504} (cherry picked from commit abf462cdff2f095ab1ab69beb78c8b658bfb634a) Review-Url: https://codereview.chromium.org/2731213003 . Cr-Commit-Position: refs/branch-heads/3029@{#20} Cr-Branched-From: 939b32ee5ba05c396eef3fd992822fcca9a2e262-refs/heads/master@{#454471} [modify] https://crrev.com/6e69ab6bfafc78b6037ee64329e6af6974e3afb6/content/browser/renderer_host/input/input_router_impl.cc [modify] https://crrev.com/6e69ab6bfafc78b6037ee64329e6af6974e3afb6/content/browser/renderer_host/input/input_router_impl_unittest.cc
,
Mar 6 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/48123136ee6788085fc91bf856bf5e05f97da590 commit 48123136ee6788085fc91bf856bf5e05f97da590 Author: dtapuska <dtapuska@chromium.org> Date: Mon Mar 06 22:28:30 2017 Re-enable passthrough touch event queue. Async touchmoves were going to the main thread to be ack'd by the compositor but this was useless and causing a regression in the mean input event latency. Ack async touch moves right away just like the LegacyTouchEventQueue did. BUG= 697871 , 642368 Review-Url: https://codereview.chromium.org/2734563002 Cr-Commit-Position: refs/heads/master@{#454977} [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/content/browser/renderer_host/input/input_router_impl.cc [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/content/browser/renderer_host/input/input_router_impl.h [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/content/browser/renderer_host/input/input_router_impl_perftest.cc [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/content/browser/renderer_host/input/input_router_impl_unittest.cc [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/content/renderer/input/input_event_filter_unittest.cc [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/content/renderer/render_widget_unittest.cc [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/ui/events/blink/web_input_event_traits.cc [modify] https://crrev.com/48123136ee6788085fc91bf856bf5e05f97da590/ui/events/blink/web_input_event_traits.h
,
Mar 7 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8bf474227977d380910fd4e9f5c00c269ccc6a09 commit 8bf474227977d380910fd4e9f5c00c269ccc6a09 Author: dtapuska <dtapuska@chromium.org> Date: Tue Mar 07 22:23:08 2017 Reland fix unit tests to enable them testing with the rAF aligned touch input. Originally landed in 48e55aa69627f177a523bbf80f753454764ac2ac and reviewed in Review-Url: https://codereview.chromium.org/2727683002 rAF aligned touch input enables a passthrough touch event queue and a number of tests were testing the number of ACKs or messages sent. Explicitly enable the tests so that it is independent of the actual feature setting. In certain test cases run both the rAF enabled and disabled. For tests where it doesn't really matter just enable it. Most of the changes here are related to GestureScrollUpdate which then generates 2 messages sent immediately (instead of 1 sent and 1 queued). BUG= 642368 Review-Url: https://codereview.chromium.org/2740613002 Cr-Commit-Position: refs/heads/master@{#455251} [modify] https://crrev.com/8bf474227977d380910fd4e9f5c00c269ccc6a09/content/browser/renderer_host/input/input_router_impl_unittest.cc [modify] https://crrev.com/8bf474227977d380910fd4e9f5c00c269ccc6a09/content/browser/renderer_host/render_widget_host_unittest.cc [modify] https://crrev.com/8bf474227977d380910fd4e9f5c00c269ccc6a09/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/8bf474227977d380910fd4e9f5c00c269ccc6a09/content/renderer/input/input_event_filter_unittest.cc [modify] https://crrev.com/8bf474227977d380910fd4e9f5c00c269ccc6a09/content/renderer/input/input_handler_manager.h [modify] https://crrev.com/8bf474227977d380910fd4e9f5c00c269ccc6a09/content/renderer/input/main_thread_event_queue_unittest.cc
,
Mar 8 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/90f20260cfc14c445b56fd0b266b284db34cf575 commit 90f20260cfc14c445b56fd0b266b284db34cf575 Author: dtapuska <dtapuska@chromium.org> Date: Wed Mar 08 17:04:34 2017 Re-land "Enabled rAF aligned touch input" Originally landed via https://codereview.chromium.org/2724043002 https://crrev.com/a1b99feca7254bceaabcf4feb3db2532de0b3608 but reverted due to a perf regression which is now fixed. Enable rAF aligned touch input. Approved intent to ship: https://groups.google.com/a/chromium.org/d/msg/blink-dev/axrIk4FPw7A/8X9WVwO5BAAJ BUG= 642368 TBR=dgozman@chromium.org Review-Url: https://codereview.chromium.org/2732313003 Cr-Commit-Position: refs/heads/master@{#455478} [modify] https://crrev.com/90f20260cfc14c445b56fd0b266b284db34cf575/content/public/common/content_features.cc
,
Mar 9 2017
dtapu/22: vsynctester.com -- To replicate the graph seen in comment #19... 1) I am using "System Three" at http://www.vsynctester.com/manual.html#testsetup 2) download any recent x64 snapshot 3) run chrome.exe with --enable-features=D3DVsync (see issue 467617). This is not needed to replicate the issue, but makes the issue very 'visible'. 4) visit vsynctester.com 5) click on the gear icon 6) check "Use rAF time arg as frame time" and wait 20 seconds 7) check "Locked" and uncheck "Use rAF time arg as frame time" 8) observe blue line (rAF callback time offset from true vsync) 9) move mouse around and blue line spikes significantly (only with RafAlignedMouseInput) Then run Chrome with "--disable-features=RafAlignedMouseInput" and notice that the problem goes away (repeating steps above).
,
Mar 14 2017
jerry@ I've attached 4 captured images from your vsynctester.com using the instructions you provided. As you can see in the images without D3D there is a lot of variance in the numbers and the time processing the mouse moves is essentially drowned out by this. If you look at the D3D graphs (they have much less variance) you can see there are a lot of peaks (this is because the rAF signal is delayed due to processing mouse events and possibly style updates). But they are normalized in when rAF aligned mouse inputs are on because there is significantly less mouse events. The magnitude in the difference of my events are no where near the same magnitude of your events. I'll try on a different laptop here.
,
Mar 14 2017
dtapu/35, Looks like you are seeing around a 0.45ms difference? To see the difference more accurately, change the vsynctester.com chart 'scale' to '2' ms and turn off (uncheck) the inter-frame line. I am testing on entry level notebooks -- that likely explains the timing difference? Even 0.45ms is significant. Why is there that delay? Also, on 'RafAlignedMouseInput', there is a delay in calling the rAF callback function when the mouse is moved -- even with NO mouse callback registered. Does that make sense?
,
Mar 14 2017
jerry there are lots of mouse listeners... just not necessarily javascript listeners. Link over an anchor; it turns to a finger pointer. That is this code path doing that we just don't want to do that at like 200-300Hz that a mouse reports events at... just when we need to update the display and keep it close to the rAF callback. Doing less work allows us to be more predictable; notice the peaks are gone. I'll increase the scale when I'm back in the office tomorrow.
,
Mar 15 2017
jerry.. here are the graphs.. change only seems to be about 0.1ms and the peak of disabled is far worse than the peak of it enabled.
,
Mar 15 2017
Just tested against r457082 and got the attached. Test on an entry level laptop. For example, with a Intel i5-5200U processor and intel integrated graphics.
,
Mar 16 2017
dtapu, just emailed a chrome trace to you from the system in question...
,
Mar 16 2017
dtapu, new test tool: http://www.vsynctester.com/testing/rafaligned.html. Must move (or not) the mouse for 5 seconds for average number displayed to be accurate (at 60Hz rAF).
,
Mar 20 2017
Jerry provided some traces out of band via email to me... My response via email was: Thanks for the trace Jerry they are appreciated. I see that in your trace the average of the RenderWidgetInputHandler::OnHandleInputEvent Wall time is about what you have claimed. 1.2-1.6ms... Roughly 40% of this time is spent in the dispatch of the event listener to JS. I've tried on a low end Dell laptop here as well and my times are less then are around 0.4. We are certainly doing much less work in the rAF aligned input but if you have a slow mouse listener than due to the timing the delayed mouse move event could have more effect on the rAF signal not running as quick as it could.
,
Mar 20 2017
Moving mouse events to issue 703344 .
,
Mar 20 2017
There is still the delay, even when there is NO mouse callback registered.
,
May 1 2017
,
Oct 19 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a65557d12806c7f50475badc80bd7356fb107477 commit a65557d12806c7f50475badc80bd7356fb107477 Author: Dave Tapuska <dtapuska@chromium.org> Date: Thu Oct 19 19:08:27 2017 Remove rAF aligned touch settings. Delete relevant code now that rAF aligned touch and mouse have both shipped for a couple of releases. BUG= 642368 Change-Id: Ib61e7023cc311e3967427566a5beb2875d7db469 Reviewed-on: https://chromium-review.googlesource.com/726406 Reviewed-by: Timothy Dresser <tdresser@chromium.org> Reviewed-by: Daniel Bratell <bratell@opera.com> Reviewed-by: Robert Kaplow <rkaplow@chromium.org> Reviewed-by: Avi Drissman <avi@chromium.org> Commit-Queue: Dave Tapuska <dtapuska@chromium.org> Cr-Commit-Position: refs/heads/master@{#510153} [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/BUILD.gn [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/input/input_router_impl.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/input/input_router_impl.h [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/input/input_router_impl_unittest.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/input/legacy_input_router_impl.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/input/legacy_input_router_impl.h [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/input/legacy_input_router_impl_perftest.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/input/legacy_input_router_impl_unittest.cc [delete] https://crrev.com/2b12fcc1b0d6f04d6b2030e5be9237413cd01327/content/browser/renderer_host/input/legacy_touch_event_queue.cc [delete] https://crrev.com/2b12fcc1b0d6f04d6b2030e5be9237413cd01327/content/browser/renderer_host/input/legacy_touch_event_queue.h [delete] https://crrev.com/2b12fcc1b0d6f04d6b2030e5be9237413cd01327/content/browser/renderer_host/input/legacy_touch_event_queue_unittest.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/render_widget_host_unittest.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/public/common/content_features.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/public/common/content_features.h [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/renderer/input/input_event_filter_unittest.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/renderer/input/main_thread_event_queue.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/renderer/input/main_thread_event_queue.h [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/renderer/input/main_thread_event_queue_unittest.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/content/test/BUILD.gn [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/testing/variations/fieldtrial_testing_config.json [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/ui/events/blink/web_input_event_traits.cc [modify] https://crrev.com/a65557d12806c7f50475badc80bd7356fb107477/ui/events/blink/web_input_event_traits.h |
|||||||||||||||||||||||||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||||||||||||||||||||||||
Comment 1 by dtapu...@chromium.org
, Aug 30 2016