120 {
121 TRACE_EVENT0(
"flutter",
"CompositorContext::ScopedFrame::Raster");
122
123 std::optional<SkRect> clip_rect;
124 if (frame_damage) {
125 clip_rect = frame_damage->ComputeClipRect(layer_tree, !ignore_raster_cache,
126 !gr_context_);
127
128 if (aiks_context_ &&
129 !ShouldPerformPartialRepaint(clip_rect, layer_tree.
frame_size())) {
130 clip_rect = std::nullopt;
131 frame_damage->Reset();
132 }
133 }
134
135 bool root_needs_readback = layer_tree.
Preroll(
136 *
this, ignore_raster_cache, clip_rect ? *clip_rect :
kGiantRect);
139 if (view_embedder_ && raster_thread_merger_) {
140 post_preroll_result =
142 }
143
146 }
149 }
150
151 if (aiks_context_) {
152 PaintLayerTreeImpeller(layer_tree, clip_rect, ignore_raster_cache);
153 } else {
154 PaintLayerTreeSkia(layer_tree, clip_rect, needs_save_layer,
155 ignore_raster_cache);
156 }
158}
virtual PostPrerollResult PostPrerollAction(const fml::RefPtr< fml::RasterThreadMerger > &raster_thread_merger)
bool Preroll(CompositorContext::ScopedFrame &frame, bool ignore_raster_cache=false, SkRect cull_rect=kGiantRect)
const SkISize & frame_size() const
static constexpr SkRect kGiantRect
#define TRACE_EVENT0(category_group, name)