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

Unified Diff: cc/resources/gpu_raster_worker_pool.cc

Issue 664803003: Update from chromium a8e7c94b1b79a0948d05a1fcfff53391d22ce37a (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 2 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/gpu_raster_worker_pool.h ('k') | cc/resources/picture_layer_tiling_perftest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/resources/gpu_raster_worker_pool.cc
diff --git a/cc/resources/gpu_raster_worker_pool.cc b/cc/resources/gpu_raster_worker_pool.cc
index a0bc86fd10bc89c0e34c6868aa3ef28dfdd1340c..cba427ebad4ec63920f4fdb428bf88e5a93435b4 100644
--- a/cc/resources/gpu_raster_worker_pool.cc
+++ b/cc/resources/gpu_raster_worker_pool.cc
@@ -26,17 +26,25 @@ class RasterBufferImpl : public RasterBuffer {
public:
RasterBufferImpl(ResourceProvider* resource_provider,
const Resource* resource,
- SkMultiPictureDraw* multi_picture_draw)
+ SkMultiPictureDraw* multi_picture_draw,
+ bool use_distance_field_text)
: lock_(resource_provider, resource->id()),
resource_(resource),
- multi_picture_draw_(multi_picture_draw) {}
+ multi_picture_draw_(multi_picture_draw),
+ use_distance_field_text_(use_distance_field_text) {}
// Overridden from RasterBuffer:
void Playback(const PicturePileImpl* picture_pile,
const gfx::Rect& rect,
float scale,
RenderingStatsInstrumentation* stats) override {
- if (!lock_.sk_surface())
+ // Turn on distance fields for layers that have ever animated.
+ bool use_distance_field_text =
+ use_distance_field_text_ ||
+ picture_pile->likely_to_be_used_for_transform_animation();
+ SkSurface* sk_surface = lock_.GetSkSurface(use_distance_field_text);
+
+ if (!sk_surface)
return;
SkPictureRecorder recorder;
@@ -50,13 +58,14 @@ class RasterBufferImpl : public RasterBuffer {
// Add the canvas and recorded picture to |multi_picture_draw_|.
skia::RefPtr<SkPicture> picture = skia::AdoptRef(recorder.endRecording());
- multi_picture_draw_->add(lock_.sk_surface()->getCanvas(), picture.get());
+ multi_picture_draw_->add(sk_surface->getCanvas(), picture.get());
}
private:
ResourceProvider::ScopedWriteLockGr lock_;
const Resource* resource_;
SkMultiPictureDraw* multi_picture_draw_;
+ bool use_distance_field_text_;
DISALLOW_COPY_AND_ASSIGN(RasterBufferImpl);
};
@@ -67,20 +76,26 @@ class RasterBufferImpl : public RasterBuffer {
scoped_ptr<RasterWorkerPool> GpuRasterWorkerPool::Create(
base::SequencedTaskRunner* task_runner,
ContextProvider* context_provider,
- ResourceProvider* resource_provider) {
- return make_scoped_ptr<RasterWorkerPool>(new GpuRasterWorkerPool(
- task_runner, context_provider, resource_provider));
+ ResourceProvider* resource_provider,
+ bool use_distance_field_text) {
+ return make_scoped_ptr<RasterWorkerPool>(
+ new GpuRasterWorkerPool(task_runner,
+ context_provider,
+ resource_provider,
+ use_distance_field_text));
}
GpuRasterWorkerPool::GpuRasterWorkerPool(base::SequencedTaskRunner* task_runner,
ContextProvider* context_provider,
- ResourceProvider* resource_provider)
+ ResourceProvider* resource_provider,
+ bool use_distance_field_text)
: task_runner_(task_runner),
task_graph_runner_(new TaskGraphRunner),
namespace_token_(task_graph_runner_->GetNamespaceToken()),
context_provider_(context_provider),
resource_provider_(resource_provider),
run_tasks_on_origin_thread_pending_(false),
+ use_distance_field_text_(use_distance_field_text),
raster_finished_weak_ptr_factory_(this),
weak_ptr_factory_(this) {
DCHECK(context_provider_);
@@ -190,7 +205,10 @@ void GpuRasterWorkerPool::CheckForCompletedTasks() {
scoped_ptr<RasterBuffer> GpuRasterWorkerPool::AcquireBufferForRaster(
const Resource* resource) {
return make_scoped_ptr<RasterBuffer>(
- new RasterBufferImpl(resource_provider_, resource, &multi_picture_draw_));
+ new RasterBufferImpl(resource_provider_,
+ resource,
+ &multi_picture_draw_,
+ use_distance_field_text_));
}
void GpuRasterWorkerPool::ReleaseBufferForRaster(
« no previous file with comments | « cc/resources/gpu_raster_worker_pool.h ('k') | cc/resources/picture_layer_tiling_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698