Index: cc/resources/bitmap_raster_worker_pool.cc |
diff --git a/cc/resources/zero_copy_raster_worker_pool.cc b/cc/resources/bitmap_raster_worker_pool.cc |
similarity index 66% |
copy from cc/resources/zero_copy_raster_worker_pool.cc |
copy to cc/resources/bitmap_raster_worker_pool.cc |
index f463406262b5c4126020e6d6b7f29db2b6daaf19..959a0f339f988ca4b5f93fa2978230b27b12a10b 100644 |
--- a/cc/resources/zero_copy_raster_worker_pool.cc |
+++ b/cc/resources/bitmap_raster_worker_pool.cc |
@@ -1,8 +1,8 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "cc/resources/zero_copy_raster_worker_pool.h" |
+#include "cc/resources/bitmap_raster_worker_pool.h" |
#include <algorithm> |
@@ -12,7 +12,6 @@ |
#include "cc/debug/traced_value.h" |
#include "cc/resources/raster_buffer.h" |
#include "cc/resources/resource.h" |
-#include "third_party/skia/include/utils/SkNullCanvas.h" |
namespace cc { |
namespace { |
@@ -21,43 +20,16 @@ class RasterBufferImpl : public RasterBuffer { |
public: |
RasterBufferImpl(ResourceProvider* resource_provider, |
const Resource* resource) |
- : resource_provider_(resource_provider), |
- resource_(resource), |
- stride_(0), |
- buffer_(resource_provider->MapImage(resource->id(), &stride_)) {} |
- |
- virtual ~RasterBufferImpl() { |
- resource_provider_->UnmapImage(resource_->id()); |
- |
- // This RasterBuffer implementation provides direct access to the memory |
- // used by the GPU. Read lock fences are required to ensure that we're not |
- // trying to map a resource that is currently in-use by the GPU. |
- resource_provider_->EnableReadLockFences(resource_->id()); |
- } |
+ : lock_(resource_provider, resource->id()) {} |
// Overridden from RasterBuffer: |
virtual skia::RefPtr<SkCanvas> AcquireSkCanvas() OVERRIDE { |
- if (!buffer_) |
- return skia::AdoptRef(SkCreateNullCanvas()); |
- |
- RasterWorkerPool::AcquireBitmapForBuffer( |
- &bitmap_, buffer_, resource_->format(), resource_->size(), stride_); |
- return skia::AdoptRef(new SkCanvas(bitmap_)); |
- } |
- virtual void ReleaseSkCanvas(const skia::RefPtr<SkCanvas>& canvas) OVERRIDE { |
- if (!buffer_) |
- return; |
- |
- RasterWorkerPool::ReleaseBitmapForBuffer( |
- &bitmap_, buffer_, resource_->format()); |
+ return skia::SharePtr(lock_.sk_canvas()); |
} |
+ virtual void ReleaseSkCanvas(const skia::RefPtr<SkCanvas>& canvas) OVERRIDE {} |
private: |
- ResourceProvider* resource_provider_; |
- const Resource* resource_; |
- int stride_; |
- uint8_t* buffer_; |
- SkBitmap bitmap_; |
+ ResourceProvider::ScopedWriteLockSoftware lock_; |
DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl); |
}; |
@@ -65,15 +37,15 @@ class RasterBufferImpl : public RasterBuffer { |
} // namespace |
// static |
-scoped_ptr<RasterWorkerPool> ZeroCopyRasterWorkerPool::Create( |
+scoped_ptr<RasterWorkerPool> BitmapRasterWorkerPool::Create( |
base::SequencedTaskRunner* task_runner, |
TaskGraphRunner* task_graph_runner, |
ResourceProvider* resource_provider) { |
- return make_scoped_ptr<RasterWorkerPool>(new ZeroCopyRasterWorkerPool( |
+ return make_scoped_ptr<RasterWorkerPool>(new BitmapRasterWorkerPool( |
task_runner, task_graph_runner, resource_provider)); |
} |
-ZeroCopyRasterWorkerPool::ZeroCopyRasterWorkerPool( |
+BitmapRasterWorkerPool::BitmapRasterWorkerPool( |
base::SequencedTaskRunner* task_runner, |
TaskGraphRunner* task_graph_runner, |
ResourceProvider* resource_provider) |
@@ -84,27 +56,27 @@ ZeroCopyRasterWorkerPool::ZeroCopyRasterWorkerPool( |
raster_finished_weak_ptr_factory_(this) { |
} |
-ZeroCopyRasterWorkerPool::~ZeroCopyRasterWorkerPool() { |
+BitmapRasterWorkerPool::~BitmapRasterWorkerPool() { |
} |
-Rasterizer* ZeroCopyRasterWorkerPool::AsRasterizer() { |
+Rasterizer* BitmapRasterWorkerPool::AsRasterizer() { |
return this; |
} |
-void ZeroCopyRasterWorkerPool::SetClient(RasterizerClient* client) { |
+void BitmapRasterWorkerPool::SetClient(RasterizerClient* client) { |
client_ = client; |
} |
-void ZeroCopyRasterWorkerPool::Shutdown() { |
- TRACE_EVENT0("cc", "ZeroCopyRasterWorkerPool::Shutdown"); |
+void BitmapRasterWorkerPool::Shutdown() { |
+ TRACE_EVENT0("cc", "BitmapRasterWorkerPool::Shutdown"); |
TaskGraph empty; |
task_graph_runner_->ScheduleTasks(namespace_token_, &empty); |
task_graph_runner_->WaitForTasksToFinishRunning(namespace_token_); |
} |
-void ZeroCopyRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { |
- TRACE_EVENT0("cc", "ZeroCopyRasterWorkerPool::ScheduleTasks"); |
+void BitmapRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { |
+ TRACE_EVENT0("cc", "BitmapRasterWorkerPool::ScheduleTasks"); |
if (raster_pending_.none()) |
TRACE_EVENT_ASYNC_BEGIN0("cc", "ScheduledTasks", this); |
@@ -126,7 +98,7 @@ void ZeroCopyRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { |
for (TaskSet task_set = 0; task_set < kNumberOfTaskSets; ++task_set) { |
new_raster_finished_tasks[task_set] = CreateRasterFinishedTask( |
task_runner_.get(), |
- base::Bind(&ZeroCopyRasterWorkerPool::OnRasterFinished, |
+ base::Bind(&BitmapRasterWorkerPool::OnRasterFinished, |
raster_finished_weak_ptr_factory_.GetWeakPtr(), |
task_set)); |
} |
@@ -169,8 +141,8 @@ void ZeroCopyRasterWorkerPool::ScheduleTasks(RasterTaskQueue* queue) { |
"cc", "ScheduledTasks", this, "rasterizing", "state", StateAsValue()); |
} |
-void ZeroCopyRasterWorkerPool::CheckForCompletedTasks() { |
- TRACE_EVENT0("cc", "ZeroCopyRasterWorkerPool::CheckForCompletedTasks"); |
+void BitmapRasterWorkerPool::CheckForCompletedTasks() { |
+ TRACE_EVENT0("cc", "BitmapRasterWorkerPool::CheckForCompletedTasks"); |
task_graph_runner_->CollectCompletedTasks(namespace_token_, |
&completed_tasks_); |
@@ -188,24 +160,20 @@ void ZeroCopyRasterWorkerPool::CheckForCompletedTasks() { |
completed_tasks_.clear(); |
} |
-scoped_ptr<RasterBuffer> ZeroCopyRasterWorkerPool::AcquireBufferForRaster( |
+scoped_ptr<RasterBuffer> BitmapRasterWorkerPool::AcquireBufferForRaster( |
const Resource* resource) { |
- // RasterBuffer implementation depends on an image having been acquired for |
- // the resource. |
- resource_provider_->AcquireImage(resource->id()); |
- |
return make_scoped_ptr<RasterBuffer>( |
new RasterBufferImpl(resource_provider_, resource)); |
} |
-void ZeroCopyRasterWorkerPool::ReleaseBufferForRaster( |
+void BitmapRasterWorkerPool::ReleaseBufferForRaster( |
scoped_ptr<RasterBuffer> buffer) { |
// Nothing to do here. RasterBufferImpl destructor cleans up after itself. |
} |
-void ZeroCopyRasterWorkerPool::OnRasterFinished(TaskSet task_set) { |
+void BitmapRasterWorkerPool::OnRasterFinished(TaskSet task_set) { |
TRACE_EVENT1( |
- "cc", "ZeroCopyRasterWorkerPool::OnRasterFinished", "task_set", task_set); |
+ "cc", "BitmapRasterWorkerPool::OnRasterFinished", "task_set", task_set); |
DCHECK(raster_pending_[task_set]); |
raster_pending_[task_set] = false; |
@@ -219,7 +187,7 @@ void ZeroCopyRasterWorkerPool::OnRasterFinished(TaskSet task_set) { |
} |
scoped_refptr<base::debug::ConvertableToTraceFormat> |
-ZeroCopyRasterWorkerPool::StateAsValue() const { |
+BitmapRasterWorkerPool::StateAsValue() const { |
scoped_refptr<base::debug::TracedValue> state = |
new base::debug::TracedValue(); |