Chromium Code Reviews| 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_TILES_TILE_H_ | 5 #ifndef CC_TILES_TILE_H_ |
| 6 #define CC_TILES_TILE_H_ | 6 #define CC_TILES_TILE_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/memory/ref_counted.h" | 12 #include "base/memory/ref_counted.h" |
| 13 #include "cc/paint/draw_image.h" | |
| 13 #include "cc/raster/tile_task.h" | 14 #include "cc/raster/tile_task.h" |
| 14 #include "cc/tiles/tile_draw_info.h" | 15 #include "cc/tiles/tile_draw_info.h" |
| 15 #include "ui/gfx/geometry/rect.h" | 16 #include "ui/gfx/geometry/rect.h" |
| 16 #include "ui/gfx/geometry/size.h" | 17 #include "ui/gfx/geometry/size.h" |
| 17 | 18 |
| 18 namespace cc { | 19 namespace cc { |
| 19 | 20 |
| 20 class PictureLayerTiling; | 21 class PictureLayerTiling; |
| 21 class TileManager; | 22 class TileManager; |
| 22 | 23 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 106 | 107 |
| 107 bool HasRasterTask() const { return !!raster_task_.get(); } | 108 bool HasRasterTask() const { return !!raster_task_.get(); } |
| 108 | 109 |
| 109 void set_solid_color_analysis_performed(bool performed) { | 110 void set_solid_color_analysis_performed(bool performed) { |
| 110 is_solid_color_analysis_performed_ = performed; | 111 is_solid_color_analysis_performed_ = performed; |
| 111 } | 112 } |
| 112 bool is_solid_color_analysis_performed() const { | 113 bool is_solid_color_analysis_performed() const { |
| 113 return is_solid_color_analysis_performed_; | 114 return is_solid_color_analysis_performed_; |
| 114 } | 115 } |
| 115 | 116 |
| 117 void SetImageAnalysisResult( | |
| 118 std::vector<DrawImage> images_to_decode_before_raster, | |
| 119 std::vector<sk_sp<const SkImage>> images_to_checker); | |
| 120 bool is_image_analysis_performed() const { | |
| 121 return is_image_analysis_performed_; | |
| 122 } | |
| 123 const std::vector<DrawImage>& images_to_decode_before_raster() const { | |
| 124 return images_to_decode_before_raster_; | |
| 125 } | |
| 126 const std::vector<sk_sp<const SkImage>>& images_to_checker() const { | |
| 127 return images_to_checker_; | |
| 128 } | |
| 129 | |
| 130 bool set_raster_task_scheduled_with_checker_images(bool has_checker_images) { | |
| 131 bool previous_raster_task_scheduled_with_checker_images = | |
| 132 raster_task_scheduled_with_checker_images_; | |
| 133 raster_task_scheduled_with_checker_images_ = has_checker_images; | |
| 134 return previous_raster_task_scheduled_with_checker_images; | |
| 135 } | |
| 136 bool raster_task_scheduled_with_checker_images() const { | |
| 137 return raster_task_scheduled_with_checker_images_; | |
| 138 } | |
| 139 | |
| 116 const PictureLayerTiling* tiling() const { return tiling_; } | 140 const PictureLayerTiling* tiling() const { return tiling_; } |
| 117 void set_tiling(const PictureLayerTiling* tiling) { tiling_ = tiling; } | 141 void set_tiling(const PictureLayerTiling* tiling) { tiling_ = tiling; } |
| 118 | 142 |
| 119 private: | 143 private: |
| 120 friend class TileManager; | 144 friend class TileManager; |
| 121 friend class FakeTileManager; | 145 friend class FakeTileManager; |
| 122 friend class FakePictureLayerImpl; | 146 friend class FakePictureLayerImpl; |
| 123 | 147 |
| 124 // Methods called by by tile manager. | 148 // Methods called by by tile manager. |
| 125 Tile(TileManager* tile_manager, | 149 Tile(TileManager* tile_manager, |
| 126 const CreateInfo& info, | 150 const CreateInfo& info, |
| 127 int layer_id, | 151 int layer_id, |
| 128 int source_frame_number, | 152 int source_frame_number, |
| 129 int flags); | 153 int flags); |
| 130 | 154 |
| 131 TileManager* const tile_manager_; | 155 TileManager* const tile_manager_; |
| 132 const PictureLayerTiling* tiling_; | 156 const PictureLayerTiling* tiling_; |
| 133 const gfx::Rect content_rect_; | 157 const gfx::Rect content_rect_; |
| 134 const gfx::Rect enclosing_layer_rect_; | 158 const gfx::Rect enclosing_layer_rect_; |
| 135 const float contents_scale_; | 159 const float contents_scale_; |
| 136 | 160 |
| 161 // Image analysis is used partitions the images in a tile into 2 sets: | |
| 162 // 1) The images for which the decode must be available *before* the | |
| 163 // rasterization of a tile can be started. | |
| 164 // 2) The images which are checkered, i.e., will be skipped when rasterizing | |
| 165 // this tile. | |
| 166 // Note that these sets are only valid for tiles that are considered for | |
| 167 // rasterization with images. For instance, for low resolution tiles, all | |
| 168 // images are skipped. | |
| 169 bool is_image_analysis_performed_ = false; | |
| 170 std::vector<DrawImage> images_to_decode_before_raster_; | |
|
vmpstr
2017/04/18 00:20:00
Don't put this here, because it might be very memo
| |
| 171 std::vector<sk_sp<const SkImage>> images_to_checker_; | |
| 172 | |
| 137 TileDrawInfo draw_info_; | 173 TileDrawInfo draw_info_; |
| 138 | 174 |
| 139 const int layer_id_; | 175 const int layer_id_; |
| 140 const int source_frame_number_; | 176 const int source_frame_number_; |
| 141 const int flags_; | 177 const int flags_; |
| 142 const int tiling_i_index_; | 178 const int tiling_i_index_; |
| 143 const int tiling_j_index_; | 179 const int tiling_j_index_; |
| 144 bool required_for_activation_ : 1; | 180 bool required_for_activation_ : 1; |
| 145 bool required_for_draw_ : 1; | 181 bool required_for_draw_ : 1; |
| 146 bool is_solid_color_analysis_performed_ : 1; | 182 bool is_solid_color_analysis_performed_ : 1; |
| 147 | 183 |
| 148 Id id_; | 184 Id id_; |
| 149 | 185 |
| 150 // The rect bounding the changes in this Tile vs the previous tile it | 186 // The rect bounding the changes in this Tile vs the previous tile it |
| 151 // replaced. | 187 // replaced. |
| 152 gfx::Rect invalidated_content_rect_; | 188 gfx::Rect invalidated_content_rect_; |
| 153 // The |id_| of the Tile that was invalidated and replaced by this tile. | 189 // The |id_| of the Tile that was invalidated and replaced by this tile. |
| 154 Id invalidated_id_; | 190 Id invalidated_id_; |
| 155 | 191 |
| 156 unsigned scheduled_priority_; | 192 unsigned scheduled_priority_; |
| 193 | |
| 194 // Set to true if there is a raster task scheduled for this tile that will | |
| 195 // rasterize a resource with checker images. | |
| 196 bool raster_task_scheduled_with_checker_images_ = false; | |
| 157 scoped_refptr<TileTask> raster_task_; | 197 scoped_refptr<TileTask> raster_task_; |
| 158 | 198 |
| 159 DISALLOW_COPY_AND_ASSIGN(Tile); | 199 DISALLOW_COPY_AND_ASSIGN(Tile); |
| 160 }; | 200 }; |
| 161 | 201 |
| 162 } // namespace cc | 202 } // namespace cc |
| 163 | 203 |
| 164 #endif // CC_TILES_TILE_H_ | 204 #endif // CC_TILES_TILE_H_ |
| OLD | NEW |