Issue metadata
Sign in to add a comment
|
TileManager does not call NotifyReadyToDraw in ChromeOS overview mode |
||||||||||||||||||||||
Issue description
If you open 6 - 8 windows on a minnie and toggle overview mode continuously the UI will hang.
At some point TileManager hits the task limit and has more tiles to schedule. Later when all scheduled tiles finish, the only tiles left are solid color tiles so CheckIfMoreTilesNeedToBePrepared returns after processing these. NotifyReadyToDraw isn't scheduled in the previous IsReadyToDraw because one of the solid color tiles is required for draw.
This can be fixed in a couple of ways:
1. Do not early out on task limit in AssignGpuMemoryToTiles so that all solid color tiles are processed.
2. If there are no tiles to process in CheckIfMoreTilesNeedToBePrepared but there were ready to activate/draw solid color tiles, schedule ready to activate/draw checks.
It's possible the same issue is responsible for missing ready to activate signal causing renderer hangs - issue 622080
Log from device:
TileManager::AssignGpuMemory over task limit
TileManager::AssignGpuMemory skipping tile { tile: { id: 244769, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244808, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244770, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244809, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244771, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244810, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244775, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244776, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244777, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244778, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory skipping tile { tile: { id: 244779, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AreRequiredTilesReadyToDraw all pass
TileManager::AreRequiredTilesReadyToDraw process tile { tile: { id: 244775, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory process tile { tile: { id: 244775, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory solid color
TileManager::AssignGpuMemory process tile { tile: { id: 244776, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory solid color
TileManager::AssignGpuMemory process tile { tile: { id: 244777, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory solid color
TileManager::AssignGpuMemory process tile { tile: { id: 244778, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory solid color
TileManager::AssignGpuMemory process tile { tile: { id: 244779, rfa: 0, rfd: 1 }, priority: { bin: 0, dtv: 0.000000 }, occluded: 0, img_only: 0 }
TileManager::AssignGpuMemory solid color
< Compositor hangs here - begin frames keep coming in but no ready to draw signal >
,
Jan 19 2017
Requesting a merge to M56. This also fixes internal bug https://code.google.com/p/chrome-os-partner/issues/detail?id=60938
,
Jan 19 2017
This bug requires manual review: We are only 11 days from stable. Please contact the milestone owner if you have questions. Owners: amineer@(clank), cmasso@(bling), gkihumba@(cros), bustamante@(desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Jan 20 2017
gkihumba@ this bug affects minnie and some other devices (see https://code.google.com/p/chrome-os-partner/issues/detail?id=60938) It reproduces on chrome os overview mode easily but probably affects all platforms in some way.
,
Jan 24 2017
,
Jan 24 2017
,
Jan 24 2017
briannorris@ has verified the fix for the internal bug.
,
Jan 24 2017
This bug requires manual review: We are only 6 days from stable. Please contact the milestone owner if you have questions. Owners: amineer@(clank), cmasso@(bling), gkihumba@(cros), bustamante@(desktop) For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
,
Jan 24 2017
,
Jan 24 2017
,
Jan 24 2017
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/94b48a573af698ed61f2da01c6038557ce3c7f26 commit 94b48a573af698ed61f2da01c6038557ce3c7f26 Author: Sunny Sachanandani <sunnyps@chromium.org> Date: Tue Jan 24 23:38:14 2017 cc: Fix missing ready to activate/draw callbacks. Missing NotifyReadyToActivate/Draw can cause the renderer/browser compositor to hang. This shows as a ChromeOS hang when overview mode is toggled continuously and as a renderer hang crash report. It's possible for TileManager to get into a state where it hits the raster task limit and the only tiles left after running a set of tasks are solid color tiles which are required for activate/draw. These solid color tiles are marked as ready to draw in AssignGpuMemoryToTiles and therefore ready to activate/draw callbacks aren't scheduled. It is not known how TileManager gets into this state except that certain tiling sets are marked as done thereby removing non-solid color tiles between PrepareTiles and the ready to activate/draw checks. R=vmpstr@chromium.org BUG= 679970 ,622080 TEST=TileManagerTest.AllWorkFinished CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel Review-Url: https://codereview.chromium.org/2636323002 Cr-Commit-Position: refs/heads/master@{#444204} (cherry picked from commit a8ad82c005ae878c448ae500b3f7b5e3a880ad56) Review-Url: https://codereview.chromium.org/2654643004 . Cr-Commit-Position: refs/branch-heads/2924@{#858} Cr-Branched-From: 3a87aecc31cd1ffe751dd72c04e5a96a1fc8108a-refs/heads/master@{#433059} [modify] https://crrev.com/94b48a573af698ed61f2da01c6038557ce3c7f26/cc/tiles/tile_manager.cc [modify] https://crrev.com/94b48a573af698ed61f2da01c6038557ce3c7f26/cc/tiles/tile_manager.h [modify] https://crrev.com/94b48a573af698ed61f2da01c6038557ce3c7f26/cc/tiles/tile_manager_unittest.cc
,
Jan 27 2017
Issue 684812 has been merged into this issue.
,
Feb 21 2017
Issue 685231 has been merged into this issue.
,
Mar 10 2017
Merge request was reviewed. Removing labels to clear from chromedash.
,
Apr 17 2017
,
May 30 2017
,
Aug 1 2017
,
Oct 14 2017
|
|||||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||||
Comment 1 by bugdroid1@chromium.org
, Jan 18 2017