From 19726b1650238e2fd2fa7d3fa94025dbc2ad6ca3 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Fri, 15 Dec 2023 16:47:57 -0800 Subject: [PATCH] Statically link swiftshader into flutter_tester (flutter/engine#48708) Depends on https://swiftshader-review.googlesource.com/c/SwiftShader/+/72768 Fixes https://github.com/flutter/flutter/issues/138169 --- engine/src/flutter/shell/testing/BUILD.gn | 2 +- engine/src/flutter/shell/testing/tester_main.cc | 3 +-- engine/src/flutter/vulkan/procs/vulkan_proc_table.cc | 8 -------- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/engine/src/flutter/shell/testing/BUILD.gn b/engine/src/flutter/shell/testing/BUILD.gn index 06d67ede840..32d647445bd 100644 --- a/engine/src/flutter/shell/testing/BUILD.gn +++ b/engine/src/flutter/shell/testing/BUILD.gn @@ -50,7 +50,7 @@ executable("testing") { deps += [ ":tester_gpu_configuration", "//flutter/impeller", - "//flutter/third_party/swiftshader", + "//flutter/third_party/swiftshader/src/Vulkan:swiftshader_libvulkan_static", ] } diff --git a/engine/src/flutter/shell/testing/tester_main.cc b/engine/src/flutter/shell/testing/tester_main.cc index 7fa3cc75378..b2696be6591 100644 --- a/engine/src/flutter/shell/testing/tester_main.cc +++ b/engine/src/flutter/shell/testing/tester_main.cc @@ -35,7 +35,6 @@ #if ALLOW_IMPELLER #include // nogncheck #include "flutter/vulkan/procs/vulkan_proc_table.h" // nogncheck -#include "flutter/vulkan/swiftshader_path.h" // nogncheck #include "impeller/entity/vk/entity_shaders_vk.h" // nogncheck #include "impeller/entity/vk/framebuffer_blend_shaders_vk.h" // nogncheck #include "impeller/entity/vk/modern_shaders_vk.h" // nogncheck @@ -78,7 +77,7 @@ struct ImpellerVulkanContextHolder { bool ImpellerVulkanContextHolder::Initialize(bool enable_validation) { vulkan_proc_table = - fml::MakeRefCounted(VULKAN_SO_PATH); + fml::MakeRefCounted(&vkGetInstanceProcAddr); if (!vulkan_proc_table->NativeGetInstanceProcAddr()) { FML_LOG(ERROR) << "Could not load Swiftshader library."; return false; diff --git a/engine/src/flutter/vulkan/procs/vulkan_proc_table.cc b/engine/src/flutter/vulkan/procs/vulkan_proc_table.cc index 8fa35010a9d..75a0c00b398 100644 --- a/engine/src/flutter/vulkan/procs/vulkan_proc_table.cc +++ b/engine/src/flutter/vulkan/procs/vulkan_proc_table.cc @@ -76,13 +76,9 @@ PFN_vkGetInstanceProcAddr VulkanProcTable::NativeGetInstanceProcAddr() const { return GetInstanceProcAddr; } -#if VULKAN_LINK_STATICALLY - return &vkGetInstanceProcAddr; -#else // VULKAN_LINK_STATICALLY auto instance_proc = const_cast(handle_->ResolveSymbol("vkGetInstanceProcAddr")); return reinterpret_cast(instance_proc); -#endif // VULKAN_LINK_STATICALLY } bool VulkanProcTable::SetupLoaderProcAddresses() { @@ -200,11 +196,7 @@ bool VulkanProcTable::SetupDeviceProcAddresses( } bool VulkanProcTable::OpenLibraryHandle(const char* path) { -#if VULKAN_LINK_STATICALLY - handle_ = fml::NativeLibrary::CreateForCurrentProcess(); -#else // VULKAN_LINK_STATICALLY handle_ = fml::NativeLibrary::Create(path); -#endif // VULKAN_LINK_STATICALLY if (!handle_) { FML_DLOG(ERROR) << "Could not open Vulkan library handle: " << path; return false;