|
18 | 18 | #include "impeller/display_list/dl_vertices_geometry.h"
|
19 | 19 | #include "impeller/display_list/nine_patch_converter.h"
|
20 | 20 | #include "impeller/display_list/skia_conversions.h"
|
| 21 | +#include "impeller/entity/contents/content_context.h" |
21 | 22 | #include "impeller/entity/contents/filters/filter_contents.h"
|
22 | 23 | #include "impeller/entity/contents/filters/inputs/filter_input.h"
|
23 | 24 | #include "impeller/entity/contents/runtime_effect_contents.h"
|
24 | 25 | #include "impeller/entity/entity.h"
|
| 26 | +#include "impeller/geometry/color.h" |
25 | 27 | #include "impeller/geometry/path.h"
|
26 | 28 | #include "impeller/geometry/path_builder.h"
|
27 | 29 | #include "impeller/geometry/scalar.h"
|
@@ -1170,11 +1172,24 @@ Canvas& DlDispatcher::GetCanvas() {
|
1170 | 1172 | return canvas_;
|
1171 | 1173 | }
|
1172 | 1174 |
|
1173 |
| -ExperimentalDlDispatcher::ExperimentalDlDispatcher(ContentContext& renderer, |
1174 |
| - RenderTarget& render_target, |
1175 |
| - bool requires_readback, |
1176 |
| - IRect cull_rect) |
1177 |
| - : canvas_(renderer, render_target, requires_readback, cull_rect) {} |
| 1175 | +static bool RequiresReadbackForBlends( |
| 1176 | + const ContentContext& renderer, |
| 1177 | + flutter::DlBlendMode max_root_blend_mode) { |
| 1178 | + return !renderer.GetDeviceCapabilities().SupportsFramebufferFetch() && |
| 1179 | + ToBlendMode(max_root_blend_mode) > Entity::kLastPipelineBlendMode; |
| 1180 | +} |
| 1181 | + |
| 1182 | +ExperimentalDlDispatcher::ExperimentalDlDispatcher( |
| 1183 | + ContentContext& renderer, |
| 1184 | + RenderTarget& render_target, |
| 1185 | + bool has_root_backdrop_filter, |
| 1186 | + flutter::DlBlendMode max_root_blend_mode, |
| 1187 | + IRect cull_rect) |
| 1188 | + : canvas_(renderer, |
| 1189 | + render_target, |
| 1190 | + has_root_backdrop_filter || |
| 1191 | + RequiresReadbackForBlends(renderer, max_root_blend_mode), |
| 1192 | + cull_rect) {} |
1178 | 1193 |
|
1179 | 1194 | Canvas& ExperimentalDlDispatcher::GetCanvas() {
|
1180 | 1195 | return canvas_;
|
|
0 commit comments