Skip to content

Commit

Permalink
[CP][Impeller] disable all Adrenos older than 630 (#57069) (#57100)
Browse files Browse the repository at this point in the history
Cherry pick for flutter/flutter#160041
  • Loading branch information
jonahwilliams authored Dec 13, 2024
1 parent 57618fa commit cb4b5ff
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 18 deletions.
40 changes: 30 additions & 10 deletions impeller/renderer/backend/vulkan/driver_info_vk.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
20 changes: 12 additions & 8 deletions impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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

0 comments on commit cb4b5ff

Please sign in to comment.