| 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 #include "cc/layers/picture_layer_impl.h" | 5 #include "cc/layers/picture_layer_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 | 9 |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 SK_MScalar1 / max_contents_scale); | 147 SK_MScalar1 / max_contents_scale); |
| 148 gfx::Size scaled_content_bounds = | 148 gfx::Size scaled_content_bounds = |
| 149 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), max_contents_scale)); | 149 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), max_contents_scale)); |
| 150 | 150 |
| 151 gfx::Rect scaled_visible_content_rect = | 151 gfx::Rect scaled_visible_content_rect = |
| 152 gfx::ScaleToEnclosingRect(visible_content_rect(), max_contents_scale); | 152 gfx::ScaleToEnclosingRect(visible_content_rect(), max_contents_scale); |
| 153 scaled_visible_content_rect.Intersect(gfx::Rect(scaled_content_bounds)); | 153 scaled_visible_content_rect.Intersect(gfx::Rect(scaled_content_bounds)); |
| 154 | 154 |
| 155 SharedQuadState* shared_quad_state = | 155 SharedQuadState* shared_quad_state = |
| 156 render_pass->CreateAndAppendSharedQuadState(); | 156 render_pass->CreateAndAppendSharedQuadState(); |
| 157 PopulateSharedQuadState(shared_quad_state); | |
| 158 shared_quad_state->SetAll(scaled_draw_transform, | 157 shared_quad_state->SetAll(scaled_draw_transform, |
| 159 scaled_content_bounds, | 158 scaled_content_bounds, |
| 160 scaled_visible_content_rect, | 159 scaled_visible_content_rect, |
| 161 draw_properties().clip_rect, | 160 draw_properties().clip_rect, |
| 162 draw_properties().is_clipped, | 161 draw_properties().is_clipped, |
| 163 draw_properties().opacity, | 162 draw_properties().opacity, |
| 164 blend_mode(), | 163 blend_mode(), |
| 165 sorting_context_id_); | 164 sorting_context_id_); |
| 166 | 165 |
| 167 gfx::Rect rect = scaled_visible_content_rect; | |
| 168 | |
| 169 if (current_draw_mode_ == DRAW_MODE_RESOURCELESS_SOFTWARE) { | 166 if (current_draw_mode_ == DRAW_MODE_RESOURCELESS_SOFTWARE) { |
| 170 AppendDebugBorderQuad( | 167 AppendDebugBorderQuad( |
| 171 render_pass, | 168 render_pass, |
| 172 scaled_content_bounds, | 169 scaled_content_bounds, |
| 173 shared_quad_state, | 170 shared_quad_state, |
| 174 append_quads_data, | 171 append_quads_data, |
| 175 DebugColors::DirectPictureBorderColor(), | 172 DebugColors::DirectPictureBorderColor(), |
| 176 DebugColors::DirectPictureBorderWidth(layer_tree_impl())); | 173 DebugColors::DirectPictureBorderWidth(layer_tree_impl())); |
| 177 | 174 |
| 178 gfx::Rect geometry_rect = rect; | 175 gfx::Rect geometry_rect = scaled_visible_content_rect; |
| 179 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); | 176 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); |
| 180 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( | 177 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( |
| 181 geometry_rect, scaled_draw_transform); | 178 geometry_rect, scaled_draw_transform); |
| 182 if (visible_geometry_rect.IsEmpty()) | 179 if (visible_geometry_rect.IsEmpty()) |
| 183 return; | 180 return; |
| 184 | 181 |
| 185 gfx::Size texture_size = rect.size(); | 182 gfx::Size texture_size = scaled_visible_content_rect.size(); |
| 186 gfx::RectF texture_rect = gfx::RectF(texture_size); | 183 gfx::RectF texture_rect = gfx::RectF(texture_size); |
| 187 gfx::Rect quad_content_rect = rect; | 184 gfx::Rect quad_content_rect = scaled_visible_content_rect; |
| 188 | 185 |
| 189 PictureDrawQuad* quad = | 186 PictureDrawQuad* quad = |
| 190 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 187 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
| 191 quad->SetNew(shared_quad_state, | 188 quad->SetNew(shared_quad_state, |
| 192 geometry_rect, | 189 geometry_rect, |
| 193 opaque_rect, | 190 opaque_rect, |
| 194 visible_geometry_rect, | 191 visible_geometry_rect, |
| 195 texture_rect, | 192 texture_rect, |
| 196 texture_size, | 193 texture_size, |
| 197 RGBA_8888, | 194 RGBA_8888, |
| 198 quad_content_rect, | 195 quad_content_rect, |
| 199 max_contents_scale, | 196 max_contents_scale, |
| 200 pile_); | 197 pile_); |
| 201 append_quads_data->num_missing_tiles++; | 198 append_quads_data->num_missing_tiles++; |
| 202 return; | 199 return; |
| 203 } | 200 } |
| 204 | 201 |
| 205 AppendDebugBorderQuad( | 202 AppendDebugBorderQuad( |
| 206 render_pass, scaled_content_bounds, shared_quad_state, append_quads_data); | 203 render_pass, scaled_content_bounds, shared_quad_state, append_quads_data); |
| 207 | 204 |
| 208 if (ShowDebugBorders()) { | 205 if (ShowDebugBorders()) { |
| 209 for (PictureLayerTilingSet::CoverageIterator iter( | 206 for (PictureLayerTilingSet::CoverageIterator iter( |
| 210 tilings_.get(), max_contents_scale, rect, ideal_contents_scale_); | 207 tilings_.get(), |
| 208 max_contents_scale, |
| 209 scaled_visible_content_rect, |
| 210 ideal_contents_scale_); |
| 211 iter; | 211 iter; |
| 212 ++iter) { | 212 ++iter) { |
| 213 SkColor color; | 213 SkColor color; |
| 214 float width; | 214 float width; |
| 215 if (*iter && iter->IsReadyToDraw()) { | 215 if (*iter && iter->IsReadyToDraw()) { |
| 216 ManagedTileState::TileVersion::Mode mode = | 216 ManagedTileState::TileVersion::Mode mode = |
| 217 iter->GetTileVersionForDrawing().mode(); | 217 iter->GetTileVersionForDrawing().mode(); |
| 218 if (mode == ManagedTileState::TileVersion::SOLID_COLOR_MODE) { | 218 if (mode == ManagedTileState::TileVersion::SOLID_COLOR_MODE) { |
| 219 color = DebugColors::SolidColorTileBorderColor(); | 219 color = DebugColors::SolidColorTileBorderColor(); |
| 220 width = DebugColors::SolidColorTileBorderWidth(layer_tree_impl()); | 220 width = DebugColors::SolidColorTileBorderWidth(layer_tree_impl()); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 250 width); | 250 width); |
| 251 } | 251 } |
| 252 } | 252 } |
| 253 | 253 |
| 254 // Keep track of the tilings that were used so that tilings that are | 254 // Keep track of the tilings that were used so that tilings that are |
| 255 // unused can be considered for removal. | 255 // unused can be considered for removal. |
| 256 std::vector<PictureLayerTiling*> seen_tilings; | 256 std::vector<PictureLayerTiling*> seen_tilings; |
| 257 | 257 |
| 258 size_t missing_tile_count = 0u; | 258 size_t missing_tile_count = 0u; |
| 259 size_t on_demand_missing_tile_count = 0u; | 259 size_t on_demand_missing_tile_count = 0u; |
| 260 for (PictureLayerTilingSet::CoverageIterator iter( | 260 for (PictureLayerTilingSet::CoverageIterator iter(tilings_.get(), |
| 261 tilings_.get(), max_contents_scale, rect, ideal_contents_scale_); | 261 max_contents_scale, |
| 262 scaled_visible_content_rect, |
| 263 ideal_contents_scale_); |
| 262 iter; | 264 iter; |
| 263 ++iter) { | 265 ++iter) { |
| 264 gfx::Rect geometry_rect = iter.geometry_rect(); | 266 gfx::Rect geometry_rect = iter.geometry_rect(); |
| 265 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( | 267 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( |
| 266 geometry_rect, scaled_draw_transform); | 268 geometry_rect, scaled_draw_transform); |
| 267 if (visible_geometry_rect.IsEmpty()) | 269 if (visible_geometry_rect.IsEmpty()) |
| 268 continue; | 270 continue; |
| 269 | 271 |
| 270 append_quads_data->visible_content_area += | 272 append_quads_data->visible_content_area += |
| 271 visible_geometry_rect.width() * visible_geometry_rect.height(); | 273 visible_geometry_rect.width() * visible_geometry_rect.height(); |
| (...skipping 1357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1629 return iterator_index_ < iterators_.size(); | 1631 return iterator_index_ < iterators_.size(); |
| 1630 } | 1632 } |
| 1631 | 1633 |
| 1632 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( | 1634 bool PictureLayerImpl::LayerEvictionTileIterator::IsCorrectType( |
| 1633 PictureLayerTiling::TilingEvictionTileIterator* it) const { | 1635 PictureLayerTiling::TilingEvictionTileIterator* it) const { |
| 1634 return it->get_type() == iteration_stage_ && | 1636 return it->get_type() == iteration_stage_ && |
| 1635 (**it)->required_for_activation() == required_for_activation_; | 1637 (**it)->required_for_activation() == required_for_activation_; |
| 1636 } | 1638 } |
| 1637 | 1639 |
| 1638 } // namespace cc | 1640 } // namespace cc |
| OLD | NEW |