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 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 gfx::Transform scaled_draw_transform = draw_transform(); | 154 gfx::Transform scaled_draw_transform = draw_transform(); |
155 scaled_draw_transform.Scale(SK_MScalar1 / max_contents_scale, | 155 scaled_draw_transform.Scale(SK_MScalar1 / max_contents_scale, |
156 SK_MScalar1 / max_contents_scale); | 156 SK_MScalar1 / max_contents_scale); |
157 gfx::Size scaled_content_bounds = | 157 gfx::Size scaled_content_bounds = |
158 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), max_contents_scale)); | 158 gfx::ToCeiledSize(gfx::ScaleSize(content_bounds(), max_contents_scale)); |
159 | 159 |
160 gfx::Rect scaled_visible_content_rect = | 160 gfx::Rect scaled_visible_content_rect = |
161 gfx::ScaleToEnclosingRect(visible_content_rect(), max_contents_scale); | 161 gfx::ScaleToEnclosingRect(visible_content_rect(), max_contents_scale); |
162 scaled_visible_content_rect.Intersect(gfx::Rect(scaled_content_bounds)); | 162 scaled_visible_content_rect.Intersect(gfx::Rect(scaled_content_bounds)); |
163 | 163 |
| 164 Occlusion occlusion = |
| 165 occlusion_tracker.GetCurrentOcclusionForLayer(scaled_draw_transform); |
| 166 |
164 SharedQuadState* shared_quad_state = | 167 SharedQuadState* shared_quad_state = |
165 render_pass->CreateAndAppendSharedQuadState(); | 168 render_pass->CreateAndAppendSharedQuadState(); |
166 shared_quad_state->SetAll(scaled_draw_transform, | 169 shared_quad_state->SetAll(scaled_draw_transform, |
167 scaled_content_bounds, | 170 scaled_content_bounds, |
168 scaled_visible_content_rect, | 171 scaled_visible_content_rect, |
169 draw_properties().clip_rect, | 172 draw_properties().clip_rect, |
170 draw_properties().is_clipped, | 173 draw_properties().is_clipped, |
171 draw_properties().opacity, | 174 draw_properties().opacity, |
172 blend_mode(), | 175 blend_mode(), |
173 sorting_context_id_); | 176 sorting_context_id_); |
174 | 177 |
175 if (current_draw_mode_ == DRAW_MODE_RESOURCELESS_SOFTWARE) { | 178 if (current_draw_mode_ == DRAW_MODE_RESOURCELESS_SOFTWARE) { |
176 AppendDebugBorderQuad( | 179 AppendDebugBorderQuad( |
177 render_pass, | 180 render_pass, |
178 scaled_content_bounds, | 181 scaled_content_bounds, |
179 shared_quad_state, | 182 shared_quad_state, |
180 append_quads_data, | 183 append_quads_data, |
181 DebugColors::DirectPictureBorderColor(), | 184 DebugColors::DirectPictureBorderColor(), |
182 DebugColors::DirectPictureBorderWidth(layer_tree_impl())); | 185 DebugColors::DirectPictureBorderWidth(layer_tree_impl())); |
183 | 186 |
184 gfx::Rect geometry_rect = scaled_visible_content_rect; | 187 gfx::Rect geometry_rect = scaled_visible_content_rect; |
185 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); | 188 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); |
186 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( | 189 gfx::Rect visible_geometry_rect = |
187 geometry_rect, scaled_draw_transform); | 190 occlusion.GetUnoccludedContentRect(geometry_rect); |
188 if (visible_geometry_rect.IsEmpty()) | 191 if (visible_geometry_rect.IsEmpty()) |
189 return; | 192 return; |
190 | 193 |
191 gfx::Size texture_size = scaled_visible_content_rect.size(); | 194 gfx::Size texture_size = scaled_visible_content_rect.size(); |
192 gfx::RectF texture_rect = gfx::RectF(texture_size); | 195 gfx::RectF texture_rect = gfx::RectF(texture_size); |
193 gfx::Rect quad_content_rect = scaled_visible_content_rect; | 196 gfx::Rect quad_content_rect = scaled_visible_content_rect; |
194 | 197 |
195 PictureDrawQuad* quad = | 198 PictureDrawQuad* quad = |
196 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); | 199 render_pass->CreateAndAppendDrawQuad<PictureDrawQuad>(); |
197 quad->SetNew(shared_quad_state, | 200 quad->SetNew(shared_quad_state, |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 size_t missing_tile_count = 0u; | 275 size_t missing_tile_count = 0u; |
273 size_t on_demand_missing_tile_count = 0u; | 276 size_t on_demand_missing_tile_count = 0u; |
274 for (PictureLayerTilingSet::CoverageIterator iter(tilings_.get(), | 277 for (PictureLayerTilingSet::CoverageIterator iter(tilings_.get(), |
275 max_contents_scale, | 278 max_contents_scale, |
276 scaled_visible_content_rect, | 279 scaled_visible_content_rect, |
277 ideal_contents_scale_); | 280 ideal_contents_scale_); |
278 iter; | 281 iter; |
279 ++iter) { | 282 ++iter) { |
280 gfx::Rect geometry_rect = iter.geometry_rect(); | 283 gfx::Rect geometry_rect = iter.geometry_rect(); |
281 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); | 284 gfx::Rect opaque_rect = contents_opaque() ? geometry_rect : gfx::Rect(); |
282 gfx::Rect visible_geometry_rect = occlusion_tracker.UnoccludedContentRect( | 285 gfx::Rect visible_geometry_rect = |
283 geometry_rect, scaled_draw_transform); | 286 occlusion.GetUnoccludedContentRect(geometry_rect); |
284 if (visible_geometry_rect.IsEmpty()) | 287 if (visible_geometry_rect.IsEmpty()) |
285 continue; | 288 continue; |
286 | 289 |
287 append_quads_data->visible_content_area += | 290 append_quads_data->visible_content_area += |
288 visible_geometry_rect.width() * visible_geometry_rect.height(); | 291 visible_geometry_rect.width() * visible_geometry_rect.height(); |
289 | 292 |
290 bool has_draw_quad = false; | 293 bool has_draw_quad = false; |
291 if (*iter && iter->IsReadyToDraw()) { | 294 if (*iter && iter->IsReadyToDraw()) { |
292 const ManagedTileState::TileVersion& tile_version = | 295 const ManagedTileState::TileVersion& tile_version = |
293 iter->GetTileVersionForDrawing(); | 296 iter->GetTileVersionForDrawing(); |
(...skipping 1464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1758 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange(); | 1761 PictureLayerTilingSet::TilingRange tiling_range = CurrentTilingRange(); |
1759 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start; | 1762 size_t current_tiling_range_offset = current_tiling_ - tiling_range.start; |
1760 return tiling_range.end - 1 - current_tiling_range_offset; | 1763 return tiling_range.end - 1 - current_tiling_range_offset; |
1761 } | 1764 } |
1762 } | 1765 } |
1763 NOTREACHED(); | 1766 NOTREACHED(); |
1764 return 0; | 1767 return 0; |
1765 } | 1768 } |
1766 | 1769 |
1767 } // namespace cc | 1770 } // namespace cc |
OLD | NEW |