diff --git a/display_list/testing/dl_rendering_unittests.cc b/display_list/testing/dl_rendering_unittests.cc index af6b0cf8682e2..4e1b9752fe85a 100644 --- a/display_list/testing/dl_rendering_unittests.cc +++ b/display_list/testing/dl_rendering_unittests.cc @@ -4141,8 +4141,6 @@ class DisplayListNopTest : public DisplayListCanvas { auto surface = SkSurfaces::Raster(SkImageInfo::MakeN32Premul(w, h)); SkCanvas* canvas = surface->getCanvas(); renderer(canvas); - canvas->flush(); - surface->flushAndSubmit(true); return std::make_unique(surface, snapshot); } @@ -4258,8 +4256,11 @@ class DisplayListNopTest : public DisplayListCanvas { result_canvas->clear(SK_ColorTRANSPARENT); result_canvas->drawImage(test_image.get(), 0, 0); result_canvas->drawRect(test_bounds, sk_paint); - result_canvas->flush(); - result_surface->sk_surface()->flushAndSubmit(true); + if (GrDirectContext* direct_context = GrAsDirectContext( + result_surface->sk_surface()->recordingContext())) { + return direct_context->flushAndSubmit(result_surface->sk_surface(), + true); + } auto result_pixels = std::make_unique(result_surface->sk_surface()); @@ -4316,8 +4317,11 @@ class DisplayListNopTest : public DisplayListCanvas { result_canvas->drawImage(test_image_dst_data->image(), 0, 0); result_canvas->drawImage(test_image_src_data->image(), 0, 0, SkSamplingOptions(), &sk_paint); - result_canvas->flush(); - result_surface->sk_surface()->flushAndSubmit(true); + if (GrDirectContext* direct_context = GrAsDirectContext( + result_surface->sk_surface()->recordingContext())) { + return direct_context->flushAndSubmit(result_surface->sk_surface(), + true); + } auto result_pixels = std::make_unique(result_surface->sk_surface()); diff --git a/lib/web_ui/skwasm/surface.cpp b/lib/web_ui/skwasm/surface.cpp index 99811dcd406d2..834131f8bce69 100644 --- a/lib/web_ui/skwasm/surface.cpp +++ b/lib/web_ui/skwasm/surface.cpp @@ -5,6 +5,7 @@ #include "surface.h" #include "third_party/skia/include/gpu/GrBackendSurface.h" +#include "third_party/skia/include/gpu/GrDirectContext.h" using namespace Skwasm; @@ -171,7 +172,7 @@ void Surface::_renderPicture(const SkPicture* picture) { makeCurrent(_glContext); auto canvas = _surface->getCanvas(); canvas->drawPicture(picture); - _surface->flush(); + _grContext->flush(_surface); } void Surface::_rasterizeImage(SkImage* image, diff --git a/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc b/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc index 3823e672b2361..7281d471f09ee 100644 --- a/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc +++ b/shell/platform/fuchsia/flutter/flatland_external_view_embedder.cc @@ -9,6 +9,8 @@ #include "flutter/fml/trace_event.h" #include "third_party/skia/include/core/SkPicture.h" #include "third_party/skia/include/core/SkSurface.h" +#include "third_party/skia/include/gpu/GrDirectContext.h" +#include "third_party/skia/include/gpu/GrRecordingContext.h" namespace flutter_runner { namespace { @@ -487,7 +489,10 @@ void FlatlandExternalViewEmbedder::SubmitFrame( canvas->setMatrix(SkMatrix::I()); canvas->clear(SK_ColorTRANSPARENT); canvas->drawPicture(layer->second.picture); - canvas->flush(); + if (GrDirectContext* direct_context = + GrAsDirectContext(canvas->recordingContext())) { + return direct_context->flushAndSubmit(); + } } } diff --git a/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc b/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc index 37e8d6a474431..aeba9b76de002 100644 --- a/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc +++ b/shell/platform/fuchsia/flutter/gfx_external_view_embedder.cc @@ -14,6 +14,8 @@ #include "flutter/fml/trace_event.h" #include "third_party/skia/include/core/SkPicture.h" #include "third_party/skia/include/core/SkSurface.h" +#include "third_party/skia/include/gpu/GrDirectContext.h" +#include "third_party/skia/include/gpu/GrRecordingContext.h" namespace flutter_runner { namespace { @@ -617,7 +619,10 @@ void GfxExternalViewEmbedder::SubmitFrame( canvas->setMatrix(SkMatrix::I()); canvas->clear(SK_ColorTRANSPARENT); canvas->drawPicture(layer->second.picture); - canvas->flush(); + if (GrDirectContext* direct_context = + GrAsDirectContext(canvas->recordingContext())) { + return direct_context->flushAndSubmit(); + } } }