1cb93a386Sopenharmony_ci// Copyright 2020 The Chromium Authors. All rights reserved. 2cb93a386Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be 3cb93a386Sopenharmony_ci// found in the LICENSE file. 4cb93a386Sopenharmony_ci 5cb93a386Sopenharmony_cipackage gen_tasks_logic 6cb93a386Sopenharmony_ci 7cb93a386Sopenharmony_ciimport ( 8cb93a386Sopenharmony_ci "fmt" 9cb93a386Sopenharmony_ci "log" 10cb93a386Sopenharmony_ci "sort" 11cb93a386Sopenharmony_ci "strconv" 12cb93a386Sopenharmony_ci "strings" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci "github.com/golang/glog" 15cb93a386Sopenharmony_ci "go.skia.org/infra/task_scheduler/go/specs" 16cb93a386Sopenharmony_ci) 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ci// keyParams generates the key used by DM for Gold results. 19cb93a386Sopenharmony_cifunc keyParams(parts map[string]string) []string { 20cb93a386Sopenharmony_ci // Don't bother to include role, which is always Test. 21cb93a386Sopenharmony_ci ignored := []string{"role", "test_filter"} 22cb93a386Sopenharmony_ci keys := make([]string, 0, len(parts)) 23cb93a386Sopenharmony_ci for key := range parts { 24cb93a386Sopenharmony_ci found := false 25cb93a386Sopenharmony_ci for _, b := range ignored { 26cb93a386Sopenharmony_ci if key == b { 27cb93a386Sopenharmony_ci found = true 28cb93a386Sopenharmony_ci break 29cb93a386Sopenharmony_ci } 30cb93a386Sopenharmony_ci } 31cb93a386Sopenharmony_ci if !found { 32cb93a386Sopenharmony_ci keys = append(keys, key) 33cb93a386Sopenharmony_ci } 34cb93a386Sopenharmony_ci } 35cb93a386Sopenharmony_ci sort.Strings(keys) 36cb93a386Sopenharmony_ci rv := make([]string, 0, 2*len(keys)) 37cb93a386Sopenharmony_ci for _, key := range keys { 38cb93a386Sopenharmony_ci rv = append(rv, key, parts[key]) 39cb93a386Sopenharmony_ci } 40cb93a386Sopenharmony_ci return rv 41cb93a386Sopenharmony_ci} 42cb93a386Sopenharmony_ci 43cb93a386Sopenharmony_ci// dmFlags generates flags to DM based on the given task properties. 44cb93a386Sopenharmony_cifunc (b *taskBuilder) dmFlags(internalHardwareLabel string) { 45cb93a386Sopenharmony_ci properties := map[string]string{ 46cb93a386Sopenharmony_ci "gitHash": specs.PLACEHOLDER_REVISION, 47cb93a386Sopenharmony_ci "builder": b.Name, 48cb93a386Sopenharmony_ci "buildbucket_build_id": specs.PLACEHOLDER_BUILDBUCKET_BUILD_ID, 49cb93a386Sopenharmony_ci "task_id": specs.PLACEHOLDER_TASK_ID, 50cb93a386Sopenharmony_ci "issue": specs.PLACEHOLDER_ISSUE, 51cb93a386Sopenharmony_ci "patchset": specs.PLACEHOLDER_PATCHSET, 52cb93a386Sopenharmony_ci "patch_storage": specs.PLACEHOLDER_PATCH_STORAGE, 53cb93a386Sopenharmony_ci "swarming_bot_id": "${SWARMING_BOT_ID}", 54cb93a386Sopenharmony_ci "swarming_task_id": "${SWARMING_TASK_ID}", 55cb93a386Sopenharmony_ci } 56cb93a386Sopenharmony_ci 57cb93a386Sopenharmony_ci args := []string{ 58cb93a386Sopenharmony_ci "dm", 59cb93a386Sopenharmony_ci "--nameByHash", 60cb93a386Sopenharmony_ci } 61cb93a386Sopenharmony_ci 62cb93a386Sopenharmony_ci configs := []string{} 63cb93a386Sopenharmony_ci skipped := []string{} 64cb93a386Sopenharmony_ci 65cb93a386Sopenharmony_ci hasConfig := func(cfg string) bool { 66cb93a386Sopenharmony_ci for _, c := range configs { 67cb93a386Sopenharmony_ci if c == cfg { 68cb93a386Sopenharmony_ci return true 69cb93a386Sopenharmony_ci } 70cb93a386Sopenharmony_ci } 71cb93a386Sopenharmony_ci return false 72cb93a386Sopenharmony_ci } 73cb93a386Sopenharmony_ci filter := func(slice []string, elems ...string) []string { 74cb93a386Sopenharmony_ci m := make(map[string]bool, len(elems)) 75cb93a386Sopenharmony_ci for _, e := range elems { 76cb93a386Sopenharmony_ci m[e] = true 77cb93a386Sopenharmony_ci } 78cb93a386Sopenharmony_ci rv := make([]string, 0, len(slice)) 79cb93a386Sopenharmony_ci for _, e := range slice { 80cb93a386Sopenharmony_ci if m[e] { 81cb93a386Sopenharmony_ci rv = append(rv, e) 82cb93a386Sopenharmony_ci } 83cb93a386Sopenharmony_ci } 84cb93a386Sopenharmony_ci return rv 85cb93a386Sopenharmony_ci } 86cb93a386Sopenharmony_ci remove := func(slice []string, elem string) []string { 87cb93a386Sopenharmony_ci rv := make([]string, 0, len(slice)) 88cb93a386Sopenharmony_ci for _, e := range slice { 89cb93a386Sopenharmony_ci if e != elem { 90cb93a386Sopenharmony_ci rv = append(rv, e) 91cb93a386Sopenharmony_ci } 92cb93a386Sopenharmony_ci } 93cb93a386Sopenharmony_ci return rv 94cb93a386Sopenharmony_ci } 95cb93a386Sopenharmony_ci removeContains := func(slice []string, elem string) []string { 96cb93a386Sopenharmony_ci rv := make([]string, 0, len(slice)) 97cb93a386Sopenharmony_ci for _, e := range slice { 98cb93a386Sopenharmony_ci if !strings.Contains(e, elem) { 99cb93a386Sopenharmony_ci rv = append(rv, e) 100cb93a386Sopenharmony_ci } 101cb93a386Sopenharmony_ci } 102cb93a386Sopenharmony_ci return rv 103cb93a386Sopenharmony_ci } 104cb93a386Sopenharmony_ci suffix := func(slice []string, sfx string) []string { 105cb93a386Sopenharmony_ci rv := make([]string, 0, len(slice)) 106cb93a386Sopenharmony_ci for _, e := range slice { 107cb93a386Sopenharmony_ci rv = append(rv, e+sfx) 108cb93a386Sopenharmony_ci } 109cb93a386Sopenharmony_ci return rv 110cb93a386Sopenharmony_ci } 111cb93a386Sopenharmony_ci 112cb93a386Sopenharmony_ci skip := func(quad ...string) { 113cb93a386Sopenharmony_ci if len(quad) == 1 { 114cb93a386Sopenharmony_ci quad = strings.Fields(quad[0]) 115cb93a386Sopenharmony_ci } 116cb93a386Sopenharmony_ci if len(quad) != 4 { 117cb93a386Sopenharmony_ci log.Fatalf("Invalid value for --skip: %+v", quad) 118cb93a386Sopenharmony_ci } 119cb93a386Sopenharmony_ci config := quad[0] 120cb93a386Sopenharmony_ci src := quad[1] 121cb93a386Sopenharmony_ci options := quad[2] 122cb93a386Sopenharmony_ci name := quad[3] 123cb93a386Sopenharmony_ci if config == "_" || 124cb93a386Sopenharmony_ci hasConfig(config) || 125cb93a386Sopenharmony_ci (config[0] == '~' && hasConfig(config[1:])) { 126cb93a386Sopenharmony_ci skipped = append(skipped, config, src, options, name) 127cb93a386Sopenharmony_ci } 128cb93a386Sopenharmony_ci } 129cb93a386Sopenharmony_ci 130cb93a386Sopenharmony_ci // Keys. 131cb93a386Sopenharmony_ci keys := keyParams(b.parts) 132cb93a386Sopenharmony_ci if b.extraConfig("Lottie") { 133cb93a386Sopenharmony_ci keys = append(keys, "renderer", "skottie") 134cb93a386Sopenharmony_ci } 135cb93a386Sopenharmony_ci if b.matchExtraConfig("DDL") { 136cb93a386Sopenharmony_ci // 'DDL' style means "--skpViewportSize 2048" 137cb93a386Sopenharmony_ci keys = append(keys, "style", "DDL") 138cb93a386Sopenharmony_ci } else { 139cb93a386Sopenharmony_ci keys = append(keys, "style", "default") 140cb93a386Sopenharmony_ci } 141cb93a386Sopenharmony_ci args = append(args, "--key") 142cb93a386Sopenharmony_ci args = append(args, keys...) 143cb93a386Sopenharmony_ci 144cb93a386Sopenharmony_ci // This enables non-deterministic random seeding of the GPU FP optimization 145cb93a386Sopenharmony_ci // test. 146cb93a386Sopenharmony_ci // Not Android due to: 147cb93a386Sopenharmony_ci // - https://skia.googlesource.com/skia/+/5910ed347a638ded8cd4c06dbfda086695df1112/BUILD.gn#160 148cb93a386Sopenharmony_ci // - https://skia.googlesource.com/skia/+/ce06e261e68848ae21cac1052abc16bc07b961bf/tests/ProcessorTest.cpp#307 149cb93a386Sopenharmony_ci // Not MSAN due to: 150cb93a386Sopenharmony_ci // - https://skia.googlesource.com/skia/+/0ac06e47269a40c177747310a613d213c95d1d6d/infra/bots/recipe_modules/flavor/gn_flavor.py#80 151cb93a386Sopenharmony_ci if !b.os("Android") && !b.extraConfig("MSAN") { 152cb93a386Sopenharmony_ci args = append(args, "--randomProcessorTest") 153cb93a386Sopenharmony_ci } 154cb93a386Sopenharmony_ci 155cb93a386Sopenharmony_ci threadLimit := -1 156cb93a386Sopenharmony_ci const MAIN_THREAD_ONLY = 0 157cb93a386Sopenharmony_ci 158cb93a386Sopenharmony_ci // 32-bit desktop bots tend to run out of memory, because they have relatively 159cb93a386Sopenharmony_ci // far more cores than RAM (e.g. 32 cores, 3G RAM). Hold them back a bit. 160cb93a386Sopenharmony_ci if b.arch("x86") { 161cb93a386Sopenharmony_ci threadLimit = 4 162cb93a386Sopenharmony_ci } 163cb93a386Sopenharmony_ci 164cb93a386Sopenharmony_ci // These bots run out of memory easily. 165cb93a386Sopenharmony_ci if b.model("MotoG4", "Nexus7") { 166cb93a386Sopenharmony_ci threadLimit = MAIN_THREAD_ONLY 167cb93a386Sopenharmony_ci } 168cb93a386Sopenharmony_ci 169cb93a386Sopenharmony_ci // Avoid issues with dynamically exceeding resource cache limits. 170cb93a386Sopenharmony_ci if b.matchExtraConfig("DISCARDABLE") { 171cb93a386Sopenharmony_ci threadLimit = MAIN_THREAD_ONLY 172cb93a386Sopenharmony_ci } 173cb93a386Sopenharmony_ci 174cb93a386Sopenharmony_ci if threadLimit >= 0 { 175cb93a386Sopenharmony_ci args = append(args, "--threads", strconv.Itoa(threadLimit)) 176cb93a386Sopenharmony_ci } 177cb93a386Sopenharmony_ci 178cb93a386Sopenharmony_ci sampleCount := 0 179cb93a386Sopenharmony_ci glPrefix := "" 180cb93a386Sopenharmony_ci if b.extraConfig("SwiftShader") { 181cb93a386Sopenharmony_ci configs = append(configs, "gles", "glesdft", "glesdmsaa") 182cb93a386Sopenharmony_ci } else if b.cpu() { 183cb93a386Sopenharmony_ci args = append(args, "--nogpu") 184cb93a386Sopenharmony_ci 185cb93a386Sopenharmony_ci configs = append(configs, "8888") 186cb93a386Sopenharmony_ci 187cb93a386Sopenharmony_ci if b.extraConfig("SkVM") { 188cb93a386Sopenharmony_ci args = append(args, "--skvm") 189cb93a386Sopenharmony_ci } 190cb93a386Sopenharmony_ci 191cb93a386Sopenharmony_ci if b.extraConfig("BonusConfigs") { 192cb93a386Sopenharmony_ci configs = []string{ 193cb93a386Sopenharmony_ci "g8", "565", 194cb93a386Sopenharmony_ci "pic-8888", "serialize-8888", 195cb93a386Sopenharmony_ci "linear-f16", "srgb-rgba", "srgb-f16", "narrow-rgba", "narrow-f16", 196cb93a386Sopenharmony_ci "p3-rgba", "p3-f16", "rec2020-rgba", "rec2020-f16"} 197cb93a386Sopenharmony_ci } 198cb93a386Sopenharmony_ci 199cb93a386Sopenharmony_ci if b.extraConfig("PDF") { 200cb93a386Sopenharmony_ci configs = []string{"pdf"} 201cb93a386Sopenharmony_ci args = append(args, "--rasterize_pdf") // Works only on Mac. 202cb93a386Sopenharmony_ci // Take ~forever to rasterize: 203cb93a386Sopenharmony_ci skip("pdf gm _ lattice2") 204cb93a386Sopenharmony_ci skip("pdf gm _ hairmodes") 205cb93a386Sopenharmony_ci skip("pdf gm _ longpathdash") 206cb93a386Sopenharmony_ci } 207cb93a386Sopenharmony_ci 208cb93a386Sopenharmony_ci } else if b.gpu() { 209cb93a386Sopenharmony_ci args = append(args, "--nocpu") 210cb93a386Sopenharmony_ci 211cb93a386Sopenharmony_ci // Add in either gles or gl configs to the canonical set based on OS 212cb93a386Sopenharmony_ci glPrefix = "gl" 213cb93a386Sopenharmony_ci // Use 4x MSAA for all our testing. It's more consistent and 8x MSAA is nondeterministic (by 214cb93a386Sopenharmony_ci // design) on NVIDIA hardware. The problem is especially bad on ANGLE. skia:6813 skia:6545 215cb93a386Sopenharmony_ci sampleCount = 4 216cb93a386Sopenharmony_ci if b.os("Android", "iOS") { 217cb93a386Sopenharmony_ci glPrefix = "gles" 218cb93a386Sopenharmony_ci // MSAA is disabled on Pixel3a (https://b.corp.google.com/issues/143074513). 219cb93a386Sopenharmony_ci // MSAA is disabled on Pixel5 (https://skbug.com/11152). 220cb93a386Sopenharmony_ci if b.model("Pixel3a", "Pixel5") { 221cb93a386Sopenharmony_ci sampleCount = 0 222cb93a386Sopenharmony_ci } 223cb93a386Sopenharmony_ci } else if b.matchGpu("Intel") { 224cb93a386Sopenharmony_ci // MSAA doesn't work well on Intel GPUs chromium:527565, chromium:983926 225cb93a386Sopenharmony_ci sampleCount = 0 226cb93a386Sopenharmony_ci } else if b.os("ChromeOS") { 227cb93a386Sopenharmony_ci glPrefix = "gles" 228cb93a386Sopenharmony_ci } 229cb93a386Sopenharmony_ci 230cb93a386Sopenharmony_ci if b.extraConfig("NativeFonts") { 231cb93a386Sopenharmony_ci configs = append(configs, glPrefix) 232cb93a386Sopenharmony_ci } else { 233cb93a386Sopenharmony_ci configs = append(configs, glPrefix, glPrefix+"dft", "srgb-"+glPrefix) 234cb93a386Sopenharmony_ci if sampleCount > 0 { 235cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("%smsaa%d", glPrefix, sampleCount)) 236cb93a386Sopenharmony_ci // Temporarily limit the bots we test dynamic MSAA on. 237cb93a386Sopenharmony_ci if b.gpu("QuadroP400", "MaliG77") || b.matchOs("Mac") { 238cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("%sdmsaa", glPrefix)) 239cb93a386Sopenharmony_ci } 240cb93a386Sopenharmony_ci } 241cb93a386Sopenharmony_ci } 242cb93a386Sopenharmony_ci 243cb93a386Sopenharmony_ci // The Tegra3 doesn't support MSAA 244cb93a386Sopenharmony_ci if b.gpu("Tegra3") || 245cb93a386Sopenharmony_ci // We aren't interested in fixing msaa bugs on current iOS devices. 246cb93a386Sopenharmony_ci b.model("iPad4", "iPadPro", "iPhone6", "iPhone7") || 247cb93a386Sopenharmony_ci // skia:5792 248cb93a386Sopenharmony_ci b.gpu("IntelHD530", "IntelIris540") { 249cb93a386Sopenharmony_ci configs = removeContains(configs, "msaa") 250cb93a386Sopenharmony_ci } 251cb93a386Sopenharmony_ci 252cb93a386Sopenharmony_ci // We want to test both the OpenGL config and the GLES config on Linux Intel: 253cb93a386Sopenharmony_ci // GL is used by Chrome, GLES is used by ChromeOS. 254cb93a386Sopenharmony_ci // Also do the Ganesh threading verification test (render with and without 255cb93a386Sopenharmony_ci // worker threads, using only the SW path renderer, and compare the results). 256cb93a386Sopenharmony_ci if b.matchGpu("Intel") && b.isLinux() { 257cb93a386Sopenharmony_ci configs = append(configs, "gles", "glesdft", "srgb-gles", "gltestthreading") 258cb93a386Sopenharmony_ci // skbug.com/6333, skbug.com/6419, skbug.com/6702 259cb93a386Sopenharmony_ci skip("gltestthreading gm _ lcdblendmodes") 260cb93a386Sopenharmony_ci skip("gltestthreading gm _ lcdoverlap") 261cb93a386Sopenharmony_ci skip("gltestthreading gm _ textbloblooper") 262cb93a386Sopenharmony_ci // All of these GMs are flaky, too: 263cb93a386Sopenharmony_ci skip("gltestthreading gm _ savelayer_with_backdrop") 264cb93a386Sopenharmony_ci skip("gltestthreading gm _ persp_shaders_bw") 265cb93a386Sopenharmony_ci skip("gltestthreading gm _ dftext_blob_persp") 266cb93a386Sopenharmony_ci skip("gltestthreading gm _ dftext") 267cb93a386Sopenharmony_ci skip("gltestthreading gm _ gpu_blur_utils") 268cb93a386Sopenharmony_ci skip("gltestthreading gm _ gpu_blur_utils_ref") 269cb93a386Sopenharmony_ci skip("gltestthreading gm _ gpu_blur_utils_subset_rect") 270cb93a386Sopenharmony_ci skip("gltestthreading gm _ gpu_blur_utils_subset_rect_ref") 271cb93a386Sopenharmony_ci // skbug.com/7523 - Flaky on various GPUs 272cb93a386Sopenharmony_ci skip("gltestthreading gm _ orientation") 273cb93a386Sopenharmony_ci // These GMs only differ in the low bits 274cb93a386Sopenharmony_ci skip("gltestthreading gm _ stroketext") 275cb93a386Sopenharmony_ci skip("gltestthreading gm _ draw_image_set") 276cb93a386Sopenharmony_ci } 277cb93a386Sopenharmony_ci 278cb93a386Sopenharmony_ci // CommandBuffer bot *only* runs the cmdbuffer_es2 configs. 279cb93a386Sopenharmony_ci if b.extraConfig("CommandBuffer") { 280cb93a386Sopenharmony_ci configs = []string{"cmdbuffer_es2"} 281cb93a386Sopenharmony_ci if sampleCount > 0 { 282cb93a386Sopenharmony_ci configs = append(configs, "cmdbuffer_es2_dmsaa") 283cb93a386Sopenharmony_ci } 284cb93a386Sopenharmony_ci } 285cb93a386Sopenharmony_ci 286cb93a386Sopenharmony_ci // Dawn bot *only* runs the dawn config 287cb93a386Sopenharmony_ci if b.extraConfig("Dawn") { 288cb93a386Sopenharmony_ci // tint:1045: Tint doesn't implement MatrixInverse yet. 289cb93a386Sopenharmony_ci skip("_", "gm", "_", "runtime_intrinsics_matrix") 290cb93a386Sopenharmony_ci configs = []string{"dawn"} 291cb93a386Sopenharmony_ci } 292cb93a386Sopenharmony_ci 293cb93a386Sopenharmony_ci // Graphite bot *only* runs the grmtl config 294cb93a386Sopenharmony_ci if b.extraConfig("Graphite") { 295cb93a386Sopenharmony_ci args = append(args, "--nogpu") // disable non-Graphite tests 296cb93a386Sopenharmony_ci 297cb93a386Sopenharmony_ci // TODO: re-enable - currently fails with "Failed to make lazy image" 298cb93a386Sopenharmony_ci skip("_", "gm", "_", "image_subset") 299cb93a386Sopenharmony_ci 300cb93a386Sopenharmony_ci if b.extraConfig("ASAN") { 301cb93a386Sopenharmony_ci // skbug.com/12507 (Neon UB during JPEG compression on M1 ASAN Graphite bot) 302cb93a386Sopenharmony_ci skip("_", "gm", "_", "yuv420_odd_dim") // Oddly enough yuv420_odd_dim_repeat doesn't crash 303cb93a386Sopenharmony_ci skip("_", "gm", "_", "encode-alpha-jpeg") 304cb93a386Sopenharmony_ci skip("_", "gm", "_", "encode") 305cb93a386Sopenharmony_ci skip("_", "gm", "_", "jpg-color-cube") 306cb93a386Sopenharmony_ci } 307cb93a386Sopenharmony_ci configs = []string{"grmtl"} 308cb93a386Sopenharmony_ci } 309cb93a386Sopenharmony_ci 310cb93a386Sopenharmony_ci // ANGLE bot *only* runs the angle configs 311cb93a386Sopenharmony_ci if b.extraConfig("ANGLE") { 312cb93a386Sopenharmony_ci configs = []string{"angle_d3d11_es2", 313cb93a386Sopenharmony_ci "angle_gl_es2", 314cb93a386Sopenharmony_ci "angle_d3d11_es3"} 315cb93a386Sopenharmony_ci if sampleCount > 0 { 316cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_d3d11_es2_msaa%d", sampleCount)) 317cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_d3d11_es2_dmsaa")) 318cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_gl_es2_dmsaa")) 319cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_d3d11_es3_msaa%d", sampleCount)) 320cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_d3d11_es3_dmsaa")) 321cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_gl_es3_dmsaa")) 322cb93a386Sopenharmony_ci } 323cb93a386Sopenharmony_ci if b.matchGpu("GTX", "Quadro") { 324cb93a386Sopenharmony_ci // See skia:7823 and chromium:693090. 325cb93a386Sopenharmony_ci configs = append(configs, "angle_gl_es3") 326cb93a386Sopenharmony_ci if sampleCount > 0 { 327cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_gl_es2_msaa%d", sampleCount)) 328cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_gl_es2_dmsaa")) 329cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_gl_es3_msaa%d", sampleCount)) 330cb93a386Sopenharmony_ci configs = append(configs, fmt.Sprintf("angle_gl_es3_dmsaa")) 331cb93a386Sopenharmony_ci } 332cb93a386Sopenharmony_ci } 333cb93a386Sopenharmony_ci if !b.matchGpu("GTX", "Quadro", "GT610") { 334cb93a386Sopenharmony_ci // See skia:10149 335cb93a386Sopenharmony_ci configs = append(configs, "angle_d3d9_es2") 336cb93a386Sopenharmony_ci } 337cb93a386Sopenharmony_ci if b.model("NUC5i7RYH") { 338cb93a386Sopenharmony_ci // skbug.com/7376 339cb93a386Sopenharmony_ci skip("_ test _ ProcessorCloneTest") 340cb93a386Sopenharmony_ci } 341cb93a386Sopenharmony_ci } 342cb93a386Sopenharmony_ci 343cb93a386Sopenharmony_ci if b.model("AndroidOne", "Nexus5", "Nexus7") { 344cb93a386Sopenharmony_ci // skbug.com/9019 345cb93a386Sopenharmony_ci skip("_ test _ ProcessorCloneTest") 346cb93a386Sopenharmony_ci skip("_ test _ Programs") 347cb93a386Sopenharmony_ci skip("_ test _ ProcessorOptimizationValidationTest") 348cb93a386Sopenharmony_ci } 349cb93a386Sopenharmony_ci 350cb93a386Sopenharmony_ci if b.model("GalaxyS20") { 351cb93a386Sopenharmony_ci // skbug.com/10595 352cb93a386Sopenharmony_ci skip("_ test _ ProcessorCloneTest") 353cb93a386Sopenharmony_ci } 354cb93a386Sopenharmony_ci 355cb93a386Sopenharmony_ci if b.extraConfig("CommandBuffer") && b.model("MacBook10.1") { 356cb93a386Sopenharmony_ci // skbug.com/9235 357cb93a386Sopenharmony_ci skip("_ test _ Programs") 358cb93a386Sopenharmony_ci } 359cb93a386Sopenharmony_ci 360cb93a386Sopenharmony_ci if b.model("Spin513") { 361cb93a386Sopenharmony_ci // skbug.com/11876 362cb93a386Sopenharmony_ci skip("_ test _ Programs") 363cb93a386Sopenharmony_ci // skbug.com/12486 364cb93a386Sopenharmony_ci skip("_ test _ TestMockContext") 365cb93a386Sopenharmony_ci skip("_ test _ TestGpuRenderingContexts") 366cb93a386Sopenharmony_ci skip("_ test _ TestGpuAllContexts") 367cb93a386Sopenharmony_ci skip("_ test _ OverdrawSurface_Gpu") 368cb93a386Sopenharmony_ci skip("_ test _ ReplaceSurfaceBackendTexture") 369cb93a386Sopenharmony_ci skip("_ test _ SurfaceAttachStencil_Gpu") 370cb93a386Sopenharmony_ci skip("_ test _ SurfaceWrappedWithRelease_Gpu") 371cb93a386Sopenharmony_ci } 372cb93a386Sopenharmony_ci 373cb93a386Sopenharmony_ci if b.extraConfig("CommandBuffer") { 374cb93a386Sopenharmony_ci // skbug.com/10412 375cb93a386Sopenharmony_ci skip("_ test _ GLBackendAllocationTest") 376cb93a386Sopenharmony_ci skip("_ test _ InitialTextureClear") 377cb93a386Sopenharmony_ci // skbug.com/12437 378cb93a386Sopenharmony_ci skip("_ test _ GrDDLImage_MakeSubset") 379cb93a386Sopenharmony_ci skip("_ test _ GrContext_oomed") 380cb93a386Sopenharmony_ci } 381cb93a386Sopenharmony_ci 382cb93a386Sopenharmony_ci // skbug.com/9043 - these devices render this test incorrectly 383cb93a386Sopenharmony_ci // when opList splitting reduction is enabled 384cb93a386Sopenharmony_ci if b.gpu() && b.extraConfig("Vulkan") && (b.gpu("RadeonR9M470X", "RadeonHD7770")) { 385cb93a386Sopenharmony_ci skip("_", "tests", "_", "VkDrawableImportTest") 386cb93a386Sopenharmony_ci } 387cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") { 388cb93a386Sopenharmony_ci configs = []string{"vk"} 389cb93a386Sopenharmony_ci // MSAA doesn't work well on Intel GPUs chromium:527565, chromium:983926, skia:9023 390cb93a386Sopenharmony_ci if !b.matchGpu("Intel") { 391cb93a386Sopenharmony_ci configs = append(configs, "vkmsaa4") 392cb93a386Sopenharmony_ci } 393cb93a386Sopenharmony_ci // Temporarily limit the bots we test dynamic MSAA on. 394cb93a386Sopenharmony_ci if b.gpu("QuadroP400", "MaliG77") && !b.extraConfig("TSAN") { 395cb93a386Sopenharmony_ci configs = append(configs, "vkdmsaa") 396cb93a386Sopenharmony_ci } 397cb93a386Sopenharmony_ci } 398cb93a386Sopenharmony_ci if b.extraConfig("Metal") { 399cb93a386Sopenharmony_ci configs = []string{"mtl"} 400cb93a386Sopenharmony_ci // MSAA doesn't work well on Intel GPUs chromium:527565, chromium:983926 401cb93a386Sopenharmony_ci if !b.matchGpu("Intel") { 402cb93a386Sopenharmony_ci configs = append(configs, "mtlmsaa4") 403cb93a386Sopenharmony_ci } 404cb93a386Sopenharmony_ci } 405cb93a386Sopenharmony_ci if b.extraConfig("Direct3D") { 406cb93a386Sopenharmony_ci configs = []string{"d3d"} 407cb93a386Sopenharmony_ci } 408cb93a386Sopenharmony_ci 409cb93a386Sopenharmony_ci // Test 1010102 on our Linux/NVIDIA bots and the persistent cache config 410cb93a386Sopenharmony_ci // on the GL bots. 411cb93a386Sopenharmony_ci if b.gpu("QuadroP400") && !b.extraConfig("PreAbandonGpuContext") && !b.extraConfig("TSAN") && b.isLinux() { 412cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") { 413cb93a386Sopenharmony_ci configs = append(configs, "vk1010102") 414cb93a386Sopenharmony_ci // Decoding transparent images to 1010102 just looks bad 415cb93a386Sopenharmony_ci skip("vk1010102 image _ _") 416cb93a386Sopenharmony_ci } else { 417cb93a386Sopenharmony_ci configs = append(configs, "gl1010102", "gltestpersistentcache", "gltestglslcache", "gltestprecompile") 418cb93a386Sopenharmony_ci // Decoding transparent images to 1010102 just looks bad 419cb93a386Sopenharmony_ci skip("gl1010102 image _ _") 420cb93a386Sopenharmony_ci // These tests produce slightly different pixels run to run on NV. 421cb93a386Sopenharmony_ci skip("gltestpersistentcache gm _ atlastext") 422cb93a386Sopenharmony_ci skip("gltestpersistentcache gm _ dftext") 423cb93a386Sopenharmony_ci skip("gltestpersistentcache gm _ glyph_pos_h_b") 424cb93a386Sopenharmony_ci skip("gltestpersistentcache gm _ glyph_pos_h_f") 425cb93a386Sopenharmony_ci skip("gltestpersistentcache gm _ glyph_pos_n_f") 426cb93a386Sopenharmony_ci skip("gltestglslcache gm _ atlastext") 427cb93a386Sopenharmony_ci skip("gltestglslcache gm _ dftext") 428cb93a386Sopenharmony_ci skip("gltestglslcache gm _ glyph_pos_h_b") 429cb93a386Sopenharmony_ci skip("gltestglslcache gm _ glyph_pos_h_f") 430cb93a386Sopenharmony_ci skip("gltestglslcache gm _ glyph_pos_n_f") 431cb93a386Sopenharmony_ci skip("gltestprecompile gm _ atlastext") 432cb93a386Sopenharmony_ci skip("gltestprecompile gm _ dftext") 433cb93a386Sopenharmony_ci skip("gltestprecompile gm _ glyph_pos_h_b") 434cb93a386Sopenharmony_ci skip("gltestprecompile gm _ glyph_pos_h_f") 435cb93a386Sopenharmony_ci skip("gltestprecompile gm _ glyph_pos_n_f") 436cb93a386Sopenharmony_ci // Tessellation shaders do not yet participate in the persistent cache. 437cb93a386Sopenharmony_ci skip("gltestpersistentcache gm _ tessellation") 438cb93a386Sopenharmony_ci skip("gltestglslcache gm _ tessellation") 439cb93a386Sopenharmony_ci skip("gltestprecompile gm _ tessellation") 440cb93a386Sopenharmony_ci } 441cb93a386Sopenharmony_ci } 442cb93a386Sopenharmony_ci 443cb93a386Sopenharmony_ci // We also test the SkSL precompile config on Pixel2XL as a representative 444cb93a386Sopenharmony_ci // Android device - this feature is primarily used by Flutter. 445cb93a386Sopenharmony_ci if b.model("Pixel2XL") && !b.extraConfig("Vulkan") { 446cb93a386Sopenharmony_ci configs = append(configs, "glestestprecompile") 447cb93a386Sopenharmony_ci } 448cb93a386Sopenharmony_ci 449cb93a386Sopenharmony_ci // Test SkSL precompile on iPhone 8 as representative iOS device 450cb93a386Sopenharmony_ci if b.model("iPhone8") && b.extraConfig("Metal") { 451cb93a386Sopenharmony_ci configs = append(configs, "mtltestprecompile") 452cb93a386Sopenharmony_ci // avoid tests that can generate slightly different pixels per run 453cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ atlastext") 454cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ circular_arcs_hairline") 455cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ dashcircle") 456cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ dftext") 457cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ fontmgr_bounds") 458cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ fontmgr_bounds_1_-0.25") 459cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ glyph_pos_h_b") 460cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ glyph_pos_h_f") 461cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ glyph_pos_n_f") 462cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ persp_images") 463cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ ovals") 464cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ roundrects") 465cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ shadow_utils_occl") 466cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ strokedlines") 467cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ strokerect") 468cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ strokes3") 469cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ texel_subset_linear_mipmap_nearest_down") 470cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ texel_subset_linear_mipmap_linear_down") 471cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ textblobmixedsizes_df") 472cb93a386Sopenharmony_ci skip("mtltestprecompile gm _ yuv420_odd_dim_repeat") 473cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ A_large_blank_world_map_with_oceans_marked_in_blue.svg") 474cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ Chalkboard.svg") 475cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ Ghostscript_Tiger.svg") 476cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ Seal_of_American_Samoa.svg") 477cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ Seal_of_Illinois.svg") 478cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ desk_motionmark_paths.svg") 479cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ rg1024_green_grapes.svg") 480cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ shapes-intro-02-f.svg") 481cb93a386Sopenharmony_ci skip("mtltestprecompile svg _ tiger-8.svg") 482cb93a386Sopenharmony_ci } 483cb93a386Sopenharmony_ci // Test reduced shader mode on iPhone 11 as representative iOS device 484cb93a386Sopenharmony_ci if b.model("iPhone11") && b.extraConfig("Metal") { 485cb93a386Sopenharmony_ci configs = append(configs, "mtlreducedshaders") 486cb93a386Sopenharmony_ci } 487cb93a386Sopenharmony_ci 488cb93a386Sopenharmony_ci if b.gpu("AppleM1") && !b.extraConfig("Metal") { 489cb93a386Sopenharmony_ci skip("_ test _ TransferPixelsFromTextureTest") // skia:11814 490cb93a386Sopenharmony_ci } 491cb93a386Sopenharmony_ci 492cb93a386Sopenharmony_ci if b.model(DONT_REDUCE_OPS_TASK_SPLITTING_MODELS...) { 493cb93a386Sopenharmony_ci args = append(args, "--dontReduceOpsTaskSplitting", "true") 494cb93a386Sopenharmony_ci } 495cb93a386Sopenharmony_ci 496cb93a386Sopenharmony_ci // Test reduceOpsTaskSplitting fallback when over budget. 497cb93a386Sopenharmony_ci if b.model("NUC7i5BNK") && b.extraConfig("ASAN") { 498cb93a386Sopenharmony_ci args = append(args, "--gpuResourceCacheLimit", "16777216") 499cb93a386Sopenharmony_ci } 500cb93a386Sopenharmony_ci 501cb93a386Sopenharmony_ci // Test rendering to wrapped dsts on a few bots 502cb93a386Sopenharmony_ci // Also test "narrow-glf16", which hits F16 surfaces and F16 vertex colors. 503cb93a386Sopenharmony_ci if b.extraConfig("BonusConfigs") { 504cb93a386Sopenharmony_ci configs = []string{"glbetex", "glbert", "narrow-glf16", "glreducedshaders"} 505cb93a386Sopenharmony_ci } 506cb93a386Sopenharmony_ci 507cb93a386Sopenharmony_ci if b.os("ChromeOS") { 508cb93a386Sopenharmony_ci // Just run GLES for now - maybe add gles_msaa4 in the future 509cb93a386Sopenharmony_ci configs = []string{"gles"} 510cb93a386Sopenharmony_ci } 511cb93a386Sopenharmony_ci 512cb93a386Sopenharmony_ci // Test GPU tessellation path renderer. 513cb93a386Sopenharmony_ci if b.extraConfig("GpuTess") { 514cb93a386Sopenharmony_ci configs = []string{glPrefix + "msaa4"} 515cb93a386Sopenharmony_ci // Use hardware tessellation as much as possible for testing. Use 16 segments max to 516cb93a386Sopenharmony_ci // verify the chopping logic. 517cb93a386Sopenharmony_ci args = append(args, 518cb93a386Sopenharmony_ci "--pr", "atlas", "tess", "--hwtess", "--alwaysHwTess", 519cb93a386Sopenharmony_ci "--maxTessellationSegments", "16") 520cb93a386Sopenharmony_ci } 521cb93a386Sopenharmony_ci 522cb93a386Sopenharmony_ci // DDL is a GPU-only feature 523cb93a386Sopenharmony_ci if b.extraConfig("DDL1") { 524cb93a386Sopenharmony_ci // This bot generates comparison images for the large skps and the gms 525cb93a386Sopenharmony_ci configs = filter(configs, "gl", "vk", "mtl") 526cb93a386Sopenharmony_ci args = append(args, "--skpViewportSize", "2048") 527cb93a386Sopenharmony_ci } 528cb93a386Sopenharmony_ci if b.extraConfig("DDL3") { 529cb93a386Sopenharmony_ci // This bot generates the real ddl images for the large skps and the gms 530cb93a386Sopenharmony_ci configs = suffix(filter(configs, "gl", "vk", "mtl"), "ddl") 531cb93a386Sopenharmony_ci args = append(args, "--skpViewportSize", "2048") 532cb93a386Sopenharmony_ci args = append(args, "--gpuThreads", "0") 533cb93a386Sopenharmony_ci } 534cb93a386Sopenharmony_ci if b.extraConfig("OOPRDDL") { 535cb93a386Sopenharmony_ci // This bot generates the real oopr/DDL images for the large skps and the GMs 536cb93a386Sopenharmony_ci configs = suffix(filter(configs, "gl", "vk", "mtl"), "ooprddl") 537cb93a386Sopenharmony_ci args = append(args, "--skpViewportSize", "2048") 538cb93a386Sopenharmony_ci args = append(args, "--gpuThreads", "0") 539cb93a386Sopenharmony_ci } 540cb93a386Sopenharmony_ci } 541cb93a386Sopenharmony_ci 542cb93a386Sopenharmony_ci // Sharding. 543cb93a386Sopenharmony_ci tf := b.parts["test_filter"] 544cb93a386Sopenharmony_ci if tf != "" && tf != "All" { 545cb93a386Sopenharmony_ci // Expected format: shard_XX_YY 546cb93a386Sopenharmony_ci split := strings.Split(tf, "_") 547cb93a386Sopenharmony_ci if len(split) == 3 { 548cb93a386Sopenharmony_ci args = append(args, "--shard", split[1]) 549cb93a386Sopenharmony_ci args = append(args, "--shards", split[2]) 550cb93a386Sopenharmony_ci } else { 551cb93a386Sopenharmony_ci glog.Fatalf("Invalid task name - bad shards: %s", tf) 552cb93a386Sopenharmony_ci } 553cb93a386Sopenharmony_ci } 554cb93a386Sopenharmony_ci 555cb93a386Sopenharmony_ci args = append(args, "--config") 556cb93a386Sopenharmony_ci args = append(args, configs...) 557cb93a386Sopenharmony_ci 558cb93a386Sopenharmony_ci removeFromArgs := func(arg string) { 559cb93a386Sopenharmony_ci args = remove(args, arg) 560cb93a386Sopenharmony_ci } 561cb93a386Sopenharmony_ci 562cb93a386Sopenharmony_ci // Run tests, gms, and image decoding tests everywhere. 563cb93a386Sopenharmony_ci args = append(args, "--src", "tests", "gm", "image", "lottie", "colorImage", "svg", "skp") 564cb93a386Sopenharmony_ci if b.gpu() { 565cb93a386Sopenharmony_ci // Don't run the "svgparse_*" svgs on GPU. 566cb93a386Sopenharmony_ci skip("_ svg _ svgparse_") 567cb93a386Sopenharmony_ci } else if b.Name == "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN" { 568cb93a386Sopenharmony_ci // Only run the CPU SVGs on 8888. 569cb93a386Sopenharmony_ci skip("~8888 svg _ _") 570cb93a386Sopenharmony_ci } else { 571cb93a386Sopenharmony_ci // On CPU SVGs we only care about parsing. Only run them on the above bot. 572cb93a386Sopenharmony_ci removeFromArgs("svg") 573cb93a386Sopenharmony_ci } 574cb93a386Sopenharmony_ci 575cb93a386Sopenharmony_ci // Eventually I'd like these to pass, but for now just skip 'em. 576cb93a386Sopenharmony_ci if b.extraConfig("SK_FORCE_RASTER_PIPELINE_BLITTER") { 577cb93a386Sopenharmony_ci removeFromArgs("tests") 578cb93a386Sopenharmony_ci } 579cb93a386Sopenharmony_ci 580cb93a386Sopenharmony_ci if b.extraConfig("NativeFonts") { // images won't exercise native font integration :) 581cb93a386Sopenharmony_ci removeFromArgs("image") 582cb93a386Sopenharmony_ci removeFromArgs("colorImage") 583cb93a386Sopenharmony_ci } 584cb93a386Sopenharmony_ci 585cb93a386Sopenharmony_ci if b.matchExtraConfig("Graphite") { 586cb93a386Sopenharmony_ci // The Graphite bots run the skps, gms and tests 587cb93a386Sopenharmony_ci removeFromArgs("image") 588cb93a386Sopenharmony_ci removeFromArgs("colorImage") 589cb93a386Sopenharmony_ci removeFromArgs("svg") 590cb93a386Sopenharmony_ci } else if b.matchExtraConfig("DDL", "PDF") { 591cb93a386Sopenharmony_ci // The DDL and PDF bots just render the large skps and the gms 592cb93a386Sopenharmony_ci removeFromArgs("tests") 593cb93a386Sopenharmony_ci removeFromArgs("image") 594cb93a386Sopenharmony_ci removeFromArgs("colorImage") 595cb93a386Sopenharmony_ci removeFromArgs("svg") 596cb93a386Sopenharmony_ci } else { 597cb93a386Sopenharmony_ci // No other bots render the .skps. 598cb93a386Sopenharmony_ci removeFromArgs("skp") 599cb93a386Sopenharmony_ci } 600cb93a386Sopenharmony_ci 601cb93a386Sopenharmony_ci if b.extraConfig("Lottie") { 602cb93a386Sopenharmony_ci // Only run the lotties on Lottie bots. 603cb93a386Sopenharmony_ci removeFromArgs("tests") 604cb93a386Sopenharmony_ci removeFromArgs("gm") 605cb93a386Sopenharmony_ci removeFromArgs("image") 606cb93a386Sopenharmony_ci removeFromArgs("colorImage") 607cb93a386Sopenharmony_ci removeFromArgs("svg") 608cb93a386Sopenharmony_ci removeFromArgs("skp") 609cb93a386Sopenharmony_ci } else { 610cb93a386Sopenharmony_ci removeFromArgs("lottie") 611cb93a386Sopenharmony_ci } 612cb93a386Sopenharmony_ci 613cb93a386Sopenharmony_ci if b.extraConfig("TSAN") { 614cb93a386Sopenharmony_ci // skbug.com/10848 615cb93a386Sopenharmony_ci removeFromArgs("svg") 616cb93a386Sopenharmony_ci } 617cb93a386Sopenharmony_ci 618cb93a386Sopenharmony_ci // TODO: ??? 619cb93a386Sopenharmony_ci skip("f16 _ _ dstreadshuffle") 620cb93a386Sopenharmony_ci skip("srgb-gl image _ _") 621cb93a386Sopenharmony_ci skip("srgb-gles image _ _") 622cb93a386Sopenharmony_ci 623cb93a386Sopenharmony_ci // --src image --config g8 means "decode into Gray8", which isn't supported. 624cb93a386Sopenharmony_ci skip("g8 image _ _") 625cb93a386Sopenharmony_ci skip("g8 colorImage _ _") 626cb93a386Sopenharmony_ci 627cb93a386Sopenharmony_ci if b.extraConfig("Valgrind") { 628cb93a386Sopenharmony_ci // These take 18+ hours to run. 629cb93a386Sopenharmony_ci skip("pdf gm _ fontmgr_iter") 630cb93a386Sopenharmony_ci skip("pdf _ _ PANO_20121023_214540.jpg") 631cb93a386Sopenharmony_ci skip("pdf skp _ worldjournal") 632cb93a386Sopenharmony_ci skip("pdf skp _ desk_baidu.skp") 633cb93a386Sopenharmony_ci skip("pdf skp _ desk_wikipedia.skp") 634cb93a386Sopenharmony_ci skip("_ svg _ _") 635cb93a386Sopenharmony_ci // skbug.com/9171 and 8847 636cb93a386Sopenharmony_ci skip("_ test _ InitialTextureClear") 637cb93a386Sopenharmony_ci } 638cb93a386Sopenharmony_ci 639cb93a386Sopenharmony_ci if b.model("Pixel3") { 640cb93a386Sopenharmony_ci // skbug.com/10546 641cb93a386Sopenharmony_ci skip("vkddl gm _ compressed_textures_nmof") 642cb93a386Sopenharmony_ci skip("vkddl gm _ compressed_textures_npot") 643cb93a386Sopenharmony_ci skip("vkddl gm _ compressed_textures") 644cb93a386Sopenharmony_ci } 645cb93a386Sopenharmony_ci 646cb93a386Sopenharmony_ci if b.model("TecnoSpark3Pro", "Wembley") { 647cb93a386Sopenharmony_ci // skbug.com/9421 648cb93a386Sopenharmony_ci skip("_ test _ InitialTextureClear") 649cb93a386Sopenharmony_ci } 650cb93a386Sopenharmony_ci 651cb93a386Sopenharmony_ci if b.model("Wembley") { 652cb93a386Sopenharmony_ci // These tests run forever on the Wembley. 653cb93a386Sopenharmony_ci skip("_ gm _ async_rescale_and_read") 654cb93a386Sopenharmony_ci } 655cb93a386Sopenharmony_ci 656cb93a386Sopenharmony_ci if b.os("iOS") { 657cb93a386Sopenharmony_ci skip(glPrefix + " skp _ _") 658cb93a386Sopenharmony_ci } 659cb93a386Sopenharmony_ci 660cb93a386Sopenharmony_ci if b.matchOs("Mac", "iOS") { 661cb93a386Sopenharmony_ci // CG fails on questionable bmps 662cb93a386Sopenharmony_ci skip("_ image gen_platf rgba32abf.bmp") 663cb93a386Sopenharmony_ci skip("_ image gen_platf rgb24prof.bmp") 664cb93a386Sopenharmony_ci skip("_ image gen_platf rgb24lprof.bmp") 665cb93a386Sopenharmony_ci skip("_ image gen_platf 8bpp-pixeldata-cropped.bmp") 666cb93a386Sopenharmony_ci skip("_ image gen_platf 4bpp-pixeldata-cropped.bmp") 667cb93a386Sopenharmony_ci skip("_ image gen_platf 32bpp-pixeldata-cropped.bmp") 668cb93a386Sopenharmony_ci skip("_ image gen_platf 24bpp-pixeldata-cropped.bmp") 669cb93a386Sopenharmony_ci 670cb93a386Sopenharmony_ci // CG has unpredictable behavior on this questionable gif 671cb93a386Sopenharmony_ci // It's probably using uninitialized memory 672cb93a386Sopenharmony_ci skip("_ image gen_platf frame_larger_than_image.gif") 673cb93a386Sopenharmony_ci 674cb93a386Sopenharmony_ci // CG has unpredictable behavior on incomplete pngs 675cb93a386Sopenharmony_ci // skbug.com/5774 676cb93a386Sopenharmony_ci skip("_ image gen_platf inc0.png") 677cb93a386Sopenharmony_ci skip("_ image gen_platf inc1.png") 678cb93a386Sopenharmony_ci skip("_ image gen_platf inc2.png") 679cb93a386Sopenharmony_ci skip("_ image gen_platf inc3.png") 680cb93a386Sopenharmony_ci skip("_ image gen_platf inc4.png") 681cb93a386Sopenharmony_ci skip("_ image gen_platf inc5.png") 682cb93a386Sopenharmony_ci skip("_ image gen_platf inc6.png") 683cb93a386Sopenharmony_ci skip("_ image gen_platf inc7.png") 684cb93a386Sopenharmony_ci skip("_ image gen_platf inc8.png") 685cb93a386Sopenharmony_ci skip("_ image gen_platf inc9.png") 686cb93a386Sopenharmony_ci skip("_ image gen_platf inc10.png") 687cb93a386Sopenharmony_ci skip("_ image gen_platf inc11.png") 688cb93a386Sopenharmony_ci skip("_ image gen_platf inc12.png") 689cb93a386Sopenharmony_ci skip("_ image gen_platf inc13.png") 690cb93a386Sopenharmony_ci skip("_ image gen_platf inc14.png") 691cb93a386Sopenharmony_ci skip("_ image gen_platf incInterlaced.png") 692cb93a386Sopenharmony_ci 693cb93a386Sopenharmony_ci // These images fail after Mac 10.13.1 upgrade. 694cb93a386Sopenharmony_ci skip("_ image gen_platf incInterlaced.gif") 695cb93a386Sopenharmony_ci skip("_ image gen_platf inc1.gif") 696cb93a386Sopenharmony_ci skip("_ image gen_platf inc0.gif") 697cb93a386Sopenharmony_ci skip("_ image gen_platf butterfly.gif") 698cb93a386Sopenharmony_ci } 699cb93a386Sopenharmony_ci 700cb93a386Sopenharmony_ci // WIC fails on questionable bmps 701cb93a386Sopenharmony_ci if b.matchOs("Win") { 702cb93a386Sopenharmony_ci skip("_ image gen_platf pal8os2v2.bmp") 703cb93a386Sopenharmony_ci skip("_ image gen_platf pal8os2v2-16.bmp") 704cb93a386Sopenharmony_ci skip("_ image gen_platf rgba32abf.bmp") 705cb93a386Sopenharmony_ci skip("_ image gen_platf rgb24prof.bmp") 706cb93a386Sopenharmony_ci skip("_ image gen_platf rgb24lprof.bmp") 707cb93a386Sopenharmony_ci skip("_ image gen_platf 8bpp-pixeldata-cropped.bmp") 708cb93a386Sopenharmony_ci skip("_ image gen_platf 4bpp-pixeldata-cropped.bmp") 709cb93a386Sopenharmony_ci skip("_ image gen_platf 32bpp-pixeldata-cropped.bmp") 710cb93a386Sopenharmony_ci skip("_ image gen_platf 24bpp-pixeldata-cropped.bmp") 711cb93a386Sopenharmony_ci if b.arch("x86_64") && b.cpu() { 712cb93a386Sopenharmony_ci // This GM triggers a SkSmallAllocator assert. 713cb93a386Sopenharmony_ci skip("_ gm _ composeshader_bitmap") 714cb93a386Sopenharmony_ci } 715cb93a386Sopenharmony_ci } 716cb93a386Sopenharmony_ci 717cb93a386Sopenharmony_ci if b.matchOs("Win", "Mac") { 718cb93a386Sopenharmony_ci // WIC and CG fail on arithmetic jpegs 719cb93a386Sopenharmony_ci skip("_ image gen_platf testimgari.jpg") 720cb93a386Sopenharmony_ci // More questionable bmps that fail on Mac, too. skbug.com/6984 721cb93a386Sopenharmony_ci skip("_ image gen_platf rle8-height-negative.bmp") 722cb93a386Sopenharmony_ci skip("_ image gen_platf rle4-height-negative.bmp") 723cb93a386Sopenharmony_ci } 724cb93a386Sopenharmony_ci 725cb93a386Sopenharmony_ci // These PNGs have CRC errors. The platform generators seem to draw 726cb93a386Sopenharmony_ci // uninitialized memory without reporting an error, so skip them to 727cb93a386Sopenharmony_ci // avoid lots of images on Gold. 728cb93a386Sopenharmony_ci skip("_ image gen_platf error") 729cb93a386Sopenharmony_ci 730cb93a386Sopenharmony_ci if b.os("Android", "iOS") { 731cb93a386Sopenharmony_ci // This test crashes the N9 (perhaps because of large malloc/frees). It also 732cb93a386Sopenharmony_ci // is fairly slow and not platform-specific. So we just disable it on all of 733cb93a386Sopenharmony_ci // Android and iOS. skia:5438 734cb93a386Sopenharmony_ci skip("_ test _ GrStyledShape") 735cb93a386Sopenharmony_ci } 736cb93a386Sopenharmony_ci 737cb93a386Sopenharmony_ci if internalHardwareLabel == "5" { 738cb93a386Sopenharmony_ci // http://b/118312149#comment9 739cb93a386Sopenharmony_ci skip("_ test _ SRGBReadWritePixels") 740cb93a386Sopenharmony_ci } 741cb93a386Sopenharmony_ci 742cb93a386Sopenharmony_ci // skia:4095 743cb93a386Sopenharmony_ci badSerializeGMs := []string{ 744cb93a386Sopenharmony_ci "strict_constraint_batch_no_red_allowed", // https://crbug.com/skia/10278 745cb93a386Sopenharmony_ci "strict_constraint_no_red_allowed", // https://crbug.com/skia/10278 746cb93a386Sopenharmony_ci "fast_constraint_red_is_allowed", // https://crbug.com/skia/10278 747cb93a386Sopenharmony_ci "c_gms", 748cb93a386Sopenharmony_ci "colortype", 749cb93a386Sopenharmony_ci "colortype_xfermodes", 750cb93a386Sopenharmony_ci "drawfilter", 751cb93a386Sopenharmony_ci "fontmgr_bounds_0.75_0", 752cb93a386Sopenharmony_ci "fontmgr_bounds_1_-0.25", 753cb93a386Sopenharmony_ci "fontmgr_bounds", 754cb93a386Sopenharmony_ci "fontmgr_match", 755cb93a386Sopenharmony_ci "fontmgr_iter", 756cb93a386Sopenharmony_ci "imagemasksubset", 757cb93a386Sopenharmony_ci "wacky_yuv_formats_domain", 758cb93a386Sopenharmony_ci "imagemakewithfilter", 759cb93a386Sopenharmony_ci "imagemakewithfilter_crop", 760cb93a386Sopenharmony_ci "imagemakewithfilter_crop_ref", 761cb93a386Sopenharmony_ci "imagemakewithfilter_ref", 762cb93a386Sopenharmony_ci } 763cb93a386Sopenharmony_ci 764cb93a386Sopenharmony_ci // skia:5589 765cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, 766cb93a386Sopenharmony_ci "bitmapfilters", 767cb93a386Sopenharmony_ci "bitmapshaders", 768cb93a386Sopenharmony_ci "convex_poly_clip", 769cb93a386Sopenharmony_ci "extractalpha", 770cb93a386Sopenharmony_ci "filterbitmap_checkerboard_32_32_g8", 771cb93a386Sopenharmony_ci "filterbitmap_image_mandrill_64", 772cb93a386Sopenharmony_ci "shadows", 773cb93a386Sopenharmony_ci "simpleaaclip_aaclip", 774cb93a386Sopenharmony_ci ) 775cb93a386Sopenharmony_ci 776cb93a386Sopenharmony_ci // skia:5595 777cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, 778cb93a386Sopenharmony_ci "composeshader_bitmap", 779cb93a386Sopenharmony_ci "scaled_tilemodes_npot", 780cb93a386Sopenharmony_ci "scaled_tilemodes", 781cb93a386Sopenharmony_ci ) 782cb93a386Sopenharmony_ci 783cb93a386Sopenharmony_ci // skia:5778 784cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "typefacerendering_pfaMac") 785cb93a386Sopenharmony_ci // skia:5942 786cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "parsedpaths") 787cb93a386Sopenharmony_ci 788cb93a386Sopenharmony_ci // these use a custom image generator which doesn't serialize 789cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "ImageGeneratorExternal_rect") 790cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "ImageGeneratorExternal_shader") 791cb93a386Sopenharmony_ci 792cb93a386Sopenharmony_ci // skia:6189 793cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "shadow_utils") 794cb93a386Sopenharmony_ci 795cb93a386Sopenharmony_ci // skia:7938 796cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "persp_images") 797cb93a386Sopenharmony_ci 798cb93a386Sopenharmony_ci // Not expected to round trip encoding/decoding. 799cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "all_bitmap_configs") 800cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "makecolorspace") 801cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "readpixels") 802cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "draw_image_set_rect_to_rect") 803cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "draw_image_set_alpha_only") 804cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "compositor_quads_shader") 805cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "wacky_yuv_formats_qtr") 806cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "runtime_effect_image") 807cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "ctmpatheffect") 808cb93a386Sopenharmony_ci 809cb93a386Sopenharmony_ci // This GM forces a path to be convex. That property doesn't survive 810cb93a386Sopenharmony_ci // serialization. 811cb93a386Sopenharmony_ci badSerializeGMs = append(badSerializeGMs, "analytic_antialias_convex") 812cb93a386Sopenharmony_ci 813cb93a386Sopenharmony_ci for _, test := range badSerializeGMs { 814cb93a386Sopenharmony_ci skip("serialize-8888", "gm", "_", test) 815cb93a386Sopenharmony_ci } 816cb93a386Sopenharmony_ci 817cb93a386Sopenharmony_ci // We skip these to avoid out-of-memory failures. 818cb93a386Sopenharmony_ci if b.matchOs("Win", "Android") { 819cb93a386Sopenharmony_ci for _, test := range []string{"verylargebitmap", "verylarge_picture_image"} { 820cb93a386Sopenharmony_ci skip("serialize-8888", "gm", "_", test) 821cb93a386Sopenharmony_ci } 822cb93a386Sopenharmony_ci } 823cb93a386Sopenharmony_ci if b.model("iPhone6") { 824cb93a386Sopenharmony_ci skip("_", "gm", "_", "verylargebitmap") 825cb93a386Sopenharmony_ci skip("_", "gm", "_", "verylarge_picture_image") 826cb93a386Sopenharmony_ci skip("_", "svg", "_", "A_large_blank_world_map_with_oceans_marked_in_blue.svg") 827cb93a386Sopenharmony_ci skip("_", "tests", "_", "ImageFilterBlurLargeImage_Gpu") 828cb93a386Sopenharmony_ci } 829cb93a386Sopenharmony_ci if b.matchOs("Mac") && b.cpu() { 830cb93a386Sopenharmony_ci // skia:6992 831cb93a386Sopenharmony_ci skip("pic-8888", "gm", "_", "encode-platform") 832cb93a386Sopenharmony_ci skip("serialize-8888", "gm", "_", "encode-platform") 833cb93a386Sopenharmony_ci } 834cb93a386Sopenharmony_ci 835cb93a386Sopenharmony_ci // skia:4769 836cb93a386Sopenharmony_ci skip("pic-8888", "gm", "_", "drawfilter") 837cb93a386Sopenharmony_ci 838cb93a386Sopenharmony_ci // skia:4703 839cb93a386Sopenharmony_ci for _, test := range []string{"image-cacherator-from-picture", 840cb93a386Sopenharmony_ci "image-cacherator-from-raster", 841cb93a386Sopenharmony_ci "image-cacherator-from-ctable"} { 842cb93a386Sopenharmony_ci skip("pic-8888", "gm", "_", test) 843cb93a386Sopenharmony_ci skip("serialize-8888", "gm", "_", test) 844cb93a386Sopenharmony_ci } 845cb93a386Sopenharmony_ci 846cb93a386Sopenharmony_ci // GM that requires raster-backed canvas 847cb93a386Sopenharmony_ci for _, test := range []string{"complexclip4_bw", "complexclip4_aa", "p3", 848cb93a386Sopenharmony_ci "async_rescale_and_read_text_up_large", 849cb93a386Sopenharmony_ci "async_rescale_and_read_text_up", 850cb93a386Sopenharmony_ci "async_rescale_and_read_text_down", 851cb93a386Sopenharmony_ci "async_rescale_and_read_dog_up", 852cb93a386Sopenharmony_ci "async_rescale_and_read_dog_down", 853cb93a386Sopenharmony_ci "async_rescale_and_read_rose", 854cb93a386Sopenharmony_ci "async_rescale_and_read_no_bleed", 855cb93a386Sopenharmony_ci "async_rescale_and_read_alpha_type"} { 856cb93a386Sopenharmony_ci skip("pic-8888", "gm", "_", test) 857cb93a386Sopenharmony_ci skip("serialize-8888", "gm", "_", test) 858cb93a386Sopenharmony_ci 859cb93a386Sopenharmony_ci // GM requires canvas->makeSurface() to return a valid surface. 860cb93a386Sopenharmony_ci // TODO(borenet): These should be just outside of this block but are 861cb93a386Sopenharmony_ci // left here to match the recipe which has an indentation bug. 862cb93a386Sopenharmony_ci skip("pic-8888", "gm", "_", "blurrect_compare") 863cb93a386Sopenharmony_ci skip("serialize-8888", "gm", "_", "blurrect_compare") 864cb93a386Sopenharmony_ci } 865cb93a386Sopenharmony_ci 866cb93a386Sopenharmony_ci // Extensions for RAW images 867cb93a386Sopenharmony_ci r := []string{ 868cb93a386Sopenharmony_ci "arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw", 869cb93a386Sopenharmony_ci "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW", 870cb93a386Sopenharmony_ci } 871cb93a386Sopenharmony_ci 872cb93a386Sopenharmony_ci // skbug.com/4888 873cb93a386Sopenharmony_ci // Skip RAW images (and a few large PNGs) on GPU bots 874cb93a386Sopenharmony_ci // until we can resolve failures. 875cb93a386Sopenharmony_ci if b.gpu() { 876cb93a386Sopenharmony_ci skip("_ image _ interlaced1.png") 877cb93a386Sopenharmony_ci skip("_ image _ interlaced2.png") 878cb93a386Sopenharmony_ci skip("_ image _ interlaced3.png") 879cb93a386Sopenharmony_ci for _, rawExt := range r { 880cb93a386Sopenharmony_ci skip(fmt.Sprintf("_ image _ .%s", rawExt)) 881cb93a386Sopenharmony_ci } 882cb93a386Sopenharmony_ci } 883cb93a386Sopenharmony_ci 884cb93a386Sopenharmony_ci // Skip memory intensive tests on 32-bit bots. 885cb93a386Sopenharmony_ci if b.os("Win8") && b.arch("x86") { 886cb93a386Sopenharmony_ci skip("_ image f16 _") 887cb93a386Sopenharmony_ci skip("_ image _ abnormal.wbmp") 888cb93a386Sopenharmony_ci skip("_ image _ interlaced1.png") 889cb93a386Sopenharmony_ci skip("_ image _ interlaced2.png") 890cb93a386Sopenharmony_ci skip("_ image _ interlaced3.png") 891cb93a386Sopenharmony_ci for _, rawExt := range r { 892cb93a386Sopenharmony_ci skip(fmt.Sprintf("_ image _ .%s", rawExt)) 893cb93a386Sopenharmony_ci } 894cb93a386Sopenharmony_ci } 895cb93a386Sopenharmony_ci 896cb93a386Sopenharmony_ci if b.model("Nexus5", "Nexus5x") && b.gpu() { 897cb93a386Sopenharmony_ci // skia:5876 898cb93a386Sopenharmony_ci skip("_", "gm", "_", "encode-platform") 899cb93a386Sopenharmony_ci } 900cb93a386Sopenharmony_ci 901cb93a386Sopenharmony_ci if b.model("AndroidOne") && b.gpu() { // skia:4697, skia:4704, skia:4694, skia:4705, skia:11133 902cb93a386Sopenharmony_ci skip("_", "gm", "_", "bigblurs") 903cb93a386Sopenharmony_ci skip("_", "gm", "_", "strict_constraint_no_red_allowed") 904cb93a386Sopenharmony_ci skip("_", "gm", "_", "fast_constraint_red_is_allowed") 905cb93a386Sopenharmony_ci skip("_", "gm", "_", "dropshadowimagefilter") 906cb93a386Sopenharmony_ci skip("_", "gm", "_", "filterfastbounds") 907cb93a386Sopenharmony_ci skip(glPrefix, "gm", "_", "imageblurtiled") 908cb93a386Sopenharmony_ci skip("_", "gm", "_", "imagefiltersclipped") 909cb93a386Sopenharmony_ci skip("_", "gm", "_", "imagefiltersscaled") 910cb93a386Sopenharmony_ci skip("_", "gm", "_", "imageresizetiled") 911cb93a386Sopenharmony_ci skip("_", "gm", "_", "matrixconvolution") 912cb93a386Sopenharmony_ci skip("_", "gm", "_", "strokedlines") 913cb93a386Sopenharmony_ci skip("_", "gm", "_", "runtime_intrinsics_matrix") 914cb93a386Sopenharmony_ci if sampleCount > 0 { 915cb93a386Sopenharmony_ci glMsaaConfig := fmt.Sprintf("%smsaa%d", glPrefix, sampleCount) 916cb93a386Sopenharmony_ci skip(glMsaaConfig, "gm", "_", "imageblurtiled") 917cb93a386Sopenharmony_ci skip(glMsaaConfig, "gm", "_", "imagefiltersbase") 918cb93a386Sopenharmony_ci } 919cb93a386Sopenharmony_ci } 920cb93a386Sopenharmony_ci 921cb93a386Sopenharmony_ci if b.matchGpu("Adreno[3456]") { // disable broken tests on Adreno 3/4/5/6xx 922cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLArrayCast_GPU") // skia:12332 923cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLArrayComparison_GPU") // skia:12332 924cb93a386Sopenharmony_ci } 925cb93a386Sopenharmony_ci 926cb93a386Sopenharmony_ci if b.matchGpu("Adreno[345]") && !b.extraConfig("Vulkan") { // disable broken tests on Adreno 3/4/5xx GLSL 927cb93a386Sopenharmony_ci skip("_", "tests", "_", "DSLFPTest_SwitchStatement") // skia:11891 928cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLMatrixToVectorCast_GPU") // skia:12192 929cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLStructsInFunctions_GPU") // skia:11929 930cb93a386Sopenharmony_ci } 931cb93a386Sopenharmony_ci 932cb93a386Sopenharmony_ci if b.matchGpu("Adreno6") && !b.extraConfig("Vulkan") { // disable broken tests on Adreno 6xx GLSL 933cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLIntrinsicIsInf_GPU") // skia:12377 934cb93a386Sopenharmony_ci } 935cb93a386Sopenharmony_ci 936cb93a386Sopenharmony_ci if (b.matchGpu("Adreno3") || b.matchGpu("Mali400")) && !b.extraConfig("Vulkan") { 937cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLMatrices") // skia:12456 938cb93a386Sopenharmony_ci } 939cb93a386Sopenharmony_ci 940cb93a386Sopenharmony_ci if b.gpu("IntelIris6100", "IntelHD4400") && b.matchOs("Win") && !b.extraConfig("Vulkan") { 941cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLVectorToMatrixCast_GPU") // skia:12179 942cb93a386Sopenharmony_ci } 943cb93a386Sopenharmony_ci 944cb93a386Sopenharmony_ci if b.matchGpu("Intel") && b.matchOs("Win") && !b.extraConfig("Vulkan") { 945cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLReturnsValueOnEveryPathES3_GPU") // skia:12465 946cb93a386Sopenharmony_ci } 947cb93a386Sopenharmony_ci 948cb93a386Sopenharmony_ci if (b.extraConfig("Vulkan") && b.isLinux() && b.matchGpu("Intel")) || 949cb93a386Sopenharmony_ci (b.extraConfig("ANGLE") && b.matchOs("Win") && b.matchGpu("IntelIris(540|655)")) { 950cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLSwitchDefaultOnly_GPU") // skia:12465 951cb93a386Sopenharmony_ci } 952cb93a386Sopenharmony_ci 953cb93a386Sopenharmony_ci if b.gpu("Tegra3") { 954cb93a386Sopenharmony_ci // Tegra3 fails to compile break stmts inside a for loop (skia:12477) 955cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLSwitch_GPU") 956cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLSwitchDefaultOnly_GPU") 957cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLSwitchWithFallthrough_GPU") 958cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLSwitchWithLoops_GPU") 959cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLLoopFloat_GPU") 960cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLLoopInt_GPU") 961cb93a386Sopenharmony_ci } 962cb93a386Sopenharmony_ci 963cb93a386Sopenharmony_ci if !b.extraConfig("Vulkan") && 964cb93a386Sopenharmony_ci (b.gpu("QuadroP400") || b.gpu("GTX660") || b.gpu("GTX960") || b.gpu("Tegra3")) { 965cb93a386Sopenharmony_ci // Various Nvidia GPUs crash or generate errors when assembling weird matrices (skia:12443) 966cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLMatrixConstructorsES2_GPU") 967cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLMatrixConstructorsES3_GPU") 968cb93a386Sopenharmony_ci } 969cb93a386Sopenharmony_ci 970cb93a386Sopenharmony_ci if !b.extraConfig("Vulkan") && (b.gpu("RadeonR9M470X") || b.gpu("RadeonHD7770")) { 971cb93a386Sopenharmony_ci // Some AMD GPUs can get the wrong result when assembling non-square matrices (skia:12443) 972cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLMatrixConstructorsES3_GPU") 973cb93a386Sopenharmony_ci } 974cb93a386Sopenharmony_ci 975cb93a386Sopenharmony_ci if b.matchGpu("Intel") { // some Intel GPUs don't return zero for the derivative of a uniform 976cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLIntrinsicDFdy_GPU") 977cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLIntrinsicDFdx_GPU") 978cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLIntrinsicFwidth_GPU") 979cb93a386Sopenharmony_ci } 980cb93a386Sopenharmony_ci 981cb93a386Sopenharmony_ci if b.matchOs("Mac") && b.matchGpu("Intel(Iris5100|HD6000)") { 982cb93a386Sopenharmony_ci skip("_", "tests", "_", "SkSLLoopFloat_GPU") // skia:12426 983cb93a386Sopenharmony_ci } 984cb93a386Sopenharmony_ci 985cb93a386Sopenharmony_ci match := []string{} 986cb93a386Sopenharmony_ci if b.extraConfig("Valgrind") { // skia:3021 987cb93a386Sopenharmony_ci match = append(match, "~Threaded") 988cb93a386Sopenharmony_ci } 989cb93a386Sopenharmony_ci 990cb93a386Sopenharmony_ci if b.extraConfig("Valgrind") && b.extraConfig("PreAbandonGpuContext") { 991cb93a386Sopenharmony_ci // skia:6575 992cb93a386Sopenharmony_ci match = append(match, "~multipicturedraw_") 993cb93a386Sopenharmony_ci } 994cb93a386Sopenharmony_ci 995cb93a386Sopenharmony_ci if b.model("AndroidOne") { 996cb93a386Sopenharmony_ci match = append(match, "~WritePixels") // skia:4711 997cb93a386Sopenharmony_ci match = append(match, "~PremulAlphaRoundTrip_Gpu") // skia:7501 998cb93a386Sopenharmony_ci match = append(match, "~ReimportImageTextureWithMipLevels") // skia:8090 999cb93a386Sopenharmony_ci match = append(match, "~MorphologyFilterRadiusWithMirrorCTM_Gpu") // skia:10383 1000cb93a386Sopenharmony_ci } 1001cb93a386Sopenharmony_ci 1002cb93a386Sopenharmony_ci if b.extraConfig("MSAN") { 1003cb93a386Sopenharmony_ci match = append(match, "~Once", "~Shared") // Not sure what's up with these tests. 1004cb93a386Sopenharmony_ci } 1005cb93a386Sopenharmony_ci 1006cb93a386Sopenharmony_ci // By default, we test with GPU threading enabled, unless specifically 1007cb93a386Sopenharmony_ci // disabled. 1008cb93a386Sopenharmony_ci if b.extraConfig("NoGPUThreads") { 1009cb93a386Sopenharmony_ci args = append(args, "--gpuThreads", "0") 1010cb93a386Sopenharmony_ci } 1011cb93a386Sopenharmony_ci 1012cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") && b.gpu("Adreno530") { 1013cb93a386Sopenharmony_ci // skia:5777 1014cb93a386Sopenharmony_ci match = append(match, "~CopySurface") 1015cb93a386Sopenharmony_ci } 1016cb93a386Sopenharmony_ci 1017cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") && b.matchGpu("Adreno") { 1018cb93a386Sopenharmony_ci // skia:7663 1019cb93a386Sopenharmony_ci match = append(match, "~WritePixelsNonTextureMSAA_Gpu") 1020cb93a386Sopenharmony_ci match = append(match, "~WritePixelsMSAA_Gpu") 1021cb93a386Sopenharmony_ci } 1022cb93a386Sopenharmony_ci 1023cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") && b.isLinux() && b.gpu("IntelIris640") { 1024cb93a386Sopenharmony_ci match = append(match, "~VkHeapTests") // skia:6245 1025cb93a386Sopenharmony_ci } 1026cb93a386Sopenharmony_ci 1027cb93a386Sopenharmony_ci if b.isLinux() && b.gpu("IntelIris640") { 1028cb93a386Sopenharmony_ci match = append(match, "~Programs") // skia:7849 1029cb93a386Sopenharmony_ci } 1030cb93a386Sopenharmony_ci 1031cb93a386Sopenharmony_ci if b.model("TecnoSpark3Pro", "Wembley") { 1032cb93a386Sopenharmony_ci // skia:9814 1033cb93a386Sopenharmony_ci match = append(match, "~Programs") 1034cb93a386Sopenharmony_ci match = append(match, "~ProcessorCloneTest") 1035cb93a386Sopenharmony_ci match = append(match, "~ProcessorOptimizationValidationTest") 1036cb93a386Sopenharmony_ci } 1037cb93a386Sopenharmony_ci 1038cb93a386Sopenharmony_ci if b.gpu("IntelIris640", "IntelHD615", "IntelHDGraphics615") { 1039cb93a386Sopenharmony_ci match = append(match, "~^SRGBReadWritePixels$") // skia:9225 1040cb93a386Sopenharmony_ci } 1041cb93a386Sopenharmony_ci 1042cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") && b.isLinux() && b.gpu("IntelHD405") { 1043cb93a386Sopenharmony_ci // skia:7322 1044cb93a386Sopenharmony_ci skip("vk", "gm", "_", "skbug_257") 1045cb93a386Sopenharmony_ci skip("vk", "gm", "_", "filltypespersp") 1046cb93a386Sopenharmony_ci match = append(match, "~^ClearOp$") 1047cb93a386Sopenharmony_ci match = append(match, "~^CopySurface$") 1048cb93a386Sopenharmony_ci match = append(match, "~^ImageNewShader_GPU$") 1049cb93a386Sopenharmony_ci match = append(match, "~^InitialTextureClear$") 1050cb93a386Sopenharmony_ci match = append(match, "~^PinnedImageTest$") 1051cb93a386Sopenharmony_ci match = append(match, "~^ReadPixels_Gpu$") 1052cb93a386Sopenharmony_ci match = append(match, "~^ReadPixels_Texture$") 1053cb93a386Sopenharmony_ci match = append(match, "~^SRGBReadWritePixels$") 1054cb93a386Sopenharmony_ci match = append(match, "~^VkUploadPixelsTests$") 1055cb93a386Sopenharmony_ci match = append(match, "~^WritePixelsNonTexture_Gpu$") 1056cb93a386Sopenharmony_ci match = append(match, "~^WritePixelsNonTextureMSAA_Gpu$") 1057cb93a386Sopenharmony_ci match = append(match, "~^WritePixels_Gpu$") 1058cb93a386Sopenharmony_ci match = append(match, "~^WritePixelsMSAA_Gpu$") 1059cb93a386Sopenharmony_ci } 1060cb93a386Sopenharmony_ci 1061cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") && b.gpu("GTX660") && b.matchOs("Win") { 1062cb93a386Sopenharmony_ci // skbug.com/8047 1063cb93a386Sopenharmony_ci match = append(match, "~FloatingPointTextureTest$") 1064cb93a386Sopenharmony_ci } 1065cb93a386Sopenharmony_ci 1066cb93a386Sopenharmony_ci if b.extraConfig("Metal") && b.gpu("RadeonHD8870M") && b.matchOs("Mac") { 1067cb93a386Sopenharmony_ci // skia:9255 1068cb93a386Sopenharmony_ci match = append(match, "~WritePixelsNonTextureMSAA_Gpu") 1069cb93a386Sopenharmony_ci // skbug.com/11366 1070cb93a386Sopenharmony_ci match = append(match, "~SurfacePartialDraw_Gpu") 1071cb93a386Sopenharmony_ci } 1072cb93a386Sopenharmony_ci 1073cb93a386Sopenharmony_ci if b.extraConfig("Metal") && b.gpu("PowerVRGX6450") && b.matchOs("iOS") { 1074cb93a386Sopenharmony_ci // skbug.com/11885 1075cb93a386Sopenharmony_ci match = append(match, "~flight_animated_image") 1076cb93a386Sopenharmony_ci } 1077cb93a386Sopenharmony_ci 1078cb93a386Sopenharmony_ci if b.extraConfig("ANGLE") { 1079cb93a386Sopenharmony_ci // skia:7835 1080cb93a386Sopenharmony_ci match = append(match, "~BlurMaskBiggerThanDest") 1081cb93a386Sopenharmony_ci } 1082cb93a386Sopenharmony_ci 1083cb93a386Sopenharmony_ci if b.gpu("IntelIris6100") && b.extraConfig("ANGLE") && !b.debug() { 1084cb93a386Sopenharmony_ci // skia:7376 1085cb93a386Sopenharmony_ci match = append(match, "~^ProcessorOptimizationValidationTest$") 1086cb93a386Sopenharmony_ci } 1087cb93a386Sopenharmony_ci 1088cb93a386Sopenharmony_ci if b.gpu("IntelIris6100", "IntelHD4400") && b.extraConfig("ANGLE") { 1089cb93a386Sopenharmony_ci // skia:6857 1090cb93a386Sopenharmony_ci skip("angle_d3d9_es2", "gm", "_", "lighting") 1091cb93a386Sopenharmony_ci } 1092cb93a386Sopenharmony_ci 1093cb93a386Sopenharmony_ci if b.gpu("PowerVRGX6250") { 1094cb93a386Sopenharmony_ci match = append(match, "~gradients_view_perspective_nodither") //skia:6972 1095cb93a386Sopenharmony_ci } 1096cb93a386Sopenharmony_ci 1097cb93a386Sopenharmony_ci if b.arch("arm") && b.extraConfig("ASAN") { 1098cb93a386Sopenharmony_ci // TODO: can we run with env allocator_may_return_null=1 instead? 1099cb93a386Sopenharmony_ci match = append(match, "~BadImage") 1100cb93a386Sopenharmony_ci } 1101cb93a386Sopenharmony_ci 1102cb93a386Sopenharmony_ci if b.matchOs("Mac") && b.gpu("IntelHD6000") { 1103cb93a386Sopenharmony_ci // skia:7574 1104cb93a386Sopenharmony_ci match = append(match, "~^ProcessorCloneTest$") 1105cb93a386Sopenharmony_ci match = append(match, "~^GrMeshTest$") 1106cb93a386Sopenharmony_ci } 1107cb93a386Sopenharmony_ci 1108cb93a386Sopenharmony_ci if b.matchOs("Mac") && b.gpu("IntelHD615") { 1109cb93a386Sopenharmony_ci // skia:7603 1110cb93a386Sopenharmony_ci match = append(match, "~^GrMeshTest$") 1111cb93a386Sopenharmony_ci } 1112cb93a386Sopenharmony_ci 1113cb93a386Sopenharmony_ci if b.extraConfig("Vulkan") && b.model("GalaxyS20") { 1114cb93a386Sopenharmony_ci // skia:10247 1115cb93a386Sopenharmony_ci match = append(match, "~VkPrepareForExternalIOQueueTransitionTest") 1116cb93a386Sopenharmony_ci } 1117cb93a386Sopenharmony_ci 1118cb93a386Sopenharmony_ci if len(skipped) > 0 { 1119cb93a386Sopenharmony_ci args = append(args, "--skip") 1120cb93a386Sopenharmony_ci args = append(args, skipped...) 1121cb93a386Sopenharmony_ci } 1122cb93a386Sopenharmony_ci 1123cb93a386Sopenharmony_ci if len(match) > 0 { 1124cb93a386Sopenharmony_ci args = append(args, "--match") 1125cb93a386Sopenharmony_ci args = append(args, match...) 1126cb93a386Sopenharmony_ci } 1127cb93a386Sopenharmony_ci 1128cb93a386Sopenharmony_ci // These bots run out of memory running RAW codec tests. Do not run them in 1129cb93a386Sopenharmony_ci // parallel 1130cb93a386Sopenharmony_ci // TODO(borenet): Previously this was `'Nexus5' in bot or 'Nexus9' in bot` 1131cb93a386Sopenharmony_ci // which also matched 'Nexus5x'. I added That here to maintain the 1132cb93a386Sopenharmony_ci // existing behavior, but we should verify that it's needed. 1133cb93a386Sopenharmony_ci if b.model("Nexus5", "Nexus5x", "Nexus9") { 1134cb93a386Sopenharmony_ci args = append(args, "--noRAW_threading") 1135cb93a386Sopenharmony_ci } 1136cb93a386Sopenharmony_ci 1137cb93a386Sopenharmony_ci if b.extraConfig("FSAA") { 1138cb93a386Sopenharmony_ci args = append(args, "--analyticAA", "false") 1139cb93a386Sopenharmony_ci } 1140cb93a386Sopenharmony_ci if b.extraConfig("FAAA") { 1141cb93a386Sopenharmony_ci args = append(args, "--forceAnalyticAA") 1142cb93a386Sopenharmony_ci } 1143cb93a386Sopenharmony_ci 1144cb93a386Sopenharmony_ci if !b.extraConfig("NativeFonts") { 1145cb93a386Sopenharmony_ci args = append(args, "--nonativeFonts") 1146cb93a386Sopenharmony_ci } 1147cb93a386Sopenharmony_ci 1148cb93a386Sopenharmony_ci if b.extraConfig("GDI") { 1149cb93a386Sopenharmony_ci args = append(args, "--gdi") 1150cb93a386Sopenharmony_ci } 1151cb93a386Sopenharmony_ci 1152cb93a386Sopenharmony_ci // Let's make all bots produce verbose output by default. 1153cb93a386Sopenharmony_ci args = append(args, "--verbose") 1154cb93a386Sopenharmony_ci 1155cb93a386Sopenharmony_ci // See skia:2789. 1156cb93a386Sopenharmony_ci if b.extraConfig("AbandonGpuContext") { 1157cb93a386Sopenharmony_ci args = append(args, "--abandonGpuContext") 1158cb93a386Sopenharmony_ci } 1159cb93a386Sopenharmony_ci if b.extraConfig("PreAbandonGpuContext") { 1160cb93a386Sopenharmony_ci args = append(args, "--preAbandonGpuContext") 1161cb93a386Sopenharmony_ci } 1162cb93a386Sopenharmony_ci if b.extraConfig("ReleaseAndAbandonGpuContext") { 1163cb93a386Sopenharmony_ci args = append(args, "--releaseAndAbandonGpuContext") 1164cb93a386Sopenharmony_ci } 1165cb93a386Sopenharmony_ci 1166cb93a386Sopenharmony_ci // Finalize the DM flags and properties. 1167cb93a386Sopenharmony_ci b.recipeProp("dm_flags", marshalJson(args)) 1168cb93a386Sopenharmony_ci b.recipeProp("dm_properties", marshalJson(properties)) 1169cb93a386Sopenharmony_ci 1170cb93a386Sopenharmony_ci // Add properties indicating which assets the task should use. 1171cb93a386Sopenharmony_ci if b.matchExtraConfig("Lottie") { 1172cb93a386Sopenharmony_ci b.asset("lottie-samples") 1173cb93a386Sopenharmony_ci b.recipeProp("lotties", "true") 1174cb93a386Sopenharmony_ci } else { 1175cb93a386Sopenharmony_ci b.asset("skimage") 1176cb93a386Sopenharmony_ci b.recipeProp("images", "true") 1177cb93a386Sopenharmony_ci b.asset("skp") 1178cb93a386Sopenharmony_ci b.recipeProp("skps", "true") 1179cb93a386Sopenharmony_ci b.asset("svg") 1180cb93a386Sopenharmony_ci b.recipeProp("svgs", "true") 1181cb93a386Sopenharmony_ci } 1182cb93a386Sopenharmony_ci b.recipeProp("do_upload", fmt.Sprintf("%t", b.doUpload())) 1183cb93a386Sopenharmony_ci b.recipeProp("resources", "true") 1184cb93a386Sopenharmony_ci} 1185