From cb4b5fff73850b2e42bd4de7cb9a4310a78ac40d Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Fri, 13 Dec 2024 15:49:11 -0800 Subject: [PATCH] [CP][Impeller] disable all Adrenos older than 630 (#57069) (#57100) Cherry pick for https://github.com/flutter/flutter/issues/160041 --- .../renderer/backend/vulkan/driver_info_vk.cc | 40 ++++++++++++++----- .../vulkan/driver_info_vk_unittests.cc | 20 ++++++---- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/impeller/renderer/backend/vulkan/driver_info_vk.cc b/impeller/renderer/backend/vulkan/driver_info_vk.cc index ca7cef979984c..fc96c828b613b 100644 --- a/impeller/renderer/backend/vulkan/driver_info_vk.cc +++ b/impeller/renderer/backend/vulkan/driver_info_vk.cc @@ -330,19 +330,39 @@ bool DriverInfoVK::IsEmulator() const { bool DriverInfoVK::IsKnownBadDriver() const { if (adreno_gpu_.has_value()) { - auto adreno = adreno_gpu_.value(); + 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. 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::kAdreno640: case AdrenoGPU::kAdreno630: - // See: - // https://github.com/flutter/flutter/issues/155185 - // Unknown crashes but device is not easily acquirable. + case AdrenoGPU::kAdreno620: + case AdrenoGPU::kAdreno619: + case AdrenoGPU::kAdreno619L: + case AdrenoGPU::kAdreno618: + case AdrenoGPU::kAdreno616: + case AdrenoGPU::kAdreno615: + case AdrenoGPU::kAdreno613: + case AdrenoGPU::kAdreno612: + case AdrenoGPU::kAdreno610: + case AdrenoGPU::kAdreno608: + case AdrenoGPU::kAdreno605: + case AdrenoGPU::kAdreno540: + case AdrenoGPU::kAdreno530: + case AdrenoGPU::kAdreno512: + case AdrenoGPU::kAdreno510: + case AdrenoGPU::kAdreno509: + case AdrenoGPU::kAdreno508: case AdrenoGPU::kAdreno506: + case AdrenoGPU::kAdreno505: + case AdrenoGPU::kAdreno504: return true; default: 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 9f9dc1d192f29..67f07815320af 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_TRUE(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