Skip to content
This repository was archived by the owner on Apr 3, 2020. It is now read-only.

Commit 59d4494

Browse files
hendrikwCommit bot
hendrikw
authored and
Commit bot
committed
cc: Remove all traces of synchronous GPU rasterization
Removed threaded gpu raster flag, and syncronous gpu raster tests and all code required for syncronous gpu rasterization. Removed the empty software rasterizer class, and base and moved ownership of the gpu rasterizer into the GpuTileTaskWorkerPool, since it is still a nice separation of functionality BUG=457860 Review URL: https://codereview.chromium.org/1063493002 Cr-Commit-Position: refs/heads/master@{#323860}
1 parent a9e0c0d commit 59d4494

39 files changed

+74
-643
lines changed

cc/BUILD.gn

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,6 @@ component("cc") {
395395
"resources/raster_tile_priority_queue_all.h",
396396
"resources/raster_tile_priority_queue_required.cc",
397397
"resources/raster_tile_priority_queue_required.h",
398-
"resources/rasterizer.h",
399398
"resources/release_callback.h",
400399
"resources/resource.cc",
401400
"resources/resource.h",
@@ -427,8 +426,6 @@ component("cc") {
427426
"resources/single_release_callback_impl.h",
428427
"resources/skpicture_content_layer_updater.cc",
429428
"resources/skpicture_content_layer_updater.h",
430-
"resources/software_rasterizer.cc",
431-
"resources/software_rasterizer.h",
432429
"resources/task_graph_runner.cc",
433430
"resources/task_graph_runner.h",
434431
"resources/texture_compressor.cc",

cc/cc.gyp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,6 @@
447447
'resources/raster_tile_priority_queue_all.h',
448448
'resources/raster_tile_priority_queue_required.cc',
449449
'resources/raster_tile_priority_queue_required.h',
450-
'resources/rasterizer.h',
451450
'resources/recording_source.h',
452451
'resources/release_callback.h',
453452
'resources/resource.cc',
@@ -480,8 +479,6 @@
480479
'resources/single_release_callback_impl.h',
481480
'resources/skpicture_content_layer_updater.cc',
482481
'resources/skpicture_content_layer_updater.h',
483-
'resources/software_rasterizer.cc',
484-
'resources/software_rasterizer.h',
485482
'resources/task_graph_runner.cc',
486483
'resources/task_graph_runner.h',
487484
'resources/texture_compressor.cc',

cc/resources/gpu_rasterizer.cc

Lines changed: 3 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -26,74 +26,19 @@
2626

2727
namespace cc {
2828

29-
// static
30-
scoped_ptr<GpuRasterizer> GpuRasterizer::Create(
31-
ContextProvider* context_provider,
32-
ResourceProvider* resource_provider,
33-
bool use_distance_field_text,
34-
bool threaded_gpu_rasterization_enabled,
35-
int msaa_sample_count) {
36-
return make_scoped_ptr<GpuRasterizer>(new GpuRasterizer(
37-
context_provider, resource_provider, use_distance_field_text,
38-
threaded_gpu_rasterization_enabled, msaa_sample_count));
39-
}
40-
4129
GpuRasterizer::GpuRasterizer(ContextProvider* context_provider,
4230
ResourceProvider* resource_provider,
4331
bool use_distance_field_text,
44-
bool threaded_gpu_rasterization_enabled,
4532
int msaa_sample_count)
4633
: resource_provider_(resource_provider),
4734
use_distance_field_text_(use_distance_field_text),
48-
threaded_gpu_rasterization_enabled_(threaded_gpu_rasterization_enabled),
4935
msaa_sample_count_(msaa_sample_count) {
5036
}
5137

5238
GpuRasterizer::~GpuRasterizer() {
5339
}
5440

55-
PrepareTilesMode GpuRasterizer::GetPrepareTilesMode() {
56-
return threaded_gpu_rasterization_enabled_
57-
? PrepareTilesMode::RASTERIZE_PRIORITIZED_TILES
58-
: PrepareTilesMode::PREPARE_NONE;
59-
}
60-
61-
ContextProvider* GpuRasterizer::GetContextProvider(bool worker_context) {
62-
return worker_context
63-
? resource_provider_->output_surface()->worker_context_provider()
64-
: resource_provider_->output_surface()->context_provider();
65-
}
66-
67-
void GpuRasterizer::RasterizeTiles(
68-
const TileVector& tiles,
69-
ResourcePool* resource_pool,
70-
ResourceFormat resource_format,
71-
const UpdateTileDrawInfoCallback& update_tile_draw_info) {
72-
ScopedGpuRaster gpu_raster(GetContextProvider(false));
73-
74-
ScopedResourceWriteLocks locks;
75-
76-
for (Tile* tile : tiles) {
77-
RasterSource::SolidColorAnalysis analysis;
78-
79-
if (tile->use_picture_analysis())
80-
PerformSolidColorAnalysis(tile, &analysis);
81-
82-
scoped_ptr<ScopedResource> resource;
83-
if (!analysis.is_solid_color) {
84-
resource = resource_pool->AcquireResource(tile->desired_texture_size(),
85-
resource_format);
86-
AddToMultiPictureDraw(tile, resource.get(), &locks);
87-
}
88-
update_tile_draw_info.Run(tile, resource.Pass(), analysis);
89-
}
90-
91-
// If MSAA is enabled, tell Skia to resolve each render target after draw.
92-
multi_picture_draw_.draw(msaa_sample_count_ > 0);
93-
}
94-
9541
void GpuRasterizer::RasterizeSource(
96-
bool use_worker_context,
9742
ResourceProvider::ScopedWriteLockGr* write_lock,
9843
const RasterSource* raster_source,
9944
const gfx::Rect& rect,
@@ -116,8 +61,9 @@ void GpuRasterizer::RasterizeSource(
11661

11762
// Playback picture into resource.
11863
{
119-
ScopedGpuRaster gpu_raster(GetContextProvider(use_worker_context));
120-
write_lock->InitSkSurface(use_worker_context, use_distance_field_text,
64+
ScopedGpuRaster gpu_raster(
65+
resource_provider_->output_surface()->worker_context_provider());
66+
write_lock->InitSkSurface(use_distance_field_text,
12167
raster_source->CanUseLCDText(),
12268
msaa_sample_count_);
12369

@@ -135,70 +81,4 @@ void GpuRasterizer::RasterizeSource(
13581
}
13682
}
13783

138-
void GpuRasterizer::PerformSolidColorAnalysis(
139-
const Tile* tile,
140-
RasterSource::SolidColorAnalysis* analysis) {
141-
const void* tile_id = static_cast<const void*>(tile);
142-
frame_viewer_instrumentation::ScopedAnalyzeTask analyze_task(
143-
tile_id, tile->combined_priority().resolution,
144-
tile->source_frame_number(), tile->layer_id());
145-
146-
DCHECK(tile->raster_source());
147-
148-
tile->raster_source()->PerformSolidColorAnalysis(
149-
tile->content_rect(), tile->contents_scale(), analysis);
150-
151-
// Record the solid color prediction.
152-
UMA_HISTOGRAM_BOOLEAN("Renderer4.SolidColorTilesAnalyzed",
153-
analysis->is_solid_color);
154-
}
155-
156-
void GpuRasterizer::AddToMultiPictureDraw(const Tile* tile,
157-
const ScopedResource* resource,
158-
ScopedResourceWriteLocks* locks) {
159-
const void* tile_id = static_cast<const void*>(tile);
160-
frame_viewer_instrumentation::ScopedRasterTask raster_task(
161-
tile_id, tile->combined_priority().resolution,
162-
tile->source_frame_number(), tile->layer_id());
163-
164-
DCHECK(tile->raster_source());
165-
166-
// Turn on distance fields for layers that have ever animated.
167-
bool use_distance_field_text =
168-
use_distance_field_text_ ||
169-
tile->raster_source()->ShouldAttemptToUseDistanceFieldText();
170-
scoped_ptr<ResourceProvider::ScopedWriteLockGr> lock(
171-
new ResourceProvider::ScopedWriteLockGr(resource_provider_,
172-
resource->id()));
173-
174-
lock->InitSkSurface(false, use_distance_field_text,
175-
tile->raster_source()->CanUseLCDText(),
176-
msaa_sample_count_);
177-
178-
SkSurface* sk_surface = lock->sk_surface();
179-
180-
// Allocating an SkSurface will fail after a lost context. Pretend we
181-
// rasterized, as the contents of the resource don't matter anymore.
182-
if (!sk_surface)
183-
return;
184-
185-
locks->push_back(lock.Pass());
186-
187-
SkRTreeFactory factory;
188-
SkPictureRecorder recorder;
189-
gfx::Size size = resource->size();
190-
const int flags = SkPictureRecorder::kComputeSaveLayerInfo_RecordFlag;
191-
skia::RefPtr<SkCanvas> canvas = skia::SharePtr(
192-
recorder.beginRecording(size.width(), size.height(), &factory, flags));
193-
194-
canvas->save();
195-
tile->raster_source()->PlaybackToCanvas(canvas.get(), tile->content_rect(),
196-
tile->contents_scale());
197-
canvas->restore();
198-
199-
// Add the canvas and recorded picture to |multi_picture_draw_|.
200-
skia::RefPtr<SkPicture> picture = skia::AdoptRef(recorder.endRecording());
201-
multi_picture_draw_.add(sk_surface->getCanvas(), picture.get());
202-
}
203-
20484
} // namespace cc

cc/resources/gpu_rasterizer.h

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include <vector>
99

1010
#include "cc/base/cc_export.h"
11-
#include "cc/resources/rasterizer.h"
1211
#include "cc/resources/resource_pool.h"
1312
#include "cc/resources/tile.h"
1413
#include "third_party/skia/include/core/SkMultiPictureDraw.h"
@@ -18,27 +17,11 @@ namespace cc {
1817
class ContextProvider;
1918
class ResourceProvider;
2019

21-
class CC_EXPORT GpuRasterizer : public Rasterizer {
20+
class CC_EXPORT GpuRasterizer {
2221
public:
23-
~GpuRasterizer() override;
22+
~GpuRasterizer();
2423

25-
static scoped_ptr<GpuRasterizer> Create(
26-
ContextProvider* context_provider,
27-
ResourceProvider* resource_provider,
28-
bool use_distance_field_text,
29-
bool threaded_gpu_rasterization_enabled,
30-
int msaa_sample_count);
31-
32-
// Overriden from Rasterizer.
33-
PrepareTilesMode GetPrepareTilesMode() override;
34-
void RasterizeTiles(
35-
const TileVector& tiles,
36-
ResourcePool* resource_pool,
37-
ResourceFormat resource_format,
38-
const UpdateTileDrawInfoCallback& update_tile_draw_info) override;
39-
40-
void RasterizeSource(bool use_worker_context,
41-
ResourceProvider::ScopedWriteLockGr* write_lock,
24+
void RasterizeSource(ResourceProvider::ScopedWriteLockGr* write_lock,
4225
const RasterSource* raster_source,
4326
const gfx::Rect& rect,
4427
float scale);
@@ -49,26 +32,14 @@ class CC_EXPORT GpuRasterizer : public Rasterizer {
4932
GpuRasterizer(ContextProvider* context_provider,
5033
ResourceProvider* resource_provider,
5134
bool use_distance_filed_text,
52-
bool threaded_gpu_rasterization_enabled,
5335
int msaa_sample_count);
5436

55-
using ScopedResourceWriteLocks =
56-
ScopedPtrVector<ResourceProvider::ScopedWriteLockGr>;
57-
58-
ContextProvider* GetContextProvider(bool worker_context);
59-
void PerformSolidColorAnalysis(const Tile* tile,
60-
RasterSource::SolidColorAnalysis* analysis);
61-
void AddToMultiPictureDraw(const Tile* tile,
62-
const ScopedResource* resource,
63-
ScopedResourceWriteLocks* locks);
64-
6537
ResourceProvider* resource_provider_;
66-
SkMultiPictureDraw multi_picture_draw_;
6738

6839
bool use_distance_field_text_;
69-
bool threaded_gpu_rasterization_enabled_;
7040
int msaa_sample_count_;
7141

42+
friend class GpuTileTaskWorkerPool;
7243
DISALLOW_COPY_AND_ASSIGN(GpuRasterizer);
7344
};
7445

cc/resources/gpu_tile_task_worker_pool.cc

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class RasterBufferImpl : public RasterBuffer {
4545
context_provider->DetachFromThread();
4646

4747
// Rasterize source into resource.
48-
rasterizer_->RasterizeSource(true, &lock_, raster_source, rect, scale);
48+
rasterizer_->RasterizeSource(&lock_, raster_source, rect, scale);
4949

5050
// Barrier to sync worker context output to cc context.
5151
context_provider->ContextGL()->OrderingBarrierCHROMIUM();
@@ -68,19 +68,29 @@ class RasterBufferImpl : public RasterBuffer {
6868
scoped_ptr<TileTaskWorkerPool> GpuTileTaskWorkerPool::Create(
6969
base::SequencedTaskRunner* task_runner,
7070
TaskGraphRunner* task_graph_runner,
71-
GpuRasterizer* rasterizer) {
72-
return make_scoped_ptr<TileTaskWorkerPool>(
73-
new GpuTileTaskWorkerPool(task_runner, task_graph_runner, rasterizer));
71+
ContextProvider* context_provider,
72+
ResourceProvider* resource_provider,
73+
bool use_distance_field_text,
74+
int gpu_rasterization_msaa_sample_count) {
75+
return make_scoped_ptr<TileTaskWorkerPool>(new GpuTileTaskWorkerPool(
76+
task_runner, task_graph_runner, context_provider, resource_provider,
77+
use_distance_field_text, gpu_rasterization_msaa_sample_count));
7478
}
7579

7680
GpuTileTaskWorkerPool::GpuTileTaskWorkerPool(
7781
base::SequencedTaskRunner* task_runner,
7882
TaskGraphRunner* task_graph_runner,
79-
GpuRasterizer* rasterizer)
83+
ContextProvider* context_provider,
84+
ResourceProvider* resource_provider,
85+
bool use_distance_field_text,
86+
int gpu_rasterization_msaa_sample_count)
8087
: task_runner_(task_runner),
8188
task_graph_runner_(task_graph_runner),
8289
namespace_token_(task_graph_runner_->GetNamespaceToken()),
83-
rasterizer_(rasterizer),
90+
rasterizer_(new GpuRasterizer(context_provider,
91+
resource_provider,
92+
use_distance_field_text,
93+
gpu_rasterization_msaa_sample_count)),
8494
task_set_finished_weak_ptr_factory_(this),
8595
weak_ptr_factory_(this) {
8696
}
@@ -199,7 +209,7 @@ void GpuTileTaskWorkerPool::CompleteTasks(const Task::Vector& tasks) {
199209
scoped_ptr<RasterBuffer> GpuTileTaskWorkerPool::AcquireBufferForRaster(
200210
const Resource* resource) {
201211
return make_scoped_ptr<RasterBuffer>(
202-
new RasterBufferImpl(rasterizer_, resource));
212+
new RasterBufferImpl(rasterizer_.get(), resource));
203213
}
204214

205215
void GpuTileTaskWorkerPool::ReleaseBufferForRaster(

cc/resources/gpu_tile_task_worker_pool.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@
1010
#include "cc/resources/tile_task_worker_pool.h"
1111

1212
namespace cc {
13+
class ContextProvider;
1314
class GpuRasterizer;
15+
class ResourceProvider;
1416

1517
class CC_EXPORT GpuTileTaskWorkerPool : public TileTaskWorkerPool,
1618
public TileTaskRunner,
@@ -21,7 +23,10 @@ class CC_EXPORT GpuTileTaskWorkerPool : public TileTaskWorkerPool,
2123
static scoped_ptr<TileTaskWorkerPool> Create(
2224
base::SequencedTaskRunner* task_runner,
2325
TaskGraphRunner* task_graph_runner,
24-
GpuRasterizer* rasterizer);
26+
ContextProvider* context_provider,
27+
ResourceProvider* resource_provider,
28+
bool use_distance_field_text,
29+
int gpu_rasterization_msaa_sample_count);
2530

2631
// Overridden from TileTaskWorkerPool:
2732
TileTaskRunner* AsTileTaskRunner() override;
@@ -41,7 +46,10 @@ class CC_EXPORT GpuTileTaskWorkerPool : public TileTaskWorkerPool,
4146
private:
4247
GpuTileTaskWorkerPool(base::SequencedTaskRunner* task_runner,
4348
TaskGraphRunner* task_graph_runner,
44-
GpuRasterizer* rasterizer);
49+
ContextProvider* context_provider,
50+
ResourceProvider* resource_provider,
51+
bool use_distance_field_text,
52+
int gpu_rasterization_msaa_sample_count);
4553

4654
void OnTaskSetFinished(TaskSet task_set);
4755
void CompleteTasks(const Task::Vector& tasks);
@@ -50,7 +58,7 @@ class CC_EXPORT GpuTileTaskWorkerPool : public TileTaskWorkerPool,
5058
TaskGraphRunner* task_graph_runner_;
5159
const NamespaceToken namespace_token_;
5260
TileTaskRunnerClient* client_;
53-
GpuRasterizer* rasterizer_;
61+
scoped_ptr<GpuRasterizer> rasterizer_;
5462

5563
TaskSetCollection tasks_pending_;
5664

0 commit comments

Comments
 (0)