Skip to content

Commit 5467431

Browse files
authored
[Impeller] Deny-list Adreno 640 and 650 for Vulkan eligibility. (#178833)
Fallback to OpenGL ES on these devices. See linked issues for rationale. Fixes flutter/flutter#178285 Fixes flutter/flutter#178498
1 parent 264eabd commit 5467431

2 files changed

Lines changed: 22 additions & 18 deletions

File tree

engine/src/flutter/impeller/renderer/backend/vulkan/driver_info_vk.cc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,11 @@ bool DriverInfoVK::IsKnownBadDriver() const {
361361
// Fall back to OpenGL ES on older Adreno devices that require additional
362362
// workarounds in the Impeller Vulkan back end such as disabling framebuffer
363363
// fetch.
364-
if (adreno_gpu_ && *adreno_gpu_ <= AdrenoGPU::kAdreno630) {
364+
//
365+
// See the following issues:
366+
// https://github.com/flutter/flutter/issues/178285
367+
// https://github.com/flutter/flutter/issues/178498
368+
if (adreno_gpu_ && *adreno_gpu_ <= AdrenoGPU::kAdreno650) {
365369
return true;
366370
}
367371

engine/src/flutter/impeller/renderer/backend/vulkan/driver_info_vk_unittests.cc

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -164,18 +164,18 @@ TEST(DriverInfoVKTest, DriverParsingAdreno) {
164164
}
165165

166166
TEST(DriverInfoVKTest, DisabledDevices) {
167-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 620"));
168-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 610"));
169-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 530"));
170-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 512"));
171-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 509"));
172-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 508"));
173-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 506"));
174-
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 505"));
175167
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 504"));
168+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 505"));
169+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 506"));
170+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 508"));
171+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 509"));
172+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 512"));
173+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 530"));
174+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 610"));
175+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 620"));
176176
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 630"));
177-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 640"));
178-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 650"));
177+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 640"));
178+
EXPECT_TRUE(IsBadVersionTest("Adreno (TM) 650"));
179179
}
180180

181181
TEST(DriverInfoVKTest, EnabledDevicesMali) {
@@ -184,14 +184,14 @@ TEST(DriverInfoVKTest, EnabledDevicesMali) {
184184
}
185185

186186
TEST(DriverInfoVKTest, EnabledDevicesAdreno) {
187-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 750"));
188-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 740"));
189-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 732"));
190-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 730"));
191-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 725"));
192-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 720"));
193-
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 710"));
194187
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 702"));
188+
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 710"));
189+
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 720"));
190+
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 725"));
191+
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 730"));
192+
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 732"));
193+
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 740"));
194+
EXPECT_FALSE(IsBadVersionTest("Adreno (TM) 750"));
195195
}
196196

197197
bool CanUseFramebufferFetch(std::string_view driver_name, bool qc = true) {

0 commit comments

Comments
 (0)