Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Issue 2028303002: Modify ImageTransportSurfaceOverlayMac to allow pipelining (Closed)

Created:
4 years, 6 months ago by ericrk
Modified:
4 years, 6 months ago
Reviewers:
vmiura, ccameron
CC:
chromium-reviews, piman+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Modify ImageTransportSurfaceOverlayMac to allow pipelining This change allows 1 additional frame of pipelining in ImageTransportSurfaceOverlayMac by switching from a glFinish based approach to a glFence based one. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) appear to successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/developer.html?test-interval=20&display=progress-bar&controller=adaptive&frame-rate=50&kalman-process-error=1&kalman-measurement-error=4&time-measurement=performance&suite-name=SVGsuite&test-name=SVGbouncingPNGimages&complexity=200 Both glFinish and glFence produce ~50 fps in CA/Chrome. WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html For liquid face, note that with the glFinish, CA framerate is slightly higher than Chrome reported framerate (20 vs 15) - with the new approach, they match more closely (16 vs 15). This may be a negative, but is still much better than the starvation which is seen with glFlush (5 vs 15). Improvements: Telemetry smoothness.top_25_smooth: This change produces good improvements in first_gesture_scroll_update_latency, mean_input_event_latency, and mean_main_thread_scroll_latency, without any significant regressions. See: https://drive.google.com/file/d/0B2nwXDxTDpGGU215X2xYTE9Bdnc/view?usp=sharing Animometer Benchmark: This change produces good improvements in a number of animometer benchmarks. See: https://docs.google.com/spreadsheets/d/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1CCUW-4/edit?usp=sharing CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/54e8e3975826ceb886a7e0d8ec07bb38b1192311 Cr-Commit-Position: refs/heads/master@{#397738}

Patch Set 1 : #

Total comments: 1

Patch Set 2 : Poll the fence rather than busy waiting #

Patch Set 3 : Fence before flush seems slightly better #

Patch Set 4 : Fix GL API scoping #

Unified diffs Side-by-side diffs Delta from patch set Stats (+53 lines, -4 lines) Patch
M gpu/ipc/service/image_transport_surface_overlay_mac.h View 1 2 3 2 chunks +10 lines, -0 lines 0 comments Download
M gpu/ipc/service/image_transport_surface_overlay_mac.mm View 1 2 3 2 chunks +43 lines, -4 lines 0 comments Download

Messages

Total messages: 51 (32 generated)
ericrk
Here's an attempt at a better swap throttling method than always calling glFinish. Give some ...
4 years, 6 months ago (2016-06-01 21:21:43 UTC) #10
ccameron
This lgtm % the polling issue. https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_transport_surface_overlay_mac.mm File gpu/ipc/service/image_transport_surface_overlay_mac.mm (right): https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_transport_surface_overlay_mac.mm#newcode167 gpu/ipc/service/image_transport_surface_overlay_mac.mm:167: previous_frame_fence_->ClientWait(); This will ...
4 years, 6 months ago (2016-06-01 21:26:37 UTC) #11
ccameron
This lgtm % the polling issue. https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_transport_surface_overlay_mac.mm File gpu/ipc/service/image_transport_surface_overlay_mac.mm (right): https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_transport_surface_overlay_mac.mm#newcode167 gpu/ipc/service/image_transport_surface_overlay_mac.mm:167: previous_frame_fence_->ClientWait(); This will ...
4 years, 6 months ago (2016-06-01 21:26:37 UTC) #12
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/40001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2028303002/40001
4 years, 6 months ago (2016-06-01 23:47:19 UTC) #14
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: mac_chromium_rel_ng on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/237415)
4 years, 6 months ago (2016-06-02 00:05:42 UTC) #16
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/60001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2028303002/60001
4 years, 6 months ago (2016-06-02 00:07:35 UTC) #19
ericrk
Added the polling pattern described - this seems to preserve most of the performance gains, ...
4 years, 6 months ago (2016-06-02 00:19:07 UTC) #24
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2028303002/80001
4 years, 6 months ago (2016-06-02 00:19:50 UTC) #25
ericrk
Moving the fence before the flush - this seems to perform slightly better (we still ...
4 years, 6 months ago (2016-06-02 16:27:29 UTC) #27
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2028303002/100001
4 years, 6 months ago (2016-06-02 16:28:07 UTC) #29
commit-bot: I haz the power
Dry run: Try jobs failed on following builders: mac_chromium_rel_ng on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/237969)
4 years, 6 months ago (2016-06-02 17:40:23 UTC) #31
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2028303002/100001
4 years, 6 months ago (2016-06-02 17:48:12 UTC) #33
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/120001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2028303002/120001
4 years, 6 months ago (2016-06-02 19:38:39 UTC) #36
commit-bot: I haz the power
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/140001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/2028303002/140001
4 years, 6 months ago (2016-06-02 20:43:57 UTC) #42
commit-bot: I haz the power
Dry run: This issue passed the CQ dry run.
4 years, 6 months ago (2016-06-03 00:12:12 UTC) #44
ccameron
lgtm -- thanks for driving this
4 years, 6 months ago (2016-06-03 17:00:10 UTC) #45
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/140001
4 years, 6 months ago (2016-06-03 17:11:34 UTC) #47
commit-bot: I haz the power
Committed patchset #4 (id:140001)
4 years, 6 months ago (2016-06-03 17:18:35 UTC) #49
commit-bot: I haz the power
4 years, 6 months ago (2016-06-03 17:20:01 UTC) #51
Message was sent while issue was closed.
Patchset 4 (id:??) landed as
https://crrev.com/54e8e3975826ceb886a7e0d8ec07bb38b1192311
Cr-Commit-Position: refs/heads/master@{#397738}

Powered by Google App Engine
This is Rietveld 408576698