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