Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: cc/raster_worker_pool.cc

Issue 11896002: [cc] Use base::TimeTicks in RenderStats (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: renderwidget too Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « cc/picture_pile_impl.cc ('k') | cc/rendering_stats.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/raster_worker_pool.h" 5 #include "cc/raster_worker_pool.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 20 matching lines...) Expand all
31 SkDevice device(bitmap); 31 SkDevice device(bitmap);
32 SkCanvas canvas(&device); 32 SkCanvas canvas(&device);
33 picture_pile->Raster(&canvas, rect, contents_scale, stats); 33 picture_pile->Raster(&canvas, rect, contents_scale, stats);
34 } 34 }
35 35
36 void RunImageDecodeTask(skia::LazyPixelRef* pixel_ref, RenderingStats* stats) { 36 void RunImageDecodeTask(skia::LazyPixelRef* pixel_ref, RenderingStats* stats) {
37 TRACE_EVENT0("cc", "RunImageDecodeTask"); 37 TRACE_EVENT0("cc", "RunImageDecodeTask");
38 base::TimeTicks decode_begin_time = base::TimeTicks::Now(); 38 base::TimeTicks decode_begin_time = base::TimeTicks::Now();
39 pixel_ref->Decode(); 39 pixel_ref->Decode();
40 stats->totalDeferredImageDecodeCount++; 40 stats->totalDeferredImageDecodeCount++;
41 stats->totalDeferredImageDecodeTimeInSeconds += 41 stats->totalDeferredImageDecodeTime +=
42 (base::TimeTicks::Now() - decode_begin_time).InSecondsF(); 42 base::TimeTicks::Now() - decode_begin_time;
43 } 43 }
44 44
45 const char* kRasterThreadNamePrefix = "CompositorRaster"; 45 const char* kRasterThreadNamePrefix = "CompositorRaster";
46 46
47 // Allow two pending raster tasks per thread. This keeps resource usage 47 // Allow two pending raster tasks per thread. This keeps resource usage
48 // low while making sure raster threads aren't unnecessarily idle. 48 // low while making sure raster threads aren't unnecessarily idle.
49 const int kNumPendingRasterTasksPerThread = 2; 49 const int kNumPendingRasterTasksPerThread = 2;
50 50
51 } // namespace 51 } // namespace
52 52
53 RasterWorkerPool::Thread::Task::Task(Thread* thread) : thread_(thread) { 53 RasterWorkerPool::Thread::Task::Task(Thread* thread) : thread_(thread) {
54 thread_->num_pending_tasks_++; 54 thread_->num_pending_tasks_++;
55 } 55 }
56 56
57 RasterWorkerPool::Thread::Task::~Task() { 57 RasterWorkerPool::Thread::Task::~Task() {
58 thread_->rendering_stats_.totalRasterizeTimeInSeconds += 58 thread_->rendering_stats_.totalRasterizeTime +=
59 rendering_stats_.totalRasterizeTimeInSeconds; 59 rendering_stats_.totalRasterizeTime;
60 thread_->rendering_stats_.totalPixelsRasterized += 60 thread_->rendering_stats_.totalPixelsRasterized +=
61 rendering_stats_.totalPixelsRasterized; 61 rendering_stats_.totalPixelsRasterized;
62 thread_->rendering_stats_.totalDeferredImageDecodeTimeInSeconds += 62 thread_->rendering_stats_.totalDeferredImageDecodeTime +=
63 rendering_stats_.totalDeferredImageDecodeTimeInSeconds; 63 rendering_stats_.totalDeferredImageDecodeTime;
64 thread_->rendering_stats_.totalDeferredImageDecodeCount += 64 thread_->rendering_stats_.totalDeferredImageDecodeCount +=
65 rendering_stats_.totalDeferredImageDecodeCount; 65 rendering_stats_.totalDeferredImageDecodeCount;
66 66
67 thread_->num_pending_tasks_--; 67 thread_->num_pending_tasks_--;
68 } 68 }
69 69
70 RasterWorkerPool::Thread::Thread(const std::string name) 70 RasterWorkerPool::Thread::Thread(const std::string name)
71 : base::Thread(name.c_str()), 71 : base::Thread(name.c_str()),
72 num_pending_tasks_(0) { 72 num_pending_tasks_(0) {
73 Start(); 73 Start();
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 task->thread_->message_loop_proxy()->PostTaskAndReply( 129 task->thread_->message_loop_proxy()->PostTaskAndReply(
130 FROM_HERE, 130 FROM_HERE,
131 base::Bind(&RunImageDecodeTask, pixel_ref, &task->rendering_stats_), 131 base::Bind(&RunImageDecodeTask, pixel_ref, &task->rendering_stats_),
132 base::Bind(&RasterWorkerPool::OnTaskCompleted, 132 base::Bind(&RasterWorkerPool::OnTaskCompleted,
133 base::Unretained(this), 133 base::Unretained(this),
134 base::Unretained(task), 134 base::Unretained(task),
135 reply)); 135 reply));
136 } 136 }
137 137
138 void RasterWorkerPool::GetRenderingStats(RenderingStats* stats) { 138 void RasterWorkerPool::GetRenderingStats(RenderingStats* stats) {
139 stats->totalRasterizeTimeInSeconds = 0; 139 stats->totalRasterizeTime = base::TimeDelta();
140 stats->totalPixelsRasterized = 0; 140 stats->totalPixelsRasterized = 0;
141 stats->totalDeferredImageDecodeCount = 0; 141 stats->totalDeferredImageDecodeCount = 0;
142 stats->totalDeferredImageDecodeTimeInSeconds = 0; 142 stats->totalDeferredImageDecodeTime = base::TimeDelta();
143 for (ThreadVector::iterator it = raster_threads_.begin(); 143 for (ThreadVector::iterator it = raster_threads_.begin();
144 it != raster_threads_.end(); ++it) { 144 it != raster_threads_.end(); ++it) {
145 Thread* thread = *it; 145 Thread* thread = *it;
146 stats->totalRasterizeTimeInSeconds += 146 stats->totalRasterizeTime +=
147 thread->rendering_stats().totalRasterizeTimeInSeconds; 147 thread->rendering_stats().totalRasterizeTime;
148 stats->totalPixelsRasterized += 148 stats->totalPixelsRasterized +=
149 thread->rendering_stats().totalPixelsRasterized; 149 thread->rendering_stats().totalPixelsRasterized;
150 stats->totalDeferredImageDecodeCount += 150 stats->totalDeferredImageDecodeCount +=
151 thread->rendering_stats().totalDeferredImageDecodeCount; 151 thread->rendering_stats().totalDeferredImageDecodeCount;
152 stats->totalDeferredImageDecodeTimeInSeconds += 152 stats->totalDeferredImageDecodeTime +=
153 thread->rendering_stats().totalDeferredImageDecodeTimeInSeconds; 153 thread->rendering_stats().totalDeferredImageDecodeTime;
154 } 154 }
155 } 155 }
156 156
157 RasterWorkerPool::Thread::Task* RasterWorkerPool::CreateTask() { 157 RasterWorkerPool::Thread::Task* RasterWorkerPool::CreateTask() {
158 Thread* thread = raster_threads_.front(); 158 Thread* thread = raster_threads_.front();
159 DCHECK(thread->num_pending_tasks() < kNumPendingRasterTasksPerThread); 159 DCHECK(thread->num_pending_tasks() < kNumPendingRasterTasksPerThread);
160 160
161 scoped_ptr<Thread::Task> task(new Thread::Task(thread)); 161 scoped_ptr<Thread::Task> task(new Thread::Task(thread));
162 std::sort(raster_threads_.begin(), raster_threads_.end(), 162 std::sort(raster_threads_.begin(), raster_threads_.end(),
163 PendingTaskComparator()); 163 PendingTaskComparator());
(...skipping 13 matching lines...) Expand all
177 } 177 }
178 178
179 void RasterWorkerPool::OnRasterTaskCompleted( 179 void RasterWorkerPool::OnRasterTaskCompleted(
180 Thread::Task* task, 180 Thread::Task* task,
181 scoped_refptr<PicturePileImpl> picture_pile, 181 scoped_refptr<PicturePileImpl> picture_pile,
182 const base::Closure& reply) { 182 const base::Closure& reply) {
183 OnTaskCompleted(task, reply); 183 OnTaskCompleted(task, reply);
184 } 184 }
185 185
186 } // namespace cc 186 } // namespace cc
OLDNEW
« no previous file with comments | « cc/picture_pile_impl.cc ('k') | cc/rendering_stats.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698