Descriptioncc: Use reverse spiral iterator in tiling eviction.
This patch optimizes the way we do eviction at the tiling level.
Instead of using sort, it uses a reverse spiral iterator to iterate
tiles in reverse order of what it would have been rasterized in.
The fundamental difference in results is that the tiling no longer
uses the tree priority to determine the order of tiles. In practice
this means that each tiling (and thus each layer) will return tiles
that it thinks should be evicted without regard for twin priority.
It's up to the tile manager priority queue to reconcile the two.
The tile manager priority queue already uses tree priority to
determine the tile priority and returns an appropriate (less
needed) tile. However, there are situations where this still
yields worse results than before. For instance if we're in
smoothness mode, and a pending tree has unshared tiles,
those used to be returned first (since active tree priority
is inf). However, now the pending tree will return the tile
that is furthest away from the pending tree viewport, which
means it might return a tile that is shared before an unshared
one. I personally think this is acceptable, since we're gaining
quite a bit of a performance win here (8x-10x on
cc_perftests with "*Eviction*" filter).
R=reveman, danakj
Patch Set 1 #
Total comments: 9
Patch Set 2 : update #
Total comments: 4
Patch Set 3 : #
Total comments: 5
Messages
Total messages: 14 (2 generated)
|