• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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