|
|
DescriptionModify 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 #
Messages
Total messages: 51 (32 generated)
Description was changed from ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... ========== to ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
Description was changed from ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
Description was changed from ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate relative to Chrome framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation. Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
Description was changed from ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate relative to Chrome framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation. Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate relative to Chrome framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation. Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
ericrk@chromium.org changed reviewers: + ccameron@chromium.org, vmiura@chromium.org
Description was changed from ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate relative to Chrome framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation. Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... WebGL Liquid Face: http://alteredqualia.com/xg/examples/liquid_face.html 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate relative to Chrome framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
Description was changed from ========== 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. This seems to improve performance in a number of scenarios without regressing CA framerate relative to Chrome framerate. Tested for CA framerate regressions - the following cases starve CA when used with a simple glFlush. This solution (and the previous glFinish) successfully prevent CA starvation: Animometer - bouncing png images: https://trac.webkit.org/export/HEAD/trunk/PerformanceTests/Animometer/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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. This seems to improve performance in a number of scenarios while preventing starvation of CoreAnimation. 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/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
Patchset #1 (id:1) has been deleted
Description was changed from ========== 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. This seems to improve performance in a number of scenarios while preventing starvation of CoreAnimation. 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/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
Here's an attempt at a better swap throttling method than always calling glFinish. Give some pretty nice improvements. Still making sure it doesn't regress CA framerate (seems good, although I've seen a couple hard-to-reproduce hiccups). Chris, if you have any additional sites you'd like me to try out, let me know.
This lgtm % the polling issue. https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_t... File gpu/ipc/service/image_transport_surface_overlay_mac.mm (right): https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_t... gpu/ipc/service/image_transport_surface_overlay_mac.mm:167: previous_frame_fence_->ClientWait(); This will cause the CPU to spin up to 100% on Mac. See: https://bugs.chromium.org/p/chromium/issues/detail?id=611805#c1 Maybe we can just do a whilee (!passed) Sleep(1msec) 1msec is a long time, but this only happens when we have >16msec of GPU work, so it shouldn't hurt too much.
This lgtm % the polling issue. https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_t... File gpu/ipc/service/image_transport_surface_overlay_mac.mm (right): https://codereview.chromium.org/2028303002/diff/20001/gpu/ipc/service/image_t... gpu/ipc/service/image_transport_surface_overlay_mac.mm:167: previous_frame_fence_->ClientWait(); This will cause the CPU to spin up to 100% on Mac. See: https://bugs.chromium.org/p/chromium/issues/detail?id=611805#c1 Maybe we can just do a whilee (!passed) Sleep(1msec) 1msec is a long time, but this only happens when we have >16msec of GPU work, so it shouldn't hurt too much.
The CQ bit was checked by ericrk@chromium.org to run a CQ dry run
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
The CQ bit was unchecked by commit-bot@chromium.org
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_...)
Patchset #2 (id:40001) has been deleted
The CQ bit was checked by ericrk@chromium.org to run a CQ dry run
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
The CQ bit was unchecked by ericrk@chromium.org
Patchset #2 (id:60001) has been deleted
The CQ bit was checked by ericrk@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from ccameron@chromium.org Link to the patchset: https://codereview.chromium.org/2028303002/#ps80001 (title: "Poll the fence rather than busy waiting")
Added the polling pattern described - this seems to preserve most of the performance gains, and does reduce CPU usage in the wait scenarios.
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
The CQ bit was unchecked by ericrk@chromium.org
Moving the fence before the flush - this seems to perform slightly better (we still wait on the fence before flushing).
The CQ bit was checked by ericrk@chromium.org to run a CQ dry run
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
The CQ bit was unchecked by commit-bot@chromium.org
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_...)
The CQ bit was checked by ericrk@chromium.org to run a CQ dry run
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
The CQ bit was unchecked by ericrk@chromium.org
The CQ bit was checked by ericrk@chromium.org to run a CQ dry run
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
Patchset #4 (id:120001) has been deleted
The CQ bit was checked by ericrk@chromium.org
The CQ bit was unchecked by ericrk@chromium.org
The patchset sent to the CQ was uploaded after l-g-t-m from ccameron@chromium.org Link to the patchset: https://codereview.chromium.org/2028303002/#ps140001 (title: "Fix GL API scoping")
The CQ bit was checked by ericrk@chromium.org to run a CQ dry run
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
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
lgtm -- thanks for driving this
The CQ bit was checked by ericrk@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2028303002/140001
Message was sent while issue was closed.
Description was changed from ========== 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/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ==========
Message was sent while issue was closed.
Committed patchset #4 (id:140001)
Message was sent while issue was closed.
Description was changed from ========== 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/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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 ========== to ========== 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/develop... 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/1qK6LfDVMKydbKfkGEi1DuGoSqY2wPJAjPiAL1... 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} ==========
Message was sent while issue was closed.
Patchset 4 (id:??) landed as https://crrev.com/54e8e3975826ceb886a7e0d8ec07bb38b1192311 Cr-Commit-Position: refs/heads/master@{#397738} |