1# This file list source dependencies to avoid creating/running jobs 2# those outcome cannot be changed by the modifications from a branch. 3 4# Rule to filter for only scheduled pipelines. 5.scheduled_pipeline-rules: 6 rules: 7 - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"' 8 when: on_success 9 10# Generic rule to not run the job during scheduled pipelines. Jobs that aren't 11# something like a nightly run should include this rule. 12.no_scheduled_pipelines-rules: 13 rules: 14 - if: *is-scheduled-pipeline 15 when: never 16 17# Mesa core source file dependencies that may impact any test job 18# --------------------------------------------------------------- 19.core-rules: 20 rules: 21 - !reference [.no_scheduled_pipelines-rules, rules] 22 - changes: &core_file_list 23 - .gitlab-ci.yml 24 - .gitlab-ci/**/* 25 - include/**/* 26 - meson.build 27 - .gitattributes 28 - src/* 29 - src/compiler/**/* 30 - src/drm-shim/**/* 31 - src/gbm/**/* 32 - src/gtest/**/* 33 - src/hgl/**/* 34 - src/include/**/* 35 # Some src/util and src/compiler files use headers from mesa/ (e.g. 36 # mtypes.h). We should clean that up. 37 - src/mesa/**/*.h 38 - src/tool/**/* 39 - src/util/**/* 40 when: on_success 41 42# Mesa source file dependencies that may impact any GL driver test job. 43.gl-rules: 44 rules: 45 - !reference [.core-rules, rules] 46 - changes: &mesa_core_file_list 47 - src/egl/**/* 48 - src/glx/**/* 49 - src/loader/**/* 50 - src/mapi/**/* 51 - src/mesa/* 52 - src/mesa/main/**/* 53 - src/mesa/math/**/* 54 - src/mesa/program/**/* 55 - src/mesa/sparc/**/* 56 - src/mesa/state_tracker/**/* 57 - src/mesa/swrast/**/* 58 - src/mesa/swrast_setup/**/* 59 - src/mesa/vbo/**/* 60 - src/mesa/x86/**/* 61 - src/mesa/x86-64/**/* 62 when: on_success 63 - changes: &gallium_core_file_list 64 - src/gallium/* 65 - src/gallium/auxiliary/**/* 66 - src/gallium/drivers/* 67 - src/gallium/include/**/* 68 - src/gallium/frontends/dri/* 69 - src/gallium/frontends/glx/**/* 70 - src/gallium/targets/**/* 71 - src/gallium/tests/**/* 72 - src/gallium/winsys/* 73 when: on_success 74 75# Source file dependencies that may impact any Vulkan driver build or test 76.vulkan-rules: 77 rules: 78 - !reference [.core-rules, rules] 79 - changes: &vulkan_file_list 80 - src/vulkan/**/* 81 when: on_success 82 83.softpipe-rules: 84 stage: software-renderer 85 rules: 86 - !reference [.gl-rules, rules] 87 - changes: &softpipe_file_list 88 - src/gallium/drivers/softpipe/**/* 89 - src/gallium/winsys/sw/**/* 90 when: on_success 91 92.llvmpipe-rules: 93 stage: software-renderer 94 rules: 95 - !reference [.gl-rules, rules] 96 - changes: &llvmpipe_file_list 97 - src/gallium/drivers/llvmpipe/**/* 98 - src/gallium/winsys/sw/**/* 99 when: on_success 100 101.lavapipe-rules: 102 stage: software-renderer 103 rules: 104 - !reference [.vulkan-rules, rules] 105 # One could probably be a little more clever here and skip non-gallium Mesa changes (see also .llvmpipe-cl-rules). 106 - !reference [.gl-rules, rules] 107 - changes: &lavapipe_file_list 108 - src/gallium/drivers/llvmpipe/**/* 109 - src/gallium/frontends/lavapipe/**/* 110 - src/gallium/winsys/sw/**/* 111 when: on_success 112 113.llvmpipe-cl-rules: 114 stage: software-renderer 115 rules: 116 - !reference [.no_scheduled_pipelines-rules, rules] 117 - changes: 118 - .gitlab-ci.yml 119 - .gitlab-ci/**/* 120 - meson.build 121 - .gitattributes 122 - include/**/* 123 - src/compiler/**/* 124 - src/include/**/* 125 - src/util/**/* 126 when: on_success 127 - changes: 128 *gallium_core_file_list 129 when: on_success 130 - changes: 131 *llvmpipe_file_list 132 when: on_success 133 - changes: &clover_file_list 134 - src/gallium/frontends/clover/**/* 135 when: on_success 136 137.collabora-farm-rules: 138 rules: 139 - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/' 140 when: never 141 142.igalia-farm-rules: 143 rules: 144 - if: '$IGALIA_FARM == "offline"' 145 when: never 146 147# Skips freedreno jobs if either of the farms we use are offline. 148.freedreno-farm-rules: 149 rules: 150 - if: '$FD_FARM == "offline"' 151 when: never 152 - !reference [.collabora-farm-rules, rules] 153 154# Rules for changes that impact either freedreno or turnip. 155.freedreno-common-rules: 156 rules: 157 - !reference [.freedreno-farm-rules, rules] 158 - changes: &freedreno_core_file_list 159 - src/freedreno/ci/**/* 160 - src/freedreno/common/**/* 161 - src/freedreno/drm/**/* 162 - src/freedreno/fdl/**/* 163 - src/freedreno/ir3/**/* 164 - src/freedreno/isa/**/* 165 - src/freedreno/registers/**/* 166 when: on_success 167 168.freedreno-rules: 169 stage: freedreno 170 rules: 171 - !reference [.gl-rules, rules] 172 - !reference [.freedreno-common-rules, rules] 173 - changes: &freedreno_gl_file_list 174 - src/freedreno/ir2/**/* 175 - src/gallium/drivers/freedreno/**/* 176 - src/gallium/winsys/freedreno/**/* 177 when: on_success 178 179.turnip-rules: 180 stage: freedreno 181 rules: 182 - !reference [.vulkan-rules, rules] 183 - !reference [.freedreno-common-rules, rules] 184 - changes: 185 - src/freedreno/vulkan/**/* 186 when: on_success 187 188# For piglit and skqp test jobs that run both GL and VK tests. 189.freedreno-turnip-rules: 190 rules: 191 - !reference [.freedreno-rules, rules] 192 - !reference [.turnip-rules, rules] 193 194.freedreno-rules-restricted: 195 stage: freedreno 196 rules: 197 # If the triggerer has access to the restricted traces and if it is pre-merge 198 - if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu|okias)$/") && 199 ($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)' 200 when: never 201 - !reference [.freedreno-rules, rules] 202 203# Rules for GL driver performance tracking. We want them to run as code is 204# merged to main, but we don't want them to block marge. So, they need to have 205# only when: never or when: manual, and a separate script maintained by 206# Collabora triggers the manual job after merge to main. 207.gl-rules-performance: 208 rules: 209 - !reference [.no_scheduled_pipelines-rules, rules] 210 # Run only on pre-merge pipelines from Marge 211 - if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH' 212 when: never 213 - changes: 214 *mesa_core_file_list 215 when: manual 216 - changes: 217 *gallium_core_file_list 218 when: manual 219 220# Unfortunately YAML doesn't let us concatenate arrays, so we have to do the 221# rules duplication manually 222.freedreno-rules-performance: 223 stage: freedreno 224 rules: 225 - !reference [.freedreno-farm-rules, rules] 226 - !reference [.gl-rules-performance, rules] 227 - changes: 228 *freedreno_core_file_list 229 when: manual 230 - changes: 231 *freedreno_gl_file_list 232 when: manual 233 234.nouveau-rules: 235 stage: nouveau 236 rules: 237 - !reference [.gl-rules, rules] 238 - changes: 239 - src/nouveau/**/* 240 - src/gallium/drivers/nouveau/**/* 241 - src/gallium/winsys/kmsro/**/* 242 - src/gallium/winsys/nouveau/**/* 243 when: on_success 244 245.panfrost-midgard-rules: 246 stage: arm 247 rules: 248 - !reference [.collabora-farm-rules, rules] 249 - !reference [.gl-rules, rules] 250 - changes: &panfrost_gallium_file_list 251 - src/gallium/drivers/panfrost/**/* 252 - src/gallium/winsys/panfrost/**/* 253 when: on_success 254 - changes: &panfrost_common_file_list 255 - src/panfrost/ci/* 256 - src/panfrost/include/* 257 - src/panfrost/lib/* 258 - src/panfrost/shared/* 259 - src/panfrost/util/* 260 when: on_success 261 - changes: 262 - src/panfrost/midgard/**/* 263 when: on_success 264 265.panfrost-bifrost-rules: 266 stage: arm 267 rules: 268 - !reference [.collabora-farm-rules, rules] 269 - !reference [.vulkan-rules, rules] 270 - !reference [.gl-rules, rules] 271 - changes: 272 *panfrost_common_file_list 273 when: on_success 274 - changes: 275 *panfrost_gallium_file_list 276 when: on_success 277 - changes: &panfrost_vulkan_file_list 278 - src/panfrost/vulkan/* 279 when: on_success 280 - changes: 281 - src/panfrost/bifrost/**/* 282 when: on_success 283 284.vc4-rules: 285 stage: broadcom 286 rules: 287 - !reference [.igalia-farm-rules, rules] 288 - !reference [.gl-rules, rules] 289 - changes: 290 - src/broadcom/**/* 291 - src/gallium/drivers/vc4/**/* 292 - src/gallium/winsys/kmsro/**/* 293 - src/gallium/winsys/vc4/**/* 294 when: on_success 295 296.v3d-rules: 297 stage: broadcom 298 rules: 299 - !reference [.igalia-farm-rules, rules] 300 - !reference [.gl-rules, rules] 301 - changes: 302 - src/broadcom/**/* 303 - src/gallium/drivers/v3d/**/* 304 - src/gallium/winsys/kmsro/**/* 305 - src/gallium/winsys/v3d/**/* 306 when: on_success 307 308.v3dv-rules: 309 stage: broadcom 310 rules: 311 - !reference [.igalia-farm-rules, rules] 312 - !reference [.vulkan-rules, rules] 313 - changes: 314 - src/broadcom/**/* 315 when: on_success 316 317.lima-rules: 318 stage: arm 319 rules: 320 - if: '$LIMA_FARM == "offline"' 321 when: never 322 - !reference [.gl-rules, rules] 323 - changes: 324 - src/gallium/drivers/lima/**/* 325 - src/gallium/winsys/lima/**/* 326 - src/lima/**/* 327 when: on_success 328 329.radv-rules: 330 stage: amd 331 rules: 332 - !reference [.collabora-farm-rules, rules] 333 - !reference [.vulkan-rules, rules] 334 - changes: &radv_file_list 335 - src/amd/**/* 336 - src/vulkan/**/* 337 when: on_success 338 339.virgl-rules: 340 stage: layered-backends 341 rules: 342 - !reference [.gl-rules, rules] 343 - changes: 344 *llvmpipe_file_list 345 when: on_success 346 - changes: &virgl_file_list 347 - src/gallium/drivers/virgl/**/* 348 - src/gallium/winsys/virgl/**/* 349 when: on_success 350 351# Unfortunately we can't sed the on_success from another rules set, so we have 352# to do duplicate the files lists to set the job to manual (see 353# .gl-rules-performance) 354.virgl-iris-rules-performance: 355 stage: layered-backends 356 rules: 357 - !reference [.collabora-farm-rules, rules] 358 - !reference [.gl-rules-performance, rules] 359 - changes: 360 *llvmpipe_file_list 361 when: manual 362 - changes: 363 *virgl_file_list 364 when: manual 365 366.radeonsi-rules: 367 stage: amd 368 rules: 369 - !reference [.collabora-farm-rules, rules] 370 - !reference [.gl-rules, rules] 371 - changes: &radeonsi_file_list 372 - src/gallium/drivers/radeonsi/**/* 373 - src/gallium/include/winsys/**/* 374 - src/gallium/winsys/amdgpu/**/* 375 - src/amd/* 376 - src/amd/addrlib/**/* 377 - src/amd/common/**/* 378 - src/amd/llvm/**/* 379 - src/amd/registers/**/* 380 when: on_success 381 382.radeonsi-vaapi-rules: 383 stage: amd 384 rules: 385 - !reference [.collabora-farm-rules, rules] 386 - !reference [.gl-rules, rules] 387 - changes: 388 *radeonsi_file_list 389 when: on_success 390 - changes: &radeon_vcn_file_list 391 - src/gallium/frontends/va/**/* 392 when: on_success 393 394.i915g-rules: 395 stage: intel 396 rules: 397 - !reference [.gl-rules, rules] 398 - changes: 399 - src/gallium/drivers/i915/**/* 400 - src/gallium/winsys/i915/**/* 401 - src/intel/**/* 402 when: on_success 403 404.crocus-rules: 405 stage: intel 406 rules: 407 - !reference [.gl-rules, rules] 408 - changes: 409 - src/gallium/drivers/crocus/**/* 410 - src/gallium/winsys/crocus/**/* 411 - src/intel/**/* 412 when: on_success 413 414.iris-rules: 415 stage: intel 416 rules: 417 - !reference [.no_scheduled_pipelines-rules, rules] 418 - !reference [.collabora-farm-rules, rules] 419 - !reference [.gl-rules, rules] 420 - changes: &iris_file_list 421 - src/gallium/drivers/iris/**/* 422 - src/gallium/winsys/iris/**/* 423 - src/intel/**/* 424 when: on_success 425 426# Unfortunately we can't sed the on_success from another rules set, so we have 427# to do duplicate the files lists to set the job to manual (see 428# .gl-rules-performance) 429.iris-rules-performance: 430 stage: intel 431 rules: 432 - !reference [.collabora-farm-rules, rules] 433 - !reference [.gl-rules-performance, rules] 434 - changes: 435 *iris_file_list 436 when: manual 437 438.anv-rules: 439 stage: intel 440 rules: 441 - !reference [.no_scheduled_pipelines-rules, rules] 442 - !reference [.collabora-farm-rules, rules] 443 - !reference [.vulkan-rules, rules] 444 - changes: 445 - src/intel/**/* 446 when: on_success 447 448.intel-rules: 449 stage: intel 450 rules: 451 - !reference [.collabora-farm-rules, rules] 452 # Note that we trigger on changes both anv and iris, because piglit and skqp jobs test both. 453 - !reference [.vulkan-rules, rules] 454 - !reference [.gl-rules, rules] 455 - changes: &iris_file_list 456 - src/gallium/drivers/iris/**/* 457 - src/gallium/winsys/iris/**/* 458 - src/intel/**/* 459 when: on_success 460 461.zink-common-rules: 462 rules: 463 - !reference [.gl-rules, rules] 464 - changes: 465 - src/gallium/drivers/zink/**/* 466 when: on_success 467 468.zink-lvp-rules: 469 stage: layered-backends 470 rules: 471 - !reference [.zink-common-rules, rules] 472 - !reference [.lavapipe-rules, rules] 473 474.zink-anv-rules: 475 stage: layered-backends 476 rules: 477 - !reference [.zink-common-rules, rules] 478 - !reference [.anv-rules, rules] 479 480.zink-turnip-rules: 481 stage: layered-backends 482 rules: 483 - !reference [.zink-common-rules, rules] 484 - !reference [.turnip-rules, rules] 485 486# Unfortunately YAML doesn't let us concatenate arrays, so we have to do the 487# rules duplication manually 488.windows-build-rules: 489 rules: 490 - if: '$MICROSOFT_FARM == "offline"' 491 when: never 492 - !reference [.zink-common-rules, rules] 493 - !reference [.vulkan-rules, rules] 494 - changes: 495 *softpipe_file_list 496 when: on_success 497 - changes: 498 *lavapipe_file_list 499 when: on_success 500 - changes: &d3d12_file_list 501 - src/gallium/drivers/d3d12/**/* 502 - src/gallium/frontends/wgl/* 503 - src/gallium/winsys/d3d12/wgl/* 504 - src/gallium/targets/libgl-gdi/* 505 - src/gallium/targets/libgl-d3d12/* 506 when: on_success 507 - changes: 508 - src/microsoft/**/* 509 when: on_success 510 - changes: 511 *radv_file_list 512 when: on_success 513 514.glon12-test-rules: 515 rules: 516 - if: '$MICROSOFT_FARM == "offline"' 517 when: never 518 - !reference [.gl-rules, rules] 519 - changes: *d3d12_file_list 520 when: on_success 521 - changes: 522 - src/microsoft/compiler/* 523 when: on_success 524 525.spirv2dxil-test-rules: 526 rules: 527 - if: '$MICROSOFT_FARM == "offline"' 528 when: never 529 - !reference [.no_scheduled_pipelines-rules, rules] 530 - !reference [.core-rules, rules] 531 - changes: &spirv2dxil_file_list 532 - src/microsoft/ci/* 533 - src/microsoft/compiler/* 534 - src/microsoft/spirv_to_dxil/* 535 when: on_success 536 537.dozen-test-rules: 538 rules: 539 - if: '$MICROSOFT_FARM == "offline"' 540 when: never 541 - !reference [.vulkan-rules, rules] 542 - changes: 543 *spirv2dxil_file_list 544 when: on_success 545 - changes: 546 - src/microsoft/vulkan/* 547 when: on_success 548 549.etnaviv-rules: 550 stage: etnaviv 551 rules: 552 - !reference [.gl-rules, rules] 553 - changes: 554 - src/etnaviv/**/* 555 - src/gallium/drivers/etnaviv/**/* 556 - src/gallium/winsys/etnaviv/**/* 557 - src/gallium/auxiliary/renderonly/**/* 558 - src/gallium/winsys/kmsro/**/* 559 - src/gallium/winsys/etnaviv/**/* 560 when: on_success 561 562# Rules for unusual architectures that only build a subset of drivers 563.ppc64el-rules: 564 rules: 565 - !reference [.no_scheduled_pipelines-rules, rules] 566 - !reference [.zink-common-rules, rules] 567 - changes: 568 *softpipe_file_list 569 when: on_success 570 - changes: 571 *llvmpipe_file_list 572 when: on_success 573 - changes: 574 *lavapipe_file_list 575 when: on_success 576 - changes: 577 *radv_file_list 578 when: on_success 579 - changes: 580 *radeonsi_file_list 581 when: on_success 582 - changes: 583 *virgl_file_list 584 when: on_success 585 - changes: 586 - src/gallium/drivers/nouveau/**/* 587 - src/gallium/winsys/nouveau/**/* 588 when: on_success 589 590.s390x-rules: 591 rules: 592 - !reference [.no_scheduled_pipelines-rules, rules] 593 - !reference [.zink-common-rules, rules] 594 - changes: 595 *softpipe_file_list 596 when: on_success 597 - changes: 598 *llvmpipe_file_list 599 when: on_success 600 - changes: 601 *lavapipe_file_list 602 when: on_success 603