From d8b071b9b487cb9e680b55b9563bf7d4e2cd982e Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Mon, 9 Dec 2024 12:32:33 -0800 Subject: [PATCH] [Impeller] disable all Adrenos older than 630 (#57069) Fixes https://github.com/flutter/flutter/issues/159834 Disable all older Adreno GPUs --- .../renderer/backend/vulkan/driver_info_vk.cc | 28 ++++++++----------- .../vulkan/driver_info_vk_unittests.cc | 20 +++++++------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/impeller/renderer/backend/vulkan/driver_info_vk.cc b/impeller/renderer/backend/vulkan/driver_info_vk.cc index ca7cef979984c..583e3fbefc9d8 100644 --- a/impeller/renderer/backend/vulkan/driver_info_vk.cc +++ b/impeller/renderer/backend/vulkan/driver_info_vk.cc @@ -330,22 +330,18 @@ bool DriverInfoVK::IsEmulator() const { bool DriverInfoVK::IsKnownBadDriver() const { if (adreno_gpu_.has_value()) { - auto adreno = adreno_gpu_.value(); - switch (adreno) { - // See: - // https://github.com/flutter/flutter/issues/154103 - // - // Reports "VK_INCOMPLETE" when compiling certain entity shader with - // vkCreateGraphicsPipelines, which is not a valid return status. - // See https://github.com/flutter/flutter/issues/155185 . - case AdrenoGPU::kAdreno630: - // See: - // https://github.com/flutter/flutter/issues/155185 - // Unknown crashes but device is not easily acquirable. - case AdrenoGPU::kAdreno506: - return true; - default: - return false; + AdrenoGPU adreno = adreno_gpu_.value(); + // See: + // https://github.com/flutter/flutter/issues/154103 + // + // Reports "VK_INCOMPLETE" when compiling certain entity shader with + // vkCreateGraphicsPipelines, which is not a valid return status. + // See https://github.com/flutter/flutter/issues/155185 . + // + // https://github.com/flutter/flutter/issues/155185 + // Unknown crashes but device is not easily acquirable. + if (adreno <= AdrenoGPU::kAdreno630) { + return true; } } // Disable Maleoon series GPUs, see: diff --git a/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc b/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc index 9f9dc1d192f29..643787ec88ae9 100644 --- a/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc +++ b/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc @@ -80,6 +80,18 @@ TEST(DriverInfoVKTest, DriverParsingArm) { TEST(DriverInfoVKTest, DisabledDevices) { EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 630")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 620")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 610")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 530")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 512")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 509")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 508")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 506")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 505")); + EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 504")); + + EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 640")); + EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 650")); } TEST(DriverInfoVKTest, EnabledDevicesMali) { @@ -96,14 +108,6 @@ TEST(DriverInfoVKTest, EnabledDevicesAdreno) { EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 720")); EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 710")); EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 702")); - EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 530")); - EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 512")); - EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 509")); - EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 508")); - EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 505")); - EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 504")); - - EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 506")); } } // namespace impeller::testing