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/resources/picture.h" | 5 #include "cc/resources/picture.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <set> | 9 #include <set> |
10 | 10 |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
197 layer_rect_, | 197 layer_rect_, |
198 opaque_rect_, | 198 opaque_rect_, |
199 pixel_refs_)); | 199 pixel_refs_)); |
200 clones_.push_back(clone); | 200 clones_.push_back(clone); |
201 | 201 |
202 clone->EmitTraceSnapshotAlias(this); | 202 clone->EmitTraceSnapshotAlias(this); |
203 } | 203 } |
204 } | 204 } |
205 | 205 |
206 void Picture::Record(ContentLayerClient* painter, | 206 void Picture::Record(ContentLayerClient* painter, |
207 const SkTileGridPicture::TileGridInfo& tile_grid_info, | 207 const SkTileGridPicture::TileGridInfo& tile_grid_info) { |
208 RenderingStatsInstrumentation* stats_instrumentation) { | |
209 TRACE_EVENT1(benchmark_instrumentation::kCategory, | 208 TRACE_EVENT1(benchmark_instrumentation::kCategory, |
210 benchmark_instrumentation::kPictureRecord, | 209 benchmark_instrumentation::kPictureRecord, |
211 benchmark_instrumentation::kData, AsTraceableRecordData()); | 210 benchmark_instrumentation::kData, AsTraceableRecordData()); |
212 | 211 |
213 DCHECK(!tile_grid_info.fTileInterval.isEmpty()); | 212 DCHECK(!tile_grid_info.fTileInterval.isEmpty()); |
214 picture_ = skia::AdoptRef(new SkTileGridPicture( | 213 picture_ = skia::AdoptRef(new SkTileGridPicture( |
215 layer_rect_.width(), layer_rect_.height(), tile_grid_info)); | 214 layer_rect_.width(), layer_rect_.height(), tile_grid_info)); |
216 | 215 |
217 SkCanvas* canvas = picture_->beginRecording( | 216 SkCanvas* canvas = picture_->beginRecording( |
218 layer_rect_.width(), | 217 layer_rect_.width(), |
219 layer_rect_.height(), | 218 layer_rect_.height(), |
220 SkPicture::kUsePathBoundsForClip_RecordingFlag | | 219 SkPicture::kUsePathBoundsForClip_RecordingFlag | |
221 SkPicture::kOptimizeForClippedPlayback_RecordingFlag); | 220 SkPicture::kOptimizeForClippedPlayback_RecordingFlag); |
222 | 221 |
223 canvas->save(); | 222 canvas->save(); |
224 canvas->translate(SkFloatToScalar(-layer_rect_.x()), | 223 canvas->translate(SkFloatToScalar(-layer_rect_.x()), |
225 SkFloatToScalar(-layer_rect_.y())); | 224 SkFloatToScalar(-layer_rect_.y())); |
226 | 225 |
227 SkRect layer_skrect = SkRect::MakeXYWH(layer_rect_.x(), | 226 SkRect layer_skrect = SkRect::MakeXYWH(layer_rect_.x(), |
228 layer_rect_.y(), | 227 layer_rect_.y(), |
229 layer_rect_.width(), | 228 layer_rect_.width(), |
230 layer_rect_.height()); | 229 layer_rect_.height()); |
231 canvas->clipRect(layer_skrect); | 230 canvas->clipRect(layer_skrect); |
232 | 231 |
233 gfx::RectF opaque_layer_rect; | 232 gfx::RectF opaque_layer_rect; |
234 base::TimeTicks start_time = stats_instrumentation->StartRecording(); | |
235 | 233 |
236 painter->PaintContents(canvas, layer_rect_, &opaque_layer_rect); | 234 painter->PaintContents(canvas, layer_rect_, &opaque_layer_rect); |
237 | 235 |
238 base::TimeDelta duration = stats_instrumentation->EndRecording(start_time); | |
239 stats_instrumentation->AddRecord(duration, | |
240 layer_rect_.width() * layer_rect_.height()); | |
241 | |
242 canvas->restore(); | 236 canvas->restore(); |
243 picture_->endRecording(); | 237 picture_->endRecording(); |
244 | 238 |
245 opaque_rect_ = gfx::ToEnclosedRect(opaque_layer_rect); | 239 opaque_rect_ = gfx::ToEnclosedRect(opaque_layer_rect); |
246 | 240 |
247 EmitTraceSnapshot(); | 241 EmitTraceSnapshot(); |
248 } | 242 } |
249 | 243 |
250 void Picture::GatherPixelRefs( | 244 void Picture::GatherPixelRefs( |
251 const SkTileGridPicture::TileGridInfo& tile_grid_info, | 245 const SkTileGridPicture::TileGridInfo& tile_grid_info, |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue()); | 486 scoped_ptr<base::DictionaryValue> record_data(new base::DictionaryValue()); |
493 record_data->Set("picture_id", TracedValue::CreateIDRef(this).release()); | 487 record_data->Set("picture_id", TracedValue::CreateIDRef(this).release()); |
494 record_data->SetInteger(benchmark_instrumentation::kWidth, | 488 record_data->SetInteger(benchmark_instrumentation::kWidth, |
495 layer_rect_.width()); | 489 layer_rect_.width()); |
496 record_data->SetInteger(benchmark_instrumentation::kHeight, | 490 record_data->SetInteger(benchmark_instrumentation::kHeight, |
497 layer_rect_.height()); | 491 layer_rect_.height()); |
498 return TracedValue::FromValue(record_data.release()); | 492 return TracedValue::FromValue(record_data.release()); |
499 } | 493 } |
500 | 494 |
501 } // namespace cc | 495 } // namespace cc |
OLD | NEW |