| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/playback/display_item_list.h" | 5 #include "cc/playback/display_item_list.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
| 10 #include "base/trace_event/trace_event_argument.h" | 10 #include "base/trace_event/trace_event_argument.h" |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 gfx::Rect layer_rect, | 87 gfx::Rect layer_rect, |
| 88 const DisplayItemListSettings& settings) { | 88 const DisplayItemListSettings& settings) { |
| 89 return make_scoped_refptr(new DisplayItemList(layer_rect, settings)); | 89 return make_scoped_refptr(new DisplayItemList(layer_rect, settings)); |
| 90 } | 90 } |
| 91 | 91 |
| 92 DisplayItemList::~DisplayItemList() { | 92 DisplayItemList::~DisplayItemList() { |
| 93 } | 93 } |
| 94 | 94 |
| 95 void DisplayItemList::Raster(SkCanvas* canvas, | 95 void DisplayItemList::Raster(SkCanvas* canvas, |
| 96 SkPicture::AbortCallback* callback, | 96 SkPicture::AbortCallback* callback, |
| 97 const gfx::Rect& canvas_target_playback_rect, |
| 97 float contents_scale) const { | 98 float contents_scale) const { |
| 98 DCHECK(ProcessAppendedItemsCalled()); | 99 DCHECK(ProcessAppendedItemsCalled()); |
| 99 if (!use_cached_picture_) { | 100 if (!use_cached_picture_) { |
| 100 canvas->save(); | 101 canvas->save(); |
| 101 canvas->scale(contents_scale, contents_scale); | 102 canvas->scale(contents_scale, contents_scale); |
| 102 for (auto* item : items_) | 103 for (auto* item : items_) |
| 103 item->Raster(canvas, callback); | 104 item->Raster(canvas, canvas_target_playback_rect, callback); |
| 104 canvas->restore(); | 105 canvas->restore(); |
| 105 } else { | 106 } else { |
| 106 DCHECK(picture_); | 107 DCHECK(picture_); |
| 107 | 108 |
| 108 canvas->save(); | 109 canvas->save(); |
| 109 canvas->scale(contents_scale, contents_scale); | 110 canvas->scale(contents_scale, contents_scale); |
| 110 canvas->translate(layer_rect_.x(), layer_rect_.y()); | 111 canvas->translate(layer_rect_.x(), layer_rect_.y()); |
| 111 if (callback) { | 112 if (callback) { |
| 112 // If we have a callback, we need to call |draw()|, |drawPicture()| | 113 // If we have a callback, we need to call |draw()|, |drawPicture()| |
| 113 // doesn't take a callback. This is used by |AnalysisCanvas| to early | 114 // doesn't take a callback. This is used by |AnalysisCanvas| to early |
| (...skipping 24 matching lines...) Expand all Loading... |
| 138 #if DCHECK_IS_ON() | 139 #if DCHECK_IS_ON() |
| 139 needs_process_ = false; | 140 needs_process_ = false; |
| 140 #endif | 141 #endif |
| 141 for (const DisplayItem* item : items_) { | 142 for (const DisplayItem* item : items_) { |
| 142 is_suitable_for_gpu_rasterization_ &= | 143 is_suitable_for_gpu_rasterization_ &= |
| 143 item->is_suitable_for_gpu_rasterization(); | 144 item->is_suitable_for_gpu_rasterization(); |
| 144 approximate_op_count_ += item->approximate_op_count(); | 145 approximate_op_count_ += item->approximate_op_count(); |
| 145 | 146 |
| 146 if (use_cached_picture_) { | 147 if (use_cached_picture_) { |
| 147 DCHECK(canvas_); | 148 DCHECK(canvas_); |
| 148 item->Raster(canvas_.get(), NULL); | 149 item->Raster(canvas_.get(), gfx::Rect(), NULL); |
| 149 } | 150 } |
| 150 | 151 |
| 151 if (retain_individual_display_items_) { | 152 if (retain_individual_display_items_) { |
| 152 // Warning: this double-counts SkPicture data if use_cached_picture_ is | 153 // Warning: this double-counts SkPicture data if use_cached_picture_ is |
| 153 // also true. | 154 // also true. |
| 154 picture_memory_usage_ += item->picture_memory_usage(); | 155 picture_memory_usage_ += item->picture_memory_usage(); |
| 155 } | 156 } |
| 156 } | 157 } |
| 157 | 158 |
| 158 if (!retain_individual_display_items_) | 159 if (!retain_individual_display_items_) |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 } | 212 } |
| 212 state->EndArray(); | 213 state->EndArray(); |
| 213 state->SetValue("params.layer_rect", MathUtil::AsValue(layer_rect_)); | 214 state->SetValue("params.layer_rect", MathUtil::AsValue(layer_rect_)); |
| 214 | 215 |
| 215 if (!layer_rect_.IsEmpty()) { | 216 if (!layer_rect_.IsEmpty()) { |
| 216 SkPictureRecorder recorder; | 217 SkPictureRecorder recorder; |
| 217 SkCanvas* canvas = | 218 SkCanvas* canvas = |
| 218 recorder.beginRecording(layer_rect_.width(), layer_rect_.height()); | 219 recorder.beginRecording(layer_rect_.width(), layer_rect_.height()); |
| 219 canvas->translate(-layer_rect_.x(), -layer_rect_.y()); | 220 canvas->translate(-layer_rect_.x(), -layer_rect_.y()); |
| 220 canvas->clipRect(gfx::RectToSkRect(layer_rect_)); | 221 canvas->clipRect(gfx::RectToSkRect(layer_rect_)); |
| 221 Raster(canvas, NULL, 1.f); | 222 Raster(canvas, NULL, gfx::Rect(), 1.f); |
| 222 skia::RefPtr<SkPicture> picture = | 223 skia::RefPtr<SkPicture> picture = |
| 223 skia::AdoptRef(recorder.endRecordingAsPicture()); | 224 skia::AdoptRef(recorder.endRecordingAsPicture()); |
| 224 | 225 |
| 225 std::string b64_picture; | 226 std::string b64_picture; |
| 226 PictureDebugUtil::SerializeAsBase64(picture.get(), &b64_picture); | 227 PictureDebugUtil::SerializeAsBase64(picture.get(), &b64_picture); |
| 227 state->SetString("skp64", b64_picture); | 228 state->SetString("skp64", b64_picture); |
| 228 } | 229 } |
| 229 | 230 |
| 230 return state; | 231 return state; |
| 231 } | 232 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 248 return; | 249 return; |
| 249 | 250 |
| 250 pixel_refs_->GatherPixelRefsFromPicture(picture_.get()); | 251 pixel_refs_->GatherPixelRefsFromPicture(picture_.get()); |
| 251 } | 252 } |
| 252 | 253 |
| 253 void* DisplayItemList::GetSidecar(DisplayItem* display_item) { | 254 void* DisplayItemList::GetSidecar(DisplayItem* display_item) { |
| 254 return items_.GetSidecar(display_item); | 255 return items_.GetSidecar(display_item); |
| 255 } | 256 } |
| 256 | 257 |
| 257 } // namespace cc | 258 } // namespace cc |
| OLD | NEW |