| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CC_TILE_PRIORTY_H_ | 5 #ifndef CC_TILE_PRIORTY_H_ |
| 6 #define CC_TILE_PRIORTY_H_ | 6 #define CC_TILE_PRIORTY_H_ |
| 7 | 7 |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "cc/picture_pile.h" | 9 #include "cc/picture_pile.h" |
| 10 #include "cc/tile_priority.h" | |
| 11 #include "ui/gfx/rect.h" | 10 #include "ui/gfx/rect.h" |
| 12 #include "ui/gfx/size.h" | 11 #include "ui/gfx/size.h" |
| 13 | 12 |
| 14 namespace cc { | 13 namespace cc { |
| 15 | 14 |
| 16 struct TilePriority { | 15 struct TilePriority { |
| 16 // Set to true for tiles that should be favored during, for example, |
| 17 // scrolls. |
| 18 bool on_primary_tree; |
| 19 |
| 17 // A given layer may have multiple tilings, of differing quality. | 20 // A given layer may have multiple tilings, of differing quality. |
| 18 // would_be_drawn is set for the tiles that are visible that would be | 21 // would_be_drawn is set for the tiles that are visible that would be |
| 19 // drawn if they were chosen. | 22 // drawn if they were chosen. |
| 20 bool would_be_drawn; | 23 bool would_be_drawn; |
| 21 | 24 |
| 22 // Set to true for tiles that should be favored during, for example, | 25 // We expect it to be useful soon. |
| 23 // scrolls. | 26 bool nice_to_have; |
| 24 bool on_primary_tree; | |
| 25 | 27 |
| 26 // Used to prefer tiles near to the viewport. | 28 // Used to prefer tiles near to the viewport. |
| 27 float distance_to_viewport; | 29 float distance_to_viewport; |
| 28 | 30 |
| 29 // TODO(enne): some metric that penalizes blurriness. | 31 // TODO(enne): some metric that penalizes blurriness. |
| 30 }; | 32 }; |
| 31 | 33 |
| 34 enum TileMemoryLimitPolicy { |
| 35 // Nothing. |
| 36 ALLOW_NOTHING, |
| 37 |
| 38 // Use as little as possible. |
| 39 ALLOW_ONLY_REQUIRED, // On primary tree, would be drawn. |
| 40 |
| 41 // Use as little as possible. |
| 42 ALLOW_NICE_TO_HAVE, // On either tree, nice to have |
| 43 |
| 44 // Use as much memory, up to memory size. |
| 45 ALLOW_ANYTHING, |
| 46 }; |
| 47 |
| 48 class GlobalStateThatImpactsTilePriority { |
| 49 public: |
| 50 GlobalStateThatImpactsTilePriority() |
| 51 : memory_limit_policy(ALLOW_NOTHING) |
| 52 , memory_limit_in_bytes(0) |
| 53 , smoothness_takes_priority(false) |
| 54 , pending_tree_frame_number(-1) |
| 55 , active_tree_frame_number(-1) { |
| 56 } |
| 57 |
| 58 TileMemoryLimitPolicy memory_limit_policy; |
| 59 |
| 60 size_t memory_limit_in_bytes; |
| 61 |
| 62 // Set when scrolling. |
| 63 bool smoothness_takes_priority; |
| 64 |
| 65 // Use -1 if no tree. |
| 66 int pending_tree_frame_number; |
| 67 int active_tree_frame_number; |
| 68 }; |
| 69 |
| 32 class TilePriorityComparator { | 70 class TilePriorityComparator { |
| 33 public: | 71 public: |
| 34 TilePriorityComparator(bool currently_scrolling) | 72 TilePriorityComparator(GlobalStateThatImpactsTilePriority& global_state) |
| 35 : currently_scrolling_(currently_scrolling) {} | 73 : global_state_(global_state) {} |
| 36 | 74 |
| 37 int compare(const TilePriority& a, const TilePriority& b) { | 75 int compare(const TilePriority& a, const TilePriority& b) { |
| 38 // TODO(nduca,enne): Implement a comparator using the attributes here. | 76 // TODO(nduca,enne): Implement a comparator using the attributes here. |
| 39 return 0; | 77 return 0; |
| 40 } | 78 } |
| 41 | 79 |
| 42 private: | 80 private: |
| 43 bool currently_scrolling_; | 81 GlobalStateThatImpactsTilePriority global_state_; |
| 44 }; | 82 }; |
| 45 | 83 |
| 46 } // namespace cc | 84 } // namespace cc |
| 47 #endif | 85 #endif |
| OLD | NEW |