diff --git a/README.md b/README.md index 468b4a1..41d23fe 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,12 @@ feedback will help refine the recommendation list. ## Version history +* 1.2.4 - (05/27/2026) - Recommend Vulkan on unknown devices if they pass +dEQP 3.2024 or later. Deprecate future Android Vulkan criteria. +Disable fingerprint check by default unless user device +info is provided, deprecate default fingerprint entries in quality file, improve +data validation checks in quality file. Fix potential logic flaw in sequential +wildcard matching. Minor bug fixes. * 1.2.3 - (12/03/2025) - Recommend Vulkan on unrecognized devices if ANGLE is the system GLES driver, fix redundant/missing eglTerminate in GLES utils. * 1.2.2 - (06/09/2025) - Updated device list with additional GPU recommendations diff --git a/list_editor/example_data/device_list.csv b/list_editor/example_data/device_list.csv index 46ba6fd..b9e1479 100644 --- a/list_editor/example_data/device_list.csv +++ b/list_editor/example_data/device_list.csv @@ -35,8 +35,13 @@ MinApi,MinDriver,Brand,Device,Manufacturer,Model Name,RAM (TotalMem),Form Factor 34,0,google,shiba,Google,Pixel 8,7972MB,Phone,Google Tensor G3,Mali-G715s MC10,1080x2400,420,arm64-v8a,34,3.2,0,0.00%,0.00%,0.00%,0.00% 34,0,google,comet,Google,Pixel 9 Pro Fold,16308MB,Tablet,Google Tensor G4,7x ARM Mali G715 (940 MHz),2076x2152,390,arm64-v8a,35,3.2,0,0.00%,0.00%,0.00%,0.00% 34,0,google,caiman,Google,Pixel 9 Pro,16308MB,Phone,Google Tensor G4,7x ARM Mali G715 (940 MHz),1280x2856,480,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% +34,0,google,tegu,Google,Pixel 9a,7682-7938MB,Phone,Google Tensor G4,7x ARM Mali G715 (940 MHz),1080x2424,420,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% +34,0,google,stallion,Google,Pixel 10a,7938MB,Phone,Google Tensor G4,7x ARM Mali G715 (940 MHz),1080x2424,420,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% 34,0,google,tokay,Google,Pixel 9,12109MB,Phone,Google Tensor G4,7x ARM Mali G715 (940 MHz),1080x2424,420,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% 34,0,google,komodo,Google,Pixel 9 Pro XL,16308MB,Phone,Google Tensor G4,7x ARM Mali G715 (940 MHz),1344x2992,480,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% +35,0,google,frankel,Google,Pixel 10,12109MB,Phone,Google Tensor G5,Imagination Tech DXT 48-1536 (1300 MHz),1080x2424,420,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% +35,0,google,blazer,Google,Pixel 10 Pro,15819-16332MB,Phone,Google Tensor G5,Imagination Tech DXT 48-1536 (1300 MHz),1280x2856,480,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% +35,0,google,rango,Google,Pixel 10 Pro Fold,16331MB,Phone,Google Tensor G5,Imagination Tech DXT 48-1536 (1300 MHz),2076x2152,390,arm64-v8a,34;35,3.2,0,0.00%,0.00%,0.00%,0.00% 34,2150531090,HONOR,HNBVL,Honor,HONOR Magic6 Pro,11824MB,Phone,QTI SM8650,Qualcomm Adreno 830 (903 MHz),1280x2800,560,arm64-v8a,34,3.2,0,0.00%,0.00%,0.00%,0.00% 34,2150531090,HONOR,HNBVL-AN00,Honor,HONOR Magic6,16015MB,Phone,QTI SM8650,Qualcomm Adreno 830 (903 MHz),1264x2800,560,arm64-v8a,34,3.2,0,0.00%,0.00%,0.00%,0.00% 33,2150252544,HONOR,HNFRI,Honor,HONOR Magic Vs,11850MB,Tablet,QTI SM8475,Qualcomm Adreno 730 (900 MHz),1984x2272,480,arm64-v8a;armeabi;armeabi-v7a,33,3.2,0,0.00%,0.00%,0.00%,0.00% diff --git a/list_editor/example_data/driver_allow.csv b/list_editor/example_data/driver_allow.csv index 3b38085..133c773 100644 --- a/list_editor/example_data/driver_allow.csv +++ b/list_editor/example_data/driver_allow.csv @@ -1,107 +1,3 @@ soc,glFullVersion -SM7450,"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)" -SM6450,"OpenGL ES 3.2 V@0615.80 (GIT@406382a20f, I986008d073, 1704447428) (Date:01/05/24)" -SM8450,"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)" -MT6877,OpenGL ES 3.2 v1.r32p1-01eac0.8135628637558d6d27e8ec61da0ffbb5 -MT6769,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 -MT6789,OpenGL ES 3.2 v1.r32p1-01eac0.394145956bc7cd8e697b330aba11e3d3 -SM8350,"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)" -SM8635,"OpenGL ES 3.2 V@0762.15 (GIT@674f6c61df, Iec746bb8f9, 1712300122) (Date:04/05/24)" -MT6983,OpenGL ES 3.2 v1.r32p1-01eac0.b1c355f1ca75ee340751fc2d07d2e153 -SM8450,"OpenGL ES 3.2 V@0615.0 (GIT@194d5e5755, I6561b7ccb3, 1691691459) (Date:08/10/23)" -MT6877V/TTZA,OpenGL ES 3.2 v1.r32p1-01eac0.b8cf1793b1173c0bb23abcfef1974de4 -MT6769Z,OpenGL ES 3.2 v1.r32p1-01eac0.52688e0652bc37eab85ce86c674ab12f -MT6879V_T/ZA,OpenGL ES 3.2 v1.r32p1-01eac0.a031c769622e85782e9b68c066a81213 -SM7450,"OpenGL ES 3.2 V@0615.76 (GIT@fc9849b050, Ibccd5936db, 1700474993) (Date:11/20/23)" -MT6781,OpenGL ES 3.2 v1.r32p1-01eac0.f8dc73e9e828783da7609cdc1c245dfa -EXYNOS 2100,OpenGL ES 3.2 v1.r38p0-01eac0-mbs2v41_0.65f90f7db733ed40f27c25ca33fc398f -SM7675,"OpenGL ES 3.2 V@0762.17 (GIT@f115f6bba1, I45c6b84a32, 1712917670) (Date:04/12/24)" -SM4350,"OpenGL ES 3.2 V@0530.0 (GIT@8699000cd8, I1027f1d7d9, 1649421937) (Date:04/08/22)" -SM8350,"OpenGL ES 3.2 V@0530.0 (GIT@12ae96cb63, I409bbc12eb, 1694603898) (Date:09/13/23)" -MT8781V/CA,OpenGL ES 3.2 v1.r32p1-01eac0.394145956bc7cd8e697b330aba11e3d3 -SM4450,"OpenGL ES 3.2 V@0615.77 (GIT@64bab644ca, I204cbc9b5e, 1700479993) (Date:11/20/23)" -SM6375,"OpenGL ES 3.2 V@0530.0 (GIT@f3aa497c33, I7c31881d50, 1639653329) (Date:12/16/21)" -MT6985,OpenGL ES 3.2 v1.r38p1 -MT6883,OpenGL ES 3.2 v1.r32p1-01eac0.479f7c91bbdfefd5f0c368c0a30bcfd0 -S5E9945,OpenGL ES 3.2 Driver version: 24.1.207 git hash: 927672398aa8 -SM8550,"OpenGL ES 3.2 V@0676.57 (GIT@6129fbc570, I5a3b7da999, 1708681500) (Date:02/23/24)" -S5E8835,OpenGL ES 3.2 v1.r38p1-01eac0-mbs2v41_0.8e62f436dbeeadb2f1bba495fbb741ec -SM8650,"OpenGL ES 3.2 V@0744.12 (GIT@62c1f322ce, Id0077aad60, 1700555917) (Date:11/21/23)" -MT6833V/PNZA,OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139 -SM6375,"OpenGL ES 3.2 V@0762.17 (GIT@f115f6bba1, I45c6b84a32, 1712929337) (Date:04/12/24)" -MT8798Z/CNZA,OpenGL ES 3.2 v1.r32p1-01eac0.b1c355f1ca75ee340751fc2d07d2e153 -QCM6490,"OpenGL ES 3.2 V@0530.46 (GIT@a3cdec2236, Ief33eea0db, 1661255399) (Date:08/23/22)" -MT6789,OpenGL ES 3.2 v1.r32p1-01eac0.9850964fe16242c585c8d423010c8595 -MT6768,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 -SM4375,"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)" -SM8475,"OpenGL ES 3.2 V@0615.82 (GIT@9dec52427c, Ibe7eb5ecbe, 1705914897) (Date:01/22/24)" -S5E8825,OpenGL ES 3.2 v1.r32p1-01bet2-mbs2v39_0.24a5b8b8abb488a61e5e48232a460c3e -SM8650,"OpenGL ES 3.2 V@0744.18 (GIT@d774a8672e, I8ea610b5b4, 1704277645) (Date:01/03/24)" -SM6375,"OpenGL ES 3.2 V@0530.48 (GIT@e7626cbb06, If33672715f, 1674571865) (Date:01/24/23)" -SM6225,"OpenGL ES 3.2 V@0615.72 (GIT@67600309f5, I34f73d0972, 1688991399) (Date:07/10/23)" -MT6833P,OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139 -SM6225,"OpenGL ES 3.2 V@0615.81 (GIT@75362bd531, I5cf4e5bf0f, 1704968105) (Date:01/11/24)" -MT6835,OpenGL ES 3.2 v1.r38p1 -S5E9945,OpenGL ES 3.2 ANGLE git hash: 131b607622f4 -SM7450,"OpenGL ES 3.2 V@0615.84 (GIT@72d8b177be, I020fdb6434, 1709038286) (Date:02/27/24)" -SM6225,"OpenGL ES 3.2 V@0615.84 (GIT@72d8b177be, I020fdb6434, 1709038286) (Date:02/27/24)" -SM8450,"OpenGL ES 3.2 V@0615.0 (GIT@770ea4bdb9, Ief8f71bb1e, 1706806055) (Date:02/01/24)" -MT6769V/WZ,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 -SM7550,"OpenGL ES 3.2 V@0676.57 (GIT@6129fbc570, I5a3b7da999, 1708681500) (Date:02/23/24)" -MT6769V/CA,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 -MT6877V/TTZA,OpenGL ES 3.2 v1.r32p1-01eac0.8135628637558d6d27e8ec61da0ffbb5 -SM7675,"OpenGL ES 3.2 V@0762.15 (GIT@674f6c61df, Iec746bb8f9, 1712300122) (Date:04/05/24)" -SM6225,"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)" -MT6895,OpenGL ES 3.2 v1.r32p1-01eac0.b89152572cfa9465230812a8225a45a0 -SM7435,"OpenGL ES 3.2 V@0615.82 (GIT@9dec52427c, Ibe7eb5ecbe, 1705914897) (Date:01/22/24)" -MT6833V/ZA,OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139 -MT8791V/T,OpenGL ES 3.2 v1.r32p1-01eac0.b8cf1793b1173c0bb23abcfef1974de4 -S5E8845,OpenGL ES 3.2 ANGLE git hash: c2b872f4c96b -TENSOR G2,OpenGL ES 3.2 v1.r44p0-01eac0.1f05338ba59e9e7d040ba6bef774b2ac -SM8550,"OpenGL ES 3.2 V@0676.42 (GIT@7b26bdd942, Iab69c31769, 1693222181) (Date:08/28/23)" -MT6769,OpenGL ES 3.2 v1.r32p1-01eac0.52688e0652bc37eab85ce86c674ab12f -MT6833V/NZA,OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139 -SM8635,"OpenGL ES 3.2 V@0762.14 (GIT@c70b9a2a3c, I34176f3f01, 1711715768) (Date:03/29/24)" -SM7450,"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)" -SM8450,"OpenGL ES 3.2 V@0615.82 (GIT@9dec52427c, Ibe7eb5ecbe, 1705914897) (Date:01/22/24)" -S5E9945,OpenGL ES 3.2 ANGLE git hash: d2a158dccead -MT6893Z/CZA,OpenGL ES 3.2 v1.r32p1-01eac0.efd03ef21f136842c0935bd4f493fe81 -MT6891Z/CZA,OpenGL ES 3.2 v1.r32p1-01eac0.efd03ef21f136842c0935bd4f493fe81 -MT6789V/CD,OpenGL ES 3.2 v1.r32p1-01eac0.394145956bc7cd8e697b330aba11e3d3 -MT8786V/CA,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 -SM8350,"OpenGL ES 3.2 V@0530.47 (GIT@eaa701cd06, I183f6321f0, 1666871261) (Date:10/27/22)" -MT6886,OpenGL ES 3.2 v1.r38p1 -SM6115,"OpenGL ES 3.2 V@0615.86 (GIT@30f48d66fb, I33af6953c3, 1712899917) (Date:04/12/24)" -SM8450,"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)" -SM8350,"OpenGL ES 3.2 V@0530.53 (GIT@a1cf8ab5e3, I428bf45773, 1699535026) (Date:11/09/23)" -SM8650,"OpenGL ES 3.2 V@0762.10 (GIT@1394a2c7a8, Id12349e41b, 1708672982) (Date:02/23/24)" -SM6375,"OpenGL ES 3.2 V@0762.18 (GIT@af856151b0, Id776b0abd7, 1714127119) (Date:04/26/24)" -S5E9925,OpenGL ES 3.2 ANGLE git hash: ea27396cef93 -SM7325,"OpenGL ES 3.2 V@0530.53 (GIT@a1cf8ab5e3, I428bf45773, 1699535026) (Date:11/09/23)" -S5E9925,OpenGL ES 3.2 ANGLE git hash: 72640fd9af5e -MT8766A,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 -SM8635,"OpenGL ES 3.2 V@0762.9 (GIT@1fe7e097fd, Iac1c08c4e4, 1708364057) (Date:02/19/24)" -SM7435,"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)" -SM8475,"OpenGL ES 3.2 V@0615.0 (GIT@770ea4bdb9, Ief8f71bb1e, 1706806055) (Date:02/01/24)" -EXYNOS 2100,OpenGL ES 3.2 v1.r38p0-01eac0-mbs2v41_0.fbda7a2431aa2b386a4490f824f8fcc5 -SM7325,"OpenGL ES 3.2 V@0530.0 (GIT@cac6e6f805, I5187d04b75, 1637574833) (Date:11/22/21)" -S5E8835,OpenGL ES 3.2 v1.r38p1-01eac0-mbs2v41_0.c23b38d1557dbf46a5d45aec73cc4d15 -MT6833,OpenGL ES 3.2 v1.r32p1-01eac0.e1f01de808a0a50894ce9df2ecbbec80 -SM7325,"OpenGL ES 3.2 V@0530.47 (GIT@eaa701cd06, I183f6321f0, 1666871261) (Date:10/27/22)" -SM7675,"OpenGL ES 3.2 V@0762.21 (GIT@21ec731d58, Ifa39d99f17, 1717163077) (Date:05/31/24)" -SM8475,"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)" -S5E9925,OpenGL ES 3.2 ANGLE git hash: 420895f80df0 -SM8350,"OpenGL ES 3.2 V@0530.49 (GIT@329cf4c2a7, I63533b1e29, 1675175164) (Date:01/31/23)" -MT6877,OpenGL ES 3.2 v1.r32p1-01eac0.b8cf1793b1173c0bb23abcfef1974de4 -SM6225,"OpenGL ES 3.2 V@0615.77 (GIT@64bab644ca, I204cbc9b5e, 1700479993) (Date:11/20/23)" -A523,OpenGL ES 3.2 v1.r40p0-01eac0.c527590351327cc7ce8e3744d9361ee2 -MT6893,OpenGL ES 3.2 v1.r32p1-01eac0.efd03ef21f136842c0935bd4f493fe81 -SM8475,"OpenGL ES 3.2 V@0615.0 (GIT@194d5e5755, I6561b7ccb3, 1691691459) (Date:08/10/23)" -MT6896Z/CZA,OpenGL ES 3.2 v1.r32p1-01eac0.54329dee8f160f288c574caaf67bbe3f -MT6833,OpenGL ES 3.2 v1.r32p1-01eac0.f20ecd5cf326048879c2d906512e687e -MT6895Z_B/TCZA,OpenGL ES 3.2 v1.r32p1-01eac0.54329dee8f160f288c574caaf67bbe3f -S5E8845,OpenGL ES 3.2 ANGLE git hash: 4ae132631265 -T612,OpenGL ES 3.2 v1.r41p0-01eac0.018fc629603b7a70cc68d32f78ac8686 -MT6878,OpenGL ES 3.2 v1.r44p1-01eac0.9dfad904584e582a866ae268ba67da86 -MT6877V/ZA,OpenGL ES 3.2 v1.r32p1-01eac0.fdc5c778fea891c0453057246e18e215 -MT6769V/CZ,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 \ No newline at end of file +zzzzzz,zzzzz +zzzzzz2,zzzzz2 diff --git a/list_editor/example_data/driver_deny.csv b/list_editor/example_data/driver_deny.csv index f2aabb1..0b24679 100644 --- a/list_editor/example_data/driver_deny.csv +++ b/list_editor/example_data/driver_deny.csv @@ -1,8 +1,3 @@ soc,glFullVersion -TENSOR,OpenGL ES 3.2 v1.r47p0-01eac0.32ea38cfcac3afe9a9b43f4ca33f49a9 -MT6765,OpenGL ES 3.2 build 1.13@5776728 -MT6769V/CB,OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5 -MT6769V/CZ,OpenGL ES 3.2 v1.r32p1-01eac0.fc49d6bd800ecb1492a1f77284a4d178 -SM6450,"OpenGL ES 3.2 V@0615.86 (GIT@30f48d66fb, I33af6953c3, 1712899917) (Date:04/12/24)" -TENSOR G4,OpenGL ES 3.2 v1.r47p0-01eac0.dcd0e390f0239618a7dd5d0b929ff6e1 -TENSOR,OpenGL ES 3.2 v1.r46p0-01eac1.6b76d861277b3ea6941f5aa972def735 \ No newline at end of file +zzzzzx,zzzzx +zzzzzx2,zzzzx2 diff --git a/list_editor/example_data/vkqualitydata.json b/list_editor/example_data/vkqualitydata.json index 2e753a6..a7b1fd6 100644 --- a/list_editor/example_data/vkqualitydata.json +++ b/list_editor/example_data/vkqualitydata.json @@ -1 +1 @@ -{"ProjectSchemaVersion":1,"ExportedListFileVersion":66050,"MinApiForFutureRecommendation":37,"DeviceAllowList":[{"brand":"asus","device":"ASUS_AI2201","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2202","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2203","minapi":33,"driverversion":0},{"brand":"asus","device":"ASUS_AI2205","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2302","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2401","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_I002D","minapi":31,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I003_1","minapi":31,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I004D","minapi":33,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I005_1","minapi":33,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I006D","minapi":33,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I007_1","minapi":30,"driverversion":2149654528},{"brand":"DOCOMO","device":"F51A","minapi":31,"driverversion":2149654528},{"brand":"DOCOMO","device":"SH-51A","minapi":31,"driverversion":2149654528},{"brand":"DOCOMO","device":"SH-51B","minapi":33,"driverversion":2149654528},{"brand":"DOCOMO","device":"SH-51D","minapi":34,"driverversion":2150252544},{"brand":"DOCOMO","device":"SH-52C","minapi":34,"driverversion":2150252544},{"brand":"DOCOMO","device":"SH-52D","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-51A","minapi":31,"driverversion":2149654528},{"brand":"docomo","device":"SO-51B","minapi":33,"driverversion":2149654528},{"brand":"docomo","device":"SO-51C","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-51D","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-52A","minapi":31,"driverversion":2149654528},{"brand":"docomo","device":"SO-53B","minapi":33,"driverversion":2149654528},{"brand":"docomo","device":"SO-53D","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-54C","minapi":34,"driverversion":2150252544},{"brand":"google","device":"akita","minapi":34,"driverversion":0},{"brand":"google","device":"panther","minapi":34,"driverversion":0},{"brand":"google","device":"felix","minapi":34,"driverversion":0},{"brand":"google","device":"husky","minapi":34,"driverversion":0},{"brand":"google","device":"lynx","minapi":34,"driverversion":0},{"brand":"google","device":"cheetah","minapi":34,"driverversion":0},{"brand":"google","device":"tangorpro","minapi":34,"driverversion":0},{"brand":"google","device":"shiba","minapi":34,"driverversion":0},{"brand":"google","device":"comet","minapi":34,"driverversion":0},{"brand":"google","device":"caiman","minapi":34,"driverversion":0},{"brand":"google","device":"tokay","minapi":34,"driverversion":0},{"brand":"google","device":"komodo","minapi":34,"driverversion":0},{"brand":"HONOR","device":"HNBVL","minapi":34,"driverversion":2150531090},{"brand":"HONOR","device":"HNBVL-AN00","minapi":34,"driverversion":2150531090},{"brand":"HONOR","device":"HNFRI","minapi":33,"driverversion":2150252544},{"brand":"HONOR","device":"HNLGE","minapi":33,"driverversion":2150252544},{"brand":"HONOR","device":"HNMAA","minapi":34,"driverversion":2150252544},{"brand":"HONOR","device":"HNMAG","minapi":34,"driverversion":2150252544},{"brand":"HONOR","device":"HNMAP","minapi":34,"driverversion":2150252544},{"brand":"HONOR","device":"HNPGT","minapi":33,"driverversion":2150252544},{"brand":"HONOR","device":"HNVER","minapi":33,"driverversion":2150252544},{"brand":"HTC","device":"htc_enodugls","minapi":34,"driverversion":2150252544},{"brand":"Infinix","device":"Infinix-X6871","minapi":34,"driverversion":0},{"brand":"iQOO","device":"2009","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2012","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2017","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2019","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2022","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I1928","minapi":31,"driverversion":2149654528},{"brand":"iQOO","device":"I2201","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I2202","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"I2212","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I2214","minapi":34,"driverversion":0},{"brand":"iQOO","device":"I2217","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I2220","minapi":34,"driverversion":2150531090},{"brand":"iQOO","device":"I2304","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG01","minapi":31,"driverversion":2149654528},{"brand":"KDDI","device":"SOG02","minapi":31,"driverversion":2149654528},{"brand":"KDDI","device":"SOG03","minapi":33,"driverversion":2149654528},{"brand":"KDDI","device":"SOG05","minapi":33,"driverversion":2149654528},{"brand":"KDDI","device":"SOG06","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG09","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG10","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG12","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"TGD","minapi":31,"driverversion":2149654528},{"brand":"LeiaInc","device":"LumePad","minapi":31,"driverversion":2149654528},{"brand":"Lenovo","device":"doom","minapi":30,"driverversion":2149654528},{"brand":"Lenovo","device":"halo","minapi":32,"driverversion":2149654528},{"brand":"Lenovo","device":"moba","minapi":30,"driverversion":2149654528},{"brand":"Lenovo","device":"olivine","minapi":33,"driverversion":2149654528},{"brand":"Lenovo","device":"TB320FC","minapi":33,"driverversion":2149654528},{"brand":"lge","device":"L-51A","minapi":31,"driverversion":2149654528},{"brand":"lge","device":"rainbowlm","minapi":30,"driverversion":2149654528},{"brand":"lge","device":"timelm","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu17","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu17Pro","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18Pro","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18s","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18sPro","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18X","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu20","minapi":34,"driverversion":2150252544},{"brand":"meizu","device":"meizu20Inf","minapi":34,"driverversion":2150252544},{"brand":"meizu","device":"meizu20Pro","minapi":34,"driverversion":2150252544},{"brand":"meizu","device":"meizu21","minapi":34,"driverversion":2150531090},{"brand":"meizu","device":"meizu21Pro","minapi":34,"driverversion":2150531090},{"brand":"Mi","device":"aliothin","minapi":33,"driverversion":2149654528},{"brand":"motorola","device":"bronco","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"burton","minapi":31,"driverversion":2149654528},{"brand":"motorola","device":"eqe","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"eqs","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"hiphi","minapi":33,"driverversion":2150252544},{"brand":"motorola","device":"hiphic","minapi":33,"driverversion":2150252544},{"brand":"motorola","device":"nio","minapi":31,"driverversion":2149654528},{"brand":"motorola","device":"oneli","minapi":33,"driverversion":2150252544},{"brand":"motorola","device":"pstar","minapi":33,"driverversion":2149654528},{"brand":"motorola","device":"rtwo","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"tundra","minapi":33,"driverversion":2149654528},{"brand":"motorola","device":"xpeng","minapi":31,"driverversion":2149654528},{"brand":"motorola","device":"zeekr","minapi":33,"driverversion":2150252544},{"brand":"NEC","device":"LAVIETab9QHD1","minapi":33,"driverversion":2149654528},{"brand":"Nothing","device":"Pong","minapi":34,"driverversion":2150252544},{"brand":"nubia","device":"NX659J","minapi":29,"driverversion":2149654528},{"brand":"nubia","device":"NX659J-EEA","minapi":30,"driverversion":2149654528},{"brand":"nubia","device":"NX659J-RU","minapi":29,"driverversion":2149654528},{"brand":"nubia","device":"NX659J-UN","minapi":30,"driverversion":2149654528},{"brand":"nubia","device":"NX666J","minapi":30,"driverversion":2149654528},{"brand":"nubia","device":"NX669J","minapi":32,"driverversion":2149654528},{"brand":"nubia","device":"NX669J-EEA","minapi":32,"driverversion":2149654528},{"brand":"nubia","device":"NX669J-UN","minapi":32,"driverversion":2149654528},{"brand":"nubia","device":"NX679J","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX679J-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX679J-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX679S","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709J","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709J-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709J-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709S","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709S-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709S-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX729J-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX729J-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX769J","minapi":34,"driverversion":2150531090},{"brand":"nubia","device":"P875N02","minapi":31,"driverversion":2149654528},{"brand":"nubia","device":"P898A21","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"P898P02","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ82A01","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ82A02","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ82A11","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ83A01","minapi":34,"driverversion":2150531090},{"brand":"OnePlus","device":"OnePlus8","minapi":33,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8Pro","minapi":33,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8T","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8TMO","minapi":33,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8TTMO","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8Visible","minapi":30,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8VZW","minapi":30,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9Pro","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9ProTMO","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9R","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9TMO","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OP5154L1","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OP5155L1","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OP516EL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5552L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5565","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5566L1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5567L1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP556FL1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP591BL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5927","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5929L1","minapi":34,"driverversion":2150531090},{"brand":"OnePlus","device":"OP5943L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP594DL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP595DL1","minapi":34,"driverversion":2150531090},{"brand":"OnePlus","device":"OP5961L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5973L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP59BCL1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5CF9L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5CFBL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5D35L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5D3FL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP4A77","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4A7A","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4AD9","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4BA1L1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4BA2L1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4E3F","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP4E75L1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP4EA7","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4EC1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4F0BL1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4F57L1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP4F7FL1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP520DL1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP520F","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP5223","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP5281","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP528BL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP528F","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP5297","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP52D1L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP52D5L1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP5335L1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP55F3L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP55FF","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5601","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP5607L1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP561F","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP564B","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP565FL1","minapi":34,"driverversion":2150531090},{"brand":"OPPO","device":"OP5661L1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP56BBL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP56CDL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP56CFL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP56D3L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5989","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP59BBL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP59EDL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP59EFL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5A15L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5AD3L1","minapi":34,"driverversion":0},{"brand":"POCO","device":"alioth","minapi":33,"driverversion":2149654528},{"brand":"POCO","device":"garnet","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"ingres","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"lmi","minapi":31,"driverversion":2149654528},{"brand":"POCO","device":"marble","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"marblein","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"munch","minapi":33,"driverversion":2149654528},{"brand":"POCO","device":"xaga","minapi":33,"driverversion":0},{"brand":"RAKUTEN","device":"Banagher","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RE546F","minapi":34,"driverversion":2149654528},{"brand":"realme","device":"RE5471","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RE5473","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RE5477","minapi":34,"driverversion":2149654528},{"brand":"realme","device":"RE547F","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE54E4L1","minapi":34,"driverversion":2149654528},{"brand":"realme","device":"RE5860","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE58B2L1","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RE58D1L1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE5C33","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE5C37","minapi":34,"driverversion":2150531090},{"brand":"realme","device":"RE5C82L1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE879AL1","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RED8ACL1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RED8BEL1","minapi":34,"driverversion":0},{"brand":"realme","device":"REE2B2L1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RMX2071CN","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2072CN","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2075L1","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2076L1","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2202CN","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RMX2202L1","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"alioth","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"apollo","minapi":31,"driverversion":2149654528},{"brand":"Redmi","device":"corot","minapi":34,"driverversion":0},{"brand":"Redmi","device":"diting","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"dizi","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"garnet","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"haydn","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"ingres","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"lmi","minapi":31,"driverversion":2149654528},{"brand":"Redmi","device":"lmipro","minapi":31,"driverversion":2149654528},{"brand":"Redmi","device":"marble","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"mondrian","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"munch","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"pearl","minapi":33,"driverversion":0},{"brand":"Redmi","device":"peridot","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"rembrandt","minapi":33,"driverversion":0},{"brand":"Redmi","device":"ruan","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"socrates","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"xaga","minapi":33,"driverversion":0},{"brand":"Redmi","device":"xagain","minapi":33,"driverversion":0},{"brand":"Redmi","device":"xagapro","minapi":33,"driverversion":0},{"brand":"samsung","device":"a55x","minapi":34,"driverversion":0},{"brand":"samsung","device":"b0q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"b0s","minapi":34,"driverversion":0},{"brand":"samsung","device":"b2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"b4q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"b5q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"bloomxq","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"c1q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"c2q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"dm1q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"dm2q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"dm3q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"e1q","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"e1s","minapi":34,"driverversion":0},{"brand":"samsung","device":"e2q","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"e2s","minapi":34,"driverversion":0},{"brand":"samsung","device":"e3q","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"f2q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"g0q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"g0s","minapi":34,"driverversion":0},{"brand":"samsung","device":"gts7l","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts7lwifi","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts7xl","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts7xlwifi","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts8","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8p","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8pwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8u","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8uwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8wifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9p","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9pwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9u","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9uwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9wifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"m44x","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"o1q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"p3q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"q2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"q4q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"q5q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"r0q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"r0s","minapi":34,"driverversion":0},{"brand":"samsung","device":"r11q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"r11s","minapi":34,"driverversion":0},{"brand":"samsung","device":"r8q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"r9q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-51A","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SC-51B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-51C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-51D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-51E","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"SC-52A","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SC-52B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-52C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-52D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-52E","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"SC-53A","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SC-54B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-54C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-54D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-55B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-55C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-55D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC51Aa","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG01","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG02","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG03","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG04","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG06","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG09","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG10","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG11","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG12","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG13","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG14","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG16","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG17","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG19","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG20","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG22","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG23","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG24","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG25","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"SCG26","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"t2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"v2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"x1q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"y2q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"z3q","minapi":33,"driverversion":2149654528},{"brand":"SG","device":"Judau","minapi":33,"driverversion":2149654528},{"brand":"SG","device":"JudauL","minapi":33,"driverversion":2149654528},{"brand":"SG","device":"Kamille","minapi":33,"driverversion":2150252544},{"brand":"SG","device":"KamilleL","minapi":34,"driverversion":2150252544},{"brand":"SG","device":"Mineva","minapi":34,"driverversion":2150252544},{"brand":"SG","device":"MinevaL","minapi":31,"driverversion":2150252544},{"brand":"SG","device":"SG908SH","minapi":31,"driverversion":2149654528},{"brand":"SHARP","device":"Banagher","minapi":30,"driverversion":2149654528},{"brand":"SHARP","device":"FaYuiry","minapi":34,"driverversion":2150252544},{"brand":"SHARP","device":"Judau","minapi":33,"driverversion":2149654528},{"brand":"SHARP","device":"Kamille","minapi":34,"driverversion":2150252544},{"brand":"SoftBank","device":"Z8851S","minapi":29,"driverversion":2149654528},{"brand":"Sony","device":"A002SO","minapi":30,"driverversion":2149654528},{"brand":"Sony","device":"A101SO","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"A103SO","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"A201SO","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"A204SO","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"A301SO","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"PDT-FP1","minapi":33,"driverversion":2150252544},{"brand":"Sony","device":"XQ-AQ52","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AQ62","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS42","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS52","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS62","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS72","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT42","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT51","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT52","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT72","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC42","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC52","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC62","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC72","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE42","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE52","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE62","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE72","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ42","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ52","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ62","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ72","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-CQ44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CQ54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CQ62","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CQ72","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT62","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT72","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DE44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DE54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DE72","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ62","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ72","minapi":34,"driverversion":2150252544},{"brand":"surface","device":"duo2","minapi":32,"driverversion":2149654528},{"brand":"TECNO","device":"TECNO-AD10","minapi":33,"driverversion":0},{"brand":"TECNO","device":"TECNO-AD8","minapi":33,"driverversion":0},{"brand":"TECNO","device":"TECNO-AD9","minapi":33,"driverversion":0},{"brand":"TECNO","device":"TECNO-CL8","minapi":34,"driverversion":0},{"brand":"TECNO","device":"TECNO-CL9","minapi":34,"driverversion":0},{"brand":"VERTU","device":"VTL-202101","minapi":30,"driverversion":2149654528},{"brand":"VERTU","device":"VTL-202201","minapi":31,"driverversion":2150252544},{"brand":"vivo","device":"2045","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"2046","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"2047","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"2114","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"DPD2106","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"DPD2221","minapi":33,"driverversion":0},{"brand":"vivo","device":"DPD2305","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"DPD2307","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD1950","minapi":29,"driverversion":2149654528},{"brand":"vivo","device":"PD1955","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD1981","minapi":31,"driverversion":2149654528},{"brand":"vivo","device":"PD2011","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2024","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2049","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2055","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2056","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2118","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2136","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"PD2141","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"PD2145","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"PD2154","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2157","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2170","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2171","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2172","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2178","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2183","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2185","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2196","minapi":33,"driverversion":2150252544},{"brand":"vivo","device":"PD2199","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2203","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2207","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2217","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2218","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2227","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2229","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2231","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2238","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2241","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2242","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2243","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2244","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2245","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2254","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2256","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2266","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2284","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2301","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2302","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2303","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2304","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2307","minapi":34,"driverversion":2150531090},{"brand":"vivo","device":"PD2309","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2314","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2323","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2329","minapi":34,"driverversion":2150531090},{"brand":"vivo","device":"PD2337","minapi":34,"driverversion":2150531090},{"brand":"vivo","device":"PD2338","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2344","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2144","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2145","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"V2218","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2219","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2230","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2308","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2309","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2318","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"V2319","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"apollo","minapi":31,"driverversion":2149654528},{"brand":"Xiaomi","device":"aristotle","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"aurora","minapi":34,"driverversion":2150531090},{"brand":"Xiaomi","device":"babylon","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"cas","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"cetus","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"chenfeng","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"cmi","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"corot","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"cupid","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"dagu","minapi":34,"driverversion":2149654528},{"brand":"Xiaomi","device":"daumier","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"diting","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"elish","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"enuma","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"fuxi","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"haydn","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"haydnin","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"houji","minapi":34,"driverversion":2150531090},{"brand":"Xiaomi","device":"ishtar","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"liuqin","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"mars","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"mayfly","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"nuwa","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"odin","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"pipa","minapi":34,"driverversion":2149654528},{"brand":"Xiaomi","device":"plato","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"psyche","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"shennong","minapi":34,"driverversion":2150531090},{"brand":"Xiaomi","device":"star","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"thor","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"thyme","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"umi","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"unicorn","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"venus","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"vili","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"XIG04","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"yudi","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"yuechu","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"zeus","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"zizhan","minapi":34,"driverversion":2150252544},{"brand":"ZTE","device":"P870A01","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P870A02","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P870A21","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P870F21","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P875A02","minapi":33,"driverversion":2149654528},{"brand":"ZTE","device":"P875A11","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P875A12","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P898A01","minapi":33,"driverversion":2150252544},{"brand":"ZTE","device":"P898A11","minapi":33,"driverversion":2150252544},{"brand":"ZTE","device":"P898F01","minapi":31,"driverversion":2150252544},{"brand":"ZTE","device":"P898P01","minapi":33,"driverversion":2150252544}],"DriverAllowList":[{"soc":"SM7450","driverfingerprint":"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)"},{"soc":"SM6450","driverfingerprint":"OpenGL ES 3.2 V@0615.80 (GIT@406382a20f, I986008d073, 1704447428) (Date:01/05/24)"},{"soc":"SM8450","driverfingerprint":"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)"},{"soc":"MT6877","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.8135628637558d6d27e8ec61da0ffbb5"},{"soc":"MT6769","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"},{"soc":"MT6789","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.394145956bc7cd8e697b330aba11e3d3"},{"soc":"SM8350","driverfingerprint":"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)"},{"soc":"SM8635","driverfingerprint":"OpenGL ES 3.2 V@0762.15 (GIT@674f6c61df, Iec746bb8f9, 1712300122) (Date:04/05/24)"},{"soc":"MT6983","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.b1c355f1ca75ee340751fc2d07d2e153"},{"soc":"SM8450","driverfingerprint":"OpenGL ES 3.2 V@0615.0 (GIT@194d5e5755, I6561b7ccb3, 1691691459) (Date:08/10/23)"},{"soc":"MT6877V/TTZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.b8cf1793b1173c0bb23abcfef1974de4"},{"soc":"MT6769Z","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.52688e0652bc37eab85ce86c674ab12f"},{"soc":"MT6879V_T/ZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.a031c769622e85782e9b68c066a81213"},{"soc":"SM7450","driverfingerprint":"OpenGL ES 3.2 V@0615.76 (GIT@fc9849b050, Ibccd5936db, 1700474993) (Date:11/20/23)"},{"soc":"MT6781","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.f8dc73e9e828783da7609cdc1c245dfa"},{"soc":"EXYNOS 2100","driverfingerprint":"OpenGL ES 3.2 v1.r38p0-01eac0-mbs2v41_0.65f90f7db733ed40f27c25ca33fc398f"},{"soc":"SM7675","driverfingerprint":"OpenGL ES 3.2 V@0762.17 (GIT@f115f6bba1, I45c6b84a32, 1712917670) (Date:04/12/24)"},{"soc":"SM4350","driverfingerprint":"OpenGL ES 3.2 V@0530.0 (GIT@8699000cd8, I1027f1d7d9, 1649421937) (Date:04/08/22)"},{"soc":"SM8350","driverfingerprint":"OpenGL ES 3.2 V@0530.0 (GIT@12ae96cb63, I409bbc12eb, 1694603898) (Date:09/13/23)"},{"soc":"MT8781V/CA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.394145956bc7cd8e697b330aba11e3d3"},{"soc":"SM4450","driverfingerprint":"OpenGL ES 3.2 V@0615.77 (GIT@64bab644ca, I204cbc9b5e, 1700479993) (Date:11/20/23)"},{"soc":"SM6375","driverfingerprint":"OpenGL ES 3.2 V@0530.0 (GIT@f3aa497c33, I7c31881d50, 1639653329) (Date:12/16/21)"},{"soc":"MT6985","driverfingerprint":"OpenGL ES 3.2 v1.r38p1"},{"soc":"MT6883","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.479f7c91bbdfefd5f0c368c0a30bcfd0"},{"soc":"S5E9945","driverfingerprint":"OpenGL ES 3.2 Driver version: 24.1.207 git hash: 927672398aa8"},{"soc":"SM8550","driverfingerprint":"OpenGL ES 3.2 V@0676.57 (GIT@6129fbc570, I5a3b7da999, 1708681500) (Date:02/23/24)"},{"soc":"S5E8835","driverfingerprint":"OpenGL ES 3.2 v1.r38p1-01eac0-mbs2v41_0.8e62f436dbeeadb2f1bba495fbb741ec"},{"soc":"SM8650","driverfingerprint":"OpenGL ES 3.2 V@0744.12 (GIT@62c1f322ce, Id0077aad60, 1700555917) (Date:11/21/23)"},{"soc":"MT6833V/PNZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139"},{"soc":"SM6375","driverfingerprint":"OpenGL ES 3.2 V@0762.17 (GIT@f115f6bba1, I45c6b84a32, 1712929337) (Date:04/12/24)"},{"soc":"MT8798Z/CNZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.b1c355f1ca75ee340751fc2d07d2e153"},{"soc":"QCM6490","driverfingerprint":"OpenGL ES 3.2 V@0530.46 (GIT@a3cdec2236, Ief33eea0db, 1661255399) (Date:08/23/22)"},{"soc":"MT6789","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.9850964fe16242c585c8d423010c8595"},{"soc":"MT6768","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"},{"soc":"SM4375","driverfingerprint":"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)"},{"soc":"SM8475","driverfingerprint":"OpenGL ES 3.2 V@0615.82 (GIT@9dec52427c, Ibe7eb5ecbe, 1705914897) (Date:01/22/24)"},{"soc":"S5E8825","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01bet2-mbs2v39_0.24a5b8b8abb488a61e5e48232a460c3e"},{"soc":"SM8650","driverfingerprint":"OpenGL ES 3.2 V@0744.18 (GIT@d774a8672e, I8ea610b5b4, 1704277645) (Date:01/03/24)"},{"soc":"SM6375","driverfingerprint":"OpenGL ES 3.2 V@0530.48 (GIT@e7626cbb06, If33672715f, 1674571865) (Date:01/24/23)"},{"soc":"SM6225","driverfingerprint":"OpenGL ES 3.2 V@0615.72 (GIT@67600309f5, I34f73d0972, 1688991399) (Date:07/10/23)"},{"soc":"MT6833P","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139"},{"soc":"SM6225","driverfingerprint":"OpenGL ES 3.2 V@0615.81 (GIT@75362bd531, I5cf4e5bf0f, 1704968105) (Date:01/11/24)"},{"soc":"MT6835","driverfingerprint":"OpenGL ES 3.2 v1.r38p1"},{"soc":"S5E9945","driverfingerprint":"OpenGL ES 3.2 ANGLE git hash: 131b607622f4"},{"soc":"SM7450","driverfingerprint":"OpenGL ES 3.2 V@0615.84 (GIT@72d8b177be, I020fdb6434, 1709038286) (Date:02/27/24)"},{"soc":"SM6225","driverfingerprint":"OpenGL ES 3.2 V@0615.84 (GIT@72d8b177be, I020fdb6434, 1709038286) (Date:02/27/24)"},{"soc":"SM8450","driverfingerprint":"OpenGL ES 3.2 V@0615.0 (GIT@770ea4bdb9, Ief8f71bb1e, 1706806055) (Date:02/01/24)"},{"soc":"MT6769V/WZ","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"},{"soc":"SM7550","driverfingerprint":"OpenGL ES 3.2 V@0676.57 (GIT@6129fbc570, I5a3b7da999, 1708681500) (Date:02/23/24)"},{"soc":"MT6769V/CA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"},{"soc":"MT6877V/TTZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.8135628637558d6d27e8ec61da0ffbb5"},{"soc":"SM7675","driverfingerprint":"OpenGL ES 3.2 V@0762.15 (GIT@674f6c61df, Iec746bb8f9, 1712300122) (Date:04/05/24)"},{"soc":"SM6225","driverfingerprint":"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)"},{"soc":"MT6895","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.b89152572cfa9465230812a8225a45a0"},{"soc":"SM7435","driverfingerprint":"OpenGL ES 3.2 V@0615.82 (GIT@9dec52427c, Ibe7eb5ecbe, 1705914897) (Date:01/22/24)"},{"soc":"MT6833V/ZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139"},{"soc":"MT8791V/T","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.b8cf1793b1173c0bb23abcfef1974de4"},{"soc":"S5E8845","driverfingerprint":"OpenGL ES 3.2 ANGLE git hash: c2b872f4c96b"},{"soc":"TENSOR G2","driverfingerprint":"OpenGL ES 3.2 v1.r44p0-01eac0.1f05338ba59e9e7d040ba6bef774b2ac"},{"soc":"SM8550","driverfingerprint":"OpenGL ES 3.2 V@0676.42 (GIT@7b26bdd942, Iab69c31769, 1693222181) (Date:08/28/23)"},{"soc":"MT6769","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.52688e0652bc37eab85ce86c674ab12f"},{"soc":"MT6833V/NZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.0a0b917d9265b4c01be9925306306139"},{"soc":"SM8635","driverfingerprint":"OpenGL ES 3.2 V@0762.14 (GIT@c70b9a2a3c, I34176f3f01, 1711715768) (Date:03/29/24)"},{"soc":"SM7450","driverfingerprint":"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)"},{"soc":"SM8450","driverfingerprint":"OpenGL ES 3.2 V@0615.82 (GIT@9dec52427c, Ibe7eb5ecbe, 1705914897) (Date:01/22/24)"},{"soc":"S5E9945","driverfingerprint":"OpenGL ES 3.2 ANGLE git hash: d2a158dccead"},{"soc":"MT6893Z/CZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.efd03ef21f136842c0935bd4f493fe81"},{"soc":"MT6891Z/CZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.efd03ef21f136842c0935bd4f493fe81"},{"soc":"MT6789V/CD","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.394145956bc7cd8e697b330aba11e3d3"},{"soc":"MT8786V/CA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"},{"soc":"SM8350","driverfingerprint":"OpenGL ES 3.2 V@0530.47 (GIT@eaa701cd06, I183f6321f0, 1666871261) (Date:10/27/22)"},{"soc":"MT6886","driverfingerprint":"OpenGL ES 3.2 v1.r38p1"},{"soc":"SM6115","driverfingerprint":"OpenGL ES 3.2 V@0615.86 (GIT@30f48d66fb, I33af6953c3, 1712899917) (Date:04/12/24)"},{"soc":"SM8450","driverfingerprint":"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)"},{"soc":"SM8350","driverfingerprint":"OpenGL ES 3.2 V@0530.53 (GIT@a1cf8ab5e3, I428bf45773, 1699535026) (Date:11/09/23)"},{"soc":"SM8650","driverfingerprint":"OpenGL ES 3.2 V@0762.10 (GIT@1394a2c7a8, Id12349e41b, 1708672982) (Date:02/23/24)"},{"soc":"SM6375","driverfingerprint":"OpenGL ES 3.2 V@0762.18 (GIT@af856151b0, Id776b0abd7, 1714127119) (Date:04/26/24)"},{"soc":"S5E9925","driverfingerprint":"OpenGL ES 3.2 ANGLE git hash: ea27396cef93"},{"soc":"SM7325","driverfingerprint":"OpenGL ES 3.2 V@0530.53 (GIT@a1cf8ab5e3, I428bf45773, 1699535026) (Date:11/09/23)"},{"soc":"S5E9925","driverfingerprint":"OpenGL ES 3.2 ANGLE git hash: 72640fd9af5e"},{"soc":"MT8766A","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"},{"soc":"SM8635","driverfingerprint":"OpenGL ES 3.2 V@0762.9 (GIT@1fe7e097fd, Iac1c08c4e4, 1708364057) (Date:02/19/24)"},{"soc":"SM7435","driverfingerprint":"OpenGL ES 3.2 V@0615.73 (GIT@8f5499ec14, Ie6ef1a0a80, 1689341690) (Date:07/14/23)"},{"soc":"SM8475","driverfingerprint":"OpenGL ES 3.2 V@0615.0 (GIT@770ea4bdb9, Ief8f71bb1e, 1706806055) (Date:02/01/24)"},{"soc":"EXYNOS 2100","driverfingerprint":"OpenGL ES 3.2 v1.r38p0-01eac0-mbs2v41_0.fbda7a2431aa2b386a4490f824f8fcc5"},{"soc":"SM7325","driverfingerprint":"OpenGL ES 3.2 V@0530.0 (GIT@cac6e6f805, I5187d04b75, 1637574833) (Date:11/22/21)"},{"soc":"S5E8835","driverfingerprint":"OpenGL ES 3.2 v1.r38p1-01eac0-mbs2v41_0.c23b38d1557dbf46a5d45aec73cc4d15"},{"soc":"MT6833","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.e1f01de808a0a50894ce9df2ecbbec80"},{"soc":"SM7325","driverfingerprint":"OpenGL ES 3.2 V@0530.47 (GIT@eaa701cd06, I183f6321f0, 1666871261) (Date:10/27/22)"},{"soc":"SM7675","driverfingerprint":"OpenGL ES 3.2 V@0762.21 (GIT@21ec731d58, Ifa39d99f17, 1717163077) (Date:05/31/24)"},{"soc":"SM8475","driverfingerprint":"OpenGL ES 3.2 V@0615.74 (GIT@dad4038ba6, If56d4a5bb8, 1690544947) (Date:07/28/23)"},{"soc":"S5E9925","driverfingerprint":"OpenGL ES 3.2 ANGLE git hash: 420895f80df0"},{"soc":"SM8350","driverfingerprint":"OpenGL ES 3.2 V@0530.49 (GIT@329cf4c2a7, I63533b1e29, 1675175164) (Date:01/31/23)"},{"soc":"MT6877","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.b8cf1793b1173c0bb23abcfef1974de4"},{"soc":"SM6225","driverfingerprint":"OpenGL ES 3.2 V@0615.77 (GIT@64bab644ca, I204cbc9b5e, 1700479993) (Date:11/20/23)"},{"soc":"A523","driverfingerprint":"OpenGL ES 3.2 v1.r40p0-01eac0.c527590351327cc7ce8e3744d9361ee2"},{"soc":"MT6893","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.efd03ef21f136842c0935bd4f493fe81"},{"soc":"SM8475","driverfingerprint":"OpenGL ES 3.2 V@0615.0 (GIT@194d5e5755, I6561b7ccb3, 1691691459) (Date:08/10/23)"},{"soc":"MT6896Z/CZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.54329dee8f160f288c574caaf67bbe3f"},{"soc":"MT6833","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.f20ecd5cf326048879c2d906512e687e"},{"soc":"MT6895Z_B/TCZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.54329dee8f160f288c574caaf67bbe3f"},{"soc":"S5E8845","driverfingerprint":"OpenGL ES 3.2 ANGLE git hash: 4ae132631265"},{"soc":"T612","driverfingerprint":"OpenGL ES 3.2 v1.r41p0-01eac0.018fc629603b7a70cc68d32f78ac8686"},{"soc":"MT6878","driverfingerprint":"OpenGL ES 3.2 v1.r44p1-01eac0.9dfad904584e582a866ae268ba67da86"},{"soc":"MT6877V/ZA","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.fdc5c778fea891c0453057246e18e215"},{"soc":"MT6769V/CZ","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"}],"DriverDenyList":[{"soc":"TENSOR","driverfingerprint":"OpenGL ES 3.2 v1.r47p0-01eac0.32ea38cfcac3afe9a9b43f4ca33f49a9"},{"soc":"MT6765","driverfingerprint":"OpenGL ES 3.2 build 1.13@5776728"},{"soc":"MT6769V/CB","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.2a893c04ca0026c2e6802dbe7d7af5c5"},{"soc":"MT6769V/CZ","driverfingerprint":"OpenGL ES 3.2 v1.r32p1-01eac0.fc49d6bd800ecb1492a1f77284a4d178"},{"soc":"SM6450","driverfingerprint":"OpenGL ES 3.2 V@0615.86 (GIT@30f48d66fb, I33af6953c3, 1712899917) (Date:04/12/24)"},{"soc":"TENSOR G4","driverfingerprint":"OpenGL ES 3.2 v1.r47p0-01eac0.dcd0e390f0239618a7dd5d0b929ff6e1"},{"soc":"TENSOR","driverfingerprint":"OpenGL ES 3.2 v1.r46p0-01eac1.6b76d861277b3ea6941f5aa972def735"}],"GpuPredictAllowList":[{"brand":"Adreno","devicename":"^Adreno (TM) 7","deviceid":0,"vendorid":0,"minapi":34,"driverversion":2150252544},{"brand":"Adreno","devicename":"^Adreno (TM) 8","deviceid":0,"vendorid":0,"minapi":34,"driverversion":2150531090},{"brand":"Xclipse","devicename":"Samsung Xclipse 920","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 930","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 930A","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 940","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 950","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Mali","devicename":"^Mali-G625","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"Mali","devicename":"^Mali-G71","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"Mali","devicename":"^Mali-G72","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"Mali","devicename":"*G925","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"IMG","devicename":"*DXT-48-1536","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*CXTP-48-1536","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-64-2048","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-48-1536","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-16-256","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-8-256","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XM-8-256","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496}],"GpuPredictDenyList":[{"brand":"Adreno","devicename":"^Adreno (TM) 6","deviceid":0,"vendorid":0,"minapi":0,"driverversion":2149490689}]} \ No newline at end of file +{"ProjectSchemaVersion":1,"ExportedListFileVersion":66052,"MinApiForFutureRecommendation":38,"DeviceAllowList":[{"brand":"asus","device":"ASUS_AI2201","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2202","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2203","minapi":33,"driverversion":0},{"brand":"asus","device":"ASUS_AI2205","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2302","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_AI2401","minapi":34,"driverversion":2150252544},{"brand":"asus","device":"ASUS_I002D","minapi":31,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I003_1","minapi":31,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I004D","minapi":33,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I005_1","minapi":33,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I006D","minapi":33,"driverversion":2149654528},{"brand":"asus","device":"ASUS_I007_1","minapi":30,"driverversion":2149654528},{"brand":"DOCOMO","device":"F51A","minapi":31,"driverversion":2149654528},{"brand":"DOCOMO","device":"SH-51A","minapi":31,"driverversion":2149654528},{"brand":"DOCOMO","device":"SH-51B","minapi":33,"driverversion":2149654528},{"brand":"DOCOMO","device":"SH-51D","minapi":34,"driverversion":2150252544},{"brand":"DOCOMO","device":"SH-52C","minapi":34,"driverversion":2150252544},{"brand":"DOCOMO","device":"SH-52D","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-51A","minapi":31,"driverversion":2149654528},{"brand":"docomo","device":"SO-51B","minapi":33,"driverversion":2149654528},{"brand":"docomo","device":"SO-51C","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-51D","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-52A","minapi":31,"driverversion":2149654528},{"brand":"docomo","device":"SO-53B","minapi":33,"driverversion":2149654528},{"brand":"docomo","device":"SO-53D","minapi":34,"driverversion":2150252544},{"brand":"docomo","device":"SO-54C","minapi":34,"driverversion":2150252544},{"brand":"google","device":"akita","minapi":34,"driverversion":0},{"brand":"google","device":"panther","minapi":34,"driverversion":0},{"brand":"google","device":"felix","minapi":34,"driverversion":0},{"brand":"google","device":"husky","minapi":34,"driverversion":0},{"brand":"google","device":"lynx","minapi":34,"driverversion":0},{"brand":"google","device":"cheetah","minapi":34,"driverversion":0},{"brand":"google","device":"tangorpro","minapi":34,"driverversion":0},{"brand":"google","device":"shiba","minapi":34,"driverversion":0},{"brand":"google","device":"comet","minapi":34,"driverversion":0},{"brand":"google","device":"caiman","minapi":34,"driverversion":0},{"brand":"google","device":"tegu","minapi":34,"driverversion":0},{"brand":"google","device":"stallion","minapi":34,"driverversion":0},{"brand":"google","device":"tokay","minapi":34,"driverversion":0},{"brand":"google","device":"komodo","minapi":34,"driverversion":0},{"brand":"google","device":"frankel","minapi":35,"driverversion":0},{"brand":"google","device":"blazer","minapi":35,"driverversion":0},{"brand":"google","device":"rango","minapi":35,"driverversion":0},{"brand":"HONOR","device":"HNBVL","minapi":34,"driverversion":2150531090},{"brand":"HONOR","device":"HNBVL-AN00","minapi":34,"driverversion":2150531090},{"brand":"HONOR","device":"HNFRI","minapi":33,"driverversion":2150252544},{"brand":"HONOR","device":"HNLGE","minapi":33,"driverversion":2150252544},{"brand":"HONOR","device":"HNMAA","minapi":34,"driverversion":2150252544},{"brand":"HONOR","device":"HNMAG","minapi":34,"driverversion":2150252544},{"brand":"HONOR","device":"HNMAP","minapi":34,"driverversion":2150252544},{"brand":"HONOR","device":"HNPGT","minapi":33,"driverversion":2150252544},{"brand":"HONOR","device":"HNVER","minapi":33,"driverversion":2150252544},{"brand":"HTC","device":"htc_enodugls","minapi":34,"driverversion":2150252544},{"brand":"Infinix","device":"Infinix-X6871","minapi":34,"driverversion":0},{"brand":"iQOO","device":"2009","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2012","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2017","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2019","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"2022","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I1928","minapi":31,"driverversion":2149654528},{"brand":"iQOO","device":"I2201","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I2202","minapi":34,"driverversion":2149654528},{"brand":"iQOO","device":"I2212","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I2214","minapi":34,"driverversion":0},{"brand":"iQOO","device":"I2217","minapi":34,"driverversion":2150252544},{"brand":"iQOO","device":"I2220","minapi":34,"driverversion":2150531090},{"brand":"iQOO","device":"I2304","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG01","minapi":31,"driverversion":2149654528},{"brand":"KDDI","device":"SOG02","minapi":31,"driverversion":2149654528},{"brand":"KDDI","device":"SOG03","minapi":33,"driverversion":2149654528},{"brand":"KDDI","device":"SOG05","minapi":33,"driverversion":2149654528},{"brand":"KDDI","device":"SOG06","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG09","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG10","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"SOG12","minapi":34,"driverversion":2150252544},{"brand":"KDDI","device":"TGD","minapi":31,"driverversion":2149654528},{"brand":"LeiaInc","device":"LumePad","minapi":31,"driverversion":2149654528},{"brand":"Lenovo","device":"doom","minapi":30,"driverversion":2149654528},{"brand":"Lenovo","device":"halo","minapi":32,"driverversion":2149654528},{"brand":"Lenovo","device":"moba","minapi":30,"driverversion":2149654528},{"brand":"Lenovo","device":"olivine","minapi":33,"driverversion":2149654528},{"brand":"Lenovo","device":"TB320FC","minapi":33,"driverversion":2149654528},{"brand":"lge","device":"L-51A","minapi":31,"driverversion":2149654528},{"brand":"lge","device":"rainbowlm","minapi":30,"driverversion":2149654528},{"brand":"lge","device":"timelm","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu17","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu17Pro","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18Pro","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18s","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18sPro","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu18X","minapi":33,"driverversion":2149654528},{"brand":"meizu","device":"meizu20","minapi":34,"driverversion":2150252544},{"brand":"meizu","device":"meizu20Inf","minapi":34,"driverversion":2150252544},{"brand":"meizu","device":"meizu20Pro","minapi":34,"driverversion":2150252544},{"brand":"meizu","device":"meizu21","minapi":34,"driverversion":2150531090},{"brand":"meizu","device":"meizu21Pro","minapi":34,"driverversion":2150531090},{"brand":"Mi","device":"aliothin","minapi":33,"driverversion":2149654528},{"brand":"motorola","device":"bronco","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"burton","minapi":31,"driverversion":2149654528},{"brand":"motorola","device":"eqe","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"eqs","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"hiphi","minapi":33,"driverversion":2150252544},{"brand":"motorola","device":"hiphic","minapi":33,"driverversion":2150252544},{"brand":"motorola","device":"nio","minapi":31,"driverversion":2149654528},{"brand":"motorola","device":"oneli","minapi":33,"driverversion":2150252544},{"brand":"motorola","device":"pstar","minapi":33,"driverversion":2149654528},{"brand":"motorola","device":"rtwo","minapi":34,"driverversion":2150252544},{"brand":"motorola","device":"tundra","minapi":33,"driverversion":2149654528},{"brand":"motorola","device":"xpeng","minapi":31,"driverversion":2149654528},{"brand":"motorola","device":"zeekr","minapi":33,"driverversion":2150252544},{"brand":"NEC","device":"LAVIETab9QHD1","minapi":33,"driverversion":2149654528},{"brand":"Nothing","device":"Pong","minapi":34,"driverversion":2150252544},{"brand":"nubia","device":"NX659J","minapi":29,"driverversion":2149654528},{"brand":"nubia","device":"NX659J-EEA","minapi":30,"driverversion":2149654528},{"brand":"nubia","device":"NX659J-RU","minapi":29,"driverversion":2149654528},{"brand":"nubia","device":"NX659J-UN","minapi":30,"driverversion":2149654528},{"brand":"nubia","device":"NX666J","minapi":30,"driverversion":2149654528},{"brand":"nubia","device":"NX669J","minapi":32,"driverversion":2149654528},{"brand":"nubia","device":"NX669J-EEA","minapi":32,"driverversion":2149654528},{"brand":"nubia","device":"NX669J-UN","minapi":32,"driverversion":2149654528},{"brand":"nubia","device":"NX679J","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX679J-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX679J-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX679S","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709J","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709J-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709J-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709S","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709S-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX709S-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX729J-EEA","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX729J-UN","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"NX769J","minapi":34,"driverversion":2150531090},{"brand":"nubia","device":"P875N02","minapi":31,"driverversion":2149654528},{"brand":"nubia","device":"P898A21","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"P898P02","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ82A01","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ82A02","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ82A11","minapi":33,"driverversion":2150252544},{"brand":"nubia","device":"PQ83A01","minapi":34,"driverversion":2150531090},{"brand":"OnePlus","device":"OnePlus8","minapi":33,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8Pro","minapi":33,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8T","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8TMO","minapi":33,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8TTMO","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8Visible","minapi":30,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus8VZW","minapi":30,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9Pro","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9ProTMO","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9R","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OnePlus9TMO","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OP5154L1","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OP5155L1","minapi":34,"driverversion":2149654528},{"brand":"OnePlus","device":"OP516EL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5552L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5565","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5566L1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5567L1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP556FL1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP591BL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5927","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5929L1","minapi":34,"driverversion":2150531090},{"brand":"OnePlus","device":"OP5943L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP594DL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP595DL1","minapi":34,"driverversion":2150531090},{"brand":"OnePlus","device":"OP5961L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5973L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP59BCL1","minapi":34,"driverversion":0},{"brand":"OnePlus","device":"OP5CF9L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5CFBL1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5D35L1","minapi":34,"driverversion":2150252544},{"brand":"OnePlus","device":"OP5D3FL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP4A77","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4A7A","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4AD9","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4BA1L1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4BA2L1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4E3F","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP4E75L1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP4EA7","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4EC1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4F0BL1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP4F57L1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP4F7FL1","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP520DL1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP520F","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP5223","minapi":33,"driverversion":2149654528},{"brand":"OPPO","device":"OP5281","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP528BL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP528F","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP5297","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP52D1L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP52D5L1","minapi":34,"driverversion":2149654528},{"brand":"OPPO","device":"OP5335L1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP55F3L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP55FF","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5601","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP5607L1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP561F","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP564B","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP565FL1","minapi":34,"driverversion":2150531090},{"brand":"OPPO","device":"OP5661L1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP56BBL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP56CDL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP56CFL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP56D3L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5989","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP59BBL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP59EDL1","minapi":34,"driverversion":0},{"brand":"OPPO","device":"OP59EFL1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5A15L1","minapi":34,"driverversion":2150252544},{"brand":"OPPO","device":"OP5AD3L1","minapi":34,"driverversion":0},{"brand":"POCO","device":"alioth","minapi":33,"driverversion":2149654528},{"brand":"POCO","device":"garnet","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"ingres","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"lmi","minapi":31,"driverversion":2149654528},{"brand":"POCO","device":"marble","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"marblein","minapi":34,"driverversion":2150252544},{"brand":"POCO","device":"munch","minapi":33,"driverversion":2149654528},{"brand":"POCO","device":"xaga","minapi":33,"driverversion":0},{"brand":"RAKUTEN","device":"Banagher","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RE546F","minapi":34,"driverversion":2149654528},{"brand":"realme","device":"RE5471","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RE5473","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RE5477","minapi":34,"driverversion":2149654528},{"brand":"realme","device":"RE547F","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE54E4L1","minapi":34,"driverversion":2149654528},{"brand":"realme","device":"RE5860","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE58B2L1","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RE58D1L1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE5C33","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE5C37","minapi":34,"driverversion":2150531090},{"brand":"realme","device":"RE5C82L1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RE879AL1","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RED8ACL1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RED8BEL1","minapi":34,"driverversion":0},{"brand":"realme","device":"REE2B2L1","minapi":34,"driverversion":2150252544},{"brand":"realme","device":"RMX2071CN","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2072CN","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2075L1","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2076L1","minapi":31,"driverversion":2149654528},{"brand":"realme","device":"RMX2202CN","minapi":33,"driverversion":2149654528},{"brand":"realme","device":"RMX2202L1","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"alioth","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"apollo","minapi":31,"driverversion":2149654528},{"brand":"Redmi","device":"corot","minapi":34,"driverversion":0},{"brand":"Redmi","device":"diting","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"dizi","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"garnet","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"haydn","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"ingres","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"lmi","minapi":31,"driverversion":2149654528},{"brand":"Redmi","device":"lmipro","minapi":31,"driverversion":2149654528},{"brand":"Redmi","device":"marble","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"mondrian","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"munch","minapi":33,"driverversion":2149654528},{"brand":"Redmi","device":"pearl","minapi":33,"driverversion":0},{"brand":"Redmi","device":"peridot","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"rembrandt","minapi":33,"driverversion":0},{"brand":"Redmi","device":"ruan","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"socrates","minapi":34,"driverversion":2150252544},{"brand":"Redmi","device":"xaga","minapi":33,"driverversion":0},{"brand":"Redmi","device":"xagain","minapi":33,"driverversion":0},{"brand":"Redmi","device":"xagapro","minapi":33,"driverversion":0},{"brand":"samsung","device":"a55x","minapi":34,"driverversion":0},{"brand":"samsung","device":"b0q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"b0s","minapi":34,"driverversion":0},{"brand":"samsung","device":"b2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"b4q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"b5q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"bloomxq","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"c1q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"c2q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"dm1q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"dm2q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"dm3q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"e1q","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"e1s","minapi":34,"driverversion":0},{"brand":"samsung","device":"e2q","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"e2s","minapi":34,"driverversion":0},{"brand":"samsung","device":"e3q","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"f2q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"g0q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"g0s","minapi":34,"driverversion":0},{"brand":"samsung","device":"gts7l","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts7lwifi","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts7xl","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts7xlwifi","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"gts8","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8p","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8pwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8u","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8uwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts8wifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9p","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9pwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9u","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9uwifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"gts9wifi","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"m44x","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"o1q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"p3q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"q2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"q4q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"q5q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"r0q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"r0s","minapi":34,"driverversion":0},{"brand":"samsung","device":"r11q","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"r11s","minapi":34,"driverversion":0},{"brand":"samsung","device":"r8q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"r9q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-51A","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SC-51B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-51C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-51D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-51E","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"SC-52A","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SC-52B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-52C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-52D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-52E","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"SC-53A","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SC-54B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-54C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-54D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-55B","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SC-55C","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC-55D","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SC51Aa","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG01","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG02","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG03","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG04","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG06","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"SCG09","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG10","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG11","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG12","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"SCG13","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG14","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG16","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG17","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG19","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG20","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG22","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG23","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG24","minapi":34,"driverversion":2150252544},{"brand":"samsung","device":"SCG25","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"SCG26","minapi":34,"driverversion":2150531090},{"brand":"samsung","device":"t2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"v2q","minapi":34,"driverversion":2149654528},{"brand":"samsung","device":"x1q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"y2q","minapi":33,"driverversion":2149654528},{"brand":"samsung","device":"z3q","minapi":33,"driverversion":2149654528},{"brand":"SG","device":"Judau","minapi":33,"driverversion":2149654528},{"brand":"SG","device":"JudauL","minapi":33,"driverversion":2149654528},{"brand":"SG","device":"Kamille","minapi":33,"driverversion":2150252544},{"brand":"SG","device":"KamilleL","minapi":34,"driverversion":2150252544},{"brand":"SG","device":"Mineva","minapi":34,"driverversion":2150252544},{"brand":"SG","device":"MinevaL","minapi":31,"driverversion":2150252544},{"brand":"SG","device":"SG908SH","minapi":31,"driverversion":2149654528},{"brand":"SHARP","device":"Banagher","minapi":30,"driverversion":2149654528},{"brand":"SHARP","device":"FaYuiry","minapi":34,"driverversion":2150252544},{"brand":"SHARP","device":"Judau","minapi":33,"driverversion":2149654528},{"brand":"SHARP","device":"Kamille","minapi":34,"driverversion":2150252544},{"brand":"SoftBank","device":"Z8851S","minapi":29,"driverversion":2149654528},{"brand":"Sony","device":"A002SO","minapi":30,"driverversion":2149654528},{"brand":"Sony","device":"A101SO","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"A103SO","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"A201SO","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"A204SO","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"A301SO","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"PDT-FP1","minapi":33,"driverversion":2150252544},{"brand":"Sony","device":"XQ-AQ52","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AQ62","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS42","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS52","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS62","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AS72","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT42","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT51","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT52","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-AT72","minapi":31,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC42","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC52","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC62","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BC72","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE42","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE52","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE62","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BE72","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ42","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ52","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ62","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-BQ72","minapi":33,"driverversion":2149654528},{"brand":"Sony","device":"XQ-CQ44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CQ54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CQ62","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CQ72","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT62","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-CT72","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DE44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DE54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DE72","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ44","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ54","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ62","minapi":34,"driverversion":2150252544},{"brand":"Sony","device":"XQ-DQ72","minapi":34,"driverversion":2150252544},{"brand":"surface","device":"duo2","minapi":32,"driverversion":2149654528},{"brand":"TECNO","device":"TECNO-AD10","minapi":33,"driverversion":0},{"brand":"TECNO","device":"TECNO-AD8","minapi":33,"driverversion":0},{"brand":"TECNO","device":"TECNO-AD9","minapi":33,"driverversion":0},{"brand":"TECNO","device":"TECNO-CL8","minapi":34,"driverversion":0},{"brand":"TECNO","device":"TECNO-CL9","minapi":34,"driverversion":0},{"brand":"VERTU","device":"VTL-202101","minapi":30,"driverversion":2149654528},{"brand":"VERTU","device":"VTL-202201","minapi":31,"driverversion":2150252544},{"brand":"vivo","device":"2045","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"2046","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"2047","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"2114","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"DPD2106","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"DPD2221","minapi":33,"driverversion":0},{"brand":"vivo","device":"DPD2305","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"DPD2307","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD1950","minapi":29,"driverversion":2149654528},{"brand":"vivo","device":"PD1955","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD1981","minapi":31,"driverversion":2149654528},{"brand":"vivo","device":"PD2011","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2024","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2049","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2055","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2056","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2118","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2136","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"PD2141","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"PD2145","minapi":34,"driverversion":2149654528},{"brand":"vivo","device":"PD2154","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2157","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2170","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2171","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2172","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2178","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2183","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2185","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2196","minapi":33,"driverversion":2150252544},{"brand":"vivo","device":"PD2199","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2203","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2207","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2217","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2218","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2227","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2229","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2231","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2238","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2241","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2242","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2243","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2244","minapi":33,"driverversion":2149654528},{"brand":"vivo","device":"PD2245","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2254","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2256","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2266","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2284","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2301","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2302","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2303","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2304","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2307","minapi":34,"driverversion":2150531090},{"brand":"vivo","device":"PD2309","minapi":34,"driverversion":0},{"brand":"vivo","device":"PD2314","minapi":33,"driverversion":0},{"brand":"vivo","device":"PD2323","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2329","minapi":34,"driverversion":2150531090},{"brand":"vivo","device":"PD2337","minapi":34,"driverversion":2150531090},{"brand":"vivo","device":"PD2338","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"PD2344","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2144","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2145","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"V2218","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2219","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2230","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2308","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2309","minapi":34,"driverversion":0},{"brand":"vivo","device":"V2318","minapi":34,"driverversion":2150252544},{"brand":"vivo","device":"V2319","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"apollo","minapi":31,"driverversion":2149654528},{"brand":"Xiaomi","device":"aristotle","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"aurora","minapi":34,"driverversion":2150531090},{"brand":"Xiaomi","device":"babylon","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"cas","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"cetus","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"chenfeng","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"cmi","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"corot","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"cupid","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"dagu","minapi":34,"driverversion":2149654528},{"brand":"Xiaomi","device":"daumier","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"diting","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"elish","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"enuma","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"fuxi","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"haydn","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"haydnin","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"houji","minapi":34,"driverversion":2150531090},{"brand":"Xiaomi","device":"ishtar","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"liuqin","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"mars","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"mayfly","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"nuwa","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"odin","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"pipa","minapi":34,"driverversion":2149654528},{"brand":"Xiaomi","device":"plato","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"psyche","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"shennong","minapi":34,"driverversion":2150531090},{"brand":"Xiaomi","device":"star","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"thor","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"thyme","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"umi","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"unicorn","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"venus","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"vili","minapi":33,"driverversion":2149654528},{"brand":"Xiaomi","device":"XIG04","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"yudi","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"yuechu","minapi":34,"driverversion":0},{"brand":"Xiaomi","device":"zeus","minapi":34,"driverversion":2150252544},{"brand":"Xiaomi","device":"zizhan","minapi":34,"driverversion":2150252544},{"brand":"ZTE","device":"P870A01","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P870A02","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P870A21","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P870F21","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P875A02","minapi":33,"driverversion":2149654528},{"brand":"ZTE","device":"P875A11","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P875A12","minapi":31,"driverversion":2149654528},{"brand":"ZTE","device":"P898A01","minapi":33,"driverversion":2150252544},{"brand":"ZTE","device":"P898A11","minapi":33,"driverversion":2150252544},{"brand":"ZTE","device":"P898F01","minapi":31,"driverversion":2150252544},{"brand":"ZTE","device":"P898P01","minapi":33,"driverversion":2150252544}],"DriverAllowList":[{"soc":"zzzzzz","driverfingerprint":"zzzzz"},{"soc":"zzzzzz2","driverfingerprint":"zzzzz2"}],"DriverDenyList":[{"soc":"zzzzzx","driverfingerprint":"zzzzx"},{"soc":"zzzzzx2","driverfingerprint":"zzzzx2"}],"GpuPredictAllowList":[{"brand":"Adreno","devicename":"^Adreno (TM) 7","deviceid":0,"vendorid":0,"minapi":34,"driverversion":2150252544},{"brand":"Adreno","devicename":"^Adreno (TM) 8","deviceid":0,"vendorid":0,"minapi":34,"driverversion":2150531090},{"brand":"Xclipse","devicename":"Samsung Xclipse 920","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 930","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 930A","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 940","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Xclipse","devicename":"Samsung Xclipse 950","deviceid":0,"vendorid":0,"minapi":34,"driverversion":0},{"brand":"Mali","devicename":"^Mali-G625","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"Mali","devicename":"^Mali-G71","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"Mali","devicename":"^Mali-G72","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"Mali","devicename":"*G925","deviceid":0,"vendorid":0,"minapi":34,"driverversion":192937984},{"brand":"IMG","devicename":"*DXT-48-1536","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*CXTP-48-1536","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-64-2048","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-48-1536","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-16-256","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XT*-8-256","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496},{"brand":"IMG","devicename":"*XM-8-256","deviceid":0,"vendorid":0,"minapi":36,"driverversion":6660496}],"GpuPredictDenyList":[{"brand":"Adreno","devicename":"^Adreno (TM) 6","deviceid":0,"vendorid":0,"minapi":0,"driverversion":2149490689}]} \ No newline at end of file diff --git a/vkq_library/vkquality/src/main/assets/vkqualitydata.vkq b/vkq_library/vkquality/src/main/assets/vkqualitydata.vkq index 40702dc..c07ac7f 100644 Binary files a/vkq_library/vkquality/src/main/assets/vkqualitydata.vkq and b/vkq_library/vkquality/src/main/assets/vkqualitydata.vkq differ diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_c.cpp b/vkq_library/vkquality/src/main/cpp/vkquality_c.cpp index 03dc51c..983a30c 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_c.cpp +++ b/vkq_library/vkquality/src/main/cpp/vkquality_c.cpp @@ -22,7 +22,7 @@ extern "C" { #define VKQUALITY_MAJOR_VERSION 1 #define VKQUALITY_MINOR_VERSION 2 -#define VKQUALITY_BUGFIX_VERSION 3 +#define VKQUALITY_BUGFIX_VERSION 4 #define VKQUALITY_GENERATE_PACKED_VERSION(MAJOR, MINOR, BUGFIX) \ ((MAJOR << 16) | (MINOR << 8) | (BUGFIX)) @@ -52,7 +52,8 @@ vkQualityInitResult vkQuality_initialize(JNIEnv *env, AAssetManager *asset_manag const char *storage_path, const char *asset_filename) { return vkquality::VkQualityManager::Init(env, asset_manager, storage_path, asset_filename, - nullptr, 0); + nullptr, + kInitFlagSkipFingerprintRecommendationCheck); } vkQualityInitResult vkQuality_initializeFlags(JNIEnv *env, AAssetManager *asset_manager, @@ -60,7 +61,8 @@ vkQualityInitResult vkQuality_initializeFlags(JNIEnv *env, AAssetManager *asset_ const char *asset_filename, int32_t flags) { return vkquality::VkQualityManager::Init(env, asset_manager, storage_path, asset_filename, - nullptr, flags); + nullptr, + flags | kInitFlagSkipFingerprintRecommendationCheck); } vkQualityInitResult vkQuality_initializeFlagsInfo(JNIEnv *env, AAssetManager *asset_manager, diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_device_info.h b/vkq_library/vkquality/src/main/cpp/vkquality_device_info.h index 29fcdcf..878ab4a 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_device_info.h +++ b/vkq_library/vkquality/src/main/cpp/vkquality_device_info.h @@ -33,6 +33,7 @@ struct DeviceInfo { std::string gles_vendor; std::string gles_version; int32_t api_level = kWildcardValue; + int32_t vk_deqp_level = kWildcardValue; uint32_t vk_api_version = kWildcardValue; uint32_t vk_device_id = kWildcardValue; uint32_t vk_driver_version = kWildcardValue; diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_manager.cpp b/vkq_library/vkquality/src/main/cpp/vkquality_manager.cpp index 798fd2c..cdcb7c4 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_manager.cpp +++ b/vkq_library/vkquality/src/main/cpp/vkquality_manager.cpp @@ -29,6 +29,7 @@ #include "vulkan_util.h" #define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) +//#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__) #define LOG_TAG "VKQUALITY" extern "C" uint32_t VkQuality_getVersion(); @@ -40,6 +41,9 @@ constexpr const char *kCacheFilename = "vkqcache.bin"; // Build.SOC_MODEL requires API 31 or higher constexpr const int kMinSoCAPI = 31; +// Minimum Vulkan dEQP version required for quality +constexpr const int32_t kMinVkDeqp = 0x7e80301; + // Device info class and field name constants for Android constexpr const char *kAndroidBuildClass = "android/os/Build"; constexpr const char *kBrandField = "BRAND"; @@ -127,8 +131,137 @@ std::string VkQualityManager::GetStaticStringField(JNIEnv *env, jclass clz, return ret_value; } +int32_t VkQualityManager::GetVulkanDEQPLevel(JNIEnv *env) { + int32_t deqp_level = 0; + + jclass activity_thread_clz = env->FindClass("android/app/ActivityThread"); + if (activity_thread_clz == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + ALOGE("Failed to find ActivityThread class"); + return 0; + } + + jmethodID current_app_method = env->GetStaticMethodID( + activity_thread_clz, "currentApplication", "()Landroid/app/Application;"); + if (current_app_method == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + env->DeleteLocalRef(activity_thread_clz); + ALOGE("Failed to get currentApplication method"); + return 0; + } + + jobject context = env->CallStaticObjectMethod(activity_thread_clz, current_app_method); + env->DeleteLocalRef(activity_thread_clz); + if (context == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + ALOGE("Context is null"); + return 0; + } + + jclass context_clz = env->FindClass("android/content/Context"); + if (context_clz == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + env->DeleteLocalRef(context); + ALOGE("Failed to find Context class"); + return 0; + } + + jmethodID get_pm_method = env->GetMethodID( + context_clz, "getPackageManager", "()Landroid/content/pm/PackageManager;"); + env->DeleteLocalRef(context_clz); + if (get_pm_method == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + env->DeleteLocalRef(context); + ALOGE("Failed to get getPackageManager method"); + return 0; + } + + jobject pm = env->CallObjectMethod(context, get_pm_method); + env->DeleteLocalRef(context); + if (pm == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + ALOGE("PackageManager is null"); + return 0; + } + + jclass pm_clz = env->FindClass("android/content/pm/PackageManager"); + if (pm_clz == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + env->DeleteLocalRef(pm); + ALOGE("Failed to find PackageManager class"); + return 0; + } + + jmethodID get_features_method = env->GetMethodID( + pm_clz, "getSystemAvailableFeatures", "()[Landroid/content/pm/FeatureInfo;"); + env->DeleteLocalRef(pm_clz); + if (get_features_method == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + env->DeleteLocalRef(pm); + ALOGE("Failed to get getSystemAvailableFeatures method"); + return 0; + } + + auto features = reinterpret_cast( + env->CallObjectMethod(pm, get_features_method)); + env->DeleteLocalRef(pm); + if (features == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + ALOGE("features array is null"); + return 0; + } + + jsize features_len = env->GetArrayLength(features); + jclass feature_info_clz = env->FindClass("android/content/pm/FeatureInfo"); + if (feature_info_clz == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + env->DeleteLocalRef(features); + ALOGE("Failed to find FeatureInfo class"); + return 0; + } + + jfieldID name_field = env->GetFieldID(feature_info_clz, "name", "Ljava/lang/String;"); + jfieldID version_field = env->GetFieldID(feature_info_clz, "version", "I"); + if (name_field == nullptr || version_field == nullptr) { + if (env->ExceptionCheck()) env->ExceptionClear(); + env->DeleteLocalRef(feature_info_clz); + env->DeleteLocalRef(features); + ALOGE("Failed to get FeatureInfo name or version field"); + return 0; + } + + for (jsize i = 0; i < features_len; ++i) { + jobject feature = env->GetObjectArrayElement(features, i); + if (feature == nullptr) { + continue; + } + + auto jname = reinterpret_cast(env->GetObjectField(feature, name_field)); + if (jname != nullptr) { + const char *name_cstr = env->GetStringUTFChars(jname, nullptr); + if (name_cstr != nullptr) { + if (strcmp(name_cstr, "android.software.vulkan.deqp.level") == 0) { + deqp_level = env->GetIntField(feature, version_field); + env->ReleaseStringUTFChars(jname, name_cstr); + env->DeleteLocalRef(jname); + env->DeleteLocalRef(feature); + break; + } + env->ReleaseStringUTFChars(jname, name_cstr); + } + env->DeleteLocalRef(jname); + } + env->DeleteLocalRef(feature); + } + + env->DeleteLocalRef(feature_info_clz); + env->DeleteLocalRef(features); + + return deqp_level; +} + vkQualityInitResult VkQualityManager::InitDeviceInfo(JNIEnv *env, DeviceInfo &device_info, - const vkqGraphicsAPIInfo *api_info) { + const vkqGraphicsAPIInfo *api_info, const int32_t flags) { jclass build_class = env->FindClass(kAndroidBuildClass); if (env->ExceptionCheck()) { env->ExceptionClear(); @@ -144,11 +277,15 @@ vkQualityInitResult VkQualityManager::InitDeviceInfo(JNIEnv *env, DeviceInfo &de device_info.api_level = android_get_device_api_level(); - if (api_info != nullptr && api_info->gles_version_string != nullptr) { - device_info.gles_version = api_info->gles_version_string; - } else { - GLESUtil::GetGLESStrings(device_info.gles_renderer, device_info.gles_version, - device_info.gles_vendor); + device_info.vk_deqp_level = GetVulkanDEQPLevel(env); + + if ((flags & kInitFlagSkipFingerprintRecommendationCheck) == 0) { + if (api_info != nullptr && api_info->gles_version_string != nullptr) { + device_info.gles_version = api_info->gles_version_string; + } else { + GLESUtil::GetGLESStrings(device_info.gles_renderer, device_info.gles_version, + device_info.gles_vendor); + } } // SoC string will be empty if we can't retrieve it due to older Android version @@ -284,7 +421,7 @@ vkQualityInitResult VkQualityManager::StartRecommendation() { } DeviceInfo device_info; - vkQualityInitResult result = InitDeviceInfo(env_, device_info, api_info_); + vkQualityInitResult result = InitDeviceInfo(env_, device_info, api_info_, flags_); if (result != kSuccess) { return result; } @@ -351,8 +488,8 @@ vkQualityInitResult VkQualityManager::StartRecommendation() { // Recommend Vulkan on unrecognized devices when ANGLE is the GLES driver quality_recommendation_ = kRecommendationVulkanBecausePredictionMatch; } else if (quality_recommendation_ == kRecommendationGLESBecauseNoDeviceMatch && - device_info.api_level >= prediction_file_.GetFutureAndroidAPILevel()) { - quality_recommendation_ = kRecommendationVulkanBecauseFutureAndroid; + device_info.vk_deqp_level >= kMinVkDeqp) { + quality_recommendation_ = kRecommendationVulkanBecausePredictionMatch; } cache_list_version_ = prediction_file_.GetListVersion(); SaveCache(device_info); diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_manager.h b/vkq_library/vkquality/src/main/cpp/vkquality_manager.h index 8383c6e..b0f8981 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_manager.h +++ b/vkq_library/vkquality/src/main/cpp/vkquality_manager.h @@ -71,8 +71,11 @@ class VkQualityManager { static std::string GetStaticStringField(JNIEnv *env, jclass clz, const char *name); + static int32_t GetVulkanDEQPLevel(JNIEnv *env); + static vkQualityInitResult InitDeviceInfo(JNIEnv *env, DeviceInfo &device_info, - const vkqGraphicsAPIInfo *api_info); + const vkqGraphicsAPIInfo *api_info, + const int32_t flags); bool LoadCache(const DeviceInfo &device_info); diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_matching.cpp b/vkq_library/vkquality/src/main/cpp/vkquality_matching.cpp index b2a65c4..3d669bd 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_matching.cpp +++ b/vkq_library/vkquality/src/main/cpp/vkquality_matching.cpp @@ -22,11 +22,12 @@ namespace vkquality { static constexpr size_t kMaxWildcards = 4; -size_t VkQualityMatching::CountWildcards(const char *str, size_t *string_length, +size_t VkQualityMatching::CountWildcards(const std::string_view &str, size_t *string_length, size_t *offset_array) { size_t offset = 0; size_t wildcard_count = 0; - while (str[offset] != '\0') { + const size_t str_len = str.length(); + while (offset < str_len) { if (str[offset] == '*' && wildcard_count < kMaxWildcards) { offset_array[wildcard_count++] = offset; } @@ -40,34 +41,37 @@ VkQualityMatching::StringMatchResult VkQualityMatching::WildcardsMatch( const std::string_view &a, const std::string_view &b, const size_t wildcard_count, const size_t wildcard_length, const size_t *wildcard_offsets) { - std::vector temp_string; - temp_string.reserve(wildcard_length + 1); - char *substring = temp_string.data(); + size_t pos = 0; - size_t current_index = 0; - size_t substring_index = 0; // If the compare string doesn't start with a wildcard, the input string must start with // the prefix chars before the first '*' in the compare string - if (b[current_index] != '*') { - while(current_index < wildcard_length && b[current_index] != '*') { - substring[substring_index++] = b[current_index++]; - } - substring[substring_index] = '\0'; - if (strstr(a.data(), substring) != a.data()) + if (b[0] != '*') { + const size_t first_star_offset = wildcard_offsets[0]; + std::string_view prefix = b.substr(0, first_star_offset); + if (a.length() < prefix.length() || a.substr(0, prefix.length()) != prefix) { return VkQualityMatching::kStringMatch_None; + } + pos = prefix.length(); } - // current_index is now at a wildcard, process each substring in turn - size_t finished_wildcards = 0; - while (finished_wildcards < wildcard_count) { - substring_index = 0; - ++current_index; // past '*' - while(current_index < wildcard_length && b[current_index] != '*') { - substring[substring_index++] = b[current_index++]; + + // Process each substring in turn + for (size_t i = 0; i < wildcard_count; ++i) { + const size_t current_star = wildcard_offsets[i]; + size_t segment_len = 0; + if (i + 1 < wildcard_count) { + segment_len = wildcard_offsets[i + 1] - (current_star + 1); + } else { + segment_len = wildcard_length - (current_star + 1); + } + + std::string_view segment = b.substr(current_star + 1, segment_len); + if (!segment.empty()) { + size_t found = a.find(segment, pos); + if (found == std::string_view::npos) { + return VkQualityMatching::kStringMatch_None; + } + pos = found + segment.length(); } - substring[substring_index] = '\0'; - if (strstr(a.data(), substring) == nullptr) - return VkQualityMatching::kStringMatch_None; - ++finished_wildcards; } return VkQualityMatching::kStringMatch_Substring; @@ -90,21 +94,21 @@ VkQualityMatching::StringMatchResult VkQualityMatching::StringMatches( // *bar*baz = match if A contains 'bar' and 'baz' size_t wildcard_length = 0; size_t wildcard_offsets[kMaxWildcards]; - size_t wildcard_count = CountWildcards(b.data(), &wildcard_length, wildcard_offsets); + size_t wildcard_count = CountWildcards(b, &wildcard_length, wildcard_offsets); if (wildcard_count > 1 || (wildcard_count == 1 && b[0] != '*')) { return WildcardsMatch(a, b, wildcard_count, wildcard_length, wildcard_offsets); } if (b[0] == '^' && b_length > 1) { // Substring match at start of string - const char *compare = b.data() + 1; - if (strstr(a.data(), compare) == a.data()) { + std::string_view pattern = b.substr(1); + if (a.length() >= pattern.length() && a.substr(0, pattern.length()) == pattern) { return kStringMatch_Substring_Start; } } else if (b[0] == '*' && b_length > 1) { // Substring match anywhere in string - const char *compare = b.data() + 1; - if (strstr(a.data(), compare) != nullptr) { + std::string_view pattern = b.substr(1); + if (a.find(pattern) != std::string_view::npos) { return kStringMatch_Substring; } } else { diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_matching.h b/vkq_library/vkquality/src/main/cpp/vkquality_matching.h index 391609d..07aa2f9 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_matching.h +++ b/vkq_library/vkquality/src/main/cpp/vkquality_matching.h @@ -31,7 +31,7 @@ class VkQualityMatching { kStringMatch_Substring }; - static size_t CountWildcards(const char *str, size_t *string_length, size_t *offset_array); + static size_t CountWildcards(const std::string_view &str, size_t *string_length, size_t *offset_array); static StringMatchResult WildcardsMatch( const std::string_view &a, const std::string_view &b, diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_prediction_file.cpp b/vkq_library/vkquality/src/main/cpp/vkquality_prediction_file.cpp index 9772733..bfd9597 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_prediction_file.cpp +++ b/vkq_library/vkquality/src/main/cpp/vkquality_prediction_file.cpp @@ -64,6 +64,14 @@ VkQualityPredictionFile::FileParseResult VkQualityPredictionFile::ValidateFile( void *file_data, const size_t file_size, const uint32_t library_version) { const VkQualityFileHeader *header = reinterpret_cast(file_data); + // Guard against integer overflow by assuming a valid file will be under a megabyte in size + static constexpr size_t kMaxValidFileSize = 1024 * 1024; // 1 megabyte + if (file_size > kMaxValidFileSize) { + file_parse_error_ = str_fmt("File size (%d) exceeds maximum allowed size of %d bytes", + (int)file_size, (int)kMaxValidFileSize); + return kFileParseResult_Error_TooSmall; + } + // File must be at least the size of the header if (file_size < sizeof(VkQualityFileHeader)) { file_parse_error_ = str_fmt("File size (%d) smaller than header size: %d", @@ -80,80 +88,144 @@ VkQualityPredictionFile::FileParseResult VkQualityPredictionFile::ValidateFile( return kFileParseResult_Error_LibraryTooOldForFile; } + // 1. Device list validation + if (header->device_list_offset > file_size) { + file_parse_error_ = "Invalid file: Device list offset exceeds file size"; + return kFileParseResult_Error_DeviceListOverflow; + } + if (header->device_list_count > file_size / sizeof(VkQualityDeviceAllowListEntry)) { + file_parse_error_ = "Invalid file: Device list count exceeds maximum possible count"; + return kFileParseResult_Error_DeviceListOverflow; + } const size_t device_list_size = header->device_list_count * sizeof(VkQualityDeviceAllowListEntry); - const size_t device_list_end = header->device_list_offset + device_list_size; - if (device_list_end > file_size) { + if (device_list_size > file_size - header->device_list_offset) { file_parse_error_ = "Invalid file: Device list overflows end of file"; return kFileParseResult_Error_DeviceListOverflow; } - const size_t driver_allow_list_size = header->driver_allow_count * - sizeof(VkQualityDriverFingerprintEntry); - const size_t driver_allow_list_end = header->driver_allow_offset + driver_allow_list_size; - if (driver_allow_list_end > file_size) { + // 2. Driver allow list validation + if (header->driver_allow_offset > file_size) { + file_parse_error_ = "Invalid file: driver allow list offset exceeds file size"; + return kFileParseResult_Error_DriverAllowOverflow; + } + if (header->driver_allow_count > file_size / sizeof(VkQualityDriverFingerprintEntry)) { + file_parse_error_ = "Invalid file: driver allow list count exceeds maximum possible count"; + return kFileParseResult_Error_DriverAllowOverflow; + } + const size_t driver_allow_list_size = header->driver_allow_count * sizeof(VkQualityDriverFingerprintEntry); + if (driver_allow_list_size > file_size - header->driver_allow_offset) { file_parse_error_ = "Invalid file: driver allow list overflows end of file"; return kFileParseResult_Error_DriverAllowOverflow; } - const size_t driver_deny_list_size = header->driver_deny_count * - sizeof(VkQualityDriverFingerprintEntry); - const size_t driver_deny_list_end = header->driver_deny_offset + driver_deny_list_size; - if (driver_deny_list_end > file_size) { + // 3. Driver deny list validation + if (header->driver_deny_offset > file_size) { + file_parse_error_ = "Invalid file: driver deny list offset exceeds file size"; + return kFileParseResult_Error_DriverDenyOverflow; + } + if (header->driver_deny_count > file_size / sizeof(VkQualityDriverFingerprintEntry)) { + file_parse_error_ = "Invalid file: driver deny list count exceeds maximum possible count"; + return kFileParseResult_Error_DriverDenyOverflow; + } + const size_t driver_deny_list_size = header->driver_deny_count * sizeof(VkQualityDriverFingerprintEntry); + if (driver_deny_list_size > file_size - header->driver_deny_offset) { file_parse_error_ = "Invalid file: driver deny list overflows end of file"; return kFileParseResult_Error_DriverDenyOverflow; } - const size_t gpu_allow_list_size = header->gpu_allow_predict_count * - sizeof(VkQualityGpuPredictEntry); - const size_t gpu_allow_list_end = header->gpu_allow_predict_offset + gpu_allow_list_size; - if (gpu_allow_list_end > file_size) { + // 4. GPU allow list validation + if (header->gpu_allow_predict_offset > file_size) { + file_parse_error_ = "Invalid file: GPU allow list offset exceeds file size"; + return kFileParseResult_Error_GpuAllowOverflow; + } + if (header->gpu_allow_predict_count > file_size / sizeof(VkQualityGpuPredictEntry)) { + file_parse_error_ = "Invalid file: GPU allow list count exceeds maximum possible count"; + return kFileParseResult_Error_GpuAllowOverflow; + } + const size_t gpu_allow_list_size = header->gpu_allow_predict_count * sizeof(VkQualityGpuPredictEntry); + if (gpu_allow_list_size > file_size - header->gpu_allow_predict_offset) { file_parse_error_ = "Invalid file: GPU allow list overflows end of file"; return kFileParseResult_Error_GpuAllowOverflow; } - const size_t gpu_deny_list_size = header->gpu_deny_predict_count * - sizeof(VkQualityGpuPredictEntry); - const size_t gpu_deny_list_end = header->gpu_deny_predict_offset + gpu_deny_list_size; - if (gpu_deny_list_end > file_size) { + // 5. GPU deny list validation + if (header->gpu_deny_predict_offset > file_size) { + file_parse_error_ = "Invalid file: GPU deny list offset exceeds file size"; + return kFileParseResult_Error_GpuDenyOverflow; + } + if (header->gpu_deny_predict_count > file_size / sizeof(VkQualityGpuPredictEntry)) { + file_parse_error_ = "Invalid file: GPU deny list count exceeds maximum possible count"; + return kFileParseResult_Error_GpuDenyOverflow; + } + const size_t gpu_deny_list_size = header->gpu_deny_predict_count * sizeof(VkQualityGpuPredictEntry); + if (gpu_deny_list_size > file_size - header->gpu_deny_predict_offset) { file_parse_error_ = "Invalid file: GPU deny list overflows end of file"; return kFileParseResult_Error_GpuDenyOverflow; } - const size_t soc_allow_list_size = header->soc_allow_count * - sizeof(VkQualityDriverSoCEntry); - const size_t soc_allow_list_end = header->soc_allow_offset + soc_allow_list_size; - if (soc_allow_list_end > file_size) { + // 6. SoC allow list validation + if (header->soc_allow_offset > file_size) { + file_parse_error_ = "Invalid file: SoC allow list offset exceeds file size"; + return kFileParseResult_Error_SoCAllowOverflow; + } + if (header->soc_allow_count > file_size / sizeof(VkQualityDriverSoCEntry)) { + file_parse_error_ = "Invalid file: SoC allow list count exceeds maximum possible count"; + return kFileParseResult_Error_SoCAllowOverflow; + } + const size_t soc_allow_list_size = header->soc_allow_count * sizeof(VkQualityDriverSoCEntry); + if (soc_allow_list_size > file_size - header->soc_allow_offset) { file_parse_error_ = "Invalid file: SoC allow list overflows end of file"; return kFileParseResult_Error_SoCAllowOverflow; } - const size_t soc_deny_list_size = header->soc_deny_count * - sizeof(VkQualityDriverSoCEntry); - const size_t soc_deny_list_end = header->soc_deny_offset + soc_deny_list_size; - if (soc_deny_list_end > file_size) { + // 7. SoC deny list validation + if (header->soc_deny_offset > file_size) { + file_parse_error_ = "Invalid file: SoC deny list offset exceeds file size"; + return kFileParseResult_Error_SoCDenyOverflow; + } + if (header->soc_deny_count > file_size / sizeof(VkQualityDriverSoCEntry)) { + file_parse_error_ = "Invalid file: SoC deny list count exceeds maximum possible count"; + return kFileParseResult_Error_SoCDenyOverflow; + } + const size_t soc_deny_list_size = header->soc_deny_count * sizeof(VkQualityDriverSoCEntry); + if (soc_deny_list_size > file_size - header->soc_deny_offset) { file_parse_error_ = "Invalid file: soc deny list overflows end of file"; return kFileParseResult_Error_SoCDenyOverflow; } - // Individual string offset bounds checks are made at string retrieval time, we just make - // sure the actual string offset list is within the file bounds here. + // 8. String offset list validation + if (header->string_table_offset > file_size) { + file_parse_error_ = "Invalid file: string table offset exceeds file size"; + return kFileParseResult_Error_StringOffsetOverflow; + } + if (header->string_table_count > file_size / sizeof(uint32_t)) { + file_parse_error_ = "Invalid file: string table count exceeds maximum possible count"; + return kFileParseResult_Error_StringOffsetOverflow; + } const size_t string_offset_list_size = header->string_table_count * sizeof(uint32_t); - const size_t string_offset_list_end = header->string_table_offset + string_offset_list_size; - if (string_offset_list_end > file_size) { + if (string_offset_list_size > file_size - header->string_table_offset) { file_parse_error_ = "Invalid file: string table offset list overflows end of file"; return kFileParseResult_Error_StringOffsetOverflow; } const uint8_t *file_start = reinterpret_cast(file_data); const uint32_t *string_offsets = reinterpret_cast( (file_start + header->string_table_offset)); - if (!CheckOffsetListValidity(string_offsets, header->device_list_count, file_size)) { + if (!CheckOffsetListValidity(string_offsets, header->string_table_count, file_size)) { file_parse_error_ = "Invalid file: String offset table entry overflows end of file"; return kFileParseResult_Error_StringOffsetOverflow; } + // 9. Shortcut offset list validation + if (header->device_list_shortcuts_offset > file_size) { + file_parse_error_ = "Invalid file: shortcut offset list offset exceeds file size"; + return kFileParseResult_Error_ShortcutOverflow; + } + if (VkQualityPredictionFile::kShortcut_Offset_Count > file_size / sizeof(uint32_t)) { + file_parse_error_ = "Invalid file: shortcut offset list count exceeds maximum possible count"; + return kFileParseResult_Error_ShortcutOverflow; + } const size_t shortcut_offset_list_size = VkQualityPredictionFile::kShortcut_Offset_Count * sizeof(uint32_t); - const size_t shortcut_offset_list_end = header->device_list_shortcuts_offset + shortcut_offset_list_size; - if (shortcut_offset_list_end > file_size) { + if (shortcut_offset_list_size > file_size - header->device_list_shortcuts_offset) { file_parse_error_ = "Invalid file: shortcut offset list overflows end of file"; return kFileParseResult_Error_ShortcutOverflow; } diff --git a/vkq_library/vkquality/src/main/cpp/vkquality_tests.cpp b/vkq_library/vkquality/src/main/cpp/vkquality_tests.cpp index 20bba26..8815c30 100644 --- a/vkq_library/vkquality/src/main/cpp/vkquality_tests.cpp +++ b/vkq_library/vkquality/src/main/cpp/vkquality_tests.cpp @@ -340,6 +340,24 @@ TEST(VkQualityPartialStringMatchTest, Validity) EXPECT_EQ(all_matched, true); } +TEST(VkQualitySequentialWildcardTest, SequentialMatching) { + // Foo*bar*baz should match Foo bar baz + auto result = VkQualityMatching::StringMatches("Foo bar baz", "Foo*bar*baz"); + EXPECT_EQ(result, VkQualityMatching::kStringMatch_Substring); + + // Foo*bar*baz should NOT match Foo baz bar + result = VkQualityMatching::StringMatches("Foo baz bar", "Foo*bar*baz"); + EXPECT_EQ(result, VkQualityMatching::kStringMatch_None); + + // *bar*baz should match bar baz + result = VkQualityMatching::StringMatches("bar baz", "*bar*baz"); + EXPECT_EQ(result, VkQualityMatching::kStringMatch_Substring); + + // *bar*baz should NOT match baz bar + result = VkQualityMatching::StringMatches("baz bar", "*bar*baz"); + EXPECT_EQ(result, VkQualityMatching::kStringMatch_None); +} + // VkQUalityPredictionFile ParseFileData tests static constexpr uint32_t kTooSmallBuffer[4] {0, 0, 0, 0}; @@ -352,6 +370,15 @@ TEST(VkQualityFileParseSizeCheck, Validity) EXPECT_EQ(result, VkQualityPredictionFile::kFileParseResult_Error_TooSmall); } +TEST(VkQualityFileParseLargeFileSizeCheck, Validity) +{ + VkQualityPredictionFile file; + MemoryBuffer memory_buffer(1024 * 1024 + 1); // 1 MB + 1 byte + const auto result = file.ParseFileData(memory_buffer.GetPtr(), memory_buffer.GetTotalSize(), + kValidVersion); + EXPECT_EQ(result, VkQualityPredictionFile::kFileParseResult_Error_TooSmall); +} + static constexpr uint32_t kOldVersion = 0x100; TEST(VkQualityFileParseIdentifierCheck, Validity) @@ -576,12 +603,20 @@ TEST(VkQualityFileParseHeaderOffsetTables, Validity) uint32_t old_offset; uint32_t *string_offsets = reinterpret_cast((base + header->string_table_offset)); - old_offset = *string_offsets; - *string_offsets = 0x7FFFFFFF; + old_offset = string_offsets[0]; + string_offsets[0] = 0x7FFFFFFF; auto result = file.ParseFileData(memory_buffer.GetPtr(), memory_buffer.GetUsedSize(), kValidVersion); EXPECT_EQ(result, VkQualityPredictionFile::kFileParseResult_Error_StringOffsetOverflow); - *string_offsets = old_offset; + string_offsets[0] = old_offset; + + // Corrupt a higher offset that would not be checked if device_list_count was used instead of string_table_count + old_offset = string_offsets[4]; + string_offsets[4] = 0x7FFFFFFF; + result = file.ParseFileData(memory_buffer.GetPtr(), memory_buffer.GetUsedSize(), + kValidVersion); + EXPECT_EQ(result, VkQualityPredictionFile::kFileParseResult_Error_StringOffsetOverflow); + string_offsets[4] = old_offset; } TEST(VkQualityStringComparison, Validity) @@ -624,6 +659,7 @@ TEST(VkQualityDeviceMatchTests, Validity) "genericvendor", "genericfingerprint", 30, + 0x7e80301, VK_API_VERSION_1_1, 0x3330000, 0x10000, @@ -705,6 +741,7 @@ TEST(VkQualityGpuTests, Validity) "genericvendor", "genericfingerprint", 30, + 0x7e80301, VK_API_VERSION_1_1, 0x3330000, 0x10000, @@ -850,6 +887,7 @@ TEST(VkQualityRecommendationTests, Validity) { "genericvendor", "genericfingerprint", kDefaultMinAndroidApi, + 0x7e80301, VK_API_VERSION_1_3, 0x111, kFakeGpuVendor_Google_MinDriverVersion, @@ -886,6 +924,7 @@ TEST(VkQualityRecommendationTests, Validity) { "genericvendor", "genericfingerprint", kDefaultMinAndroidApi + 1, + 0x7e80301, VK_API_VERSION_1_3, 0x111, kFakeGpuVendor_Google_MinDriverVersion, @@ -904,6 +943,7 @@ TEST(VkQualityRecommendationTests, Validity) { "genericvendor", "genericfingerprint", kDefaultMinAndroidApi, + 0x7e80301, VK_API_VERSION_1_3, 0x333, kFakeGpuVendor_9dfx_MinDriverVersion, @@ -931,6 +971,7 @@ TEST(VkQualityRecommendationTests, Validity) { "genericvendor", "genericfingerprint", kDefaultMinAndroidApi, + 0x7e80301, VK_API_VERSION_1_3, 0x222, kFakeGpuVendor_ZMistake_MinDriverVersion, @@ -968,6 +1009,7 @@ TEST(VkQualityFingerprintTests, Validity) { "genericvendor", "zzzFingerprintCGood", kDefaultMinAndroidApi, + 0x7e80301, VK_API_VERSION_1_3, 0x111, kFakeGpuVendor_Google_MinDriverVersion, @@ -991,6 +1033,7 @@ TEST(VkQualityFingerprintTests, Validity) { "genericvendor", "zzzFingerprintABad", kDefaultMinAndroidApi, + 0x7e80301, VK_API_VERSION_1_3, 0x111, kFakeGpuVendor_Google_MinDriverVersion, diff --git a/vkq_library/vkquality/src/main/java/com/google/android/games/vkquality/VKQuality.java b/vkq_library/vkquality/src/main/java/com/google/android/games/vkquality/VKQuality.java index caef974..c21e1d5 100644 --- a/vkq_library/vkquality/src/main/java/com/google/android/games/vkquality/VKQuality.java +++ b/vkq_library/vkquality/src/main/java/com/google/android/games/vkquality/VKQuality.java @@ -63,7 +63,7 @@ public int StartVkQuality(String customDataFilename) { public int StartVkQualityWithFlags(String customDataFilename, int flags) { mFlags = flags; - String dataFilename = customDataFilename.isEmpty() ? + String dataFilename = (customDataFilename == null || customDataFilename.isEmpty()) ? DEFAULT_QUALITY_FILE : customDataFilename; if ((mFlags & INIT_FLAG_SKIP_STARTUP_MITIGATION) == 0)