From cdacfae4d635373c65b46d2c2eacf9424676e4ce Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 7 Jun 2022 16:28:41 -0700 Subject: [PATCH 1/8] Purge resources on rasterizer teardown --- shell/common/rasterizer.cc | 6 ++ shell/common/rasterizer_unittests.cc | 141 +++++++++++++++++++-------- 2 files changed, 107 insertions(+), 40 deletions(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 0b2b1a301d0a1..ca6b83cff2b45 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -93,6 +93,12 @@ void Rasterizer::Teardown() { compositor_context_->OnGrContextDestroyed(); } + if (auto* context = surface_->GetContext()) { + auto context_switch = surface_->MakeRenderContextCurrent(); + if (context_switch->GetResult()) { + context->purgeUnlockedResources(/*scratchResourcesOnly=*/false); + } + } surface_.reset(); last_layer_tree_.reset(); diff --git a/shell/common/rasterizer_unittests.cc b/shell/common/rasterizer_unittests.cc index b420d9ca4fa1a..c7c26e35c67ed 100644 --- a/shell/common/rasterizer_unittests.cc +++ b/shell/common/rasterizer_unittests.cc @@ -18,6 +18,7 @@ using testing::_; using testing::ByMove; +using testing::NiceMock; using testing::Return; using testing::ReturnRef; @@ -76,7 +77,7 @@ class MockExternalViewEmbedder : public ExternalViewEmbedder { } // namespace TEST(RasterizerTest, create) { - MockDelegate delegate; + NiceMock delegate; auto rasterizer = std::make_unique(delegate); EXPECT_TRUE(rasterizer != nullptr); } @@ -105,10 +106,10 @@ TEST(RasterizerTest, drawEmptyPipeline) { thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; ON_CALL(delegate, GetTaskRunners()).WillByDefault(ReturnRef(task_runners)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); EXPECT_CALL(*surface, MakeRenderContextCurrent()) .WillOnce(Return(ByMove(std::make_unique(true)))); rasterizer->Setup(std::move(surface)); @@ -132,15 +133,15 @@ TEST(RasterizerTest, thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); - std::shared_ptr external_view_embedder = - std::make_shared(); + std::shared_ptr> external_view_embedder = + std::make_shared>(); rasterizer->SetExternalViewEmbedder(external_view_embedder); SurfaceFrame::FramebufferInfo framebuffer_info; @@ -199,14 +200,14 @@ TEST( thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); - std::shared_ptr external_view_embedder = - std::make_shared(); + auto surface = std::make_unique>(); + std::shared_ptr> external_view_embedder = + std::make_shared>(); rasterizer->SetExternalViewEmbedder(external_view_embedder); EXPECT_CALL(*external_view_embedder, SupportsDynamicThreadMerging) .WillRepeatedly(Return(true)); @@ -264,16 +265,16 @@ TEST( thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); - std::shared_ptr external_view_embedder = - std::make_shared(); + std::shared_ptr> external_view_embedder = + std::make_shared>(); rasterizer->SetExternalViewEmbedder(external_view_embedder); SurfaceFrame::FramebufferInfo framebuffer_info; @@ -328,16 +329,16 @@ TEST(RasterizerTest, thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); - std::shared_ptr external_view_embedder = - std::make_shared(); + std::shared_ptr> external_view_embedder = + std::make_shared>(); rasterizer->SetExternalViewEmbedder(external_view_embedder); SurfaceFrame::FramebufferInfo framebuffer_info; @@ -401,13 +402,13 @@ TEST(RasterizerTest, externalViewEmbedderDoesntEndFrameWhenNoSurfaceIsSet) { thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); auto rasterizer = std::make_unique(delegate); - std::shared_ptr external_view_embedder = - std::make_shared(); + std::shared_ptr> external_view_embedder = + std::make_shared>(); rasterizer->SetExternalViewEmbedder(external_view_embedder); EXPECT_CALL( @@ -444,17 +445,17 @@ TEST(RasterizerTest, externalViewEmbedderDoesntEndFrameWhenNotUsedThisFrame) { thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); EXPECT_CALL(*surface, MakeRenderContextCurrent()) .WillOnce(Return(ByMove(std::make_unique(true)))); - std::shared_ptr external_view_embedder = - std::make_shared(); + std::shared_ptr> external_view_embedder = + std::make_shared>(); rasterizer->SetExternalViewEmbedder(external_view_embedder); rasterizer->Setup(std::move(surface)); @@ -499,17 +500,17 @@ TEST(RasterizerTest, externalViewEmbedderDoesntEndFrameWhenPipelineIsEmpty) { thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); EXPECT_CALL(*surface, MakeRenderContextCurrent()) .WillOnce(Return(ByMove(std::make_unique(true)))); - std::shared_ptr external_view_embedder = - std::make_shared(); + std::shared_ptr> external_view_embedder = + std::make_shared>(); rasterizer->SetExternalViewEmbedder(external_view_embedder); rasterizer->Setup(std::move(surface)); @@ -542,13 +543,13 @@ TEST(RasterizerTest, thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); auto is_gpu_disabled_sync_switch = std::make_shared(false); @@ -596,12 +597,12 @@ TEST( thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); auto is_gpu_disabled_sync_switch = std::make_shared(true); @@ -651,12 +652,12 @@ TEST( thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); auto is_gpu_disabled_sync_switch = std::make_shared(false); @@ -705,12 +706,12 @@ TEST( thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; EXPECT_CALL(delegate, GetTaskRunners()) .WillRepeatedly(ReturnRef(task_runners)); EXPECT_CALL(delegate, OnFrameRasterized(_)).Times(0); auto rasterizer = std::make_unique(delegate); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); auto is_gpu_disabled_sync_switch = std::make_shared(true); @@ -757,7 +758,7 @@ TEST(RasterizerTest, thread_host.raster_thread->GetTaskRunner(), thread_host.ui_thread->GetTaskRunner(), thread_host.io_thread->GetTaskRunner()); - MockDelegate delegate; + NiceMock delegate; ON_CALL(delegate, GetTaskRunners()).WillByDefault(ReturnRef(task_runners)); fml::AutoResetWaitableEvent latch; @@ -768,7 +769,7 @@ TEST(RasterizerTest, }); latch.Wait(); - auto surface = std::make_unique(); + auto surface = std::make_unique>(); EXPECT_CALL(*surface, AllowsDrawingWhenGpuDisabled()) .WillRepeatedly(Return(true)); ON_CALL(*surface, AcquireFrame(SkISize())) @@ -830,4 +831,64 @@ TEST(RasterizerTest, latch.Wait(); } +TEST(RasterizerTest, TeardownFreesResourceCache) { + std::string test_name = + ::testing::UnitTest::GetInstance()->current_test_info()->name(); + ThreadHost thread_host("io.flutter.test." + test_name + ".", + ThreadHost::Type::Platform | ThreadHost::Type::RASTER | + ThreadHost::Type::IO | ThreadHost::Type::UI); + TaskRunners task_runners("test", thread_host.platform_thread->GetTaskRunner(), + thread_host.raster_thread->GetTaskRunner(), + thread_host.ui_thread->GetTaskRunner(), + thread_host.io_thread->GetTaskRunner()); + NiceMock delegate; + EXPECT_CALL(delegate, GetTaskRunners()) + .WillRepeatedly(ReturnRef(task_runners)); + + auto rasterizer = std::make_unique(delegate); + auto surface = std::make_unique>(); + auto context = GrDirectContext::MakeMock(nullptr); + context->setResourceCacheLimit(0); + + EXPECT_CALL(*surface, MakeRenderContextCurrent()) + .WillRepeatedly([]() -> std::unique_ptr { + return std::make_unique(true); + }); + EXPECT_CALL(*surface, GetContext()).WillRepeatedly(Return(context.get())); + + rasterizer->Setup(std::move(surface)); + EXPECT_EQ(context->getResourceCacheLimit(), 0ul); + + rasterizer->SetResourceCacheMaxBytes(10000000, false); + EXPECT_EQ(context->getResourceCacheLimit(), 10000000ul); + EXPECT_EQ(context->getResourceCachePurgeableBytes(), 0ul); + + int count = 0; + size_t bytes = 0; + context->getResourceCacheUsage(&count, &bytes); + EXPECT_EQ(bytes, 0ul); + + auto image_info = + SkImageInfo::MakeN32Premul(500, 500, SkColorSpace::MakeSRGB()); + auto sk_surface = + SkSurface::MakeRenderTarget(context.get(), SkBudgeted::kYes, image_info); + EXPECT_TRUE(sk_surface); + + SkPaint paint; + sk_surface->getCanvas()->drawPaint(paint); + sk_surface->getCanvas()->flush(); + context->flushAndSubmit(true); + + EXPECT_EQ(context->getResourceCachePurgeableBytes(), 0ul); + + sk_surface.reset(); + + context->getResourceCacheUsage(&count, &bytes); + EXPECT_GT(bytes, 0ul); + EXPECT_GT(context->getResourceCachePurgeableBytes(), 0ul); + + rasterizer->Teardown(); + EXPECT_EQ(context->getResourceCachePurgeableBytes(), 0ul); +} + } // namespace flutter From fdaccd933569ee4cb0c6eea6d8abbf05ae9b5fb7 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 7 Jun 2022 19:50:26 -0700 Subject: [PATCH 2/8] Fix vulkan tests --- shell/common/BUILD.gn | 5 +++++ shell/common/shell_test_platform_view_vulkan.cc | 10 +++++++++- testing/run_tests.py | 12 ++++++------ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/shell/common/BUILD.gn b/shell/common/BUILD.gn index a1c1fed6205d3..cdf5e99c1af8a 100644 --- a/shell/common/BUILD.gn +++ b/shell/common/BUILD.gn @@ -290,6 +290,11 @@ if (enable_unittests) { "//third_party/googletest:gmock", ] + # Swiftshader only supports x86/64. + if (shell_enable_vulkan && (target_cpu == "x86" || target_cpu == "x64")) { + deps += [ "//third_party/swiftshader_flutter:swiftshader_vulkan" ] + } + if (is_fuchsia) { sources += [ "shell_fuchsia_unittests.cc" ] diff --git a/shell/common/shell_test_platform_view_vulkan.cc b/shell/common/shell_test_platform_view_vulkan.cc index 853e621e752ab..c5a840ee5a054 100644 --- a/shell/common/shell_test_platform_view_vulkan.cc +++ b/shell/common/shell_test_platform_view_vulkan.cc @@ -8,6 +8,14 @@ #include "flutter/shell/common/context_options.h" #include "flutter/vulkan/vulkan_utilities.h" +#ifdef FML_OS_MACOSX +#define VULKAN_SO_PATH "libvk_swiftshader.dylib" +#elif FML_OS_WIN +#define VULKAN_SO_PATH "vk_swiftshader.dll" +#else +#define VULKAN_SO_PATH "libvk_swiftshader.so" +#endif + namespace flutter { namespace testing { @@ -21,7 +29,7 @@ ShellTestPlatformViewVulkan::ShellTestPlatformViewVulkan( : ShellTestPlatformView(delegate, std::move(task_runners)), create_vsync_waiter_(std::move(create_vsync_waiter)), vsync_clock_(vsync_clock), - proc_table_(fml::MakeRefCounted()), + proc_table_(fml::MakeRefCounted(VULKAN_SO_PATH)), shell_test_external_view_embedder_(shell_test_external_view_embedder) {} ShellTestPlatformViewVulkan::~ShellTestPlatformViewVulkan() = default; diff --git a/testing/run_tests.py b/testing/run_tests.py index c96a41ae1f9c1..1a6ad24550f2c 100755 --- a/testing/run_tests.py +++ b/testing/run_tests.py @@ -159,7 +159,7 @@ def BuildEngineExecutableCommand( gtest_parallel = os.path.join( buildroot_dir, 'third_party', 'gtest-parallel', 'gtest-parallel' ) - test_command = ['python', gtest_parallel] + test_command + test_command = ['python3', gtest_parallel] + test_command return test_command @@ -181,13 +181,15 @@ def RunEngineExecutable( return unstripped_exe = os.path.join(build_dir, 'exe.unstripped', executable_name) + env = os.environ.copy() # We cannot run the unstripped binaries directly when coverage is enabled. if IsLinux() and os.path.exists(unstripped_exe) and not coverage: # Some tests depend on the EGL/GLES libraries placed in the build directory. - env = os.environ.copy() env['LD_LIBRARY_PATH'] = os.path.join(build_dir, 'lib.unstripped') + elif IsMac(): + env['DYLD_LIBRARY_PATH'] = build_dir else: - env = None + env['PATH'] = build_dir + ":" + env['PATH'] print('Running %s in %s' % (executable_name, cwd)) @@ -199,8 +201,6 @@ def RunEngineExecutable( gtest=gtest, ) - if not env: - env = os.environ.copy() env['FLUTTER_BUILD_DIRECTORY'] = build_dir for key, value in extra_env.items(): env[key] = value @@ -1029,7 +1029,7 @@ def main(): variants_to_skip = ['host_release', 'host_profile'] if ('engine' in types or 'font-subset' in types) and args.variant not in variants_to_skip: - RunCmd(['python', 'test.py'], cwd=font_subset_dir) + RunCmd(['python3', 'test.py'], cwd=font_subset_dir) if __name__ == '__main__': From 3a06ddda922da9b378e9de9982f05adec657bbd6 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 7 Jun 2022 21:00:51 -0700 Subject: [PATCH 3/8] avoid nullptr deref --- shell/common/rasterizer.cc | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index ca6b83cff2b45..e739875219cc6 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -87,18 +87,16 @@ void Rasterizer::TeardownExternalViewEmbedder() { } void Rasterizer::Teardown() { - auto context_switch = - surface_ ? surface_->MakeRenderContextCurrent() : nullptr; - if (context_switch && context_switch->GetResult()) { - compositor_context_->OnGrContextDestroyed(); - } - - if (auto* context = surface_->GetContext()) { + if (surface_) { auto context_switch = surface_->MakeRenderContextCurrent(); if (context_switch->GetResult()) { - context->purgeUnlockedResources(/*scratchResourcesOnly=*/false); + compositor_context_->OnGrContextDestroyed(); + if (auto* context = surface_->GetContext()) { + context->purgeUnlockedResources(/*scratchResourcesOnly=*/false); + } } } + surface_.reset(); last_layer_tree_.reset(); From 9a69f649bbd4ebd8b25d75c8c835631071997c77 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Tue, 7 Jun 2022 21:06:32 -0700 Subject: [PATCH 4/8] another test --- shell/common/rasterizer_unittests.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/shell/common/rasterizer_unittests.cc b/shell/common/rasterizer_unittests.cc index c7c26e35c67ed..78bedafbe7158 100644 --- a/shell/common/rasterizer_unittests.cc +++ b/shell/common/rasterizer_unittests.cc @@ -891,4 +891,24 @@ TEST(RasterizerTest, TeardownFreesResourceCache) { EXPECT_EQ(context->getResourceCachePurgeableBytes(), 0ul); } +TEST(RasterizerTest, TeardownNoSurface) { + std::string test_name = + ::testing::UnitTest::GetInstance()->current_test_info()->name(); + ThreadHost thread_host("io.flutter.test." + test_name + ".", + ThreadHost::Type::Platform | ThreadHost::Type::RASTER | + ThreadHost::Type::IO | ThreadHost::Type::UI); + TaskRunners task_runners("test", thread_host.platform_thread->GetTaskRunner(), + thread_host.raster_thread->GetTaskRunner(), + thread_host.ui_thread->GetTaskRunner(), + thread_host.io_thread->GetTaskRunner()); + NiceMock delegate; + EXPECT_CALL(delegate, GetTaskRunners()) + .WillRepeatedly(ReturnRef(task_runners)); + + auto rasterizer = std::make_unique(delegate); + + EXPECT_TRUE(rasterizer); + rasterizer->Teardown(); +} + } // namespace flutter From ae5131d4ab2a213553225b7ae1ab4c51781981f1 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 8 Jun 2022 12:47:23 -0700 Subject: [PATCH 5/8] Skip for now --- shell/common/shell_unittests.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index 9abb5ee8af335..aafbebd720cc1 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -615,6 +615,12 @@ static void CheckFrameTimings(const std::vector& timings, } TEST_F(ShellTest, ReportTimingsIsCalled) { + // This test times out on FEMU. + // https://github.com/flutter/flutter/issues/105642 +#if OS_FUCHSIA + GTEST_SKIP(); +#endif + fml::TimePoint start = fml::TimePoint::Now(); auto settings = CreateSettingsForFixture(); std::unique_ptr shell = CreateShell(settings); From 8e77b8d31ffd24d7172e7a391bbc76126a42c70a Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 8 Jun 2022 12:49:37 -0700 Subject: [PATCH 6/8] jason review --- shell/common/rasterizer.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 16289cfad0bd0..077bb33365824 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -95,9 +95,9 @@ void Rasterizer::Teardown() { context->purgeUnlockedResources(/*scratchResourcesOnly=*/false); } } + surface_.reset(); } - surface_.reset(); last_layer_tree_.reset(); if (raster_thread_merger_.get() != nullptr && From d0ef180fd70cf641929405f3c052251901c99aee Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 8 Jun 2022 14:17:57 -0700 Subject: [PATCH 7/8] another skip --- shell/common/shell_unittests.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index aafbebd720cc1..4c25ac20d70f6 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -671,6 +671,11 @@ TEST_F(ShellTest, ReportTimingsIsCalled) { } TEST_F(ShellTest, FrameRasterizedCallbackIsCalled) { + // This test times out on FEMU. + // https://github.com/flutter/flutter/issues/105642 +#if OS_FUCHSIA + GTEST_SKIP(); +#endif fml::TimePoint start = fml::TimePoint::Now(); auto settings = CreateSettingsForFixture(); From 2470dbe4eb8940e74635813288cc8813e9aaf55c Mon Sep 17 00:00:00 2001 From: Dan Field Date: Wed, 8 Jun 2022 15:52:36 -0700 Subject: [PATCH 8/8] unskip, try using sys libvulkan on fuchsia --- shell/common/BUILD.gn | 10 +++++----- shell/common/shell_test_platform_view_vulkan.cc | 4 +++- shell/common/shell_unittests.cc | 11 ----------- 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/shell/common/BUILD.gn b/shell/common/BUILD.gn index cdf5e99c1af8a..5e46a60716783 100644 --- a/shell/common/BUILD.gn +++ b/shell/common/BUILD.gn @@ -290,11 +290,6 @@ if (enable_unittests) { "//third_party/googletest:gmock", ] - # Swiftshader only supports x86/64. - if (shell_enable_vulkan && (target_cpu == "x86" || target_cpu == "x64")) { - deps += [ "//third_party/swiftshader_flutter:swiftshader_vulkan" ] - } - if (is_fuchsia) { sources += [ "shell_fuchsia_unittests.cc" ] @@ -307,6 +302,11 @@ if (enable_unittests) { } else { # TODO(63837): This test is hard-coded to use a TestGLSurface so it cannot run on fuchsia. sources += [ "shell_io_manager_unittests.cc" ] + + # Swiftshader only supports x86/64. Only needed on non-Fuchsia platforms. + if (shell_enable_vulkan && (target_cpu == "x86" || target_cpu == "x64")) { + deps += [ "//third_party/swiftshader_flutter:swiftshader_vulkan" ] + } } } } diff --git a/shell/common/shell_test_platform_view_vulkan.cc b/shell/common/shell_test_platform_view_vulkan.cc index c5a840ee5a054..4068a9cb2ee79 100644 --- a/shell/common/shell_test_platform_view_vulkan.cc +++ b/shell/common/shell_test_platform_view_vulkan.cc @@ -8,7 +8,9 @@ #include "flutter/shell/common/context_options.h" #include "flutter/vulkan/vulkan_utilities.h" -#ifdef FML_OS_MACOSX +#if OS_FUCHSIA +#define VULKAN_SO_PATH "libvulkan.so" +#elif FML_OS_MACOSX #define VULKAN_SO_PATH "libvk_swiftshader.dylib" #elif FML_OS_WIN #define VULKAN_SO_PATH "vk_swiftshader.dll" diff --git a/shell/common/shell_unittests.cc b/shell/common/shell_unittests.cc index 4c25ac20d70f6..9abb5ee8af335 100644 --- a/shell/common/shell_unittests.cc +++ b/shell/common/shell_unittests.cc @@ -615,12 +615,6 @@ static void CheckFrameTimings(const std::vector& timings, } TEST_F(ShellTest, ReportTimingsIsCalled) { - // This test times out on FEMU. - // https://github.com/flutter/flutter/issues/105642 -#if OS_FUCHSIA - GTEST_SKIP(); -#endif - fml::TimePoint start = fml::TimePoint::Now(); auto settings = CreateSettingsForFixture(); std::unique_ptr shell = CreateShell(settings); @@ -671,11 +665,6 @@ TEST_F(ShellTest, ReportTimingsIsCalled) { } TEST_F(ShellTest, FrameRasterizedCallbackIsCalled) { - // This test times out on FEMU. - // https://github.com/flutter/flutter/issues/105642 -#if OS_FUCHSIA - GTEST_SKIP(); -#endif fml::TimePoint start = fml::TimePoint::Now(); auto settings = CreateSettingsForFixture();