From 439a83231af1d71fd0235e0622de13d417e0fab4 Mon Sep 17 00:00:00 2001 From: Swift Kim Date: Thu, 25 May 2023 11:11:34 +0900 Subject: [PATCH] Revert "Make the context current before accessing GL in MakeSkiaGpuImage" (#363) This reverts commit c7894a662ae10b3a203c2c608aa5f5529478e3af. --- shell/common/BUILD.gn | 8 ---- shell/common/fixtures/shell_test.dart | 4 -- shell/common/rasterizer.cc | 17 +++----- shell/common/shell_unittests.cc | 61 --------------------------- 4 files changed, 7 insertions(+), 83 deletions(-) diff --git a/shell/common/BUILD.gn b/shell/common/BUILD.gn index 32d63365b4d39..dad16195c691b 100644 --- a/shell/common/BUILD.gn +++ b/shell/common/BUILD.gn @@ -325,13 +325,5 @@ if (enable_unittests) { sources += [ "shell_io_manager_unittests.cc" ] deps += [ "//third_party/swiftshader" ] } - - if (shell_enable_gl) { - deps += [ - "//third_party/angle:libEGL_static", - "//third_party/angle:libGLESv2_static", - "//third_party/swiftshader", - ] - } } } diff --git a/shell/common/fixtures/shell_test.dart b/shell/common/fixtures/shell_test.dart index 0a4e5a603b8a5..ee4912538d08d 100644 --- a/shell/common/fixtures/shell_test.dart +++ b/shell/common/fixtures/shell_test.dart @@ -354,9 +354,6 @@ void scene_with_red_box() { PlatformDispatcher.instance.scheduleFrame(); } -@pragma('vm:external-name', 'NativeOnBeforeToImageSync') -external void onBeforeToImageSync(); - @pragma('vm:entry-point') Future toImageSync() async { @@ -365,7 +362,6 @@ Future toImageSync() async { canvas.drawPaint(Paint()..color = const Color(0xFFAAAAAA)); final Picture picture = recorder.endRecording(); - onBeforeToImageSync(); final Image image = picture.toImageSync(20, 25); void expect(Object? a, Object? b) { if (a != b) { diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 5273d68e13707..0f4da9e2c0594 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -294,12 +294,17 @@ std::unique_ptr Rasterizer::MakeSkiaGpuImage( TRACE_EVENT0("flutter", "Rasterizer::MakeGpuImage"); FML_DCHECK(display_list); +// TODO(dnfield): the Linux embedding is in a rough state right now and +// I can't seem to get the GPU path working on it. +// https://github.com/flutter/flutter/issues/108835 +#if FML_OS_LINUX + return MakeBitmapImage(display_list, image_info); +#endif + std::unique_ptr result; delegate_.GetIsGpuDisabledSyncSwitch()->Execute( fml::SyncSwitch::Handlers() .SetIfTrue([&result, &image_info, &display_list] { - // TODO(dnfield): This isn't safe if display_list contains any GPU - // resources like an SkImage_gpu. result = MakeBitmapImage(display_list, image_info); }) .SetIfFalse([&result, &image_info, &display_list, @@ -307,14 +312,6 @@ std::unique_ptr Rasterizer::MakeSkiaGpuImage( gpu_image_behavior = gpu_image_behavior_] { if (!surface || gpu_image_behavior == MakeGpuImageBehavior::kBitmap) { - // TODO(dnfield): This isn't safe if display_list contains any GPU - // resources like an SkImage_gpu. - result = MakeBitmapImage(display_list, image_info); - return; - } - - auto context_switch = surface->MakeRenderContextCurrent(); - if (!context_switch->GetResult()) { result = MakeBitmapImage(display_list, image_info); return; } diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index 82dc5b3682457..28b360d6ac7b4 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -11,10 +11,6 @@ #include #include -#if SHELL_ENABLE_GL -#include -#endif // SHELL_ENABLE_GL - #include "assets/directory_asset_bundle.h" #include "common/graphics/persistent_cache.h" #include "flutter/flow/layers/backdrop_filter_layer.h" @@ -3959,11 +3955,6 @@ TEST_F(ShellTest, PictureToImageSync) { ShellTestPlatformView::BackendType::kGLBackend // ); - AddNativeCallback("NativeOnBeforeToImageSync", - CREATE_NATIVE_ENTRY([&](auto args) { - // nop - })); - fml::CountDownLatch latch(2); AddNativeCallback("NotifyNative", CREATE_NATIVE_ENTRY([&](auto args) { // Teardown and set up rasterizer again. @@ -4033,58 +4024,6 @@ TEST_F(ShellTest, PictureToImageSyncImpellerNoSurface) { DestroyShell(std::move(shell)); } -#if SHELL_ENABLE_GL -// This test uses the GL backend and refers to symbols in egl.h -TEST_F(ShellTest, PictureToImageSyncWithTrampledContext) { - // make it easier to trample the GL context by running on a single task - // runner. - ThreadHost thread_host("io.flutter.test." + GetCurrentTestName() + ".", - ThreadHost::Type::Platform); - auto task_runner = thread_host.platform_thread->GetTaskRunner(); - TaskRunners task_runners("test", task_runner, task_runner, task_runner, - task_runner); - - auto settings = CreateSettingsForFixture(); - std::unique_ptr shell = - CreateShell(settings, // - task_runners, // - false, // - nullptr, // - false, // - ShellTestPlatformView::BackendType::kGLBackend // - ); - - AddNativeCallback( - "NativeOnBeforeToImageSync", CREATE_NATIVE_ENTRY([&](auto args) { - // Trample the GL context. If the rasterizer fails - // to make the right one current again, test will - // fail. - ::eglMakeCurrent(::eglGetCurrentDisplay(), NULL, NULL, NULL); - })); - - fml::CountDownLatch latch(2); - AddNativeCallback("NotifyNative", CREATE_NATIVE_ENTRY([&](auto args) { - // Teardown and set up rasterizer again. - PlatformViewNotifyDestroyed(shell.get()); - PlatformViewNotifyCreated(shell.get()); - latch.CountDown(); - })); - - ASSERT_NE(shell, nullptr); - ASSERT_TRUE(shell->IsSetup()); - auto configuration = RunConfiguration::InferFromSettings(settings); - PlatformViewNotifyCreated(shell.get()); - configuration.SetEntrypoint("toImageSync"); - RunEngine(shell.get(), std::move(configuration)); - PumpOneFrame(shell.get()); - - latch.Wait(); - - PlatformViewNotifyDestroyed(shell.get()); - DestroyShell(std::move(shell), task_runners); -} -#endif // SHELL_ENABLE_GL - TEST_F(ShellTest, PluginUtilitiesCallbackHandleErrorHandling) { auto settings = CreateSettingsForFixture(); std::unique_ptr shell =