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

Unified Diff: cc/resources/tile_task_worker_pool.cc

Issue 1144693002: cc: Move files out of cc/resources/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: resources: android Created 5 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/resources/tile_task_worker_pool.h ('k') | cc/resources/tile_task_worker_pool_perftest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/tile_task_worker_pool.cc
diff --git a/cc/resources/tile_task_worker_pool.cc b/cc/resources/tile_task_worker_pool.cc
deleted file mode 100644
index 130dc06daef53c5e12c9920bf228cb8f8a6c57cc..0000000000000000000000000000000000000000
--- a/cc/resources/tile_task_worker_pool.cc
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2013 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/tile_task_worker_pool.h"
-
-#include <algorithm>
-
-#include "base/trace_event/trace_event.h"
-#include "cc/resources/raster_source.h"
-#include "skia/ext/refptr.h"
-#include "third_party/skia/include/core/SkCanvas.h"
-#include "third_party/skia/include/core/SkSurface.h"
-
-namespace cc {
-namespace {
-
-class TaskSetFinishedTaskImpl : public TileTask {
- public:
- explicit TaskSetFinishedTaskImpl(
- base::SequencedTaskRunner* task_runner,
- const base::Closure& on_task_set_finished_callback)
- : task_runner_(task_runner),
- on_task_set_finished_callback_(on_task_set_finished_callback) {}
-
- // Overridden from Task:
- void RunOnWorkerThread() override {
- TRACE_EVENT0("cc", "TaskSetFinishedTaskImpl::RunOnWorkerThread");
- TaskSetFinished();
- }
-
- // Overridden from TileTask:
- void ScheduleOnOriginThread(TileTaskClient* client) override {}
- void CompleteOnOriginThread(TileTaskClient* client) override {}
- void RunReplyOnOriginThread() override {}
-
- protected:
- ~TaskSetFinishedTaskImpl() override {}
-
- void TaskSetFinished() {
- task_runner_->PostTask(FROM_HERE, on_task_set_finished_callback_);
- }
-
- private:
- scoped_refptr<base::SequencedTaskRunner> task_runner_;
- const base::Closure on_task_set_finished_callback_;
-
- DISALLOW_COPY_AND_ASSIGN(TaskSetFinishedTaskImpl);
-};
-
-} // namespace
-
-// This allows a micro benchmark system to run tasks with highest priority,
-// since it should finish as quickly as possible.
-unsigned TileTaskWorkerPool::kBenchmarkTaskPriority = 0u;
-// Task priorities that make sure task set finished tasks run before any
-// other remaining tasks. This is combined with the task set type to ensure
-// proper prioritization ordering between task set types.
-unsigned TileTaskWorkerPool::kTaskSetFinishedTaskPriorityBase = 1u;
-// For correctness, |kTileTaskPriorityBase| must be greater than
-// |kTaskSetFinishedTaskPriorityBase + kNumberOfTaskSets|.
-unsigned TileTaskWorkerPool::kTileTaskPriorityBase = 10u;
-
-TileTaskWorkerPool::TileTaskWorkerPool() {
-}
-
-TileTaskWorkerPool::~TileTaskWorkerPool() {
-}
-
-// static
-scoped_refptr<TileTask> TileTaskWorkerPool::CreateTaskSetFinishedTask(
- base::SequencedTaskRunner* task_runner,
- const base::Closure& on_task_set_finished_callback) {
- return make_scoped_refptr(
- new TaskSetFinishedTaskImpl(task_runner, on_task_set_finished_callback));
-}
-
-// static
-void TileTaskWorkerPool::ScheduleTasksOnOriginThread(TileTaskClient* client,
- TaskGraph* graph) {
- TRACE_EVENT0("cc", "TileTaskWorkerPool::ScheduleTasksOnOriginThread");
-
- for (TaskGraph::Node::Vector::iterator it = graph->nodes.begin();
- it != graph->nodes.end(); ++it) {
- TaskGraph::Node& node = *it;
- TileTask* task = static_cast<TileTask*>(node.task);
-
- if (!task->HasBeenScheduled()) {
- task->WillSchedule();
- task->ScheduleOnOriginThread(client);
- task->DidSchedule();
- }
- }
-}
-
-// static
-void TileTaskWorkerPool::InsertNodeForTask(TaskGraph* graph,
- TileTask* task,
- unsigned priority,
- size_t dependencies) {
- DCHECK(std::find_if(graph->nodes.begin(), graph->nodes.end(),
- TaskGraph::Node::TaskComparator(task)) ==
- graph->nodes.end());
- graph->nodes.push_back(TaskGraph::Node(task, priority, dependencies));
-}
-
-// static
-void TileTaskWorkerPool::InsertNodesForRasterTask(
- TaskGraph* graph,
- RasterTask* raster_task,
- const ImageDecodeTask::Vector& decode_tasks,
- unsigned priority) {
- size_t dependencies = 0u;
-
- // Insert image decode tasks.
- for (ImageDecodeTask::Vector::const_iterator it = decode_tasks.begin();
- it != decode_tasks.end(); ++it) {
- ImageDecodeTask* decode_task = it->get();
-
- // Skip if already decoded.
- if (decode_task->HasCompleted())
- continue;
-
- dependencies++;
-
- // Add decode task if it doesn't already exists in graph.
- TaskGraph::Node::Vector::iterator decode_it =
- std::find_if(graph->nodes.begin(), graph->nodes.end(),
- TaskGraph::Node::TaskComparator(decode_task));
- if (decode_it == graph->nodes.end())
- InsertNodeForTask(graph, decode_task, priority, 0u);
-
- graph->edges.push_back(TaskGraph::Edge(decode_task, raster_task));
- }
-
- InsertNodeForTask(graph, raster_task, priority, dependencies);
-}
-
-static bool IsSupportedPlaybackToMemoryFormat(ResourceFormat format) {
- switch (format) {
- case RGBA_4444:
- case RGBA_8888:
- case BGRA_8888:
- return true;
- case ALPHA_8:
- case LUMINANCE_8:
- case RGB_565:
- case ETC1:
- case RED_8:
- return false;
- }
- NOTREACHED();
- return false;
-}
-
-// static
-void TileTaskWorkerPool::PlaybackToMemory(void* memory,
- ResourceFormat format,
- const gfx::Size& size,
- int stride,
- const RasterSource* raster_source,
- const gfx::Rect& rect,
- float scale) {
- DCHECK(IsSupportedPlaybackToMemoryFormat(format)) << format;
-
- // Uses kPremul_SkAlphaType since the result is not known to be opaque.
- SkImageInfo info =
- SkImageInfo::MakeN32(size.width(), size.height(), kPremul_SkAlphaType);
- SkColorType buffer_color_type = ResourceFormatToSkColorType(format);
- bool needs_copy = buffer_color_type != info.colorType();
-
- // Use unknown pixel geometry to disable LCD text.
- SkSurfaceProps surface_props(0, kUnknown_SkPixelGeometry);
- if (raster_source->CanUseLCDText()) {
- // LegacyFontHost will get LCD text and skia figures out what type to use.
- surface_props = SkSurfaceProps(SkSurfaceProps::kLegacyFontHost_InitType);
- }
-
- if (!stride)
- stride = info.minRowBytes();
- DCHECK_GT(stride, 0);
-
- if (!needs_copy) {
- skia::RefPtr<SkSurface> surface = skia::AdoptRef(
- SkSurface::NewRasterDirect(info, memory, stride, &surface_props));
- skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
- raster_source->PlaybackToCanvas(canvas.get(), rect, scale);
- return;
- }
-
- skia::RefPtr<SkSurface> surface =
- skia::AdoptRef(SkSurface::NewRaster(info, &surface_props));
- skia::RefPtr<SkCanvas> canvas = skia::SharePtr(surface->getCanvas());
- raster_source->PlaybackToCanvas(canvas.get(), rect, scale);
-
- SkImageInfo dst_info = info;
- dst_info.fColorType = buffer_color_type;
- // TODO(kaanb): The GL pipeline assumes a 4-byte alignment for the
- // bitmap data. There will be no need to call SkAlign4 once crbug.com/293728
- // is fixed.
- const size_t dst_row_bytes = SkAlign4(dst_info.minRowBytes());
- DCHECK_EQ(0u, dst_row_bytes % 4);
- bool success = canvas->readPixels(dst_info, memory, dst_row_bytes, 0, 0);
- DCHECK_EQ(true, success);
-}
-
-} // namespace cc
« no previous file with comments | « cc/resources/tile_task_worker_pool.h ('k') | cc/resources/tile_task_worker_pool_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698