| // Copyright 2023 Google LLC |
| // |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package device_specific_configs |
| |
| import ( |
| "fmt" |
| "sort" |
| ) |
| |
| // Config represents a Bazel config that communicates information about the device under test. |
| // |
| // This struct is used to generate file //bazel/devicesrc. |
| // |
| // Configurations of this kind should not be used to set build time settings, such as the target |
| // Bazel platform (e.g. Linux, Android), optimization level (e.g. Debug, Release) or local vs. RBE. |
| // For that kind of information, please pass a second --config flag using one of the configurations |
| // defined in //bazel/buildrc. |
| type Config struct { |
| // Name of the config (the <foo> that gets passed to Bazel via --config=<foo>). |
| Name string |
| |
| // Any device-specific key/value pairs to include in Gold and Perf traces produced by GM and |
| // benchmark tests, except for keys "cpu_or_gpu" and "cpu_or_gpu_value". See fields CPU and GPU. |
| Keys map[string]string |
| |
| // CPU is the name of the CPU on this device. |
| // |
| // When a GM or benchmark test case is executed, the corresponding test runner will set the |
| // "cpu_or_gpu_value" key of the resulting Gold or Perf trace with the contents of this field |
| // if the test case is CPU-bound, in which case it will also set the "cpu_or_gpu" key to "CPU". |
| CPU string |
| |
| // GPU is the name of the GPU on this device. |
| // |
| // This field is the GPU analogous of the CPU field; see its documentation for details. |
| GPU string |
| |
| // SwarmingDimensions are the Swarming dimensions that a CI task must exhibit in order to get |
| // scheduled to run on a machine that corresponds with the device under test indicated by the |
| // Bazel config. |
| SwarmingDimensions map[string]string |
| } |
| |
| // Model returns the "model" key in the Keys dictionary. |
| func (d Config) Model() string { |
| model, ok := d.Keys["model"] |
| if !ok { |
| // Should never happen. We have a unit test that ensures all configs have this key. |
| panic(fmt.Sprintf("config %q does not contain key \"model\"", d.Name)) |
| } |
| return model |
| } |
| |
| // TestRunnerArgs returns the command-line arguments that should be passed to the Bazel test |
| // target. |
| func (d Config) TestRunnerArgs() []string { |
| args := []string{ |
| // Pass the name of the Bazel configuration as an argument. Android tests use this to infer the |
| // model of the device under test. Specifically, adb_test_runner.go will take device-specific |
| // setup and teardown steps based on the model. C++ tests running on the same machine as Bazel |
| // will ignore this flag. |
| "--device-specific-bazel-config", |
| d.Name, |
| } |
| |
| // Sort keys for determinism. |
| var keys []string |
| for key := range d.Keys { |
| keys = append(keys, key) |
| } |
| sort.Strings(keys) |
| |
| // Add key/value pairs. |
| args = append(args, "--key") |
| for _, key := range keys { |
| args = append(args, key, d.Keys[key]) |
| } |
| |
| if d.CPU != "" { |
| args = append(args, "--cpuName", d.CPU) |
| } |
| |
| if d.GPU != "" { |
| args = append(args, "--gpuName", d.GPU) |
| } |
| |
| return args |
| } |
| |
| // Configs contains all known device-specific Bazel configs. |
| // |
| // The contents of this map are used to generate file //bazel/devicesrc. |
| // |
| // TODO(lovisolo): Populate field SwarmingDimensions for all configs. |
| var Configs = map[string]Config{ |
| "AlphaR2": { |
| Name: "AlphaR2", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "AlphaR2", |
| "os": "Win10", |
| }, |
| GPU: "RadeonR9M470X", |
| }, |
| "AndroidOne": { |
| Name: "AndroidOne", |
| Keys: map[string]string{ |
| "arch": "arm", |
| "model": "AndroidOne", |
| "os": "Android", |
| }, |
| GPU: "Mali400MP2", |
| }, |
| "GCE_Debian10_AVX2": { |
| Name: "GCE_Debian10_AVX2", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "GCE", |
| "os": "Debian10", |
| }, |
| CPU: "AVX2", |
| GPU: "SwiftShader", |
| }, |
| "GCE_Debian10_AVX512": { |
| Name: "GCE_Debian10_AVX512", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "GCE", |
| "os": "Debian10", |
| }, |
| CPU: "AVX512", |
| GPU: "SwiftShader", |
| }, |
| "GCE_Debian10_Rome": { |
| Name: "GCE_Debian10_Rome", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "GCE", |
| "os": "Debian10", |
| }, |
| CPU: "Rome", |
| GPU: "SwiftShader", |
| }, |
| "GCE_Win2019_AVX2": { |
| Name: "GCE_Win2019_AVX2", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "GCE", |
| "os": "Win2019", |
| }, |
| CPU: "AVX2", |
| GPU: "SwiftShader", |
| }, |
| "GCE_Win2019_AVX512": { |
| Name: "GCE_Win2019_AVX512", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "GCE", |
| "os": "Win2019", |
| }, |
| CPU: "AVX512", |
| GPU: "SwiftShader", |
| }, |
| "GCE_Win2019_Rome": { |
| Name: "GCE_Win2019_Rome", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "GCE", |
| "os": "Win2019", |
| }, |
| CPU: "Rome", |
| GPU: "SwiftShader", |
| }, |
| "GCE_x86_Debian10_AVX2": { |
| Name: "GCE_x86_Debian10_AVX2", |
| Keys: map[string]string{ |
| "arch": "x86", |
| "model": "GCE", |
| "os": "Debian10", |
| }, |
| CPU: "AVX2", |
| GPU: "SwiftShader", |
| }, |
| "GCE_x86_Debian10_AVX512": { |
| Name: "GCE_x86_Debian10_AVX512", |
| Keys: map[string]string{ |
| "arch": "x86", |
| "model": "GCE", |
| "os": "Debian10", |
| }, |
| CPU: "AVX512", |
| GPU: "SwiftShader", |
| }, |
| "GCE_x86_Debian10_Rome": { |
| Name: "GCE_x86_Debian10_Rome", |
| Keys: map[string]string{ |
| "arch": "x86", |
| "model": "GCE", |
| "os": "Debian10", |
| }, |
| CPU: "Rome", |
| GPU: "SwiftShader", |
| }, |
| "GCE_x86_Win2019_AVX2": { |
| Name: "GCE_x86_Win2019_AVX2", |
| Keys: map[string]string{ |
| "arch": "x86", |
| "model": "GCE", |
| "os": "Win2019", |
| }, |
| CPU: "AVX2", |
| GPU: "SwiftShader", |
| }, |
| "GCE_x86_Win2019_AVX512": { |
| Name: "GCE_x86_Win2019_AVX512", |
| Keys: map[string]string{ |
| "arch": "x86", |
| "model": "GCE", |
| "os": "Win2019", |
| }, |
| CPU: "AVX512", |
| GPU: "SwiftShader", |
| }, |
| "GCE_x86_Win2019_Rome": { |
| Name: "GCE_x86_Win2019_Rome", |
| Keys: map[string]string{ |
| "arch": "x86", |
| "model": "GCE", |
| "os": "Win2019", |
| }, |
| CPU: "Rome", |
| GPU: "SwiftShader", |
| }, |
| "GalaxyS20": { |
| Name: "GalaxyS20", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "GalaxyS20", |
| "os": "Android", |
| }, |
| GPU: "MaliG77", |
| }, |
| "GalaxyS7_G930FD": { |
| Name: "GalaxyS7_G930FD", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "GalaxyS7_G930FD", |
| "os": "Android", |
| }, |
| GPU: "MaliT880", |
| }, |
| "GalaxyS9": { |
| Name: "GalaxyS9", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "GalaxyS9", |
| "os": "Android", |
| }, |
| GPU: "MaliG72", |
| }, |
| "Golo_wasm_Ubuntu18": { |
| Name: "Golo_wasm_Ubuntu18", |
| Keys: map[string]string{ |
| "arch": "wasm", |
| "model": "Golo", |
| "os": "Ubuntu18", |
| }, |
| GPU: "QuadroP400", |
| }, |
| "Golo_wasm_Win10": { |
| Name: "Golo_wasm_Win10", |
| Keys: map[string]string{ |
| "arch": "wasm", |
| "model": "Golo", |
| "os": "Win10", |
| }, |
| GPU: "QuadroP400", |
| }, |
| "Golo_x86_64_Ubuntu18": { |
| Name: "Golo_x86_64_Ubuntu18", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "Golo", |
| "os": "Ubuntu18", |
| }, |
| GPU: "QuadroP400", |
| }, |
| "Golo_x86_64_Win10": { |
| Name: "Golo_x86_64_Win10", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "Golo", |
| "os": "Win10", |
| }, |
| GPU: "QuadroP400", |
| }, |
| "JioNext": { |
| Name: "JioNext", |
| Keys: map[string]string{ |
| "arch": "arm", |
| "model": "JioNext", |
| "os": "Android", |
| }, |
| CPU: "SnapdragonQM215", |
| GPU: "Adreno308", |
| }, |
| "Kevin": { |
| Name: "Kevin", |
| Keys: map[string]string{ |
| "arch": "arm", |
| "model": "Kevin", |
| "os": "ChromeOS", |
| }, |
| GPU: "MaliT860", |
| }, |
| "MacBook10.1": { |
| Name: "MacBook10.1", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacBook10.1", |
| "os": "Mac10.13", |
| }, |
| GPU: "IntelHD615", |
| }, |
| "MacBookAir7.2": { |
| Name: "MacBookAir7.2", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacBookAir7.2", |
| "os": "Mac10.15.1", |
| }, |
| GPU: "IntelHD6000", |
| }, |
| "MacBookPro11.5_Mac10.13": { |
| Name: "MacBookPro11.5_Mac10.13", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacBookPro11.5", |
| "os": "Mac10.13", |
| }, |
| CPU: "AVX2", |
| GPU: "RadeonHD8870M", |
| }, |
| "MacBookPro11.5_Mac10.15.7": { |
| Name: "MacBookPro11.5_Mac10.15.7", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacBookPro11.5", |
| "os": "Mac10.15.7", |
| }, |
| CPU: "AVX2", |
| GPU: "RadeonHD8870M", |
| }, |
| "MacBookPro16.2": { |
| Name: "MacBookPro16.2", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacBookPro16.2", |
| "os": "Mac12", |
| }, |
| CPU: "AppleIntel", |
| GPU: "IntelIrisPlus", |
| }, |
| "MacMini7.1_Mac10.13": { |
| Name: "MacMini7.1_Mac10.13", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacMini7.1", |
| "os": "Mac10.13", |
| }, |
| CPU: "AVX2", |
| GPU: "IntelIris5100", |
| }, |
| "MacMini7.1_Mac10.14": { |
| Name: "MacMini7.1_Mac10.14", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacMini7.1", |
| "os": "Mac10.14", |
| }, |
| CPU: "AVX2", |
| GPU: "IntelIris5100", |
| }, |
| "MacMini7.1_Mac10.15.7": { |
| Name: "MacMini7.1_Mac10.15.7", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "MacMini7.1", |
| "os": "Mac10.15.7", |
| }, |
| CPU: "AVX2", |
| GPU: "IntelIris5100", |
| }, |
| "MacMini9.1_Mac11": { |
| Name: "MacMini9.1_Mac11", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "MacMini9.1", |
| "os": "Mac11", |
| }, |
| CPU: "AppleM1", |
| GPU: "AppleM1", |
| }, |
| "MacMini9.1_Mac12": { |
| Name: "MacMini9.1_Mac12", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "MacMini9.1", |
| "os": "Mac12", |
| }, |
| CPU: "AppleM1", |
| GPU: "AppleM1", |
| }, |
| "MacMini9.1_Mac13": { |
| Name: "MacMini9.1_Mac13", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "MacMini9.1", |
| "os": "Mac13", |
| }, |
| CPU: "AppleM1", |
| GPU: "AppleM1", |
| }, |
| "NUC11TZi5_Debian11": { |
| Name: "NUC11TZi5_Debian11", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC11TZi5", |
| "os": "Debian11", |
| }, |
| CPU: "AVX2", |
| GPU: "IntelIrisXe", |
| }, |
| "NUC11TZi5_Win10": { |
| Name: "NUC11TZi5_Win10", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC11TZi5", |
| "os": "Win10", |
| }, |
| CPU: "AVX2", |
| GPU: "IntelIrisXe", |
| }, |
| "NUC5PPYH": { |
| Name: "NUC5PPYH", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC5PPYH", |
| "os": "Debian10", |
| }, |
| GPU: "IntelHD405", |
| }, |
| "NUC5i7RYH": { |
| Name: "NUC5i7RYH", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC5i7RYH", |
| "os": "Win10", |
| }, |
| CPU: "AVX2", |
| GPU: "IntelIris6100", |
| }, |
| "NUC6i5SYK": { |
| Name: "NUC6i5SYK", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC6i5SYK", |
| "os": "Win10", |
| }, |
| GPU: "IntelIris540", |
| }, |
| "NUC8i5BEK": { |
| Name: "NUC8i5BEK", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC8i5BEK", |
| "os": "Win10", |
| }, |
| GPU: "IntelIris655", |
| }, |
| "NUC9i7QN_Debian11": { |
| Name: "NUC9i7QN_Debian11", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC9i7QN", |
| "os": "Debian11", |
| }, |
| CPU: "AVX2", |
| GPU: "RTX3060", |
| // Based on |
| // https://skia.googlesource.com/skia/+/5606ef899116266132253e979a793fea97f12604/infra/bots/gen_tasks_logic/gen_tasks_logic.go#952. |
| SwarmingDimensions: map[string]string{ |
| "os": "Debian-11.5", |
| "cpu": "x86-64-i7-9750H", |
| }, |
| }, |
| "NUC9i7QN_Win10": { |
| Name: "NUC9i7QN_Win10", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUC9i7QN", |
| "os": "Win10", |
| }, |
| CPU: "AVX2", |
| GPU: "RTX3060", |
| }, |
| "NUCD34010WYKH": { |
| Name: "NUCD34010WYKH", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUCD34010WYKH", |
| "os": "Win10", |
| }, |
| GPU: "IntelHD4400", |
| }, |
| "NUCDE3815TYKHE": { |
| Name: "NUCDE3815TYKHE", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "NUCDE3815TYKHE", |
| "os": "Debian10", |
| }, |
| GPU: "IntelBayTrail", |
| }, |
| "Nexus7": { |
| Name: "Nexus7", |
| Keys: map[string]string{ |
| "arch": "arm", |
| "model": "Nexus7", |
| "os": "Android", |
| }, |
| GPU: "Tegra3", |
| }, |
| "P30": { |
| Name: "P30", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "P30", |
| "os": "Android", |
| }, |
| GPU: "MaliG76", |
| }, |
| "Pixel2XL": { |
| Name: "Pixel2XL", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel2XL", |
| "os": "Android", |
| }, |
| GPU: "Adreno540", |
| }, |
| "Pixel3": { |
| Name: "Pixel3", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel3", |
| "os": "Android", |
| }, |
| GPU: "Adreno630", |
| }, |
| "Pixel4": { |
| Name: "Pixel4", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel4", |
| "os": "Android", |
| }, |
| CPU: "Snapdragon855", |
| GPU: "Adreno640", |
| }, |
| "Pixel4XL": { |
| Name: "Pixel4XL", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel4XL", |
| "os": "Android", |
| }, |
| GPU: "Adreno640", |
| }, |
| "Pixel5": { |
| Name: "Pixel5", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel5", |
| "os": "Android", |
| }, |
| GPU: "Adreno620", |
| // Based on |
| // https://skia.googlesource.com/skia/+/f8daeeb7f092abe1674bc2303c0781f9fb1756ab/infra/bots/gen_tasks_logic/gen_tasks_logic.go#836. |
| SwarmingDimensions: map[string]string{ |
| "os": "Android", |
| "device_type": "redfin", |
| "device_os": "RD1A.200810.022.A4", |
| }, |
| }, |
| "Pixel5_Android12": { |
| Name: "Pixel5_Android12", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel5", |
| "os": "Android12", |
| }, |
| GPU: "Adreno620", |
| // Based on |
| // https://skia.googlesource.com/skia/+/f8daeeb7f092abe1674bc2303c0781f9fb1756ab/infra/bots/gen_tasks_logic/gen_tasks_logic.go#910. |
| SwarmingDimensions: map[string]string{ |
| "os": "Android", |
| "device_type": "redfin", |
| "device_os": "SP2A.220305.012", |
| }, |
| }, |
| "Pixel6": { |
| Name: "Pixel6", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel6", |
| "os": "Android", |
| }, |
| GPU: "MaliG78", |
| }, |
| "Pixel7": { |
| Name: "Pixel7", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "Pixel7", |
| "os": "Android", |
| }, |
| GPU: "MaliG710", |
| }, |
| "RUBYR5_Debian11": { |
| Name: "RUBYR5_Debian11", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "RUBYR5", |
| "os": "Debian11", |
| }, |
| GPU: "RadeonVega6", |
| }, |
| "RUBYR5_Win10": { |
| Name: "RUBYR5_Win10", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "RUBYR5", |
| "os": "Win10", |
| }, |
| GPU: "RadeonVega6", |
| }, |
| "ShuttleA_Debian10_GTX660": { |
| Name: "ShuttleA_Debian10_GTX660", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "ShuttleA", |
| "os": "Debian10", |
| }, |
| GPU: "GTX660", |
| }, |
| "ShuttleA_Debian10_IntelHD2000": { |
| Name: "ShuttleA_Debian10_IntelHD2000", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "ShuttleA", |
| "os": "Debian10", |
| }, |
| GPU: "IntelHD2000", |
| }, |
| "ShuttleA_Debian10_RadeonHD7770": { |
| Name: "ShuttleA_Debian10_RadeonHD7770", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "ShuttleA", |
| "os": "Debian10", |
| }, |
| GPU: "RadeonHD7770", |
| }, |
| "ShuttleA_Win10_GTX660": { |
| Name: "ShuttleA_Win10_GTX660", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "ShuttleA", |
| "os": "Win10", |
| }, |
| GPU: "GTX660", |
| }, |
| "ShuttleA_Win10_IntelHD2000": { |
| Name: "ShuttleA_Win10_IntelHD2000", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "ShuttleA", |
| "os": "Win10", |
| }, |
| GPU: "IntelHD2000", |
| }, |
| "ShuttleA_Win10_RadeonHD7770": { |
| Name: "ShuttleA_Win10_RadeonHD7770", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "ShuttleA", |
| "os": "Win10", |
| }, |
| GPU: "RadeonHD7770", |
| }, |
| "ShuttleC": { |
| Name: "ShuttleC", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "ShuttleC", |
| "os": "Win10", |
| }, |
| GPU: "GTX960", |
| }, |
| "Sparky360": { |
| Name: "Sparky360", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "Sparky360", |
| "os": "ChromeOS", |
| }, |
| GPU: "IntelUHDGraphics605", |
| }, |
| "Spin513": { |
| Name: "Spin513", |
| Keys: map[string]string{ |
| "arch": "arm", |
| "model": "Spin513", |
| "os": "ChromeOS", |
| }, |
| GPU: "Adreno618", |
| }, |
| "Spin514": { |
| Name: "Spin514", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "Spin514", |
| "os": "ChromeOS", |
| }, |
| GPU: "RadeonVega3", |
| }, |
| "VMware7.1_Mac10.13": { |
| Name: "VMware7.1_Mac10.13", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "VMware7.1", |
| "os": "Mac10.13", |
| }, |
| CPU: "AVX", |
| }, |
| "VMware7.1_Mac10.14": { |
| Name: "VMware7.1_Mac10.14", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "VMware7.1", |
| "os": "Mac10.14", |
| }, |
| CPU: "AVX", |
| }, |
| "VMware7.1_Mac10.15.7": { |
| Name: "VMware7.1_Mac10.15.7", |
| Keys: map[string]string{ |
| "arch": "x86_64", |
| "model": "VMware7.1", |
| "os": "Mac10.15.7", |
| }, |
| CPU: "AVX", |
| }, |
| "Wembley": { |
| Name: "Wembley", |
| Keys: map[string]string{ |
| "arch": "arm", |
| "model": "Wembley", |
| "os": "Android", |
| }, |
| GPU: "PowerVRGE8320", |
| }, |
| "iPadPro": { |
| Name: "iPadPro", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "iPadPro", |
| "os": "iOS", |
| }, |
| GPU: "PowerVRGT7800", |
| }, |
| "iPhone11": { |
| Name: "iPhone11", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "iPhone11", |
| "os": "iOS", |
| }, |
| GPU: "AppleA13", |
| }, |
| "iPhone7": { |
| Name: "iPhone7", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "iPhone7", |
| "os": "iOS", |
| }, |
| GPU: "PowerVRGT7600", |
| }, |
| "iPhone8": { |
| Name: "iPhone8", |
| Keys: map[string]string{ |
| "arch": "arm64", |
| "model": "iPhone8", |
| "os": "iOS", |
| }, |
| GPU: "AppleA11", |
| }, |
| } |