[go: nahoru, domu]

RawDraw: raster complex visible tile immediately

In this CL, we plumb raster task visible hint to RawDraw backing. So if
a raster task is visible, and the task is complex (currently meaning
that it contains SaveLayerOps), the RawDraw backing will execute this
task immediately instead of executing it just before executing SkDDL
for compositing the frame. For other complex raster tasks, we will
execute them when the tiles are used by a frame. This CL should move
some complex raster tasks out of critical code path. It should improve
smoothness related metrics (DroppedFrames. etc).

TODO: Update raster task visibility when the tile visibility is changed.

Bug: 1302438
Change-Id: Iba609c1149fd376acfee3f578698473c621c80cd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3494368
Reviewed-by: Vladimir Levin <vmpstr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#977280}
diff --git a/cc/raster/gpu_raster_buffer_provider.cc b/cc/raster/gpu_raster_buffer_provider.cc
index 931db23..9ed8d388 100644
--- a/cc/raster/gpu_raster_buffer_provider.cc
+++ b/cc/raster/gpu_raster_buffer_provider.cc
@@ -385,10 +385,10 @@
   bool is_raw_draw_backing =
       client_->is_using_raw_draw_ && !backing_->overlay_candidate;
   bool use_lcd_text = playback_settings.use_lcd_text && !is_raw_draw_backing;
-  ri->BeginRasterCHROMIUM(raster_source->background_color(),
-                          mailbox_needs_clear,
-                          playback_settings.msaa_sample_count, msaa_mode,
-                          use_lcd_text, color_space_, backing_->mailbox.name);
+  ri->BeginRasterCHROMIUM(
+      raster_source->background_color(), mailbox_needs_clear,
+      playback_settings.msaa_sample_count, msaa_mode, use_lcd_text,
+      playback_settings.visible, color_space_, backing_->mailbox.name);
   gfx::Vector2dF recording_to_raster_scale = transform.scale();
   recording_to_raster_scale.Scale(1 / raster_source->recording_scale_factor());
   gfx::Size content_size = raster_source->GetContentSize(transform.scale());