| 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 | 8 |
| 9 #include "base/time/time.h" | 9 #include "base/time/time.h" |
| 10 #include "cc/base/math_util.h" | 10 #include "cc/base/math_util.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 if (quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data)) | 220 if (quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data)) |
| 221 append_quads_data->num_missing_tiles++; | 221 append_quads_data->num_missing_tiles++; |
| 222 } | 222 } |
| 223 | 223 |
| 224 append_quads_data->had_incomplete_tile = true; | 224 append_quads_data->had_incomplete_tile = true; |
| 225 continue; | 225 continue; |
| 226 } | 226 } |
| 227 | 227 |
| 228 const ManagedTileState::TileVersion& tile_version = | 228 const ManagedTileState::TileVersion& tile_version = |
| 229 iter->GetTileVersionForDrawing(); | 229 iter->GetTileVersionForDrawing(); |
| 230 scoped_ptr<DrawQuad> draw_quad; |
| 230 switch (tile_version.mode()) { | 231 switch (tile_version.mode()) { |
| 231 case ManagedTileState::TileVersion::RESOURCE_MODE: { | 232 case ManagedTileState::TileVersion::RESOURCE_MODE: { |
| 232 gfx::RectF texture_rect = iter.texture_rect(); | 233 gfx::RectF texture_rect = iter.texture_rect(); |
| 233 gfx::Rect opaque_rect = iter->opaque_rect(); | 234 gfx::Rect opaque_rect = iter->opaque_rect(); |
| 234 opaque_rect.Intersect(content_rect); | 235 opaque_rect.Intersect(content_rect); |
| 235 | 236 |
| 236 if (iter->contents_scale() != ideal_contents_scale_) | 237 if (iter->contents_scale() != ideal_contents_scale_) |
| 237 append_quads_data->had_incomplete_tile = true; | 238 append_quads_data->had_incomplete_tile = true; |
| 238 | 239 |
| 239 scoped_ptr<TileDrawQuad> quad = TileDrawQuad::Create(); | 240 scoped_ptr<TileDrawQuad> quad = TileDrawQuad::Create(); |
| 240 quad->SetNew(shared_quad_state, | 241 quad->SetNew(shared_quad_state, |
| 241 geometry_rect, | 242 geometry_rect, |
| 242 opaque_rect, | 243 opaque_rect, |
| 243 tile_version.get_resource_id(), | 244 tile_version.get_resource_id(), |
| 244 texture_rect, | 245 texture_rect, |
| 245 iter.texture_size(), | 246 iter.texture_size(), |
| 246 tile_version.contents_swizzled()); | 247 tile_version.contents_swizzled()); |
| 247 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 248 draw_quad = quad.PassAs<DrawQuad>(); |
| 248 break; | 249 break; |
| 249 } | 250 } |
| 250 case ManagedTileState::TileVersion::PICTURE_PILE_MODE: { | 251 case ManagedTileState::TileVersion::PICTURE_PILE_MODE: { |
| 251 gfx::RectF texture_rect = iter.texture_rect(); | 252 gfx::RectF texture_rect = iter.texture_rect(); |
| 252 gfx::Rect opaque_rect = iter->opaque_rect(); | 253 gfx::Rect opaque_rect = iter->opaque_rect(); |
| 253 opaque_rect.Intersect(content_rect); | 254 opaque_rect.Intersect(content_rect); |
| 254 | 255 |
| 255 scoped_ptr<PictureDrawQuad> quad = PictureDrawQuad::Create(); | 256 scoped_ptr<PictureDrawQuad> quad = PictureDrawQuad::Create(); |
| 256 quad->SetNew(shared_quad_state, | 257 quad->SetNew(shared_quad_state, |
| 257 geometry_rect, | 258 geometry_rect, |
| 258 opaque_rect, | 259 opaque_rect, |
| 259 texture_rect, | 260 texture_rect, |
| 260 iter.texture_size(), | 261 iter.texture_size(), |
| 261 // TODO(reveman): This assumes the renderer will use | 262 // TODO(reveman): This assumes the renderer will use |
| 262 // GL_RGBA as format of temporary resource. The need | 263 // GL_RGBA as format of temporary resource. The need |
| 263 // to swizzle should instead be determined by the | 264 // to swizzle should instead be determined by the |
| 264 // renderer. | 265 // renderer. |
| 265 !PlatformColor::SameComponentOrder(GL_RGBA), | 266 !PlatformColor::SameComponentOrder(GL_RGBA), |
| 266 iter->content_rect(), | 267 iter->content_rect(), |
| 267 iter->contents_scale(), | 268 iter->contents_scale(), |
| 268 draw_direct_to_backbuffer, | 269 draw_direct_to_backbuffer, |
| 269 pile_); | 270 pile_); |
| 270 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 271 draw_quad = quad.PassAs<DrawQuad>(); |
| 271 break; | 272 break; |
| 272 } | 273 } |
| 273 case ManagedTileState::TileVersion::SOLID_COLOR_MODE: { | 274 case ManagedTileState::TileVersion::SOLID_COLOR_MODE: { |
| 274 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); | 275 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); |
| 275 quad->SetNew(shared_quad_state, | 276 quad->SetNew(shared_quad_state, |
| 276 geometry_rect, | 277 geometry_rect, |
| 277 tile_version.get_solid_color(), | 278 tile_version.get_solid_color(), |
| 278 false); | 279 false); |
| 279 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 280 draw_quad = quad.PassAs<DrawQuad>(); |
| 280 break; | 281 break; |
| 281 } | 282 } |
| 282 default: | |
| 283 NOTREACHED(); | |
| 284 } | 283 } |
| 285 | 284 |
| 285 DCHECK(draw_quad); |
| 286 quad_sink->Append(draw_quad.Pass(), append_quads_data); |
| 287 |
| 286 if (!seen_tilings.size() || seen_tilings.back() != iter.CurrentTiling()) | 288 if (!seen_tilings.size() || seen_tilings.back() != iter.CurrentTiling()) |
| 287 seen_tilings.push_back(iter.CurrentTiling()); | 289 seen_tilings.push_back(iter.CurrentTiling()); |
| 288 } | 290 } |
| 289 | 291 |
| 290 // Aggressively remove any tilings that are not seen to save memory. Note | 292 // Aggressively remove any tilings that are not seen to save memory. Note |
| 291 // that this is at the expense of doing cause more frequent re-painting. A | 293 // that this is at the expense of doing cause more frequent re-painting. A |
| 292 // better scheme would be to maintain a tighter visible_content_rect for the | 294 // better scheme would be to maintain a tighter visible_content_rect for the |
| 293 // finer tilings. | 295 // finer tilings. |
| 294 CleanUpTilingsOnActiveLayer(seen_tilings); | 296 CleanUpTilingsOnActiveLayer(seen_tilings); |
| 295 } | 297 } |
| (...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1040 coverage_tiles->Append(tile_data.release()); | 1042 coverage_tiles->Append(tile_data.release()); |
| 1041 } | 1043 } |
| 1042 state->Set("coverage_tiles", coverage_tiles.release()); | 1044 state->Set("coverage_tiles", coverage_tiles.release()); |
| 1043 } | 1045 } |
| 1044 | 1046 |
| 1045 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const { | 1047 size_t PictureLayerImpl::GPUMemoryUsageInBytes() const { |
| 1046 return tilings_->GPUMemoryUsageInBytes(); | 1048 return tilings_->GPUMemoryUsageInBytes(); |
| 1047 } | 1049 } |
| 1048 | 1050 |
| 1049 } // namespace cc | 1051 } // namespace cc |
| OLD | NEW |