Content Evictor is uselessly evicting content that it will un-evict in the next step |
|||||||
Issue descriptionScenario: Lets assume there are 2 windows (A & B), each VISIBLE with web content. Minimize them both to set their occlusion state to HIDDEN. This allows the content evictor to evict content and release some memory pressure. In this scenario evicting content from just one window is enough to relieve the memory pressure, so it evicts content only from Window A. Now when you make all the windows visible (like in Chrome OS's overview mode), the occlusion tracker sets the occlusion state of each window to VISIBLE _one_by_one_. It first sends an update to window A which triggers the generation of the web content for A. At the same time due to addition of a frame, the content evictor needs to free up memory again and decides to evict the frame for window B since it is still HIDDEN. In the next step the occlusion tracker sends an update to Window B to set it to VISIBLE which results in the generation of its frame. This eviction and then regeneration of the frame for Window B is a bug and has a significant performance impact and results in jank when there are several windows. One way to solve this would be to have a way to Pause content eviction similar to how we can pause OcclusionTracker to have a 2 phase commit like system.
,
Dec 3
,
Dec 3
,
Dec 3
,
Dec 3
,
Dec 4
,
Dec 5
To clarify, is this about the FrameEvictor https://cs.chromium.org/chromium/src/components/viz/client/frame_evictor.h?
,
Dec 7
|
|||||||
►
Sign in to add a comment |
|||||||
Comment 1 by malaykeshav@chromium.org
, Dec 3