1// Copyright 2020 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5package gen_tasks_logic 6 7import ( 8 "fmt" 9 "sort" 10 "strconv" 11 "strings" 12 13 "github.com/golang/glog" 14 "go.skia.org/infra/task_scheduler/go/specs" 15) 16 17// keyParams generates the key used by DM for Gold results. 18func keyParams(parts map[string]string) []string { 19 // Don't bother to include role, which is always Test. 20 ignored := []string{"role", "test_filter"} 21 keys := make([]string, 0, len(parts)) 22 for key := range parts { 23 found := false 24 for _, b := range ignored { 25 if key == b { 26 found = true 27 break 28 } 29 } 30 if !found { 31 keys = append(keys, key) 32 } 33 } 34 sort.Strings(keys) 35 rv := make([]string, 0, 2*len(keys)) 36 for _, key := range keys { 37 rv = append(rv, key, parts[key]) 38 } 39 return rv 40} 41 42// dmFlags generates flags to DM based on the given task properties. 43func (b *taskBuilder) dmFlags(internalHardwareLabel string) { 44 properties := map[string]string{ 45 "gitHash": specs.PLACEHOLDER_REVISION, 46 "builder": b.Name, 47 "buildbucket_build_id": specs.PLACEHOLDER_BUILDBUCKET_BUILD_ID, 48 "task_id": specs.PLACEHOLDER_TASK_ID, 49 "issue": specs.PLACEHOLDER_ISSUE, 50 "patchset": specs.PLACEHOLDER_PATCHSET, 51 "patch_storage": specs.PLACEHOLDER_PATCH_STORAGE, 52 "swarming_bot_id": "${SWARMING_BOT_ID}", 53 "swarming_task_id": "${SWARMING_TASK_ID}", 54 } 55 56 args := []string{ 57 "dm", 58 "--nameByHash", 59 } 60 61 configs := []string{} 62 skipped := []string{} 63 64 hasConfig := func(cfg string) bool { 65 for _, c := range configs { 66 if c == cfg { 67 return true 68 } 69 } 70 return false 71 } 72 filter := func(slice []string, elems ...string) []string { 73 m := make(map[string]bool, len(elems)) 74 for _, e := range elems { 75 m[e] = true 76 } 77 rv := make([]string, 0, len(slice)) 78 for _, e := range slice { 79 if m[e] { 80 rv = append(rv, e) 81 } 82 } 83 return rv 84 } 85 remove := func(slice []string, elem string) []string { 86 rv := make([]string, 0, len(slice)) 87 for _, e := range slice { 88 if e != elem { 89 rv = append(rv, e) 90 } 91 } 92 return rv 93 } 94 removeContains := func(slice []string, elem string) []string { 95 rv := make([]string, 0, len(slice)) 96 for _, e := range slice { 97 if !strings.Contains(e, elem) { 98 rv = append(rv, e) 99 } 100 } 101 return rv 102 } 103 suffix := func(slice []string, sfx string) []string { 104 rv := make([]string, 0, len(slice)) 105 for _, e := range slice { 106 rv = append(rv, e+sfx) 107 } 108 return rv 109 } 110 111 // When matching skip logic, _ is a wildcard that matches all parts for the field. 112 // For example, "8888 _ _ _" means everything that is part of an 8888 config and 113 // "_ skp _ SomeBigDraw" means the skp named SomeBigDraw on all config and options. 114 const ALL = "_" 115 // The inputs here are turned into a --skip flag which represents a 116 // "Space-separated config/src/srcOptions/name quadruples to skip." 117 // See DM.cpp for more, especially should_skip(). ~ negates the match. 118 skip := func(config, src, srcOptions, name string) { 119 // config is also called "sink" in DM 120 if config == "_" || 121 hasConfig(config) || 122 (config[0] == '~' && hasConfig(config[1:])) { 123 skipped = append(skipped, config, src, srcOptions, name) 124 } 125 } 126 127 // Keys. 128 keys := keyParams(b.parts) 129 if b.extraConfig("Lottie") { 130 keys = append(keys, "renderer", "skottie") 131 } 132 if b.matchExtraConfig("DDL") { 133 // 'DDL' style means "--skpViewportSize 2048" 134 keys = append(keys, "style", "DDL") 135 } else { 136 keys = append(keys, "style", "default") 137 } 138 args = append(args, "--key") 139 args = append(args, keys...) 140 141 // This enables non-deterministic random seeding of the GPU FP optimization 142 // test. 143 // Not Android due to: 144 // - https://skia.googlesource.com/skia/+/5910ed347a638ded8cd4c06dbfda086695df1112/BUILD.gn#160 145 // - https://skia.googlesource.com/skia/+/ce06e261e68848ae21cac1052abc16bc07b961bf/tests/ProcessorTest.cpp#307 146 // Not MSAN due to: 147 // - https://skia.googlesource.com/skia/+/0ac06e47269a40c177747310a613d213c95d1d6d/infra/bots/recipe_modules/flavor/gn_flavor.py#80 148 if !b.matchOs("Android") && !b.extraConfig("MSAN") { 149 args = append(args, "--randomProcessorTest") 150 } 151 152 threadLimit := -1 153 const MAIN_THREAD_ONLY = 0 154 155 // 32-bit desktop machines tend to run out of memory, because they have relatively 156 // far more cores than RAM (e.g. 32 cores, 3G RAM). Hold them back a bit. 157 if b.arch("x86") { 158 threadLimit = 4 159 } 160 161 // These devices run out of memory easily. 162 if b.model("MotoG4", "Nexus7") { 163 threadLimit = MAIN_THREAD_ONLY 164 } 165 166 // Avoid issues with dynamically exceeding resource cache limits. 167 if b.matchExtraConfig("DISCARDABLE") { 168 threadLimit = MAIN_THREAD_ONLY 169 } 170 171 if threadLimit >= 0 { 172 args = append(args, "--threads", strconv.Itoa(threadLimit)) 173 } 174 175 sampleCount := 0 176 glPrefix := "" 177 if b.extraConfig("SwiftShader") { 178 configs = append(configs, "vk", "vkdmsaa") 179 // skbug.com/12826 180 skip(ALL, "test", ALL, "GrThreadSafeCache16Verts") 181 // b/296440036 182 skip(ALL, "test", ALL, "ImageAsyncReadPixels") 183 // skbug.com/12829 184 skip(ALL, "test", ALL, "image_subset") 185 } else if b.cpu() { 186 args = append(args, "--nogpu") 187 188 configs = append(configs, "8888") 189 190 if b.extraConfig("BonusConfigs") { 191 configs = []string{ 192 "r8", "565", 193 "pic-8888", "serialize-8888"} 194 } 195 196 if b.extraConfig("PDF") { 197 configs = []string{"pdf"} 198 args = append(args, "--rasterize_pdf") // Works only on Mac. 199 // Take ~forever to rasterize: 200 skip("pdf", "gm", ALL, "lattice2") 201 skip("pdf", "gm", ALL, "hairmodes") 202 skip("pdf", "gm", ALL, "longpathdash") 203 } 204 205 if b.extraConfig("OldestSupportedSkpVersion") { 206 // For triaging convenience, make the old-skp job's output match the size of the DDL jobs' output 207 args = append(args, "--skpViewportSize", "2048") 208 } 209 210 } else if b.gpu() { 211 args = append(args, "--nocpu") 212 213 // Add in either gles or gl configs to the canonical set based on OS 214 glPrefix = "gl" 215 // Use 4x MSAA for all our testing. It's more consistent and 8x MSAA is nondeterministic (by 216 // design) on NVIDIA hardware. The problem is especially bad on ANGLE. skia:6813 skia:6545 217 sampleCount = 4 218 if b.matchOs("Android") || b.os("iOS") { 219 glPrefix = "gles" 220 // MSAA is disabled on Pixel3a (https://b.corp.google.com/issues/143074513). 221 // MSAA is disabled on Pixel5 (https://skbug.com/11152). 222 if b.model("Pixel3a", "Pixel5") { 223 sampleCount = 0 224 } 225 } else if b.matchGpu("Intel") { 226 // MSAA doesn't work well on Intel GPUs chromium:527565, chromium:983926 227 if b.gpu("IntelIrisXe") && b.matchOs("Win") && b.extraConfig("ANGLE") { 228 // Make an exception for newer GPUs + D3D 229 args = append(args, "--allowMSAAOnNewIntel", "true") 230 } else { 231 sampleCount = 0 232 } 233 } else if b.os("ChromeOS") { 234 glPrefix = "gles" 235 } 236 237 if b.extraConfig("NativeFonts") { 238 configs = append(configs, glPrefix) 239 } else { 240 configs = append(configs, glPrefix, glPrefix+"dft") 241 if sampleCount > 0 { 242 configs = append(configs, fmt.Sprintf("%smsaa%d", glPrefix, sampleCount)) 243 // Temporarily limit the machines we test dynamic MSAA on. 244 if b.gpu("QuadroP400", "MaliG77") || b.matchOs("Mac") { 245 configs = append(configs, fmt.Sprintf("%sdmsaa", glPrefix)) 246 } 247 } 248 } 249 250 if b.extraConfig("Protected") { 251 args = append(args, "--createProtected") 252 // The Protected jobs (for now) only run the unit tests 253 skip(ALL, "gm", ALL, ALL) 254 skip(ALL, "image", ALL, ALL) 255 skip(ALL, "lottie", ALL, ALL) 256 skip(ALL, "colorImage", ALL, ALL) 257 skip(ALL, "svg", ALL, ALL) 258 skip(ALL, "skp", ALL, ALL) 259 260 // These unit tests attempt to readback 261 skip(ALL, "test", ALL, "ApplyGamma") 262 skip(ALL, "test", ALL, "BigImageTest_Ganesh") 263 skip(ALL, "test", ALL, "BigImageTest_Graphite") 264 skip(ALL, "test", ALL, "BlendRequiringDstReadWithLargeCoordinates") 265 skip(ALL, "test", ALL, "BlurMaskBiggerThanDest") 266 skip(ALL, "test", ALL, "ClearOp") 267 skip(ALL, "test", ALL, "ColorTypeBackendAllocationTest") 268 skip(ALL, "test", ALL, "ComposedImageFilterBounds_Gpu") 269 skip(ALL, "test", ALL, "CompressedBackendAllocationTest") 270 skip(ALL, "test", ALL, "CopySurface") 271 skip(ALL, "test", ALL, "crbug_1271431") 272 skip(ALL, "test", ALL, "DashPathEffectTest_2PiInterval") 273 skip(ALL, "test", ALL, "DeviceTestVertexTransparency") 274 skip(ALL, "test", ALL, "DDLMultipleDDLs") 275 skip(ALL, "test", ALL, "DefaultPathRendererTest") 276 skip(ALL, "test", ALL, "DMSAA_aa_dst_read_after_dmsaa") 277 skip(ALL, "test", ALL, "DMSAA_dst_read") 278 skip(ALL, "test", ALL, "DMSAA_dst_read_with_existing_barrier") 279 skip(ALL, "test", ALL, "DMSAA_dual_source_blend_disable") 280 skip(ALL, "test", ALL, "DMSAA_preserve_contents") 281 skip(ALL, "test", ALL, "EGLImageTest") 282 skip(ALL, "test", ALL, "ES2BlendWithNoTexture") 283 skip(ALL, "test", ALL, "ExtendedSkColorTypeTests_gpu") 284 skip(ALL, "test", ALL, "F16DrawTest") 285 skip(ALL, "test", ALL, "FilterResult_ganesh") // knocks out a bunch 286 skip(ALL, "test", ALL, "FullScreenClearWithLayers") 287 skip(ALL, "test", ALL, "GLBackendAllocationTest") 288 skip(ALL, "test", ALL, "GLReadPixelsUnbindPBO") 289 skip(ALL, "test", ALL, "GrAHardwareBuffer_BasicDrawTest") 290 skip(ALL, "test", ALL, "GrGpuBufferTransferTest") 291 skip(ALL, "test", ALL, "GrGpuBufferUpdateDataTest") 292 skip(ALL, "test", ALL, "GrMeshTest") 293 skip(ALL, "test", ALL, "GrPipelineDynamicStateTest") 294 skip(ALL, "test", ALL, "GrTextBlobScaleAnimation") 295 skip(ALL, "test", ALL, "HalfFloatAlphaTextureTest") 296 skip(ALL, "test", ALL, "HalfFloatRGBATextureTest") 297 skip(ALL, "test", ALL, "ImageAsyncReadPixels") 298 skip(ALL, "test", ALL, "ImageAsyncReadPixelsGraphite") 299 skip(ALL, "test", ALL, "ImageEncode_Gpu") 300 skip(ALL, "test", ALL, "ImageFilterFailAffectsTransparentBlack_Gpu") 301 skip(ALL, "test", ALL, "ImageFilterNegativeBlurSigma_Gpu") 302 skip(ALL, "test", ALL, "ImageFilterZeroBlurSigma_Gpu") 303 skip(ALL, "test", ALL, "ImageLegacyBitmap_Gpu") 304 skip(ALL, "test", ALL, "ImageNewShader_GPU") 305 skip(ALL, "test", ALL, "ImageOriginTest_drawImage_Graphite") 306 skip(ALL, "test", ALL, "ImageOriginTest_imageShader_Graphite") 307 skip(ALL, "test", ALL, "ImageProviderTest_Graphite_Default") 308 skip(ALL, "test", ALL, "ImageProviderTest_Graphite_Testing") 309 skip(ALL, "test", ALL, "ImageReadPixels_Gpu") 310 skip(ALL, "test", ALL, "ImageScalePixels_Gpu") 311 skip(ALL, "test", ALL, "ImageShaderTest") 312 skip(ALL, "test", ALL, "ImageWrapTextureMipmapsTest") 313 skip(ALL, "test", ALL, "MatrixColorFilter_TransparentBlack") 314 skip(ALL, "test", ALL, "MorphologyFilterRadiusWithMirrorCTM_Gpu") 315 skip(ALL, "test", ALL, "MultisampleRetainTest") 316 skip(ALL, "test", ALL, "MutableImagesTest") 317 skip(ALL, "test", ALL, "OpsTaskFlushCount") 318 skip(ALL, "test", ALL, "OverdrawSurface_Gpu") 319 skip(ALL, "test", ALL, "PinnedImageTest") 320 skip(ALL, "test", ALL, "RecordingOrderTest_Graphite") 321 skip(ALL, "test", ALL, "RecordingSurfacesTest") 322 skip(ALL, "test", ALL, "ReimportImageTextureWithMipLevels") 323 skip(ALL, "test", ALL, "ReplaceSurfaceBackendTexture") 324 skip(ALL, "test", ALL, "ResourceCacheCache") 325 skip(ALL, "test", ALL, "SaveLayerOrigin") 326 skip(ALL, "test", ALL, "ShaderTestNestedBlendsGanesh") 327 skip(ALL, "test", ALL, "ShaderTestNestedBlendsGraphite") 328 skip(ALL, "test", ALL, "skbug6653") 329 skip(ALL, "test", ALL, "SkImage_makeNonTextureImage") 330 skip(ALL, "test", ALL, "SkipCopyTaskTest") 331 skip(ALL, "test", ALL, "SkipOpsTaskTest") 332 skip(ALL, "test", ALL, "SkRuntimeBlender_GPU") 333 skip(ALL, "test", ALL, "SkRuntimeEffect") // knocks out a bunch 334 skip(ALL, "test", ALL, "SkRuntimeShaderImageFilter_GPU") 335 skip(ALL, "test", ALL, "SkSLCross") 336 skip(ALL, "test", ALL, "SkSL") // knocks out a bunch 337 skip(ALL, "test", ALL, "SpecialImage_Gpu") 338 skip(ALL, "test", ALL, "SRGBReadWritePixels") 339 skip(ALL, "test", ALL, "SurfaceAsyncReadPixels") 340 skip(ALL, "test", ALL, "SurfaceClear_Gpu") 341 skip(ALL, "test", ALL, "SurfaceContextReadPixels") 342 skip(ALL, "test", ALL, "SurfaceContextWritePixelsMipped") 343 skip(ALL, "test", ALL, "SurfaceDrawContextTest") 344 skip(ALL, "test", ALL, "SurfaceResolveTest") 345 skip(ALL, "test", ALL, "SurfaceSemaphores") 346 skip(ALL, "test", ALL, "TestSweepGradientZeroXGanesh") 347 skip(ALL, "test", ALL, "TiledDrawCacheTest_Ganesh") 348 skip(ALL, "test", ALL, "TiledDrawCacheTest_Graphite") 349 skip(ALL, "test", ALL, "UnpremulTextureImage") 350 skip(ALL, "test", ALL, "VkBackendAllocationTest") 351 skip(ALL, "test", ALL, "VkDrawableTest") 352 skip(ALL, "test", ALL, "VkDrawableImportTest") 353 skip(ALL, "test", ALL, "VkYCbcrSampler_DrawImageWithYcbcrSampler") 354 skip(ALL, "test", ALL, "WritePixels_Gpu") 355 skip(ALL, "test", ALL, "WritePixels_Graphite") 356 skip(ALL, "test", ALL, "WritePixelsMSAA_Gpu") 357 skip(ALL, "test", ALL, "WritePixelsNonTexture_Gpu") 358 skip(ALL, "test", ALL, "WritePixelsNonTextureMSAA_Gpu") 359 skip(ALL, "test", ALL, "WritePixelsPendingIO") 360 skip(ALL, "test", ALL, "XfermodeImageFilterCroppedInput_Gpu") 361 362 // These unit tests require some debugging (skbug.com/319229312) 363 skip(ALL, "test", ALL, "GrTextBlobMoveAround") // a lot of AllocImageMemory failures 364 skip(ALL, "test", ALL, "Programs") // Perlin Noise FP violating protected constraints 365 skip(ALL, "test", ALL, "Protected_SmokeTest") // Ganesh/Vulkan disallow creating Unprotected Image 366 skip(ALL, "test", ALL, "ReadOnlyTexture") // crashes device! 367 skip(ALL, "test", ALL, "RepeatedClippedBlurTest") // blurs not creating expected # of resources 368 skip(ALL, "test", ALL, "CharacterizationVkSCBnessTest") // DDL Validation failure for Vk SCBs 369 370 // These unit tests are very slow and probably don't benefit from Protected testing 371 skip(ALL, "test", ALL, "PaintParamsKeyTest") 372 skip(ALL, "test", ALL, "ProcessorCloneTest") 373 skip(ALL, "test", ALL, "ProcessorOptimizationValidationTest") 374 skip(ALL, "test", ALL, "TextBlobAbnormal") 375 skip(ALL, "test", ALL, "TextBlobStressAbnormal") 376 377 // b/399342221 378 skip(ALL, "test", ALL, "UserDefinedStableKeyTest") 379 } 380 381 // The Tegra3 doesn't support MSAA 382 if b.gpu("Tegra3") || 383 // We aren't interested in fixing msaa bugs on current iOS devices. 384 b.model("iPad4", "iPadPro", "iPhone7") || 385 // skia:5792 386 b.gpu("IntelHD530", "IntelIris540") { 387 configs = removeContains(configs, "msaa") 388 } 389 390 // We want to test both the OpenGL config and the GLES config on Linux Intel: 391 // GL is used by Chrome, GLES is used by ChromeOS. 392 if b.matchGpu("Intel") && b.isLinux() { 393 configs = append(configs, "gles", "glesdft") 394 } 395 396 // The FailFlushTimeCallbacks tasks only run the 'gl' config 397 if b.extraConfig("FailFlushTimeCallbacks") { 398 configs = []string{"gl"} 399 } 400 401 // Graphite task *only* runs the gr*** configs 402 if b.extraConfig("Graphite") { 403 args = append(args, "--nogpu") // disable non-Graphite tests 404 405 // This gm is just meant for local debugging 406 skip(ALL, "test", ALL, "PaintParamsKeyTestReduced") 407 408 if b.extraConfig("Dawn") { 409 baseConfig := "" 410 if b.extraConfig("D3D11") { 411 baseConfig = "grdawn_d3d11" 412 } else if b.extraConfig("D3D12") { 413 baseConfig = "grdawn_d3d12" 414 } else if b.extraConfig("Metal") { 415 baseConfig = "grdawn_mtl" 416 } else if b.extraConfig("Vulkan") { 417 baseConfig = "grdawn_vk" 418 } else if b.extraConfig("GL") { 419 baseConfig = "grdawn_gl" 420 } else if b.extraConfig("GLES") { 421 baseConfig = "grdawn_gles" 422 } 423 424 configs = []string{baseConfig} 425 426 if b.extraConfig("FakeWGPU") { 427 args = append(args, "--neverYieldToWebGPU") 428 args = append(args, "--useWGPUTextureView") 429 } 430 431 if b.extraConfig("TintIR") { 432 args = append(args, "--useTintIR") 433 } 434 435 // Shader doesn't compile 436 // https://skbug.com/14105 437 skip(ALL, "gm", ALL, "runtime_intrinsics_matrix") 438 // Crashes and failures 439 // https://skbug.com/14105 440 skip(ALL, "test", ALL, "BackendTextureTest") 441 442 if b.matchOs("Win10") || b.matchGpu("Adreno620", "MaliG78", "QuadroP400") { 443 // The Dawn Win10 and some Android/Linux device jobs OOMs (skbug.com/14410, b/318725123) 444 skip(ALL, "test", ALL, "BigImageTest_Graphite") 445 } 446 if b.matchGpu("Adreno620") { 447 // The Dawn Pixel5 device job fails one compute test (b/318725123) 448 skip(ALL, "test", ALL, "Compute_AtomicOperationsOverArrayAndStructTest") 449 } 450 451 if b.extraConfig("GL") || b.extraConfig("GLES") { 452 // These GMs currently have rendering issues in Dawn compat. 453 skip(ALL, "gm", ALL, "glyph_pos_n_s") 454 skip(ALL, "gm", ALL, "persptext") 455 skip(ALL, "gm", ALL, "persptext_minimal") 456 skip(ALL, "gm", ALL, "pictureshader_persp") 457 skip(ALL, "gm", ALL, "wacky_yuv_formats_frompixmaps") 458 459 // This GM is larger than Dawn compat's max texture size. 460 skip(ALL, "gm", ALL, "wacky_yuv_formats_domain") 461 462 // b/389701894 - The Dawn/GLES backend is hard crashing on this test 463 skip(ALL, "test", ALL, "ThreadedPipelineCompilePurgingTest") 464 } 465 466 // b/373845830 - Precompile isn't thread-safe on either Dawn Metal 467 // or Dawn Vulkan 468 skip(ALL, "test", ALL, "ThreadedPipelinePrecompileTest") 469 // b/380039123 getting both ASAN and TSAN failures for this test on Dawn 470 skip(ALL, "test", ALL, "ThreadedPipelinePrecompileCompileTest") 471 skip(ALL, "test", ALL, "ThreadedPipelinePrecompileCompilePurgingTest") 472 473 if b.extraConfig("Vulkan") { 474 if b.extraConfig("TSAN") { 475 // The TSAN_Graphite_Dawn_Vulkan job goes off into space on this test 476 skip(ALL, "test", ALL, "BigImageTest_Graphite") 477 // b/389706939 - Dawn/Vulkan reports a data race for LazyClearCountForTesting w/ TSAN 478 skip(ALL, "test", ALL, "ThreadedPipelineCompilePurgingTest") 479 } 480 } 481 482 if b.extraConfig("Metal") { 483 if b.extraConfig("TSAN") { 484 // b/389706939 - Dawn/Metal reports a data race for LazyClearCountForTesting w/ TSAN 485 skip(ALL, "test", ALL, "ThreadedPipelineCompilePurgingTest") 486 // The TSAN_Graphite_Dawn_Metal job seems to consistently get stuck on this unit test 487 skip(ALL, "test", ALL, "BigImageTest_Graphite") 488 } 489 } 490 } else if b.extraConfig("Native") { 491 if b.extraConfig("Metal") { 492 if b.extraConfig("TestPrecompile") { 493 configs = []string{"grmtltestprecompile"} 494 } else { 495 configs = []string{"grmtl"} 496 } 497 498 if b.gpu("IntelIrisPlus") { 499 // We get some 27/255 RGB diffs on the 45 degree 500 // rotation case on this device (skbug.com/14408) 501 skip(ALL, "test", ALL, "BigImageTest_Graphite") 502 } 503 } 504 if b.extraConfig("Vulkan") { 505 if b.extraConfig("TestPrecompile") { 506 configs = []string{"grvktestprecompile"} 507 } else { 508 configs = []string{"grvk"} 509 } 510 511 // Couldn't readback 512 skip(ALL, "gm", ALL, "aaxfermodes") 513 // Could not instantiate texture proxy for UploadTask! 514 skip(ALL, "test", ALL, "BigImageTest_Graphite") 515 // Test failures 516 skip(ALL, "test", ALL, "MultisampleRetainTest") 517 skip(ALL, "test", ALL, "PaintParamsKeyTest") 518 if b.matchOs("Android") { 519 // Currently broken on Android Vulkan (skbug.com/310180104) 520 skip(ALL, "test", ALL, "ImageAsyncReadPixelsGraphite") 521 skip(ALL, "test", ALL, "SurfaceAsyncReadPixelsGraphite") 522 } 523 524 // b/380049954 Graphite Native Vulkan has a thread race issue 525 skip(ALL, "test", ALL, "ThreadedPipelinePrecompileCompileTest") 526 skip(ALL, "test", ALL, "ThreadedPipelinePrecompileCompilePurgingTest") 527 skip(ALL, "test", ALL, "ThreadedPipelinePrecompilePurgingTest") 528 } 529 } 530 } 531 532 // ANGLE bot *only* runs the angle configs 533 if b.extraConfig("ANGLE") { 534 if b.matchOs("Win") { 535 configs = []string{"angle_d3d11_es2", "angle_d3d11_es3"} 536 if sampleCount > 0 { 537 configs = append(configs, fmt.Sprintf("angle_d3d11_es2_msaa%d", sampleCount)) 538 configs = append(configs, fmt.Sprintf("angle_d3d11_es2_dmsaa")) 539 configs = append(configs, fmt.Sprintf("angle_d3d11_es3_msaa%d", sampleCount)) 540 configs = append(configs, fmt.Sprintf("angle_d3d11_es3_dmsaa")) 541 } 542 if !b.matchGpu("GTX", "Quadro", "GT610") { 543 // See skia:10149 544 configs = append(configs, "angle_d3d9_es2") 545 } 546 if b.model("NUC5i7RYH") { 547 // skbug.com/7376 548 skip(ALL, "test", ALL, "ProcessorCloneTest") 549 } 550 if b.matchGpu("Intel") { 551 // Debug-ANGLE-All on Intel frequently timeout, and the FilterResult test suite 552 // produces many test cases, that are multiplied by the number of configs (of 553 // which ANGLE has many variations). There is not a lot of value gained by 554 // running these if they are the source of long 'dm' time on Xe hardware given 555 // many other tasks are executing them. 556 skip(ALL, "test", ALL, "FilterResult") 557 } 558 } else if b.matchOs("Mac") { 559 configs = []string{"angle_mtl_es2", "angle_mtl_es3"} 560 561 // anglebug.com/7245 562 skip("angle_mtl_es3", "gm", ALL, "runtime_intrinsics_common_es3") 563 564 if b.matchGpu("AppleM") { 565 // M1 Macs fail this test for sRGB color types 566 // skbug.com/13289 567 skip(ALL, "test", ALL, "TransferPixelsToTextureTest") 568 } 569 } 570 } 571 572 if b.model("AndroidOne", "Nexus5", "Nexus7", "JioNext") { 573 // skbug.com/9019 574 skip(ALL, "test", ALL, "ProcessorCloneTest") 575 skip(ALL, "test", ALL, "Programs") 576 skip(ALL, "test", ALL, "ProcessorOptimizationValidationTest") 577 } 578 579 if b.model("GalaxyS20") { 580 // skbug.com/10595 581 skip(ALL, "test", ALL, "ProcessorCloneTest") 582 } 583 584 if b.model("MotoG73") { 585 // https://g-issues.skia.org/issues/370739986 586 skip(ALL, "test", ALL, "SkSLSwizzleIndexStore_Ganesh") 587 skip(ALL, "test", ALL, "SkSLMatrixScalarMath_Ganesh") 588 skip(ALL, "test", ALL, "SkSLMatrixOpEqualsES3_Ganesh") 589 skip(ALL, "test", ALL, "SkSLMatrixScalarNoOpFolding_Ganesh") 590 591 skip(ALL, "test", ALL, "SkSLIncrementDisambiguation_Ganesh") 592 skip(ALL, "test", ALL, "SkSLArrayFolding_Ganesh") 593 skip(ALL, "test", ALL, "SkSLIntrinsicModf_Ganesh") 594 } 595 596 if b.model("MacMini8.1") && b.extraConfig("Metal") { 597 // https://g-issues.skia.org/issues/391573668 598 skip(ALL, "test", ALL, "SkSLIntrinsicAll_Graphite") 599 skip(ALL, "test", ALL, "SkSLIntrinsicAny_Graphite") 600 skip(ALL, "test", ALL, "SkSLIntrinsicNot_Graphite") 601 skip(ALL, "test", ALL, "SkSLIntrinsicMixFloatES3_Graphite") 602 skip(ALL, "test", ALL, "SkSLIntrinsicAll_Ganesh") 603 skip(ALL, "test", ALL, "SkSLIntrinsicAny_Ganesh") 604 skip(ALL, "test", ALL, "SkSLIntrinsicNot_Ganesh") 605 skip(ALL, "test", ALL, "SkSLIntrinsicMixFloatES3_Ganesh") 606 } 607 608 if b.model("Spin513") { 609 // skbug.com/11876 610 skip(ALL, "test", ALL, "Programs") 611 // skbug.com/12486 612 skip(ALL, "test", ALL, "TestMockContext") 613 skip(ALL, "test", ALL, "TestGpuRenderingContexts") 614 skip(ALL, "test", ALL, "TestGpuAllContexts") 615 skip(ALL, "test", ALL, "TextBlobCache") 616 skip(ALL, "test", ALL, "OverdrawSurface_Gpu") 617 skip(ALL, "test", ALL, "ReplaceSurfaceBackendTexture") 618 skip(ALL, "test", ALL, "SurfaceAttachStencil_Gpu") 619 skip(ALL, "test", ALL, "SurfacePartialDraw_Gpu") 620 skip(ALL, "test", ALL, "SurfaceWrappedWithRelease_Gpu") 621 } 622 623 // skbug.com/9043 - these devices render this test incorrectly 624 // when opList splitting reduction is enabled 625 if b.gpu() && b.extraConfig("Vulkan") && (b.gpu("RadeonR9M470X", "RadeonHD7770")) { 626 skip(ALL, "tests", ALL, "VkDrawableImportTest") 627 } 628 if b.extraConfig("Vulkan") && !b.extraConfig("Graphite") { 629 configs = []string{"vk"} 630 // MSAA doesn't work well on Intel GPUs chromium:527565, chromium:983926, skia:9023 631 // MSAA4 is not supported on the MotoG73 632 // "Configuration 'vkmsaa4' sample count 4 is not a supported sample count." 633 if !b.matchGpu("Intel") && !b.model("MotoG73") { 634 configs = append(configs, "vkmsaa4") 635 } 636 // Temporarily limit the machines we test dynamic MSAA on. 637 if b.gpu("QuadroP400", "MaliG77") && !b.extraConfig("TSAN") { 638 configs = append(configs, "vkdmsaa") 639 } 640 } 641 if b.extraConfig("Metal") && !b.extraConfig("Graphite") { 642 configs = []string{"mtl"} 643 // MSAA doesn't work well on Intel GPUs chromium:527565, chromium:983926 644 if !b.matchGpu("Intel") { 645 configs = append(configs, "mtlmsaa4") 646 } 647 } 648 if b.extraConfig("Slug") { 649 // Test slug drawing 650 configs = []string{"glslug", "glserializeslug", "glremoteslug"} 651 // glremoteslug does not handle layers right. Exclude the tests for now. 652 skip("glremoteslug", "gm", ALL, "rtif_distort") 653 skip("glremoteslug", "gm", ALL, "textfilter_image") 654 skip("glremoteslug", "gm", ALL, "textfilter_color") 655 skip("glremoteslug", "gm", ALL, "savelayerpreservelcdtext") 656 skip("glremoteslug", "gm", ALL, "typefacerendering_pfa") 657 skip("glremoteslug", "gm", ALL, "typefacerendering_pfb") 658 skip("glremoteslug", "gm", ALL, "typefacerendering") 659 } 660 if b.extraConfig("Direct3D") { 661 configs = []string{"d3d"} 662 } 663 664 // Test 1010102 on our Linux/NVIDIA tasks and the persistent cache config 665 // on the GL tasks. 666 if b.gpu("QuadroP400") && !b.extraConfig("PreAbandonGpuContext") && !b.extraConfig("TSAN") && b.isLinux() && 667 !b.extraConfig("FailFlushTimeCallbacks") && !b.extraConfig("Graphite") { 668 if b.extraConfig("Vulkan") { 669 configs = append(configs, "vk1010102") 670 // Decoding transparent images to 1010102 just looks bad 671 skip("vk1010102", "image", ALL, ALL) 672 } else { 673 configs = append(configs, "gl1010102", "gltestpersistentcache", "gltestglslcache", "gltestprecompile") 674 // Decoding transparent images to 1010102 just looks bad 675 skip("gl1010102", "image", ALL, ALL) 676 // These tests produce slightly different pixels run to run on NV. 677 skip("gltestpersistentcache", "gm", ALL, "atlastext") 678 skip("gltestpersistentcache", "gm", ALL, "dftext") 679 skip("gltestpersistentcache", "gm", ALL, "glyph_pos_h_b") 680 skip("gltestpersistentcache", "gm", ALL, "glyph_pos_h_f") 681 skip("gltestpersistentcache", "gm", ALL, "glyph_pos_n_f") 682 skip("gltestglslcache", "gm", ALL, "atlastext") 683 skip("gltestglslcache", "gm", ALL, "dftext") 684 skip("gltestglslcache", "gm", ALL, "glyph_pos_h_b") 685 skip("gltestglslcache", "gm", ALL, "glyph_pos_h_f") 686 skip("gltestglslcache", "gm", ALL, "glyph_pos_n_f") 687 skip("gltestprecompile", "gm", ALL, "atlastext") 688 skip("gltestprecompile", "gm", ALL, "dftext") 689 skip("gltestprecompile", "gm", ALL, "glyph_pos_h_b") 690 skip("gltestprecompile", "gm", ALL, "glyph_pos_h_f") 691 skip("gltestprecompile", "gm", ALL, "glyph_pos_n_f") 692 // Tessellation shaders do not yet participate in the persistent cache. 693 skip("gltestpersistentcache", "gm", ALL, "tessellation") 694 skip("gltestglslcache", "gm", ALL, "tessellation") 695 skip("gltestprecompile", "gm", ALL, "tessellation") 696 } 697 } 698 699 // We also test the SkSL precompile config on Pixel2XL as a representative 700 // Android device - this feature is primarily used by Flutter. 701 if b.model("Pixel2XL") && !b.extraConfig("Vulkan") { 702 configs = append(configs, "glestestprecompile") 703 } 704 705 // Test SkSL precompile on iPhone 8 as representative iOS device 706 if b.model("iPhone8") && b.extraConfig("Metal") { 707 configs = append(configs, "mtltestprecompile") 708 // avoid tests that can generate slightly different pixels per run 709 skip("mtltestprecompile", "gm", ALL, "atlastext") 710 skip("mtltestprecompile", "gm", ALL, "circular_arcs_hairline") 711 skip("mtltestprecompile", "gm", ALL, "dashcircle") 712 skip("mtltestprecompile", "gm", ALL, "dftext") 713 skip("mtltestprecompile", "gm", ALL, "encode-platform") 714 skip("mtltestprecompile", "gm", ALL, "fontmgr_bounds") 715 skip("mtltestprecompile", "gm", ALL, "fontmgr_bounds_1_-0.25") 716 skip("mtltestprecompile", "gm", ALL, "glyph_pos_h_b") 717 skip("mtltestprecompile", "gm", ALL, "glyph_pos_h_f") 718 skip("mtltestprecompile", "gm", ALL, "glyph_pos_n_f") 719 skip("mtltestprecompile", "gm", ALL, "persp_images") 720 skip("mtltestprecompile", "gm", ALL, "ovals") 721 skip("mtltestprecompile", "gm", ALL, "roundrects") 722 skip("mtltestprecompile", "gm", ALL, "shadow_utils_occl") 723 skip("mtltestprecompile", "gm", ALL, "strokedlines") 724 skip("mtltestprecompile", "gm", ALL, "strokerect") 725 skip("mtltestprecompile", "gm", ALL, "strokes3") 726 skip("mtltestprecompile", "gm", ALL, "texel_subset_linear_mipmap_nearest_down") 727 skip("mtltestprecompile", "gm", ALL, "texel_subset_linear_mipmap_linear_down") 728 skip("mtltestprecompile", "gm", ALL, "textblobmixedsizes_df") 729 skip("mtltestprecompile", "gm", ALL, "yuv420_odd_dim_repeat") 730 skip("mtltestprecompile", "svg", ALL, "A_large_blank_world_map_with_oceans_marked_in_blue.svg") 731 skip("mtltestprecompile", "svg", ALL, "Chalkboard.svg") 732 skip("mtltestprecompile", "svg", ALL, "Ghostscript_Tiger.svg") 733 skip("mtltestprecompile", "svg", ALL, "Seal_of_American_Samoa.svg") 734 skip("mtltestprecompile", "svg", ALL, "Seal_of_Illinois.svg") 735 skip("mtltestprecompile", "svg", ALL, "cartman.svg") 736 skip("mtltestprecompile", "svg", ALL, "desk_motionmark_paths.svg") 737 skip("mtltestprecompile", "svg", ALL, "rg1024_green_grapes.svg") 738 skip("mtltestprecompile", "svg", ALL, "shapes-intro-02-f.svg") 739 skip("mtltestprecompile", "svg", ALL, "tiger-8.svg") 740 } 741 // Test reduced shader mode on iPhone 11 as representative iOS device 742 if b.model("iPhone11") && b.extraConfig("Metal") && !b.extraConfig("Graphite") { 743 configs = append(configs, "mtlreducedshaders") 744 } 745 746 if b.model(DONT_REDUCE_OPS_TASK_SPLITTING_MODELS...) { 747 args = append(args, "--dontReduceOpsTaskSplitting", "true") 748 } 749 750 // Test reduceOpsTaskSplitting fallback when over budget. 751 if b.model("NUC7i5BNK") && b.extraConfig("ASAN") { 752 args = append(args, "--gpuResourceCacheLimit", "16777216") 753 } 754 755 // Test rendering to wrapped dsts on a few tasks 756 if b.extraConfig("BonusConfigs") { 757 configs = []string{"glbetex", "glbert", "glreducedshaders", "glr8"} 758 } 759 760 if b.os("ChromeOS") { 761 // Just run GLES for now - maybe add gles_msaa4 in the future 762 configs = []string{"gles"} 763 } 764 765 // Test GPU tessellation path renderer. 766 if b.extraConfig("GpuTess") { 767 configs = []string{glPrefix + "msaa4"} 768 // Use fixed count tessellation path renderers as much as possible. 769 args = append(args, "--pr", "atlas", "tess") 770 } 771 772 // DDL is a GPU-only feature 773 if b.extraConfig("DDL1") { 774 // This bot generates comparison images for the large skps and the gms 775 configs = filter(configs, "gl", "vk", "mtl") 776 args = append(args, "--skpViewportSize", "2048") 777 } 778 if b.extraConfig("DDL3") { 779 // This bot generates the real ddl images for the large skps and the gms 780 configs = suffix(filter(configs, "gl", "vk", "mtl"), "ddl") 781 args = append(args, "--skpViewportSize", "2048") 782 args = append(args, "--gpuThreads", "0") 783 } 784 } 785 786 if b.matchExtraConfig("ColorSpaces") { 787 // Here we're going to generate a bunch of configs with the format: 788 // <colorspace> <backend> <targetFormat> 789 // Where: <colorspace> is one of: "", "linear-", "narrow-", p3-", "rec2020-", "srgb2-" 790 // <backend> is one of: "gl, "gles", "mtl", "vk" 791 // their "gr" prefixed versions 792 // and "" (for raster) 793 // <targetFormat> is one of: "f16", { "" (for gpus) or "rgba" (for raster) } 794 // 795 // We also add on two configs with the format: 796 // narrow-<backend>f16norm 797 // linear-<backend>srgba 798 colorSpaces := []string{"", "linear-", "narrow-", "p3-", "rec2020-", "srgb2-"} 799 800 backendStr := "" 801 if b.gpu() { 802 if b.extraConfig("Graphite") { 803 if b.extraConfig("GL") { 804 backendStr = "grgl" 805 } else if b.extraConfig("GLES") { 806 backendStr = "grgles" 807 } else if b.extraConfig("Metal") { 808 backendStr = "grmtl" 809 } else if b.extraConfig("Vulkan") { 810 backendStr = "grvk" 811 } 812 } else { 813 if b.extraConfig("GL") { 814 backendStr = "gl" 815 } else if b.extraConfig("GLES") { 816 backendStr = "gles" 817 } else if b.extraConfig("Metal") { 818 backendStr = "mtl" 819 } else if b.extraConfig("Vulkan") { 820 backendStr = "vk" 821 } 822 } 823 } 824 825 targetFormats := []string{"f16"} 826 if b.gpu() { 827 targetFormats = append(targetFormats, "") 828 } else { 829 targetFormats = append(targetFormats, "rgba") 830 } 831 832 configs = []string{} 833 834 for _, cs := range colorSpaces { 835 for _, tf := range targetFormats { 836 configs = append(configs, cs+backendStr+tf) 837 } 838 } 839 840 configs = append(configs, "narrow-"+backendStr+"f16norm") 841 configs = append(configs, "linear-"+backendStr+"srgba") 842 } 843 844 // Sharding. 845 tf := b.parts["test_filter"] 846 if tf != "" && tf != "All" { 847 // Expected format: shard_XX_YY 848 split := strings.Split(tf, ALL) 849 if len(split) == 3 { 850 args = append(args, "--shard", split[1]) 851 args = append(args, "--shards", split[2]) 852 } else { 853 glog.Fatalf("Invalid task name - bad shards: %s", tf) 854 } 855 } 856 857 args = append(args, "--config") 858 args = append(args, configs...) 859 860 removeFromArgs := func(arg string) { 861 args = remove(args, arg) 862 } 863 864 // Run tests, gms, and image decoding tests everywhere. 865 args = append(args, "--src", "tests", "gm", "image", "lottie", "colorImage", "svg", "skp") 866 if b.gpu() { 867 // Don't run the "svgparse_*" svgs on GPU. 868 skip(ALL, "svg", ALL, "svgparse_") 869 } else if b.Name == "Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-ASAN" { 870 // Only run the CPU SVGs on 8888. 871 skip("~8888", "svg", ALL, ALL) 872 } else { 873 // On CPU SVGs we only care about parsing. Only run them on the above bot. 874 removeFromArgs("svg") 875 } 876 877 // Eventually I'd like these to pass, but for now just skip 'em. 878 if b.extraConfig("SK_FORCE_RASTER_PIPELINE_BLITTER") { 879 removeFromArgs("tests") 880 } 881 882 if b.model("Spin513") { 883 removeFromArgs("tests") 884 } 885 886 if b.extraConfig("NativeFonts") { // images won't exercise native font integration :) 887 removeFromArgs("image") 888 removeFromArgs("colorImage") 889 } 890 891 if b.matchExtraConfig("Graphite") { 892 removeFromArgs("image") 893 removeFromArgs("lottie") 894 removeFromArgs("colorImage") 895 removeFromArgs("svg") 896 } 897 898 if b.matchExtraConfig("Fontations") { 899 // The only fontations code is exercised via gms and tests 900 removeFromArgs("image") 901 removeFromArgs("lottie") 902 removeFromArgs("colorImage") 903 removeFromArgs("svg") 904 } 905 906 // Remove skps for all tasks except for a select few. On tasks that will run SKPs remove some of 907 // their other tests. 908 if b.matchExtraConfig("DDL", "PDF") { 909 // The DDL and PDF tasks just render the large skps and the gms 910 removeFromArgs("tests") 911 removeFromArgs("image") 912 removeFromArgs("colorImage") 913 removeFromArgs("svg") 914 } else if b.matchExtraConfig("OldestSupportedSkpVersion") { 915 // The OldestSupportedSkpVersion bot only renders skps. 916 removeFromArgs("tests") 917 removeFromArgs("gm") 918 removeFromArgs("image") 919 removeFromArgs("colorImage") 920 removeFromArgs("svg") 921 } else if b.matchExtraConfig("FailFlushTimeCallbacks") { 922 // The FailFlushTimeCallbacks bot only runs skps, gms and svgs 923 removeFromArgs("tests") 924 removeFromArgs("image") 925 removeFromArgs("colorImage") 926 } else if b.extraConfig("Protected") { 927 // Currently the Protected jobs only run the unit tests 928 removeFromArgs("gm") 929 removeFromArgs("image") 930 removeFromArgs("lottie") 931 removeFromArgs("colorImage") 932 removeFromArgs("svg") 933 removeFromArgs("skp") 934 } else { 935 // No other tasks render the .skps. 936 removeFromArgs("skp") 937 } 938 939 if b.extraConfig("Lottie") { 940 // Only run the lotties on Lottie tasks. 941 removeFromArgs("tests") 942 removeFromArgs("gm") 943 removeFromArgs("image") 944 removeFromArgs("colorImage") 945 removeFromArgs("svg") 946 removeFromArgs("skp") 947 } else { 948 removeFromArgs("lottie") 949 } 950 951 if b.extraConfig("TSAN") { 952 // skbug.com/10848 953 removeFromArgs("svg") 954 // skbug.com/12900 avoid OOM on 955 // Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-TSAN_Vulkan 956 // Avoid lots of spurious TSAN failures on 957 // Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-TSAN_Vulkan 958 // Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-DDL3_TSAN_Vulkan 959 if b.Name == "Test-Ubuntu18-Clang-Golo-GPU-QuadroP400-x86_64-Release-All-TSAN_Vulkan" || 960 b.Name == "Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-TSAN_Vulkan" || 961 b.Name == "Test-Debian11-Clang-NUC11TZi5-GPU-IntelIrisXe-x86_64-Release-All-DDL3_TSAN_Vulkan" { 962 skip("_", "test", "_", "_") 963 } 964 } 965 966 // TODO: ??? 967 skip("f16", ALL, ALL, "dstreadshuffle") 968 969 // --src image --config r8 means "decode into R8", which isn't supported. 970 skip("r8", "image", ALL, ALL) 971 skip("r8", "colorImage", ALL, ALL) 972 973 if b.extraConfig("Valgrind") { 974 // These take 18+ hours to run. 975 skip("pdf", "gm", ALL, "fontmgr_iter") 976 skip("pdf", ALL, ALL, "PANO_20121023_214540.jpg") 977 skip("pdf", "skp", ALL, "worldjournal") 978 skip("pdf", "skp", ALL, "desk_baidu.skp") 979 skip("pdf", "skp", ALL, "desk_wikipedia.skp") 980 skip(ALL, "svg", ALL, ALL) 981 // skbug.com/9171 and 8847 982 skip(ALL, "test", ALL, "InitialTextureClear") 983 } 984 985 if b.model("TecnoSpark3Pro", "Wembley") { 986 // skbug.com/9421 987 skip(ALL, "test", ALL, "InitialTextureClear") 988 } 989 990 if b.model("Wembley", "JioNext") { 991 // These tests run forever on the Wembley. 992 skip(ALL, "gm", ALL, "async_rescale_and_read") 993 } 994 995 if b.model("Wembley") { 996 // These tests run forever or use too many resources on the Wembley. 997 skip(ALL, "gm", ALL, "wacky_yuv_formats") 998 skip(ALL, "gm", ALL, "wacky_yuv_formats_cs") 999 skip(ALL, "gm", ALL, "wacky_yuv_formats_cubic") 1000 skip(ALL, "gm", ALL, "wacky_yuv_formats_domain") 1001 skip(ALL, "gm", ALL, "wacky_yuv_formats_fromimages") 1002 skip(ALL, "gm", ALL, "wacky_yuv_formats_frompixmaps") 1003 skip(ALL, "gm", ALL, "wacky_yuv_formats_imggen") 1004 skip(ALL, "gm", ALL, "wacky_yuv_formats_limited") 1005 skip(ALL, "gm", ALL, "wacky_yuv_formats_limited_cs") 1006 skip(ALL, "gm", ALL, "wacky_yuv_formats_limited_fromimages") 1007 } 1008 1009 if b.os("iOS") { 1010 skip(glPrefix, "skp", ALL, ALL) 1011 } 1012 1013 if b.matchOs("Mac", "iOS") { 1014 // CG fails on questionable bmps 1015 skip(ALL, "image", "gen_platf", "rgba32abf.bmp") 1016 skip(ALL, "image", "gen_platf", "rgb24prof.bmp") 1017 skip(ALL, "image", "gen_platf", "rgb24lprof.bmp") 1018 skip(ALL, "image", "gen_platf", "8bpp-pixeldata-cropped.bmp") 1019 skip(ALL, "image", "gen_platf", "4bpp-pixeldata-cropped.bmp") 1020 skip(ALL, "image", "gen_platf", "32bpp-pixeldata-cropped.bmp") 1021 skip(ALL, "image", "gen_platf", "24bpp-pixeldata-cropped.bmp") 1022 1023 // CG has unpredictable behavior on this questionable gif 1024 // It's probably using uninitialized memory 1025 skip(ALL, "image", "gen_platf", "frame_larger_than_image.gif") 1026 1027 // CG has unpredictable behavior on incomplete pngs 1028 // skbug.com/5774 1029 skip(ALL, "image", "gen_platf", "inc0.png") 1030 skip(ALL, "image", "gen_platf", "inc1.png") 1031 skip(ALL, "image", "gen_platf", "inc2.png") 1032 skip(ALL, "image", "gen_platf", "inc3.png") 1033 skip(ALL, "image", "gen_platf", "inc4.png") 1034 skip(ALL, "image", "gen_platf", "inc5.png") 1035 skip(ALL, "image", "gen_platf", "inc6.png") 1036 skip(ALL, "image", "gen_platf", "inc7.png") 1037 skip(ALL, "image", "gen_platf", "inc8.png") 1038 skip(ALL, "image", "gen_platf", "inc9.png") 1039 skip(ALL, "image", "gen_platf", "inc10.png") 1040 skip(ALL, "image", "gen_platf", "inc11.png") 1041 skip(ALL, "image", "gen_platf", "inc12.png") 1042 skip(ALL, "image", "gen_platf", "inc13.png") 1043 skip(ALL, "image", "gen_platf", "inc14.png") 1044 skip(ALL, "image", "gen_platf", "incInterlaced.png") 1045 1046 // These images fail after Mac 10.13.1 upgrade. 1047 skip(ALL, "image", "gen_platf", "incInterlaced.gif") 1048 skip(ALL, "image", "gen_platf", "inc1.gif") 1049 skip(ALL, "image", "gen_platf", "inc0.gif") 1050 skip(ALL, "image", "gen_platf", "butterfly.gif") 1051 } 1052 1053 // WIC fails on questionable bmps 1054 if b.matchOs("Win") { 1055 skip(ALL, "image", "gen_platf", "pal8os2v2.bmp") 1056 skip(ALL, "image", "gen_platf", "pal8os2v2-16.bmp") 1057 skip(ALL, "image", "gen_platf", "rgba32abf.bmp") 1058 skip(ALL, "image", "gen_platf", "rgb24prof.bmp") 1059 skip(ALL, "image", "gen_platf", "rgb24lprof.bmp") 1060 skip(ALL, "image", "gen_platf", "8bpp-pixeldata-cropped.bmp") 1061 skip(ALL, "image", "gen_platf", "4bpp-pixeldata-cropped.bmp") 1062 skip(ALL, "image", "gen_platf", "32bpp-pixeldata-cropped.bmp") 1063 skip(ALL, "image", "gen_platf", "24bpp-pixeldata-cropped.bmp") 1064 if b.arch("x86_64") && b.cpu() { 1065 // This GM triggers a SkSmallAllocator assert. 1066 skip(ALL, "gm", ALL, "composeshader_bitmap") 1067 } 1068 } 1069 1070 if !b.matchOs("Win", "Debian11", "Ubuntu18") || b.gpu("IntelIris655", "IntelIris540") { 1071 // This test requires a decent max texture size so just run it on the desktops. 1072 // The OS list should include Mac but Mac10.13 doesn't work correctly. 1073 // The IntelIris655 and IntelIris540 GPUs don't work correctly in the Vk backend 1074 skip(ALL, "test", ALL, "BigImageTest_Ganesh") 1075 } 1076 1077 if b.matchOs("Win", "Mac") { 1078 // WIC and CG fail on arithmetic jpegs 1079 skip(ALL, "image", "gen_platf", "testimgari.jpg") 1080 // More questionable bmps that fail on Mac, too. skbug.com/6984 1081 skip(ALL, "image", "gen_platf", "rle8-height-negative.bmp") 1082 skip(ALL, "image", "gen_platf", "rle4-height-negative.bmp") 1083 } 1084 1085 if b.matchOs("Mac14") { 1086 // These images are very large 1087 skip(ALL, "image", "gen_platf", "rgb24largepal.bmp") 1088 skip(ALL, "image", "gen_platf", "pal8oversizepal.bmp") 1089 } 1090 1091 // These PNGs have CRC errors. The platform generators seem to draw 1092 // uninitialized memory without reporting an error, so skip them to 1093 // avoid lots of images on Gold. 1094 skip(ALL, "image", "gen_platf", "error") 1095 1096 if b.matchOs("Android") || b.os("iOS") { 1097 // This test crashes the N9 (perhaps because of large malloc/frees). It also 1098 // is fairly slow and not platform-specific. So we just disable it on all of 1099 // Android and iOS. skia:5438 1100 skip(ALL, "test", ALL, "GrStyledShape") 1101 } 1102 1103 if internalHardwareLabel == "5" { 1104 // http://b/118312149#comment9 1105 skip(ALL, "test", ALL, "SRGBReadWritePixels") 1106 } 1107 1108 // skia:4095 1109 badSerializeGMs := []string{ 1110 "strict_constraint_batch_no_red_allowed", // https://crbug.com/skia/10278 1111 "strict_constraint_no_red_allowed", // https://crbug.com/skia/10278 1112 "fast_constraint_red_is_allowed", // https://crbug.com/skia/10278 1113 "c_gms", 1114 "colortype", 1115 "colortype_xfermodes", 1116 "drawfilter", 1117 "fontmgr_bounds_0.75_0", 1118 "fontmgr_bounds_1_-0.25", 1119 "fontmgr_bounds", 1120 "fontmgr_match", 1121 "fontmgr_iter", 1122 "imagemasksubset", 1123 "wacky_yuv_formats_domain", 1124 "imagemakewithfilter", 1125 "imagemakewithfilter_crop", 1126 "imagemakewithfilter_crop_ref", 1127 "imagemakewithfilter_ref", 1128 "imagefilterstransformed", 1129 } 1130 1131 // skia:5589 1132 badSerializeGMs = append(badSerializeGMs, 1133 "bitmapfilters", 1134 "bitmapshaders", 1135 "convex_poly_clip", 1136 "extractalpha", 1137 "filterbitmap_checkerboard_32_32_g8", 1138 "filterbitmap_image_mandrill_64", 1139 "shadows", 1140 "simpleaaclip_aaclip", 1141 ) 1142 1143 // skia:5595 1144 badSerializeGMs = append(badSerializeGMs, 1145 "composeshader_bitmap", 1146 "scaled_tilemodes_npot", 1147 "scaled_tilemodes", 1148 ) 1149 1150 // skia:5778 1151 badSerializeGMs = append(badSerializeGMs, "typefacerendering_pfaMac") 1152 // skia:5942 1153 badSerializeGMs = append(badSerializeGMs, "parsedpaths") 1154 1155 // these use a custom image generator which doesn't serialize 1156 badSerializeGMs = append(badSerializeGMs, "ImageGeneratorExternal_rect") 1157 badSerializeGMs = append(badSerializeGMs, "ImageGeneratorExternal_shader") 1158 1159 // skia:6189 1160 badSerializeGMs = append(badSerializeGMs, "shadow_utils") 1161 badSerializeGMs = append(badSerializeGMs, "graphitestart") 1162 1163 // skia:7938 1164 badSerializeGMs = append(badSerializeGMs, "persp_images") 1165 1166 // Not expected to round trip encoding/decoding. 1167 badSerializeGMs = append(badSerializeGMs, "all_bitmap_configs") 1168 badSerializeGMs = append(badSerializeGMs, "makecolorspace") 1169 badSerializeGMs = append(badSerializeGMs, "readpixels") 1170 badSerializeGMs = append(badSerializeGMs, "draw_image_set_rect_to_rect") 1171 badSerializeGMs = append(badSerializeGMs, "draw_image_set_alpha_only") 1172 badSerializeGMs = append(badSerializeGMs, "compositor_quads_shader") 1173 badSerializeGMs = append(badSerializeGMs, "wacky_yuv_formats_qtr") 1174 badSerializeGMs = append(badSerializeGMs, "runtime_effect_image") 1175 badSerializeGMs = append(badSerializeGMs, "ctmpatheffect") 1176 badSerializeGMs = append(badSerializeGMs, "image_out_of_gamut") 1177 1178 // This GM forces a path to be convex. That property doesn't survive 1179 // serialization. 1180 badSerializeGMs = append(badSerializeGMs, "analytic_antialias_convex") 1181 1182 for _, test := range badSerializeGMs { 1183 skip("serialize-8888", "gm", ALL, test) 1184 } 1185 1186 // We skip these to avoid out-of-memory failures. 1187 if b.matchOs("Win", "Android") { 1188 for _, test := range []string{"verylargebitmap", "verylarge_picture_image"} { 1189 skip("serialize-8888", "gm", ALL, test) 1190 } 1191 } 1192 if b.matchOs("Mac") && b.cpu() { 1193 // skia:6992 1194 skip("pic-8888", "gm", ALL, "encode-platform") 1195 skip("serialize-8888", "gm", ALL, "encode-platform") 1196 } 1197 1198 // skia:14411 -- images are visibly identical, not interested in diagnosing non-determinism here 1199 skip("pic-8888", "gm", ALL, "perlinnoise_layered") 1200 skip("serialize-8888", "gm", ALL, "perlinnoise_layered") 1201 if b.gpu("IntelIrisXe") && !b.extraConfig("Vulkan") { 1202 skip(ALL, "gm", ALL, "perlinnoise_layered") // skia:14411 1203 } 1204 1205 if b.gpu("IntelIrisXe") && b.matchOs("Win") && b.extraConfig("Vulkan") { 1206 skip(ALL, "tests", ALL, "VkYCbcrSampler_DrawImageWithYcbcrSampler") // skia:14628 1207 } 1208 1209 // skia:4769 1210 skip("pic-8888", "gm", ALL, "drawfilter") 1211 1212 // skia:4703 1213 for _, test := range []string{"image-cacherator-from-picture", 1214 "image-cacherator-from-raster", 1215 "image-cacherator-from-ctable"} { 1216 skip("pic-8888", "gm", ALL, test) 1217 skip("serialize-8888", "gm", ALL, test) 1218 } 1219 1220 // GM that requires raster-backed canvas 1221 for _, test := range []string{"complexclip4_bw", "complexclip4_aa", "p3", 1222 "async_rescale_and_read_text_up_large", 1223 "async_rescale_and_read_text_up", 1224 "async_rescale_and_read_text_down", 1225 "async_rescale_and_read_dog_up", 1226 "async_rescale_and_read_dog_down", 1227 "async_rescale_and_read_rose", 1228 "async_rescale_and_read_no_bleed", 1229 "async_rescale_and_read_alpha_type", 1230 "blurrect_compare", // GM requires canvas->makeSurface() to return a valid surface. 1231 "rrect_blurs"} { 1232 skip("pic-8888", "gm", ALL, test) 1233 skip("serialize-8888", "gm", ALL, test) 1234 } 1235 1236 // Extensions for RAW images 1237 r := []string{ 1238 "arw", "cr2", "dng", "nef", "nrw", "orf", "raf", "rw2", "pef", "srw", 1239 "ARW", "CR2", "DNG", "NEF", "NRW", "ORF", "RAF", "RW2", "PEF", "SRW", 1240 } 1241 1242 // skbug.com/4888 1243 // Skip RAW images (and a few large PNGs) on GPU tasks 1244 // until we can resolve failures. 1245 if b.gpu() { 1246 skip(ALL, "image", ALL, "interlaced1.png") 1247 skip(ALL, "image", ALL, "interlaced2.png") 1248 skip(ALL, "image", ALL, "interlaced3.png") 1249 for _, rawExt := range r { 1250 skip(ALL, "image", ALL, "."+rawExt) 1251 } 1252 } 1253 1254 if b.model("Nexus5", "Nexus5x", "JioNext") && b.gpu() { 1255 // skia:5876 1256 skip(ALL, "gm", ALL, "encode-platform") 1257 } 1258 1259 if b.model("AndroidOne") && b.gpu() { // skia:4697, skia:4704, skia:4694, skia:4705, skia:11133 1260 skip(ALL, "gm", ALL, "bigblurs") 1261 skip(ALL, "gm", ALL, "strict_constraint_no_red_allowed") 1262 skip(ALL, "gm", ALL, "fast_constraint_red_is_allowed") 1263 skip(ALL, "gm", ALL, "dropshadowimagefilter") 1264 skip(ALL, "gm", ALL, "filterfastbounds") 1265 skip(glPrefix, "gm", ALL, "imageblurtiled") 1266 skip(ALL, "gm", ALL, "imagefiltersclipped") 1267 skip(ALL, "gm", ALL, "imagefiltersscaled") 1268 skip(ALL, "gm", ALL, "imageresizetiled") 1269 skip(ALL, "gm", ALL, "matrixconvolution") 1270 skip(ALL, "gm", ALL, "strokedlines") 1271 skip(ALL, "gm", ALL, "runtime_intrinsics_matrix") 1272 if sampleCount > 0 { 1273 glMsaaConfig := fmt.Sprintf("%smsaa%d", glPrefix, sampleCount) 1274 skip(glMsaaConfig, "gm", ALL, "imageblurtiled") 1275 skip(glMsaaConfig, "gm", ALL, "imagefiltersbase") 1276 } 1277 } 1278 1279 // b/296440036 1280 // disable broken tests on Adreno 5/6xx Vulkan or API30 1281 if b.matchGpu("Adreno[56]") && (b.extraConfig("Vulkan") || b.extraConfig("API30")) { 1282 skip(ALL, "tests", ALL, "ImageAsyncReadPixels_Renderable_BottomLeft") 1283 skip(ALL, "tests", ALL, "ImageAsyncReadPixels_Renderable_TopLeft") 1284 skip(ALL, "tests", ALL, "ImageAsyncReadPixels_NonRenderable_BottomLeft") 1285 skip(ALL, "tests", ALL, "ImageAsyncReadPixels_NonRenderable_TopLeft") 1286 skip(ALL, "tests", ALL, "SurfaceAsyncReadPixels") 1287 } 1288 1289 if b.matchGpu("Adreno[56]") && b.extraConfig("Vulkan") { 1290 skip(ALL, "gm", ALL, "mesh_with_image") 1291 skip(ALL, "gm", ALL, "mesh_with_paint_color") 1292 skip(ALL, "gm", ALL, "mesh_with_paint_image") 1293 } 1294 1295 if b.matchGpu("Mali400") { 1296 skip(ALL, "tests", ALL, "BlendRequiringDstReadWithLargeCoordinates") 1297 skip(ALL, "tests", ALL, "SkSLCross") // despite the name, it's not in SkSLTest.cpp 1298 } 1299 1300 if b.matchOs("Mac") && (b.gpu("IntelIrisPlus") || b.gpu("IntelHD6000")) && 1301 b.extraConfig("Metal") { 1302 // TODO(skia:296960708): The IntelIrisPlus+Metal config hangs on this test, but passes 1303 // SurfaceContextWritePixelsMipped so let that one keep running. 1304 skip(ALL, "tests", ALL, "SurfaceContextWritePixels") 1305 skip(ALL, "tests", ALL, "SurfaceContextWritePixelsMipped") 1306 skip(ALL, "tests", ALL, "ImageAsyncReadPixels") 1307 skip(ALL, "tests", ALL, "SurfaceAsyncReadPixels") 1308 } 1309 1310 if b.extraConfig("ANGLE") && b.matchOs("Win") && b.matchGpu("IntelIris(540|655|Xe)") { 1311 skip(ALL, "tests", ALL, "ImageFilterCropRect_Gpu") // b/294080402 1312 } 1313 1314 if b.gpu("RTX3060") && b.extraConfig("Vulkan") && b.matchOs("Win") { 1315 skip(ALL, "gm", ALL, "blurcircles2") // skia:13342 1316 } 1317 1318 if b.gpu("QuadroP400") && b.matchOs("Win10") && b.matchModel("Golo") { 1319 // Times out with driver 30.0.15.1179 1320 skip("vkmsaa4", "gm", ALL, "shadow_utils") 1321 } 1322 1323 if b.gpu("RadeonR9M470X") && b.extraConfig("ANGLE") { 1324 // skbug:14293 - ANGLE D3D9 ES2 has flaky texture sampling that leads to fuzzy diff errors 1325 skip(ALL, "tests", ALL, "FilterResult") 1326 // skbug:13815 - Flaky failures on ANGLE D3D9 ES2 1327 skip(ALL, "tests", ALL, "SkRuntimeEffectSimple_Ganesh") 1328 skip(ALL, "tests", ALL, "TestSweepGradientZeroXGanesh") 1329 } 1330 1331 if b.extraConfig("Vulkan") && b.gpu("RadeonVega6") { 1332 skip(ALL, "gm", ALL, "ycbcrimage") // skia:13265 1333 skip(ALL, "test", ALL, "VkYCbcrSampler_DrawImageWithYcbcrSampler") // skia:13265 1334 } 1335 1336 match := []string{} 1337 1338 if b.extraConfig("Graphite") { 1339 // Graphite doesn't do auto-image-tiling so these GMs should remain disabled 1340 match = append(match, "~^verylarge_picture_image$") 1341 match = append(match, "~^verylargebitmap$") 1342 match = append(match, "~^path_huge_aa$") 1343 match = append(match, "~^fast_constraint_red_is_allowed$") 1344 match = append(match, "~^strict_constraint_batch_no_red_allowed$") 1345 match = append(match, "~^strict_constraint_no_red_allowed$") 1346 } 1347 1348 if b.extraConfig("Valgrind") { // skia:3021 1349 match = append(match, "~Threaded") 1350 } 1351 1352 if b.extraConfig("Valgrind") && b.extraConfig("PreAbandonGpuContext") { 1353 // skia:6575 1354 match = append(match, "~multipicturedraw_") 1355 } 1356 1357 if b.model("AndroidOne") { 1358 match = append(match, "~WritePixels") // skia:4711 1359 match = append(match, "~PremulAlphaRoundTrip_Gpu") // skia:7501 1360 match = append(match, "~ReimportImageTextureWithMipLevels") // skia:8090 1361 match = append(match, "~MorphologyFilterRadiusWithMirrorCTM_Gpu") // skia:10383 1362 } 1363 1364 if b.gpu("IntelIrisXe") { 1365 match = append(match, "~ReimportImageTextureWithMipLevels") 1366 } 1367 1368 if b.extraConfig("MSAN") { 1369 match = append(match, "~Once", "~Shared") // Not sure what's up with these tests. 1370 } 1371 1372 // By default, we test with GPU threading enabled, unless specifically 1373 // disabled. 1374 if b.extraConfig("NoGPUThreads") { 1375 args = append(args, "--gpuThreads", "0") 1376 } 1377 1378 if b.extraConfig("Vulkan") && b.gpu("Adreno530") { 1379 // skia:5777 1380 match = append(match, "~CopySurface") 1381 } 1382 1383 // Pixel4XL on the tree is still on Android 10 (Q), and the vulkan drivers 1384 // crash during this GM. It works correctly on newer versions of Android. 1385 // The Pixel3a is also failing on this GM with an invalid return value from 1386 // vkCreateGraphicPipelines. 1387 if b.extraConfig("Vulkan") && (b.model("Pixel4XL") || b.model("Pixel3a")) { 1388 skip("vk", "gm", ALL, "custommesh_cs_uniforms") 1389 } 1390 1391 if b.extraConfig("Vulkan") && b.matchGpu("Adreno") { 1392 // skia:7663 1393 match = append(match, "~WritePixelsNonTextureMSAA_Gpu") 1394 match = append(match, "~WritePixelsMSAA_Gpu") 1395 } 1396 1397 if b.extraConfig("Vulkan") && b.isLinux() && b.gpu("IntelIris640") { 1398 match = append(match, "~VkHeapTests") // skia:6245 1399 } 1400 1401 if b.isLinux() && b.gpu("IntelIris640") { 1402 match = append(match, "~Programs") // skia:7849 1403 } 1404 1405 if b.model("TecnoSpark3Pro", "Wembley") { 1406 // skia:9814 1407 match = append(match, "~Programs") 1408 match = append(match, "~ProcessorCloneTest") 1409 match = append(match, "~ProcessorOptimizationValidationTest") 1410 } 1411 1412 if b.gpu("IntelIris640", "IntelHD615", "IntelHDGraphics615") { 1413 match = append(match, "~^SRGBReadWritePixels$") // skia:9225 1414 } 1415 1416 if b.extraConfig("Vulkan") && b.isLinux() && b.gpu("IntelHD405") { 1417 // skia:7322 1418 skip("vk", "gm", ALL, "skbug_257") 1419 skip("vk", "gm", ALL, "filltypespersp") 1420 match = append(match, "~^ClearOp$") 1421 match = append(match, "~^CopySurface$") 1422 match = append(match, "~^ImageNewShader_GPU$") 1423 match = append(match, "~^InitialTextureClear$") 1424 match = append(match, "~^PinnedImageTest$") 1425 match = append(match, "~^ReadPixels_Gpu$") 1426 match = append(match, "~^ReadPixels_Texture$") 1427 match = append(match, "~^SRGBReadWritePixels$") 1428 match = append(match, "~^VkUploadPixelsTests$") 1429 match = append(match, "~^WritePixelsNonTexture_Gpu$") 1430 match = append(match, "~^WritePixelsNonTextureMSAA_Gpu$") 1431 match = append(match, "~^WritePixels_Gpu$") 1432 match = append(match, "~^WritePixelsMSAA_Gpu$") 1433 } 1434 1435 if b.extraConfig("Metal") && !b.extraConfig("Graphite") && b.gpu("RadeonHD8870M") && b.matchOs("Mac") { 1436 // skia:9255 1437 match = append(match, "~WritePixelsNonTextureMSAA_Gpu") 1438 // skbug.com/11366 1439 match = append(match, "~SurfacePartialDraw_Gpu") 1440 } 1441 1442 if b.extraConfig("Metal") && !b.extraConfig("Graphite") && b.gpu("PowerVRGX6450") && b.matchOs("iOS") { 1443 // skbug.com/11885 1444 match = append(match, "~flight_animated_image") 1445 } 1446 1447 if b.extraConfig("ANGLE") { 1448 // skia:7835 1449 match = append(match, "~BlurMaskBiggerThanDest") 1450 } 1451 1452 if b.gpu("IntelIris6100") && b.extraConfig("ANGLE") && !b.debug() { 1453 // skia:7376 1454 match = append(match, "~^ProcessorOptimizationValidationTest$") 1455 } 1456 1457 if b.gpu("IntelIris6100", "IntelHD4400") && b.extraConfig("ANGLE") { 1458 // skia:6857 1459 skip("angle_d3d9_es2", "gm", ALL, "lighting") 1460 } 1461 1462 if b.gpu("PowerVRGX6250") { 1463 match = append(match, "~gradients_view_perspective_nodither") //skia:6972 1464 } 1465 1466 if b.arch("arm") && b.extraConfig("ASAN") { 1467 // TODO: can we run with env allocator_may_return_null=1 instead? 1468 match = append(match, "~BadImage") 1469 } 1470 1471 if b.arch("arm64") && b.extraConfig("ASAN") { 1472 // skbug.com/13155 the use of longjmp may cause ASAN stack check issues. 1473 skip(ALL, "test", ALL, "SkPDF_JpegIdentification") 1474 } 1475 1476 if b.extraConfig("HWASAN") { 1477 // HWASAN adds tag bytes to pointers. That's incompatible with this test -- it compares 1478 // pointers from unrelated stack frames to check that RP isn't growing the stack. 1479 skip(ALL, "test", ALL, "SkRasterPipeline_stack_rewind") 1480 } 1481 1482 if b.matchOs("Mac") && b.gpu("IntelHD6000") { 1483 // skia:7574 1484 match = append(match, "~^ProcessorCloneTest$") 1485 match = append(match, "~^GrMeshTest$") 1486 } 1487 1488 if b.matchOs("Mac") && b.gpu("IntelHD615") { 1489 // skia:7603 1490 match = append(match, "~^GrMeshTest$") 1491 } 1492 1493 if b.matchOs("Mac") && b.gpu("IntelIrisPlus") { 1494 // skia:7603 1495 match = append(match, "~^GrMeshTest$") 1496 } 1497 1498 if b.matchOs("Mac") && b.gpu("IntelUHDGraphics630") { 1499 // skia:7603 1500 match = append(match, "~^GrMeshTest$") 1501 } 1502 1503 if b.extraConfig("Vulkan") && b.model("GalaxyS20") { 1504 // skia:10247 1505 match = append(match, "~VkPrepareForExternalIOQueueTransitionTest") 1506 } 1507 if b.matchExtraConfig("Graphite") { 1508 // skia:12813 1509 match = append(match, "~async_rescale_and_read") 1510 } 1511 1512 if b.matchExtraConfig("ColorSpaces") { 1513 // Here we reset the 'match' and 'skipped' strings bc the ColorSpaces job only runs 1514 // a very specific subset of the GMs. 1515 skipped = []string{} 1516 match = []string{} 1517 match = append(match, "async_rescale_and_read_dog_up") 1518 match = append(match, "bug6783") 1519 match = append(match, "colorspace") 1520 match = append(match, "colorspace2") 1521 match = append(match, "coloremoji") 1522 match = append(match, "composeCF") 1523 match = append(match, "crbug_224618") 1524 match = append(match, "drawlines_with_local_matrix") 1525 match = append(match, "gradients_interesting") 1526 match = append(match, "manypathatlases_2048") 1527 match = append(match, "custommesh_cs_uniforms") 1528 match = append(match, "paint_alpha_normals_rt") 1529 match = append(match, "runtimefunctions") 1530 match = append(match, "savelayer_f16") 1531 match = append(match, "spiral_rt") 1532 match = append(match, "srgb_colorfilter") 1533 match = append(match, "strokedlines") 1534 match = append(match, "sweep_tiling") 1535 } 1536 1537 if b.matchExtraConfig("RustPNG") { 1538 // TODO(b/356875275) many PNG decoding tests still fail (e.g. those with SkAndroidCodec 1539 // or some from DM's image source). For now, just opt-in the tests we know pass and 1540 // eventually remove this special handling to run all image tests. 1541 skipped = []string{} 1542 match = []string{ 1543 "RustPngCodec", 1544 "RustEncodePng", 1545 } 1546 } 1547 1548 if len(skipped) > 0 { 1549 args = append(args, "--skip") 1550 args = append(args, skipped...) 1551 } 1552 1553 if len(match) > 0 { 1554 args = append(args, "--match") 1555 args = append(args, match...) 1556 } 1557 1558 // These devices run out of memory running RAW codec tests. Do not run them in 1559 // parallel 1560 // TODO(borenet): Previously this was `'Nexus5' in bot or 'Nexus9' in bot` 1561 // which also matched 'Nexus5x'. I added That here to maintain the 1562 // existing behavior, but we should verify that it's needed. 1563 if b.model("Nexus5", "Nexus5x", "Nexus9", "JioNext") { 1564 args = append(args, "--noRAW_threading") 1565 } 1566 1567 if b.extraConfig("NativeFonts") { 1568 args = append(args, "--nativeFonts") 1569 if !b.matchOs("Android") { 1570 args = append(args, "--paragraph_fonts", "extra_fonts") 1571 args = append(args, "--norun_paragraph_tests_needing_system_fonts") 1572 } 1573 } else { 1574 args = append(args, "--nonativeFonts") 1575 } 1576 if b.extraConfig("GDI") { 1577 args = append(args, "--gdi") 1578 } 1579 if b.extraConfig("Fontations") { 1580 args = append(args, "--fontations") 1581 } 1582 if b.extraConfig("AndroidNDKFonts") { 1583 args = append(args, "--androidndkfonts") 1584 } 1585 1586 // Let's make all tasks produce verbose output by default. 1587 args = append(args, "--verbose") 1588 1589 // See skia:2789. 1590 if b.extraConfig("AbandonGpuContext") { 1591 args = append(args, "--abandonGpuContext") 1592 } 1593 if b.extraConfig("PreAbandonGpuContext") { 1594 args = append(args, "--preAbandonGpuContext") 1595 } 1596 if b.extraConfig("ReleaseAndAbandonGpuContext") { 1597 args = append(args, "--releaseAndAbandonGpuContext") 1598 } 1599 1600 if b.extraConfig("NeverYield") { 1601 args = append(args, "--neverYieldToWebGPU") 1602 } 1603 1604 if b.extraConfig("FailFlushTimeCallbacks") { 1605 args = append(args, "--failFlushTimeCallbacks") 1606 } 1607 1608 // Finalize the DM flags and properties. 1609 b.recipeProp("dm_flags", marshalJson(args)) 1610 b.recipeProp("dm_properties", marshalJson(properties)) 1611 1612 // Add properties indicating which assets the task should use. 1613 if b.matchExtraConfig("Lottie") { 1614 b.asset("lottie-samples") 1615 b.recipeProp("lotties", "true") 1616 } else if b.matchExtraConfig("OldestSupportedSkpVersion") { 1617 b.recipeProp("skps", "true") 1618 } else { 1619 b.asset("skimage") 1620 b.recipeProp("images", "true") 1621 b.asset("skp") 1622 b.recipeProp("skps", "true") 1623 b.asset("svg") 1624 b.recipeProp("svgs", "true") 1625 } 1626 b.recipeProp("do_upload", fmt.Sprintf("%t", b.doUpload())) 1627 b.recipeProp("resources", "true") 1628} 1629