summaryrefslogtreecommitdiffstats
path: root/chromium/cc/tiles/tile_manager.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-16 09:59:13 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2019-05-20 10:28:53 +0000
commit6c11fb357ec39bf087b8b632e2b1e375aef1b38b (patch)
treec8315530db18a8ee566521c39ab8a6af4f72bc03 /chromium/cc/tiles/tile_manager.cc
parent3ffaed019d0772e59d6cdb2d0d32fe4834c31f72 (diff)
BASELINE: Update Chromium to 74.0.3729.159
Change-Id: I8d2497da544c275415aedd94dd25328d555de811 Reviewed-by: Michael BrĂ¼ning <michael.bruning@qt.io>
Diffstat (limited to 'chromium/cc/tiles/tile_manager.cc')
-rw-r--r--chromium/cc/tiles/tile_manager.cc58
1 files changed, 42 insertions, 16 deletions
diff --git a/chromium/cc/tiles/tile_manager.cc b/chromium/cc/tiles/tile_manager.cc
index 6970e507093..43d282e6d62 100644
--- a/chromium/cc/tiles/tile_manager.cc
+++ b/chromium/cc/tiles/tile_manager.cc
@@ -44,12 +44,12 @@ const bool kUseColorEstimator = true;
DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
ScopedSoftwareRasterTaskTimer,
"Compositing.%s.RasterTask.RasterUs.Software",
- "Compositing.%s.RasterTask.RasterPixelsPerMs2.Software");
+ "Compositing.%s.RasterTask.RasterPixelsPerMs2.Software")
DEFINE_SCOPED_UMA_HISTOGRAM_AREA_TIMER(
ScopedGpuRasterTaskTimer,
"Compositing.%s.RasterTask.RasterUs.Gpu",
- "Compositing.%s.RasterTask.RasterPixelsPerMs2.Gpu");
+ "Compositing.%s.RasterTask.RasterPixelsPerMs2.Gpu")
class ScopedRasterTaskTimer {
public:
@@ -72,6 +72,36 @@ class ScopedRasterTaskTimer {
base::Optional<ScopedGpuRasterTaskTimer> gpu_timer_;
};
+// This class is wrapper for both ImageProvider and PaintWorkletImageProvider,
+// which is used in RasterSource::PlaybackSettings. It looks at the draw image
+// and decides which one of the two providers to dispatch the request to.
+class DispatchingImageProvider : public ImageProvider {
+ public:
+ DispatchingImageProvider(
+ PlaybackImageProvider playback_image_provider,
+ PaintWorkletImageProvider paint_worklet_image_provider)
+ : playback_image_provider_(std::move(playback_image_provider)),
+ paint_worklet_image_provider_(std::move(paint_worklet_image_provider)) {
+ }
+ ~DispatchingImageProvider() override = default;
+
+ DispatchingImageProvider(DispatchingImageProvider&& other) = default;
+
+ ImageProvider::ScopedResult GetRasterContent(
+ const DrawImage& draw_image) override {
+ return draw_image.paint_image().IsPaintWorklet()
+ ? paint_worklet_image_provider_.GetPaintRecordResult(
+ draw_image.paint_image().paint_worklet_input())
+ : playback_image_provider_.GetRasterContent(draw_image);
+ }
+
+ private:
+ PlaybackImageProvider playback_image_provider_;
+ PaintWorkletImageProvider paint_worklet_image_provider_;
+
+ DISALLOW_COPY_AND_ASSIGN(DispatchingImageProvider);
+};
+
class RasterTaskImpl : public TileTask {
public:
RasterTaskImpl(TileManager* tile_manager,
@@ -85,8 +115,7 @@ class RasterTaskImpl : public TileTask {
std::unique_ptr<RasterBuffer> raster_buffer,
TileTask::Vector* dependencies,
bool is_gpu_rasterization,
- PlaybackImageProvider image_provider,
- PaintWorkletImageProvider paint_worklet_image_provider,
+ DispatchingImageProvider image_provider,
GURL url)
: TileTask(!is_gpu_rasterization, dependencies),
tile_manager_(tile_manager),
@@ -106,12 +135,9 @@ class RasterTaskImpl : public TileTask {
is_gpu_rasterization_(is_gpu_rasterization),
raster_buffer_(std::move(raster_buffer)),
image_provider_(std::move(image_provider)),
- paint_worklet_image_provider_(std::move(paint_worklet_image_provider)),
url_(std::move(url)) {
DCHECK(origin_thread_checker_.CalledOnValidThread());
playback_settings_.image_provider = &image_provider_;
- playback_settings_.paint_worklet_image_provider =
- &paint_worklet_image_provider_;
}
// Overridden from Task:
@@ -177,8 +203,7 @@ class RasterTaskImpl : public TileTask {
int source_frame_number_;
bool is_gpu_rasterization_;
std::unique_ptr<RasterBuffer> raster_buffer_;
- PlaybackImageProvider image_provider_;
- PaintWorkletImageProvider paint_worklet_image_provider_;
+ DispatchingImageProvider image_provider_;
GURL url_;
DISALLOW_COPY_AND_ASSIGN(RasterTaskImpl);
@@ -560,6 +585,8 @@ bool TileManager::PrepareTiles(
// Schedule tile tasks.
ScheduleTasks(std::move(prioritized_work));
+ image_controller_.paint_worklet_image_cache()->NotifyDidPrepareTiles();
+
TRACE_EVENT_INSTANT1("cc", "DidPrepareTiles", TRACE_EVENT_SCOPE_THREAD,
"state", BasicStateAsValue());
return true;
@@ -1145,7 +1172,7 @@ scoped_refptr<TileTask> TileManager::CreateRasterTask(
tile->id(), tile->invalidated_content_rect(), tile->invalidated_id(),
&invalidated_rect);
}
- const RasterColorSpace& raster_color_space = client_->GetRasterColorSpace();
+ const gfx::ColorSpace& raster_color_space = client_->GetRasterColorSpace();
bool partial_tile_decode = false;
if (resource) {
resource_content_id = tile->invalidated_id();
@@ -1154,7 +1181,7 @@ scoped_refptr<TileTask> TileManager::CreateRasterTask(
} else {
resource = resource_pool_->AcquireResource(tile->desired_texture_size(),
DetermineResourceFormat(tile),
- raster_color_space.color_space);
+ raster_color_space);
DCHECK(resource);
}
@@ -1242,18 +1269,17 @@ scoped_refptr<TileTask> TileManager::CreateRasterTask(
PlaybackImageProvider image_provider(image_controller_.cache(),
std::move(settings));
-
- playback_settings.raster_color_space = raster_color_space;
-
PaintWorkletImageProvider paint_worklet_image_provider(
image_controller_.paint_worklet_image_cache());
+ DispatchingImageProvider dispatching_image_provider(
+ std::move(image_provider), std::move(paint_worklet_image_provider));
return base::MakeRefCounted<RasterTaskImpl>(
this, tile, std::move(resource), prioritized_tile.raster_source(),
playback_settings, prioritized_tile.priority().resolution,
invalidated_rect, prepare_tiles_count_, std::move(raster_buffer),
- &decode_tasks, use_gpu_rasterization_, std::move(image_provider),
- std::move(paint_worklet_image_provider), active_url_);
+ &decode_tasks, use_gpu_rasterization_,
+ std::move(dispatching_image_provider), active_url_);
}
void TileManager::ResetSignalsForTesting() {