[CP][Impeller] disable Maleoon GPU from using Vulkan. (#56203) (#56207) Fixes https://github.com/flutter/flutter/issues/156623 using info from https://vulkan.gpuinfo.org/displayreport.php?id=23730 . I dont believe these vulkan drivers are working correctly.
diff --git a/impeller/renderer/backend/vulkan/driver_info_vk.cc b/impeller/renderer/backend/vulkan/driver_info_vk.cc index d0ce457..ca7cef9 100644 --- a/impeller/renderer/backend/vulkan/driver_info_vk.cc +++ b/impeller/renderer/backend/vulkan/driver_info_vk.cc
@@ -348,6 +348,11 @@ return false; } } + // Disable Maleoon series GPUs, see: + // https://github.com/flutter/flutter/issues/156623 + if (vendor_ == VendorVK::kHuawei) { + return true; + } return false; }
diff --git a/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc b/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc index e95f76c..9f9dc1d 100644 --- a/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc +++ b/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc
@@ -36,6 +36,19 @@ EXPECT_TRUE(log.str().find("Driver Information") != std::string::npos); } +TEST(DriverInfoVKTest, CanIdentifyBadMaleoonDriver) { + auto const context = + MockVulkanContextBuilder() + .SetPhysicalPropertiesCallback( + [](VkPhysicalDevice device, VkPhysicalDeviceProperties* prop) { + prop->vendorID = 0x19E5; // Huawei + prop->deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU; + }) + .Build(); + + EXPECT_TRUE(context->GetDriverInfo()->IsKnownBadDriver()); +} + bool IsBadVersionTest(std::string_view driver_name, bool qc = true) { auto const context = MockVulkanContextBuilder()