| 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();
|
|
|
|
|