New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 704732 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jun 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug-Regression



Sign in to add a comment

120.1%-175.2% regression in smoothness.top_25_smooth at 458886:458978

Project Member Reported by jasontiller@chromium.org, Mar 23 2017

Issue description

See the link to graphs below.
 
Project Member

Comment 3 by 42576172...@developer.gserviceaccount.com, Mar 24 2017

Cc: chongz@chromium.org
Owner: chongz@chromium.org

=== Auto-CCing suspected CL author chongz@chromium.org ===

Hi chongz@chromium.org, the bisect results pointed to your CL, please take a look at the
results.


=== BISECT JOB RESULTS ===
Perf regression found with culprit

Suspected Commit
  Author : chongz
  Commit : 5a7f45dab8372cb7b80ee24dfb137a7ced2049ea
  Date   : Wed Mar 22 23:13:14 2017
  Subject: Enable VsyncAlignedInput to field trial

Bisect Details
  Configuration: android_nexus5X_perf_bisect
  Benchmark    : smoothness.top_25_smooth
  Metric       : first_gesture_scroll_update_latency/http___techcrunch.com
  Change       : 135.88% | 12.8131666667 -> 30.2231666667

Revision             Result                  N
chromium@458906      12.8132 +- 0.76457      6      good
chromium@458915      12.7273 +- 1.91149      6      good
chromium@458920      13.274 +- 2.33544       6      good
chromium@458921      30.169 +- 3.04538       6      bad       <--
chromium@458922      29.8082 +- 2.34259      6      bad
chromium@458924      30.4765 +- 2.85826      6      bad
chromium@458942      30.723 +- 3.07344       6      bad
chromium@458978      30.2232 +- 3.02183      6      bad

To Run This Test
  src/tools/perf/run_benchmark -v --browser=android-chromium --output-format=chartjson --upload-results --pageset-repeat=1 --also-run-disabled-tests --story-filter=http...techcrunch.com smoothness.top_25_smooth

Debug Info
  https://chromeperf.appspot.com/buildbucket_job_status/8984291138537333472

Is this bisect wrong?
  https://chromeperf.appspot.com/bad_bisect?try_job_id=5239024823828480


| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq
|  X  | for more information addressing perf regression bugs. For feedback,
| / \ | file a bug with component Speed>Bisection.  Thank you!

Comment 4 by chongz@chromium.org, Mar 27 2017

Status: WontFix (was: Untriaged)
This regression is expected. (See CL description)

Reasons for the delay:
The synthetic input controller sends |TouchMove| right before |BeginFrame|, which
means the ACK will come back later and the generated |GestureScrollUpdate| will fall
into next |BeginFrame|.

This is fine since the actual scroll result won't be rendered until next frame with or
without this patch.

Before CL:
The matrix measures when the |GestureScrollUpdate| got ACKed.

After CL:
The matrix measures when the |GestureScrollUpdate| got rendered by cc.

Comment 5 by chongz@chromium.org, Mar 30 2017

Cc: dtapu...@chromium.org
Labels: Hotlist-Input-Dev OS-All
Status: Started (was: WontFix)
Reopen to put more investigation, there might be some issues we don't fully understand.

Comment 6 by chongz@chromium.org, Mar 30 2017

Cc: tdres...@chromium.org
Discussed with tdresser@ and here are some possible solutions. Will keep investigating on which one we should use. (Maybe 3?)

1. Accept the latency
2. Don't queue GestureScrollUpdate caused by blocking events
  * How to check? Touch vs Wheel?
3. Add real-life test cases so the extra latency would be roughly half a frame
4. Add a delay when processing Gesture Events, e.g. Process them 10ms after receiving VSync signal
  * This is for the concern that Gesture Events missed BeginFrame might actually be able to catch GPUSwap.
Re #2: We'd need to add an extra bit on the gestures, indicating if they came from a blocking or non-blocking event. The gestures aren't dispatched until they're acked, and the ack indicates if they're blocking or not.

I think a combination of #3 and #2 sounds good for now. Improving the tests is good either way, and #2 is a nice baby step towards shipping this for all events.
Project Member

Comment 10 by 42576172...@developer.gserviceaccount.com, Mar 30 2017


=== BISECT JOB RESULTS ===
Perf regression found with culprit

Suspected Commit
  Author : chongz
  Commit : 5a7f45dab8372cb7b80ee24dfb137a7ced2049ea
  Date   : Wed Mar 22 23:13:14 2017
  Subject: Enable VsyncAlignedInput to field trial

Bisect Details
  Configuration: mac_retina_perf_bisect
  Benchmark    : smoothness.tough_scrolling_cases
  Metric       : mean_pixels_checkerboarded/text_constant_full_page_raster_60000_pixels_per_second
  Change       : 712.66% | 11.7818333333 -> 95.746

Revision             Result                  N
chromium@458826      11.7818 +- 9.71105      6      good
chromium@458899      14.8065 +- 11.4286      6      good
chromium@458918      10.6058 +- 13.6799      6      good
chromium@458920      15.6405 +- 13.9584      6      good
chromium@458921      95.7043 +- 1.60753      6      bad       <--
chromium@458923      95.224 +- 2.71684       6      bad
chromium@458927      95.7562 +- 1.35899      6      bad
chromium@458936      95.8557 +- 1.78812      6      bad
chromium@458972      95.746 +- 3.13823       6      bad

To Run This Test
  src/tools/perf/run_benchmark -v --browser=release --output-format=chartjson --upload-results --pageset-repeat=1 --also-run-disabled-tests --story-filter=text.constant.full.page.raster.60000.pixels.per.second smoothness.tough_scrolling_cases

Debug Info
  https://chromeperf.appspot.com/buildbucket_job_status/8983660499699115504

Is this bisect wrong?
  https://chromeperf.appspot.com/bad_bisect?try_job_id=5334547983499264


| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq
|  X  | for more information addressing perf regression bugs. For feedback,
| / \ | file a bug with component Speed>Bisection.  Thank you!
Cc: ajuma@chromium.org
The regression of raster checkerboards seems not good.
Project Member

Comment 12 by 42576172...@developer.gserviceaccount.com, Mar 31 2017


=== BISECT JOB RESULTS ===
Perf regression found with culprit

Suspected Commit
  Author : chongz
  Commit : 5a7f45dab8372cb7b80ee24dfb137a7ced2049ea
  Date   : Wed Mar 22 23:13:14 2017
  Subject: Enable VsyncAlignedInput to field trial

Bisect Details
  Configuration: mac_retina_perf_bisect
  Benchmark    : smoothness.tough_scrolling_cases
  Metric       : mean_pixels_checkerboarded/mean_pixels_checkerboarded
  Change       : 786.36% | 4.1673875 -> 36.9382208333

Revision             Result                   N
chromium@458826      4.16739 +- 0.740542      6      good
chromium@458899      3.6985 +- 1.2594         6      good
chromium@458918      3.73524 +- 0.936102      6      good
chromium@458920      3.69328 +- 1.37851       6      good
chromium@458921      36.9771 +- 0.392737      6      bad       <--
chromium@458923      36.9431 +- 0.512035      6      bad
chromium@458927      36.8661 +- 0.417049      6      bad
chromium@458936      36.9327 +- 0.332757      6      bad
chromium@458972      36.9382 +- 0.272775      6      bad

To Run This Test
  src/tools/perf/run_benchmark -v --browser=release --output-format=chartjson --upload-results --pageset-repeat=1 --also-run-disabled-tests smoothness.tough_scrolling_cases

Debug Info
  https://chromeperf.appspot.com/buildbucket_job_status/8983660485948251232

Is this bisect wrong?
  https://chromeperf.appspot.com/bad_bisect?try_job_id=6630266971357184


| O O | Visit http://www.chromium.org/developers/speed-infra/perf-bug-faq
|  X  | for more information addressing perf regression bugs. For feedback,
| / \ | file a bug with component Speed>Bisection.  Thank you!
Cc: enne@chromium.org danakj@chromium.org
The checkerboarding regression is definitely not good, since one of the long term goals of this project is to reduce checkerboarding.

Dana or Enne, any thoughts?

I think this may be because we should be using a constant offset from vsync, instead of the vsync signal itself?
I don't understand how we'd get more checkerboarding by changing things in the compositor further from the frame deadline, unless this is happening to batch everything and deliver it at the deadline instead of at the start of the next frame?
We should be delivering input to the compositor based on the BeginImplFrame happening, that's when the compositor starts doing math, preparing tiles, etc. I don't think it should need to worry anything about vsyncs.
GestureEvents being processed are based on BeginImplFrame occurring.

However the touchmove is being generated on the BeginFrame signal in the browser and it (the touchmove) must be ack'd before the gesture scroll update is release from the browser.

I presume we have something like this:

Old Way:

Begin Frame 
 Touch Move IPC sent
 Begin Frame IPC sent
Touch Move handled
Touch Move ACK
Gesture Scroll Update IPC sent
Gesture Scroll Update handled
Frame deadline/Swap (latency recorded)

Now we have:

Begin Frame 
 Touch Move IPC sent
 Begin Frame IPC sent
Touch Move handled
Touch Move ACK
Gesture Scroll Update IPC sent
Frame deadline/Swap (latency *not* recorded)
BeginFrame
Gesture Scroll Update handled
Frame deadline/Swap (latency recorded)

Can we not grab traces of this so we aren't speculating what happens?
I don't understand why checker-boarding increases but I think some detailed traces we all can look at is likely the best scenario in understanding what is happening.

Comment 17 by enne@chromium.org, Mar 31 2017

I would expect latency to increase when not delivering input events whenever they arrive.  I would not expect an increase in checkerboarding.

I don't really have a sense of why this would be happening, so I think some traces and debugging would need to be done to figure out more, sorry.
Blocking: 697081
Cc: wangxianzhu@chromium.org
I just reverted my CL in https://crrev.com/2791663002, wangxianzhu@ can you help verify if it's still blocking your change?

Thanks!

--
I will try to find the root cause first before re-landing the Field Trial.
Blocking: -697081
Cc: brianosman@chromium.org lanwei@chromium.org bsalomon@chromium.org chrishtr@chromium.org vmp...@chromium.org
 Issue 706957  has been merged into this issue.
Project Member

Comment 22 by bugdroid1@chromium.org, May 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a237ad2e80ec9ff5cf211b8f28bc2525349e55e0

commit a237ad2e80ec9ff5cf211b8f28bc2525349e55e0
Author: chongz <chongz@chromium.org>
Date: Wed May 03 21:05:33 2017

[VSync Queue] Flush input in CommitComplete()

We should call |DeliverInputForBeginFrame()| in two places:
1. Low latency mode (begin main frame and commit every frame)
  * Flush input in |WillBeginImplFrame()| and the commit should include all input
2. High latency mode (begin main frame and commit are late)
  * Flush input in |CommitComplete()| and before |PrepareTiles()|
  * Also make sure it's outside an impl frame

Tested locally and checkerboard issue seems to be fixed.

Graphics-dev discussion:
https://groups.google.com/a/chromium.org/d/msg/graphics-dev/xOdp3hIxZvg/SQtGediBEAAJ

BUG= 704732 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/a237ad2e80ec9ff5cf211b8f28bc2525349e55e0/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/a237ad2e80ec9ff5cf211b8f28bc2525349e55e0/cc/trees/layer_tree_host_impl.h

Project Member

Comment 23 by bugdroid1@chromium.org, May 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a237ad2e80ec9ff5cf211b8f28bc2525349e55e0

commit a237ad2e80ec9ff5cf211b8f28bc2525349e55e0
Author: chongz <chongz@chromium.org>
Date: Wed May 03 21:05:33 2017

[VSync Queue] Flush input in CommitComplete()

We should call |DeliverInputForBeginFrame()| in two places:
1. Low latency mode (begin main frame and commit every frame)
  * Flush input in |WillBeginImplFrame()| and the commit should include all input
2. High latency mode (begin main frame and commit are late)
  * Flush input in |CommitComplete()| and before |PrepareTiles()|
  * Also make sure it's outside an impl frame

Tested locally and checkerboard issue seems to be fixed.

Graphics-dev discussion:
https://groups.google.com/a/chromium.org/d/msg/graphics-dev/xOdp3hIxZvg/SQtGediBEAAJ

BUG= 704732 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

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

[modify] https://crrev.com/a237ad2e80ec9ff5cf211b8f28bc2525349e55e0/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/a237ad2e80ec9ff5cf211b8f28bc2525349e55e0/cc/trees/layer_tree_host_impl.h

Project Member

Comment 24 by bugdroid1@chromium.org, Jun 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/80553a96dc6712a24a7d0a3e3074d5b7f5f65338

commit 80553a96dc6712a24a7d0a3e3074d5b7f5f65338
Author: chongz <chongz@chromium.org>
Date: Fri Jun 16 22:37:35 2017

[VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary

For a gesture event, we want to know whether the source touch event was handled
blocking or non-blocking, and we can flush the vsync queue immediately if it was
blocking.

This patch will help avoid regression in |first_gesture_scroll_update_latency|
in |smoothness.tough_scrolling_cases|.

After CL the process would be:
  1. Browser -> Renderer: Send touch
  2. Renderer -> Browser: Touch Ack
  3. Browser: Set |is_source_touch_event_set_non_blocking == true| if the ack was
    |INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING*|
  4. Browser -> Renderer: Send generated gesture events with
    |is_source_touch_event_set_non_blocking| bit
  5. Renderer: Flush vsync queue if |is_source_touch_event_set_non_blocking == true|.

BUG= 704732 

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

[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/content/browser/BUILD.gn
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/content/browser/renderer_host/input/touch_emulator.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/content/browser/renderer_host/ui_events_helper.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/content/browser/renderer_host/ui_events_helper.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/third_party/WebKit/Source/web/WebInputEvent.cpp
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/third_party/WebKit/public/platform/WebGestureEvent.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/aura/gestures/gesture_recognizer_unittest.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/aura/window_event_dispatcher.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/aura/window_event_dispatcher.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/aura/window_event_dispatcher_unittest.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/chromeos/touch_exploration_controller.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/blink/blink_event_util.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_detection/filtered_gesture_provider.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_detection/filtered_gesture_provider.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_detection/gesture_event_data_packet.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_detection/gesture_event_data_packet.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_detection/touch_disposition_gesture_filter.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gesture_event_details.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gestures/gesture_provider_aura.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gestures/gesture_provider_aura.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gestures/gesture_recognizer.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gestures/gesture_recognizer_impl.cc
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gestures/gesture_recognizer_impl.h
[modify] https://crrev.com/80553a96dc6712a24a7d0a3e3074d5b7f5f65338/ui/events/gestures/gesture_recognizer_impl_mac.cc

Project Member

Comment 25 by bugdroid1@chromium.org, Jun 17 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/07f0acbacf4853d4cfe56a134a601576fd547cf0

commit 07f0acbacf4853d4cfe56a134a601576fd547cf0
Author: dcheng <dcheng@chromium.org>
Date: Sat Jun 17 07:37:31 2017

Revert of [VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary (patchset #7 id:180001 of https://codereview.chromium.org/2869823003/ )

Reason for revert:
Likely causing failures on Linux ChromiumOS MSan Tests.

Original issue's description:
> [VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary
>
> For a gesture event, we want to know whether the source touch event was handled
> blocking or non-blocking, and we can flush the vsync queue immediately if it was
> blocking.
>
> This patch will help avoid regression in |first_gesture_scroll_update_latency|
> in |smoothness.tough_scrolling_cases|.
>
> After CL the process would be:
>   1. Browser -> Renderer: Send touch
>   2. Renderer -> Browser: Touch Ack
>   3. Browser: Set |is_source_touch_event_set_non_blocking == true| if the ack was
>     |INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING*|
>   4. Browser -> Renderer: Send generated gesture events with
>     |is_source_touch_event_set_non_blocking| bit
>   5. Renderer: Flush vsync queue if |is_source_touch_event_set_non_blocking == true|.
>
> BUG= 704732 
>
> Review-Url: https://codereview.chromium.org/2869823003
> Cr-Commit-Position: refs/heads/master@{#480202}
> Committed: https://chromium.googlesource.com/chromium/src/+/80553a96dc6712a24a7d0a3e3074d5b7f5f65338

TBR=dtapuska@chromium.org,sadrul@chromium.org,pfeldman@chromium.org,thestig@chromium.org,chongz@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 704732 

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

[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/content/browser/BUILD.gn
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/content/browser/renderer_host/input/touch_emulator.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/content/browser/renderer_host/ui_events_helper.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/content/browser/renderer_host/ui_events_helper.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/third_party/WebKit/Source/web/WebInputEvent.cpp
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/third_party/WebKit/public/platform/WebGestureEvent.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/aura/gestures/gesture_recognizer_unittest.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/aura/window_event_dispatcher.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/aura/window_event_dispatcher.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/aura/window_event_dispatcher_unittest.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/chromeos/touch_exploration_controller.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/blink/blink_event_util.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_detection/filtered_gesture_provider.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_detection/filtered_gesture_provider.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_detection/gesture_event_data_packet.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_detection/gesture_event_data_packet.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_detection/touch_disposition_gesture_filter.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gesture_event_details.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gestures/gesture_provider_aura.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gestures/gesture_provider_aura.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gestures/gesture_recognizer.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gestures/gesture_recognizer_impl.cc
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gestures/gesture_recognizer_impl.h
[modify] https://crrev.com/07f0acbacf4853d4cfe56a134a601576fd547cf0/ui/events/gestures/gesture_recognizer_impl_mac.cc

Project Member

Comment 26 by bugdroid1@chromium.org, Jun 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/44f78150b462c4c9daaba7ae47a772fba104e56a

commit 44f78150b462c4c9daaba7ae47a772fba104e56a
Author: chongz <chongz@chromium.org>
Date: Wed Jun 21 07:04:34 2017

[VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary

For a gesture event, we want to know whether the source touch event was handled
blocking or non-blocking, and we can flush the vsync queue immediately if it was
blocking.

This patch will help avoid regression in |first_gesture_scroll_update_latency|
in |smoothness.tough_scrolling_cases|.

After CL the process would be:
  1. Browser -> Renderer: Send touch
  2. Renderer -> Browser: Touch Ack
  3. Browser: Set |is_source_touch_event_set_non_blocking == true| if the ack was
    |INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING*|
  4. Browser -> Renderer: Send generated gesture events with
    |is_source_touch_event_set_non_blocking| bit
  5. Renderer: Flush vsync queue if |is_source_touch_event_set_non_blocking == true|.

BUG= 704732 

Review-Url: https://codereview.chromium.org/2869823003
Cr-Original-Commit-Position: refs/heads/master@{#480202}
Committed: https://chromium.googlesource.com/chromium/src/+/80553a96dc6712a24a7d0a3e3074d5b7f5f65338
Review-Url: https://codereview.chromium.org/2869823003
Cr-Commit-Position: refs/heads/master@{#481130}

[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/content/browser/BUILD.gn
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/content/browser/renderer_host/input/touch_emulator.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/content/browser/renderer_host/ui_events_helper.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/content/browser/renderer_host/ui_events_helper.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/third_party/WebKit/Source/platform/exported/WebInputEvent.cpp
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/third_party/WebKit/public/platform/WebGestureEvent.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/aura/gestures/gesture_recognizer_unittest.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/aura/window_event_dispatcher.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/aura/window_event_dispatcher.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/aura/window_event_dispatcher_unittest.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/chromeos/touch_exploration_controller.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/blink/blink_event_util.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_detection/filtered_gesture_provider.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_detection/filtered_gesture_provider.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_detection/gesture_event_data_packet.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_detection/gesture_event_data_packet.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_detection/touch_disposition_gesture_filter.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gesture_event_details.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gestures/gesture_provider_aura.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gestures/gesture_provider_aura.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gestures/gesture_recognizer.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gestures/gesture_recognizer_impl.cc
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gestures/gesture_recognizer_impl.h
[modify] https://crrev.com/44f78150b462c4c9daaba7ae47a772fba104e56a/ui/events/gestures/gesture_recognizer_impl_mac.cc

Project Member

Comment 27 by bugdroid1@chromium.org, Jun 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6b8c880ce554510082ac8aaff2d86e58dd6df4bc

commit 6b8c880ce554510082ac8aaff2d86e58dd6df4bc
Author: vabr <vabr@chromium.org>
Date: Wed Jun 21 07:44:19 2017

Revert of [VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary (patchset #8 id:200001 of https://codereview.chromium.org/2869823003/ )

Reason for revert:
Speculative revert.

The builder
https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20x64%20Bu...
fails with:

FAILED: gesture_detection.dll gesture_detection.dll.lib
gesture_detection.dll.pdb
C:/b/depot_tools/python276_bin/python.exe
../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x64 False
link.exe /nologo /IMPLIB:./gesture_detection.dll.lib /DLL
/OUT:./gesture_detection.dll /PDB:./gesture_detection.dll.pdb
@./gesture_detection.dll.rsp
LINK : fatal error LNK1104: cannot open file 'gfx_switches.dll.lib'

The reverted CL touches code with gestures and gfx.

Today's sheriff.

Original issue's description:
> [VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary
>
> For a gesture event, we want to know whether the source touch event was handled
> blocking or non-blocking, and we can flush the vsync queue immediately if it was
> blocking.
>
> This patch will help avoid regression in |first_gesture_scroll_update_latency|
> in |smoothness.tough_scrolling_cases|.
>
> After CL the process would be:
>   1. Browser -> Renderer: Send touch
>   2. Renderer -> Browser: Touch Ack
>   3. Browser: Set |is_source_touch_event_set_non_blocking == true| if the ack was
>     |INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING*|
>   4. Browser -> Renderer: Send generated gesture events with
>     |is_source_touch_event_set_non_blocking| bit
>   5. Renderer: Flush vsync queue if |is_source_touch_event_set_non_blocking == true|.
>
> BUG= 704732 
>
> Review-Url: https://codereview.chromium.org/2869823003
> Cr-Original-Commit-Position: refs/heads/master@{#480202}
> Committed: https://chromium.googlesource.com/chromium/src/+/80553a96dc6712a24a7d0a3e3074d5b7f5f65338
> Review-Url: https://codereview.chromium.org/2869823003
> Cr-Commit-Position: refs/heads/master@{#481130}
> Committed: https://chromium.googlesource.com/chromium/src/+/44f78150b462c4c9daaba7ae47a772fba104e56a

TBR=dtapuska@chromium.org,sadrul@chromium.org,pfeldman@chromium.org,thestig@chromium.org,chongz@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 704732 

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

[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/content/browser/BUILD.gn
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/content/browser/renderer_host/input/touch_emulator.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/content/browser/renderer_host/ui_events_helper.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/content/browser/renderer_host/ui_events_helper.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/third_party/WebKit/Source/platform/exported/WebInputEvent.cpp
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/third_party/WebKit/public/platform/WebGestureEvent.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/aura/gestures/gesture_recognizer_unittest.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/aura/window_event_dispatcher.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/aura/window_event_dispatcher.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/aura/window_event_dispatcher_unittest.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/chromeos/touch_exploration_controller.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/blink/blink_event_util.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_detection/filtered_gesture_provider.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_detection/filtered_gesture_provider.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_detection/gesture_event_data_packet.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_detection/gesture_event_data_packet.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_detection/touch_disposition_gesture_filter.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gesture_event_details.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gestures/gesture_provider_aura.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gestures/gesture_provider_aura.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gestures/gesture_recognizer.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gestures/gesture_recognizer_impl.cc
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gestures/gesture_recognizer_impl.h
[modify] https://crrev.com/6b8c880ce554510082ac8aaff2d86e58dd6df4bc/ui/events/gestures/gesture_recognizer_impl_mac.cc

Project Member

Comment 28 by bugdroid1@chromium.org, Jun 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1fa26761c2291efeec10eb180b4ee28fc5bc08b0

commit 1fa26761c2291efeec10eb180b4ee28fc5bc08b0
Author: vabr <vabr@chromium.org>
Date: Wed Jun 21 08:07:07 2017

Reland of [VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary (patchset #1 id:1 of https://codereview.chromium.org/2953563002/ )

Reason for revert:
Builder recovered before the revert made it in.

Original issue's description:
> Revert of [VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary (patchset #8 id:200001 of https://codereview.chromium.org/2869823003/ )
>
> Reason for revert:
> Speculative revert.
>
> The builder
> https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win%20x64%20Bu...
> fails with:
>
> FAILED: gesture_detection.dll gesture_detection.dll.lib
> gesture_detection.dll.pdb
> C:/b/depot_tools/python276_bin/python.exe
> ../../build/toolchain/win/tool_wrapper.py link-wrapper environment.x64 False
> link.exe /nologo /IMPLIB:./gesture_detection.dll.lib /DLL
> /OUT:./gesture_detection.dll /PDB:./gesture_detection.dll.pdb
> @./gesture_detection.dll.rsp
> LINK : fatal error LNK1104: cannot open file 'gfx_switches.dll.lib'
>
> The reverted CL touches code with gestures and gfx.
>
> Today's sheriff.
>
> Original issue's description:
> > [VSync Queue] Plug touch ack to gesture events and flush vsync queue if necessary
> >
> > For a gesture event, we want to know whether the source touch event was handled
> > blocking or non-blocking, and we can flush the vsync queue immediately if it was
> > blocking.
> >
> > This patch will help avoid regression in |first_gesture_scroll_update_latency|
> > in |smoothness.tough_scrolling_cases|.
> >
> > After CL the process would be:
> >   1. Browser -> Renderer: Send touch
> >   2. Renderer -> Browser: Touch Ack
> >   3. Browser: Set |is_source_touch_event_set_non_blocking == true| if the ack was
> >     |INPUT_EVENT_ACK_STATE_SET_NON_BLOCKING*|
> >   4. Browser -> Renderer: Send generated gesture events with
> >     |is_source_touch_event_set_non_blocking| bit
> >   5. Renderer: Flush vsync queue if |is_source_touch_event_set_non_blocking == true|.
> >
> > BUG= 704732 
> >
> > Review-Url: https://codereview.chromium.org/2869823003
> > Cr-Original-Commit-Position: refs/heads/master@{#480202}
> > Committed: https://chromium.googlesource.com/chromium/src/+/80553a96dc6712a24a7d0a3e3074d5b7f5f65338
> > Review-Url: https://codereview.chromium.org/2869823003
> > Cr-Commit-Position: refs/heads/master@{#481130}
> > Committed: https://chromium.googlesource.com/chromium/src/+/44f78150b462c4c9daaba7ae47a772fba104e56a
>
> TBR=dtapuska@chromium.org,sadrul@chromium.org,pfeldman@chromium.org,thestig@chromium.org,chongz@chromium.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG= 704732 
>
> Review-Url: https://codereview.chromium.org/2953563002
> Cr-Commit-Position: refs/heads/master@{#481136}
> Committed: https://chromium.googlesource.com/chromium/src/+/6b8c880ce554510082ac8aaff2d86e58dd6df4bc

TBR=dtapuska@chromium.org,sadrul@chromium.org,pfeldman@chromium.org,thestig@chromium.org,chongz@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= 704732 

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

[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/content/browser/BUILD.gn
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/content/browser/renderer_host/input/touch_emulator.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/content/browser/renderer_host/render_widget_host_view_android.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/content/browser/renderer_host/ui_events_helper.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/content/browser/renderer_host/ui_events_helper.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/third_party/WebKit/Source/platform/exported/WebInputEvent.cpp
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/third_party/WebKit/public/platform/WebGestureEvent.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/aura/gestures/gesture_recognizer_unittest.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/aura/window_event_dispatcher.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/aura/window_event_dispatcher.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/aura/window_event_dispatcher_unittest.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/chromeos/touch_exploration_controller.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/blink/blink_event_util.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_detection/filtered_gesture_provider.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_detection/filtered_gesture_provider.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_detection/gesture_event_data_packet.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_detection/gesture_event_data_packet.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_detection/touch_disposition_gesture_filter.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_detection/touch_disposition_gesture_filter.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_detection/touch_disposition_gesture_filter_unittest.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gesture_event_details.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gestures/gesture_provider_aura.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gestures/gesture_provider_aura.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gestures/gesture_recognizer.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gestures/gesture_recognizer_impl.cc
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gestures/gesture_recognizer_impl.h
[modify] https://crrev.com/1fa26761c2291efeec10eb180b4ee28fc5bc08b0/ui/events/gestures/gesture_recognizer_impl_mac.cc

Labels: -M-59 M-61
Status: Fixed (was: Started)
Will restart Field Trial to verify.

Sign in to add a comment