ci: Append $MESA_TEMPLATES_COMMIT to image tags
[platform/upstream/mesa.git] / .gitlab-ci.yml
1 variables:
2   FDO_UPSTREAM_REPO: mesa/mesa
3   MESA_TEMPLATES_COMMIT: &ci-templates-commit 43ac932d5b8ebf43040d302de3c6e734df178384
4   CI_PRE_CLONE_SCRIPT: |-
5           set -o xtrace
6           /usr/bin/wget -q -O- ${CI_PROJECT_URL}/-/raw/${CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh | sh -
7           set +o xtrace
8
9 include:
10   - project: 'freedesktop/ci-templates'
11     ref: *ci-templates-commit
12     file:
13       - '/templates/ci-fairy.yml'
14   - project: 'freedesktop/ci-templates'
15     ref: 52dd4a94044449c8481d18dcdc221a3c636366d2
16     file:
17       - '/templates/debian.yml'
18   - local: '.gitlab-ci/lava-gitlab-ci.yml'
19   - local: '.gitlab-ci/test-source-dep.yml'
20
21 stages:
22   - sanity
23   - container
24   - container-2
25   - git-archive
26   - deploy
27   - meson-x86_64
28   - build-misc
29   - amd
30   - arm
31   - freedreno
32   - raspberrypi
33   - software-renderer
34   - layered-backends
35   - success
36
37 # Generic rule to not run the job during scheduled pipelines
38 # ----------------------------------------------------------
39 .scheduled_pipelines-rules:
40   rules: &ignore_scheduled_pipelines
41     if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
42     when: never
43
44 # YAML anchors for rule conditions
45 # --------------------------------
46 .rules-anchors:
47   rules:
48     # For Marge Bot
49     - if: &is-for-marge '$GITLAB_USER_LOGIN == "marge-bot"'
50       when: never
51     # Forked project branch
52     - if: &is-forked-branch '$CI_PROJECT_NAMESPACE != "mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
53       when: manual
54     # Forked project branch / pre-merge pipeline
55     - if: &is-forked-branch-or-pre-merge '$CI_PROJECT_NAMESPACE != "mesa" || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
56       when: manual
57     # Pipeline runs for the master branch of the main project
58     - if: &is-main-master '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == "master" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != "master"'
59       when: always
60     # Post-merge pipeline
61     - if: &is-post-merge '$CI_PROJECT_NAMESPACE == "mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
62       when: on_success
63     # Post-merge pipeline, not for Marge Bot
64     - if: &is-post-merge-not-for-marge '$CI_PROJECT_NAMESPACE == "mesa" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
65       when: on_success
66     # Pre-merge pipeline
67     - if: &is-pre-merge '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
68       when: on_success
69     # Pre-merge pipeline for Marge Bot
70     - if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
71       when: on_success
72
73
74 .docs-base:
75   extends:
76     - .fdo.ci-fairy
77     - .ci-run-policy
78   script:
79   - apk --no-cache add graphviz
80   - pip3 install sphinx sphinx_rtd_theme
81   - sphinx-build -b html docs public
82
83 pages:
84   extends: .docs-base
85   stage: deploy
86   artifacts:
87     paths:
88     - public
89   needs: []
90   rules:
91     - *ignore_scheduled_pipelines
92     - if: *is-main-master
93       changes: &docs-or-ci
94       - docs/**/*
95       - .gitlab-ci.yml
96       when: always
97     # Other cases default to never
98
99 test-docs:
100   extends: .docs-base
101   # Cancel job if a newer commit is pushed to the same branch
102   interruptible: true
103   stage: deploy
104   needs:
105     - sanity
106   rules:
107     - if: *is-pre-merge-for-marge
108       changes: *docs-or-ci
109       when: on_success
110     - if: *is-forked-branch-or-pre-merge
111       changes: *docs-or-ci
112       when: manual
113     # Other cases default to never
114
115 # When to automatically run the CI
116 .ci-run-policy:
117   rules:
118     - *ignore_scheduled_pipelines
119     # If any files affecting the pipeline are changed, build/test jobs run
120     # automatically once all dependency jobs have passed
121     - changes: &all_paths
122       - VERSION
123       - bin/git_sha1_gen.py
124       - bin/install_megadrivers.py
125       - bin/meson_get_version.py
126       - bin/symbols-check.py
127       # GitLab CI
128       - .gitlab-ci.yml
129       - .gitlab-ci/**/*
130       # Meson
131       - meson*
132       - build-support/**/*
133       - subprojects/**/*
134       # SCons
135       - SConstruct
136       - scons/**/*
137       - common.py
138       # Source code
139       - include/**/*
140       - src/**/*
141       when: on_success
142     # Otherwise, build/test jobs won't run
143     - when: never
144   retry:
145     max: 2
146     when:
147       - runner_system_failure
148
149 success:
150   stage: success
151   image: debian:stable-slim
152   rules:
153     - *ignore_scheduled_pipelines
154     - if: *is-post-merge
155       when: never
156     - if: *is-for-marge
157       changes: *docs-or-ci
158       when: never
159     - changes: *all_paths
160       when: never
161     - if: *is-pre-merge
162       when: on_success
163   variables:
164     GIT_STRATEGY: none
165   script:
166     - echo "Dummy job to make sure every merge request pipeline runs at least one job"
167
168
169 .ci-deqp-artifacts:
170   artifacts:
171     name: "mesa_${CI_JOB_NAME}"
172     when: always
173     untracked: false
174     paths:
175       # Watch out!  Artifacts are relative to the build dir.
176       # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
177       - artifacts
178
179 # Build the CI docker images.
180 #
181 # MESA_IMAGE_TAG is the tag of the docker image used by later stage jobs. If the
182 # image doesn't exist yet, the container stage job generates it.
183 #
184 # In order to generate a new image, one should generally change the tag.
185 # While removing the image from the registry would also work, that's not
186 # recommended except for ephemeral images during development: Replacing
187 # an image after a significant amount of time might pull in newer
188 # versions of gcc/clang or other packages, which might break the build
189 # with older commits using the same tag.
190 #
191 # After merging a change resulting in generating a new image to the
192 # main repository, it's recommended to remove the image from the source
193 # repository's container registry, so that the image from the main
194 # repository's registry will be used there as well.
195
196 .container:
197   stage: container
198   extends:
199     - .ci-run-policy
200   rules:
201     - *ignore_scheduled_pipelines
202     # Run pipeline by default in the main project if any CI pipeline
203     # configuration files were changed, to ensure docker images are up to date
204     - if: *is-post-merge
205       changes:
206       - .gitlab-ci.yml
207       - .gitlab-ci/**/*
208       when: on_success
209     # Run pipeline by default if it was triggered by Marge Bot, is for a
210     # merge request, and any files affecting the pipeline were changed
211     - if: *is-pre-merge-for-marge
212       changes:
213         *all_paths
214       when: on_success
215     # Run pipeline by default in the main project if it was not triggered by
216     # Marge Bot, and any files affecting the pipeline were changed
217     - if: *is-post-merge-not-for-marge
218       changes:
219         *all_paths
220       when: on_success
221     # Allow triggering jobs manually in other cases if any files affecting the
222     # pipeline were changed
223     - changes:
224         *all_paths
225       when: manual
226     # Otherwise, container jobs won't run
227     - when: never
228   variables:
229     FDO_BASE_IMAGE: "${MESA_BASE_IMAGE}-${MESA_TEMPLATES_COMMIT}"
230     FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}-${MESA_TEMPLATES_COMMIT}"
231     FDO_DISTRIBUTION_VERSION: buster-slim
232     FDO_REPO_SUFFIX: "debian/$CI_JOB_NAME"
233     FDO_DISTRIBUTION_EXEC: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
234     # no need to pull the whole repo to build the container image
235     GIT_STRATEGY: none
236
237 # Debian 10 based x86 build image base
238 x86_build-base:
239   extends:
240     - .fdo.container-build@debian
241     - .container
242   variables:
243     MESA_IMAGE_TAG: &x86_build-base "2020-12-02"
244
245 .use-x86_build-base:
246   extends:
247     - x86_build-base
248     - .ci-run-policy
249   stage: container-2
250   variables:
251     BASE_TAG: *x86_build-base
252     MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/x86_build-base:${BASE_TAG}"
253   needs:
254     - x86_build-base
255
256 # Debian 10 based x86 main build image
257 x86_build:
258   extends:
259     - .use-x86_build-base
260   variables:
261     MESA_IMAGE_TAG: &x86_build "2020-12-02"
262
263 .use-x86_build:
264   variables:
265     TAG: *x86_build
266   image: "$CI_REGISTRY_IMAGE/debian/x86_build:${TAG}-${MESA_TEMPLATES_COMMIT}"
267   needs:
268     - x86_build
269
270 # Debian 10 based i386 cross-build image
271 i386_build:
272   extends:
273     - .use-x86_build-base
274   variables:
275     MESA_IMAGE_TAG: &i386_build "2020-12-02"
276
277 .use-i386_build:
278   variables:
279     TAG: *i386_build
280   image: "$CI_REGISTRY_IMAGE/debian/i386_build:${TAG}-${MESA_TEMPLATES_COMMIT}"
281   needs:
282     - i386_build
283
284 # Debian 10 based ppc64el cross-build image
285 ppc64el_build:
286   extends:
287     - .use-x86_build-base
288   variables:
289     MESA_IMAGE_TAG: &ppc64el_build "2020-12-02"
290
291 .use-ppc64el_build:
292   variables:
293     TAG: *ppc64el_build
294   image: "$CI_REGISTRY_IMAGE/debian/ppc64el_build:${TAG}-${MESA_TEMPLATES_COMMIT}"
295   needs:
296     - ppc64el_build
297
298 # Debian 10 based s390x cross-build image
299 s390x_build:
300   extends:
301     - .use-x86_build-base
302   variables:
303     MESA_IMAGE_TAG: &s390x_build "2020-12-02"
304
305 .use-s390x_build:
306   variables:
307     TAG: *s390x_build
308   image: "$CI_REGISTRY_IMAGE/debian/s390x_build:${TAG}-${MESA_TEMPLATES_COMMIT}"
309   needs:
310     - s390x_build
311
312 # Android NDK cross-build image
313 android_build:
314   extends:
315     - .use-x86_build-base
316   variables:
317     MESA_IMAGE_TAG: &android_build "2020-12-02"
318
319 .use-android_build:
320   variables:
321     TAG: *android_build
322   image: "$CI_REGISTRY_IMAGE/debian/android_build:${TAG}-${MESA_TEMPLATES_COMMIT}"
323   needs:
324     - android_build
325
326 # Debian 10 based x86 test image base
327 x86_test-base:
328   extends: x86_build-base
329   variables:
330     MESA_IMAGE_TAG: &x86_test-base "2020-12-02"
331
332 .use-x86_test-base:
333   extends:
334     - x86_build-base
335     - .ci-run-policy
336   stage: container-2
337   variables:
338     BASE_TAG: *x86_test-base
339     MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/x86_test-base:${BASE_TAG}"
340   needs:
341     - x86_test-base
342
343 # Debian 10 based x86 test image for GL
344 x86_test-gl:
345   extends: .use-x86_test-base
346   variables:
347     MESA_IMAGE_TAG: &x86_test-gl "2020-11-06-deqp-version"
348
349 # Debian 10 based x86 test image for VK
350 x86_test-vk:
351   extends: .use-x86_test-base
352   variables:
353     MESA_IMAGE_TAG: &x86_test-vk "2020-11-06-deqp-version"
354
355 # Debian 9 based x86 build image (old LLVM)
356 x86_build_old:
357   extends: x86_build-base
358   variables:
359     MESA_IMAGE_TAG: &x86_build_old "2020-12-02"
360     FDO_DISTRIBUTION_VERSION: stretch-slim
361
362 .use-x86_build_old:
363   variables:
364     TAG: *x86_build_old
365   image: "$CI_REGISTRY_IMAGE/debian/x86_build_old:${TAG}-${MESA_TEMPLATES_COMMIT}"
366   needs:
367     - x86_build_old
368
369 # Debian 10 based ARM build image
370 arm_build:
371   extends:
372     - .fdo.container-build@debian@arm64v8
373     - .container
374   variables:
375     MESA_IMAGE_TAG: &arm_build "2020-12-02"
376
377 .use-arm_build:
378   variables:
379     TAG: *arm_build
380   image: "$CI_REGISTRY_IMAGE/debian/arm_build:${TAG}-${MESA_TEMPLATES_COMMIT}"
381   needs:
382     - arm_build
383
384 # Debian 10 based x86 baremetal image base
385 arm_test-base:
386   extends:
387     - .fdo.container-build@debian
388     - .container
389   variables:
390     MESA_IMAGE_TAG: &arm_test-base "2020-12-03-expect"
391
392 .use-arm_test-base:
393   extends:
394     - arm_test-base
395     - .ci-run-policy
396   stage: container-2
397   variables:
398     BASE_TAG: *arm_test-base
399     MESA_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/arm_test-base:${BASE_TAG}"
400   needs:
401     - arm_test-base
402
403 # x86 image with ARM64 rootfs for baremetal testing.
404 arm64_test:
405   extends:
406     - .use-arm_test-base
407   variables:
408     MESA_IMAGE_TAG: &arm64_test "2020-12-03-expect"
409
410 .use-arm64_test:
411   variables:
412     TAG: *arm64_test
413   image: "$CI_REGISTRY_IMAGE/debian/arm64_test:${TAG}-${MESA_TEMPLATES_COMMIT}"
414   needs:
415     - arm64_test
416
417 # x86 image with armhf rootfs for baremetal testing
418 armhf_test:
419   extends:
420     - .use-arm_test-base
421   variables:
422     FDO_DISTRIBUTION_TAG: &armhf_test "2020-12-03-expect"
423
424 .use-armhf_test:
425   variables:
426     TAG: *armhf_test
427   image: "$CI_REGISTRY_IMAGE/debian/armhf_test:$TAG"
428   needs:
429     - armhf_test
430
431 # Native Windows docker builds
432 #
433 # Unlike the above Linux-based builds - including MinGW/SCons builds which
434 # cross-compile for Windows - which use the freedesktop ci-templates, we
435 # cannot use the same scheme here. As Windows lacks support for
436 # Docker-in-Docker, and Podman does not run natively on Windows, we have
437 # to open-code much of the same ourselves.
438 #
439 # This is achieved by first running in a native Windows shell instance
440 # (host PowerShell) in the container stage to build and push the image,
441 # then in the build stage by executing inside Docker.
442
443 .windows-docker-vs2019:
444   variables:
445     WINDOWS_TAG: "2020-12-02"
446     WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/windows/x64_build:${WINDOWS_TAG}-${MESA_TEMPLATES_COMMIT}"
447     WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows/x64_build:${WINDOWS_TAG}-${MESA_TEMPLATES_COMMIT}"
448
449 windows_build_vs2019:
450   extends:
451     - .container
452     - .windows-docker-vs2019
453   stage: container
454   variables:
455     GIT_STRATEGY: fetch # we do actually need the full repository though
456   timeout: 2h # LLVM + piglit takes ages
457   tags:
458     - windows
459     - shell
460     - "1809"
461     - mesa
462   script:
463     - .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE
464
465 .use-windows_build_vs2019:
466   extends: .windows-docker-vs2019
467   image: "$WINDOWS_IMAGE"
468   needs:
469     - windows_build_vs2019
470
471
472 # Git archive
473
474 make git archive:
475   extends:
476     - .fdo.ci-fairy
477   stage: git-archive
478   rules:
479     - if: *is-scheduled-pipeline
480       when: on_success
481   # ensure we are running on packet
482   tags:
483     - packet.net
484   script:
485     # Compactify the .git directory
486     - git gc --aggressive
487     # compress the current folder
488     - tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
489
490     # login with the JWT token
491     - ci-fairy minio login $CI_JOB_JWT
492     - ci-fairy minio cp ../$CI_PROJECT_NAME.tar.gz minio://minio-packet.freedesktop.org/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
493
494
495 # Sanity checks of MR settings and commit logs
496 sanity:
497   extends:
498     - .fdo.ci-fairy
499   stage: sanity
500   rules:
501     - if: *is-pre-merge
502       when: on_success
503     - if: *is-forked-branch
504       when: manual
505     # Other cases default to never
506   script:
507     # ci-fairy check-commits --junit-xml=check-commits.xml
508     # ci-fairy check-merge-request only works in pre-merge pipelines for MRs
509     - if test "x$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME" != "x$CI_COMMIT_REF_NAME"; then exit 0; fi
510     - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
511   artifacts:
512     when: on_failure
513     reports:
514       junit: check-*.xml
515
516
517 # BUILD
518
519 # Shared between windows and Linux
520 .build-common:
521   extends: .ci-run-policy
522   # Cancel job if a newer commit is pushed to the same branch
523   interruptible: true
524   artifacts:
525     name: "mesa_${CI_JOB_NAME}"
526     when: always
527     paths:
528       - _build/meson-logs/*.txt
529       # scons:
530       - build/*/config.log
531       - shader-db
532
533 # Just Linux
534 .build-linux:
535   extends: .build-common
536   variables:
537     CCACHE_COMPILERCHECK: "content"
538     CCACHE_COMPRESS: "true"
539     CCACHE_DIR: /cache/mesa/ccache
540   # Use ccache transparently, and print stats before/after
541   before_script:
542     - export PATH="/usr/lib/ccache:$PATH"
543     - export CCACHE_BASEDIR="$PWD"
544     - ccache --show-stats
545   after_script:
546     - ccache --show-stats
547
548 .build-windows:
549   extends: .build-common
550   tags:
551     - windows
552     - docker
553     - "1809"
554     - mesa
555   cache:
556     key: ${CI_JOB_NAME}
557     paths:
558       - subprojects/packagecache
559
560 .meson-build:
561   extends:
562     - .build-linux
563     - .use-x86_build
564   stage: meson-x86_64
565   variables:
566     LLVM_VERSION: 10
567   script:
568     - .gitlab-ci/meson-build.sh
569
570 .scons-build:
571   extends:
572     - .build-linux
573     - .use-x86_build
574   stage: build-misc
575   script:
576     - env SCONSFLAGS="-j${FDO_CI_CONCURRENT:-4}" .gitlab-ci/scons-build.sh
577
578 meson-testing:
579   extends:
580     - .meson-build
581     - .ci-deqp-artifacts
582   variables:
583     UNWIND: "enabled"
584     DRI_LOADERS: >
585       -D glx=dri
586       -D gbm=enabled
587       -D egl=enabled
588       -D platforms=x11
589     GALLIUM_ST: >
590       -D dri3=enabled
591     GALLIUM_DRIVERS: "swrast,virgl,radeonsi"
592     VULKAN_DRIVERS: amd
593     BUILDTYPE: "debugoptimized"
594     EXTRA_OPTION: >
595       -D werror=true
596     UPLOAD_FOR_LAVA: 1
597     DEBIAN_ARCH: amd64
598   script:
599     - .gitlab-ci/meson-build.sh
600     - .gitlab-ci/prepare-artifacts.sh
601
602 meson-clover-testing:
603   extends:
604     - .meson-build
605     - .ci-deqp-artifacts
606   variables:
607     UNWIND: "enabled"
608     LLVM_VERSION: 10
609     DRI_LOADERS: >
610       -D glx=disabled
611       -D egl=disabled
612       -D gbm=disabled
613     GALLIUM_ST: >
614       -D gallium-opencl=icd
615       -D opencl-spirv=true
616     GALLIUM_DRIVERS: "swrast"
617     BUILDTYPE: "debugoptimized"
618     EXTRA_OPTION: >
619       -D werror=true
620   script:
621     - .gitlab-ci/meson-build.sh
622     - .gitlab-ci/prepare-artifacts.sh
623
624 meson-gallium:
625   extends: .meson-build
626   variables:
627     UNWIND: "enabled"
628     DRI_LOADERS: >
629       -D glx=dri
630       -D gbm=enabled
631       -D egl=enabled
632       -D platforms=x11,wayland
633     GALLIUM_ST: >
634       -D dri3=enabled
635       -D gallium-extra-hud=true
636       -D gallium-vdpau=enabled
637       -D gallium-xvmc=enabled
638       -D gallium-omx=bellagio
639       -D gallium-va=enabled
640       -D gallium-xa=enabled
641       -D gallium-nine=true
642       -D gallium-opencl=disabled
643     GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink"
644     VULKAN_DRIVERS: swrast
645     EXTRA_OPTION: >
646       -D osmesa=gallium
647       -D tools=all
648       -D werror=true
649   script:
650     - .gitlab-ci/meson-build.sh
651     - .gitlab-ci/run-shader-db.sh
652     - src/freedreno/.gitlab-ci/run-fdtools.sh
653
654 # Test a release build with -Werror so new warnings don't sneak in.
655 meson-release:
656   extends: .meson-build
657   variables:
658     UNWIND: "enabled"
659     DRI_LOADERS: >
660       -D glx=dri
661       -D gbm=enabled
662       -D egl=enabled
663       -D platforms=x11,wayland
664     GALLIUM_ST: >
665       -D dri3=enabled
666       -D gallium-extra-hud=true
667       -D gallium-vdpau=enabled
668       -D gallium-xvmc=disabled
669       -D gallium-omx=disabled
670       -D gallium-va=enabled
671       -D gallium-xa=enabled
672       -D gallium-nine=false
673       -D gallium-opencl=disabled
674       -D llvm=false
675     GALLIUM_DRIVERS: "nouveau,kmsro,freedreno,r300,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink"
676     BUILDTYPE: "release"
677     EXTRA_OPTION: >
678       -D osmesa=none
679       -D tools=all
680       -D werror=true
681   script:
682     - .gitlab-ci/meson-build.sh
683
684 meson-classic:
685   extends: .meson-build
686   variables:
687     UNWIND: "enabled"
688     DRI_LOADERS: >
689       -D glx=dri
690       -D gbm=enabled
691       -D egl=enabled
692       -D platforms=x11,wayland
693     DRI_DRIVERS: "auto"
694     EXTRA_OPTION: >
695       -D osmesa=classic
696       -D tools=all
697       -D werror=true
698
699 meson-android:
700   extends:
701     - .meson-cross
702     - .use-android_build
703   variables:
704     UNWIND: "disabled"
705     DRI_LOADERS: >
706       -D glx=disabled
707       -D gbm=disabled
708       -D egl=enabled
709       -D platforms=android
710     EXTRA_OPTION: >
711       -D android-stub=true
712       -D llvm=disabled
713       -D platform-sdk-version=26
714     GALLIUM_ST: >
715       -D dri3=disabled
716       -D gallium-vdpau=disabled
717       -D gallium-xvmc=disabled
718       -D gallium-omx=disabled
719       -D gallium-va=disabled
720       -D gallium-xa=disabled
721       -D gallium-nine=false
722       -D gallium-opencl=disabled
723     LLVM_VERSION: ""
724   script:
725     # arm64 build: Can't build v3d/vc4 because they require expat for v3d_decode.
726     - PKG_CONFIG_PATH=/usr/local/lib/aarch64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/pkgconfig/ CROSS=aarch64-linux-android GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost VULKAN_DRIVERS=freedreno .gitlab-ci/meson-build.sh
727     # x86_64 build:
728     # Can't do Intel because gen_decoder.c currently requires libexpat, which
729     # is not a dependency that AOSP wants to accept.  Can't do Radeon because
730     # it requires LLVM, which we don't have an Android build of.
731     # - PKG_CONFIG_PATH=/usr/local/lib/x86_64-linux-android/pkgconfig/ CROSS=x86_64-linux-android GALLIUM_DRIVERS=iris VULKAN_DRIVERS=intel .gitlab-ci/meson-build.sh
732
733 .meson-cross:
734   extends:
735     - .meson-build
736   stage: build-misc
737   variables:
738     UNWIND: "disabled"
739     DRI_LOADERS: >
740       -D glx=disabled
741       -D gbm=disabled
742       -D egl=enabled
743       -D platforms=[]
744       -D osmesa=none
745     GALLIUM_ST: >
746       -D dri3=disabled
747       -D gallium-vdpau=disabled
748       -D gallium-xvmc=disabled
749       -D gallium-omx=disabled
750       -D gallium-va=disabled
751       -D gallium-xa=disabled
752       -D gallium-nine=false
753     LLVM_VERSION: "8"
754
755 .meson-arm:
756   extends:
757     - .meson-cross
758     - .use-arm_build
759   needs:
760     - arm_build
761   variables:
762     VULKAN_DRIVERS: freedreno,broadcom
763     GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
764     BUILDTYPE: "debugoptimized"
765   tags:
766     - aarch64
767
768 meson-armhf:
769   extends:
770     - .meson-arm
771     - .ci-deqp-artifacts
772   variables:
773     CROSS: armhf
774     LLVM_VERSION: "7"
775     EXTRA_OPTION: >
776       -D llvm=disabled
777     UPLOAD_FOR_LAVA: 1
778     DEBIAN_ARCH: armhf
779   script:
780     - .gitlab-ci/meson-build.sh
781     - .gitlab-ci/prepare-artifacts.sh
782
783 meson-arm64:
784   extends:
785     - .meson-arm
786     - .ci-deqp-artifacts
787   variables:
788     VULKAN_DRIVERS: "freedreno,broadcom"
789     EXTRA_OPTION: >
790       -D llvm=disabled
791     UPLOAD_FOR_LAVA: 1
792     DEBIAN_ARCH: arm64
793   script:
794     - .gitlab-ci/meson-build.sh
795     - .gitlab-ci/prepare-artifacts.sh
796
797 meson-arm64-build-test:
798   extends:
799     - .meson-arm
800     - .ci-deqp-artifacts
801   variables:
802     VULKAN_DRIVERS: "amd"
803     EXTRA_OPTION: >
804       -Dtools=panfrost
805       -D werror=true
806   script:
807     - .gitlab-ci/meson-build.sh
808
809 meson-clang:
810   extends: .meson-build
811   variables:
812     UNWIND: "enabled"
813     DRI_LOADERS: >
814       -D glvnd=true
815     DRI_DRIVERS: "auto"
816     GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra"
817     VULKAN_DRIVERS: intel,amd,freedreno,broadcom
818     CC: "ccache clang-10"
819     CXX: "ccache clang++-10"
820
821 meson-windows-vs2019:
822   extends:
823     - .build-windows
824     - .use-windows_build_vs2019
825   stage: build-misc
826   script:
827     - . .\.gitlab-ci\windows\mesa_build.ps1
828   artifacts:
829     paths:
830       - _install/
831
832 test-d3d12-windows:
833   extends:
834     - .build-windows
835     - .use-windows_build_vs2019
836   stage: layered-backends
837   dependencies:
838     - meson-windows-vs2019
839   needs:
840     - meson-windows-vs2019
841   variables:
842     GIT_STRATEGY: none # testing doesn't build anything from source
843     GALLIUM_DRIVER: d3d12
844     PIGLIT_PROFILE: quick_gl
845     PIGLIT_OPTIONS: -x nv_copy_depth_to_color
846   script:
847     - . _install/piglit_run.ps1
848   artifacts:
849     when: on_failure
850     name: "mesa_${CI_JOB_NAME}"
851     paths:
852       - summary/
853
854 scons-win64:
855   extends: .scons-build
856   variables:
857     SCONS_TARGET: platform=windows machine=x86_64 debug=1
858     SCONS_CHECK_COMMAND: "true"
859   allow_failure: true
860
861 meson-clover:
862   extends: .meson-build
863   variables:
864     UNWIND: "enabled"
865     DRI_LOADERS: >
866       -D glx=disabled
867       -D egl=disabled
868       -D gbm=disabled
869     GALLIUM_DRIVERS: "r600,radeonsi"
870     GALLIUM_ST: >
871       -D dri3=disabled
872       -D gallium-vdpau=disabled
873       -D gallium-xvmc=disabled
874       -D gallium-omx=disabled
875       -D gallium-va=disabled
876       -D gallium-xa=disabled
877       -D gallium-nine=false
878       -D gallium-opencl=icd
879     EXTRA_OPTION: >
880       -D werror=true
881   script:
882     - LLVM_VERSION=8 .gitlab-ci/meson-build.sh
883     - LLVM_VERSION=9 .gitlab-ci/meson-build.sh
884     - .gitlab-ci/meson-build.sh
885
886 meson-vulkan:
887   extends: .meson-build
888   variables:
889     UNWIND: "disabled"
890     DRI_LOADERS: >
891       -D glx=disabled
892       -D gbm=disabled
893       -D egl=disabled
894       -D platforms=x11,wayland
895       -D osmesa=none
896     GALLIUM_ST: >
897       -D dri3=enabled
898       -D gallium-vdpau=disabled
899       -D gallium-xvmc=disabled
900       -D gallium-omx=disabled
901       -D gallium-va=disabled
902       -D gallium-xa=disabled
903       -D gallium-nine=false
904       -D gallium-opencl=disabled
905       -D b_sanitize=undefined
906       -D c_args=-fno-sanitize-recover=all
907       -D cpp_args=-fno-sanitize-recover=all
908     UBSAN_OPTIONS: "print_stacktrace=1"
909     VULKAN_DRIVERS: intel,amd,freedreno,broadcom
910     EXTRA_OPTION: >
911       -D vulkan-overlay-layer=true
912       -D vulkan-device-select-layer=true
913       -D build-aco-tests=true
914       -D werror=true
915
916 meson-i386:
917   extends:
918     - .meson-cross
919     - .use-i386_build
920   variables:
921     CROSS: i386
922     VULKAN_DRIVERS: intel,amd
923     GALLIUM_DRIVERS: "iris,r300,radeonsi,swrast,virgl"
924     EXTRA_OPTION: >
925       -D vulkan-overlay-layer=true
926       -D vulkan-device-select-layer=true
927       -D werror=true
928
929 meson-s390x:
930   extends:
931     - .meson-cross
932     - .use-s390x_build
933   tags:
934     - kvm
935   variables:
936     CROSS: s390x
937     EXTRA_OPTION: >
938       -D werror=true
939     GALLIUM_DRIVERS: "swrast"
940
941 meson-ppc64el:
942   extends:
943     - meson-s390x
944     - .use-ppc64el_build
945   variables:
946     CROSS: ppc64el
947     EXTRA_OPTION: ""
948     GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl"
949     VULKAN_DRIVERS: "amd"
950
951 meson-mingw32-x86_64:
952   extends: .meson-build
953   stage: build-misc
954   variables:
955     UNWIND: "disabled"
956     DRI_DRIVERS: ""
957     GALLIUM_DRIVERS: "swrast"
958     EXTRA_OPTION: >
959       -Dllvm=disabled
960       -Dosmesa=gallium
961       --cross-file=.gitlab-ci/x86_64-w64-mingw32
962
963 .test:
964   extends:
965     - .ci-run-policy
966   # Cancel job if a newer commit is pushed to the same branch
967   interruptible: true
968   variables:
969     GIT_STRATEGY: none # testing doesn't build anything from source
970   before_script:
971     # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
972     - rm -rf install
973     - tar -xf artifacts/install.tar
974     - LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
975   artifacts:
976     when: always
977     name: "mesa_${CI_JOB_NAME}"
978     paths:
979       - results/
980
981 .use-x86_test-gl:
982   extends:
983     - .test
984   variables:
985     TAG: *x86_test-gl
986   image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:${TAG}-${MESA_TEMPLATES_COMMIT}"
987   needs:
988     - x86_test-gl
989
990 .test-gl:
991   extends:
992     - .use-x86_test-gl
993   needs:
994     - x86_test-gl
995     - meson-testing
996
997 .test-vk:
998   extends:
999     - .test
1000   variables:
1001     TAG: *x86_test-vk
1002   image: "$CI_REGISTRY_IMAGE/debian/x86_test-vk:${TAG}-${MESA_TEMPLATES_COMMIT}"
1003   needs:
1004     - meson-testing
1005     - x86_test-vk
1006
1007 .test-cl:
1008   extends:
1009     - .use-x86_test-gl
1010   needs:
1011     - x86_test-gl
1012     - meson-clover-testing
1013
1014 .piglit-test:
1015   extends:
1016     - .test-gl
1017     - .llvmpipe-rules
1018   artifacts:
1019     when: on_failure
1020     name: "mesa_${CI_JOB_NAME}"
1021     paths:
1022       - summary/
1023   variables:
1024     LIBGL_ALWAYS_SOFTWARE: 1
1025     PIGLIT_NO_WINDOW: 1
1026   script:
1027     - install/piglit/run.sh
1028
1029 llvmpipe-piglit-cl:
1030   extends:
1031     - .piglit-test
1032     - .test-cl
1033     - .llvmpipe-cl-rules
1034   variables:
1035     LP_CL: 1
1036     LP_NUM_THREADS: 1
1037     PIGLIT_PROFILES: cl
1038     PIGLIT_OPTIONS: >
1039       -x bswap -x phatk -x clz-optimizations
1040   script:
1041     - install/piglit/run_cl.sh
1042
1043 llvmpipe-piglit-quick_gl:
1044   extends: .piglit-test
1045   variables:
1046     LP_NUM_THREADS: 0
1047     PIGLIT_OPTIONS: >
1048       --process-isolation false
1049       -x egl_ext_device_
1050       -x egl_ext_platform_device
1051       -x ext_timer_query@time-elapsed
1052       -x glx-multithread-clearbuffer
1053       -x glx-multithread-shader-compile
1054       -x max-texture-size
1055       -x maxsize
1056     PIGLIT_PROFILES: quick_gl
1057
1058 llvmpipe-piglit-glslparser:
1059   extends: .piglit-test
1060   variables:
1061     LP_NUM_THREADS: 0
1062     PIGLIT_PROFILES: glslparser
1063
1064 llvmpipe-piglit-quick_shader:
1065   extends: .piglit-test
1066   variables:
1067     LP_NUM_THREADS: 1
1068     PIGLIT_PROFILES: quick_shader
1069
1070 .deqp-test:
1071   variables:
1072     DEQP_SKIPS: deqp-default-skips.txt
1073   script:
1074     - ./install/deqp-runner.sh
1075
1076 .deqp-test-gl:
1077   extends:
1078     - .test-gl
1079     - .deqp-test
1080
1081 .deqp-test-vk:
1082   extends:
1083     - .test-vk
1084     - .deqp-test
1085   variables:
1086     DEQP_VER: vk
1087
1088 .fossilize-test:
1089   extends: .test-vk
1090   script:
1091     - ./install/fossilize-runner.sh
1092   artifacts:
1093     when: on_failure
1094     name: "mesa_${CI_JOB_NAME}"
1095     paths:
1096       - results/
1097
1098 llvmpipe-gles2:
1099   variables:
1100     DEQP_VER: gles2
1101     # Don't use threads inside llvmpipe, we've already got all cores
1102     # busy at the deqp-runner level.
1103     LP_NUM_THREADS: 0
1104     DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
1105     LIBGL_ALWAYS_SOFTWARE: "true"
1106     DEQP_EXPECTED_RENDERER: llvmpipe
1107   extends:
1108     - .deqp-test-gl
1109     - .llvmpipe-rules
1110
1111 softpipe-gles2:
1112   extends:
1113     - llvmpipe-gles2
1114     - .softpipe-rules
1115   variables:
1116     DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
1117     DEQP_SKIPS: deqp-softpipe-skips.txt
1118     DEQP_FLAKES: deqp-softpipe-flakes.txt
1119     GALLIUM_DRIVER: "softpipe"
1120     DEQP_EXPECTED_RENDERER: softpipe
1121
1122 softpipe-gles3:
1123   variables:
1124     DEQP_VER: gles3
1125   extends: softpipe-gles2
1126
1127 softpipe-gles31:
1128   parallel: 2
1129   variables:
1130     DEQP_VER: gles31
1131   extends: softpipe-gles2
1132
1133 # Note that KHR-GL3* test sets include all tests from the previous
1134 # version, so we only need to run one test list (unlike dEQP-GLES,
1135 # where the test sets are separate).
1136 softpipe-gl:
1137   variables:
1138     DEQP_VER: gl33
1139   extends:
1140     - softpipe-gles2
1141
1142 virgl-gles2-on-gl:
1143   variables:
1144     DEQP_VER: gles2
1145     DEQP_NO_SAVE_RESULTS: 1
1146     DEQP_SKIPS: deqp-virgl-gl-skips.txt
1147     # Don't use threads inside llvmpipe, we've already got all cores
1148     # busy at the deqp-runner level.
1149     LP_NUM_THREADS: 0
1150     DEQP_EXPECTED_FAILS: deqp-virgl-gl-fails.txt
1151     DEQP_OPTIONS: "--deqp-log-images=disable"
1152     LIBGL_ALWAYS_SOFTWARE: "true"
1153     GALLIUM_DRIVER: "virpipe"
1154     DEQP_EXPECTED_RENDERER: virgl
1155   extends:
1156     - .deqp-test-gl
1157     - .virgl-rules
1158
1159 virgl-gles3-on-gl:
1160   variables:
1161     DEQP_VER: gles3
1162     DEQP_RUNNER_OPTIONS: "--timeout 180"
1163   extends: virgl-gles2-on-gl
1164
1165 virgl-gles31-on-gl:
1166   parallel: 2
1167   variables:
1168     DEQP_VER: gles31
1169     MESA_GLES_VERSION_OVERRIDE: "3.1"
1170     MESA_GLSL_VERSION_OVERRIDE: "310"
1171     MESA_EXTENSION_OVERRIDE: "-GL_OES_tessellation_shader"
1172   extends: virgl-gles3-on-gl
1173
1174 virgl-gl30-on-gl:
1175   variables:
1176     DEQP_VER: gl30
1177   extends: virgl-gles2-on-gl
1178
1179 virgl-gl31-on-gl:
1180   variables:
1181     DEQP_VER: gl31
1182   extends: virgl-gles2-on-gl
1183
1184 virgl-gl32-on-gl:
1185   variables:
1186     DEQP_VER: gl32
1187   extends: virgl-gles2-on-gl
1188
1189 # Rules for tests that should not be present in MRs or the main
1190 # project's pipeline (don't block marge or report red on
1191 # mesa/mesamaster) but should be present on pipelines in personal
1192 # branches (so you can opt in to running the flaky test when you want
1193 # to).
1194 .test-manual:
1195   rules:
1196     - *ignore_scheduled_pipelines
1197     - if: *is-forked-branch
1198       changes:
1199         *all_paths
1200       when: manual
1201     - when: never
1202
1203 virgl-gles2-on-gles:
1204   variables:
1205     VIRGL_HOST_API: GLES
1206     DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
1207   extends:
1208     - virgl-gles2-on-gl
1209     - .test-manual
1210
1211 virgl-gles3-on-gles:
1212   variables:
1213     VIRGL_HOST_API: GLES
1214     DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
1215   extends:
1216     - virgl-gles3-on-gl
1217     - .test-manual
1218
1219 virgl-gles31-on-gles:
1220   variables:
1221     VIRGL_HOST_API: GLES
1222     DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
1223   extends:
1224     - virgl-gles31-on-gl
1225     - .test-manual
1226
1227 arm64_a630_gles2:
1228   extends:
1229     - arm64_a306_gles2
1230   variables:
1231     BM_KERNEL: /lava-files/cheza-kernel
1232     BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 root=/dev/nfs rw nfsrootdebug nfsroot=,tcp,nfsvers=4.2 init=/init"
1233     DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
1234     DEQP_FLAKES: deqp-freedreno-a630-flakes.txt
1235     DEQP_SKIPS: deqp-freedreno-a630-skips.txt
1236     GIT_STRATEGY: none
1237     DEQP_EXPECTED_RENDERER: FD630
1238     DEQP_NO_SAVE_RESULTS: ""
1239     VK_DRIVER: freedreno
1240   tags:
1241     - google-freedreno-cheza
1242   script:
1243     - ./install/bare-metal/cros-servo.sh
1244
1245 arm64_a630_gles31:
1246   extends: arm64_a630_gles2
1247   variables:
1248     DEQP_VER: gles31
1249
1250 arm64_a630_gles3:
1251   extends: arm64_a630_gles2
1252   variables:
1253     DEQP_VER: gles3
1254
1255 arm64_a630_traces:
1256   extends:
1257     - arm64_a630_gles2
1258   variables:
1259     BARE_METAL_TEST_SCRIPT: "/install/tracie-runner-gl.sh"
1260     DEVICE_NAME: "freedreno-a630"
1261     DRIVER_NAME: "freedreno"
1262     TRACIE_NO_UNIT_TESTS: 1
1263     TRACIE_UPLOAD_TO_MINIO: 1
1264     # This lets us run several more traces which don't use any features we're
1265     # missing.
1266     MESA_GLSL_VERSION_OVERRIDE: "460"
1267     MESA_GL_VERSION_OVERRIDE: "4.6"
1268   artifacts:
1269     reports:
1270       junit: results/junit.xml
1271
1272 arm64_a630_gl:
1273   extends: arm64_a630_gles2
1274   variables:
1275     DEQP_VER: gl30
1276
1277 arm64_a630_gles_others:
1278   extends: arm64_a630_gles2
1279   variables:
1280     BARE_METAL_TEST_SCRIPT: "/install/bare-metal/arm64_a630_gles_others.sh"
1281
1282 arm64_a630_vk:
1283   extends: arm64_a630_gles2
1284   parallel: 2
1285   variables:
1286     DEQP_VER: vk
1287     DEQP_FRACTION: 10
1288     # Force binning in the main run, which makes sure we render at
1289     # least 2 bins.  This is the path that impacts the most different
1290     # features.  However, we end up with flaky results in
1291     # dEQP-VK.binding_model.*.geometry and dEQP-VK.glsl.*_vertex.
1292     TU_DEBUG: forcebin
1293
1294 # Do a separate sysmem pass over the testcases that really affect sysmem
1295 # rendering.  This is currently very flaky, leave it as an option for devs
1296 # to click play on in their branches.
1297 arm64_a630_vk_sysmem:
1298   extends:
1299     - arm64_a630_gles2
1300   variables:
1301     DEQP_VER: vk
1302     DEQP_FRACTION: 15
1303     DEQP_CASELIST_FILTER: "dEQP-VK.renderpass.*"
1304     DEQP_EXPECTED_FAILS: deqp-freedreno-a630-bypass-fails.txt
1305     TU_DEBUG: sysmem
1306
1307 .baremetal-test:
1308   extends:
1309     - .ci-run-policy
1310     - .test
1311   # Cancel job if a newer commit is pushed to the same branch
1312   interruptible: true
1313   stage: test
1314   artifacts:
1315     when: always
1316     name: "mesa_${CI_JOB_NAME}"
1317     paths:
1318       - results/
1319       - serial*.txt
1320
1321 arm64_a306_gles2:
1322   extends:
1323     - .baremetal-test
1324     - .use-arm64_test
1325     - .freedreno-rules
1326   variables:
1327     BM_KERNEL: /lava-files/Image.gz
1328     BM_DTB: /lava-files/apq8016-sbc.dtb
1329     BM_ROOTFS: /lava-files/rootfs-arm64
1330     BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8"
1331     FLAKES_CHANNEL: "#freedreno-ci"
1332     BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
1333     DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt
1334     DEQP_SKIPS: deqp-default-skips.txt
1335     DEQP_FLAKES: deqp-freedreno-a307-flakes.txt
1336     DEQP_VER: gles2
1337     DEQP_PARALLEL: 4
1338     DEQP_EXPECTED_RENDERER: FD307
1339     # Since we can't get artifacts back yet, skip making them.
1340     DEQP_NO_SAVE_RESULTS: 1
1341   script:
1342     - ./install/bare-metal/fastboot.sh
1343   needs:
1344     - arm64_test
1345     - meson-arm64
1346   tags:
1347     - google-freedreno-db410c
1348
1349 # Fractional run, single threaded, due to flaky results
1350 arm64_a306_gles3:
1351   extends:
1352     - arm64_a306_gles2
1353   variables:
1354     DEQP_VER: gles3
1355     DEQP_PARALLEL: 1
1356     DEQP_FRACTION: 25
1357
1358 # Fractional runs with debug options.  Note that since we're not
1359 # hitting the iommu faults, we can run in parallel (derive from gles2, not gles3).
1360 arm64_a306_gles3_options:
1361   extends: arm64_a306_gles2
1362   variables:
1363     DEQP_VER: gles3
1364   script:
1365     # Check that the non-constbuf UBO case works.
1366     - DEQP_RUN_SUFFIX=-nouboopt IR3_SHADER_DEBUG=nouboopt DEQP_CASELIST_FILTER="functional.*ubo" ./install/bare-metal/fastboot.sh
1367
1368 .arm64_a530_deqp:
1369   extends:
1370     - arm64_a306_gles2
1371   variables:
1372     BM_KERNEL: /lava-files/db820c-kernel
1373     BM_DTB: /lava-files/db820c.dtb
1374     # Disable SMP because only CPU 0 is at a freq higher than 19mhz on
1375     # current upstream kernel.
1376     BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 nosmp"
1377     DEQP_EXPECTED_FAILS: deqp-freedreno-a530-fails.txt
1378     DEQP_FLAKES: deqp-freedreno-a530-flakes.txt
1379     DEQP_EXPECTED_RENDERER: FD530
1380   tags:
1381     - google-freedreno-db820c
1382
1383 arm64_a530_gles2:
1384   extends:
1385     - .arm64_a530_deqp
1386   parallel: 2
1387
1388 arm64_a530_gles3:
1389   extends:
1390     - .arm64_a530_deqp
1391   variables:
1392     DEQP_VER: gles3
1393     DEQP_PARALLEL: 1
1394     DEQP_FRACTION: 40
1395
1396 arm64_a530_gles31:
1397   extends:
1398     - arm64_a530_gles3
1399   variables:
1400     DEQP_VER: gles31
1401     DEQP_FRACTION: 10
1402
1403 vc4-rpi3-gles2:armhf:
1404   extends:
1405     - .baremetal-test
1406     - .use-armhf_test
1407     - .vc4-rules
1408   parallel: 4
1409   variables:
1410     BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
1411     BM_BOOTFS: /boot/armhf
1412     BM_KERNEL_MODULES: vc4
1413     BM_ROOTFS: /lava-files/rootfs-armhf
1414     BM_ROOTFS_EXTRA: /modules/armhf
1415     DEQP_EXPECTED_FAILS: deqp-vc4-rpi3-fails.txt
1416     DEQP_EXPECTED_RENDERER: VC4
1417     DEQP_FLAKES: deqp-vc4-rpi3-flakes.txt
1418     DEQP_SKIPS: deqp-vc4-rpi3-skips.txt
1419     DEQP_VER: gles2
1420   script:
1421     - ./install/bare-metal/poe-powered.sh
1422   needs:
1423     - armhf_test
1424     - meson-armhf
1425   tags:
1426     - igalia-rpi3
1427
1428 # RADV CI
1429 .test-radv:
1430   extends: .radv-rules
1431   stage: amd
1432   variables:
1433     VK_DRIVER: radeon
1434     ACO_DEBUG: validateir,validatera
1435
1436 # Can only be triggered manually on personal branches because RADV is the only
1437 # driver that does Vulkan testing at the moment.
1438 radv_polaris10_vkcts:
1439   extends:
1440     - .deqp-test-vk
1441     - .test-radv
1442     - .test-manual
1443   variables:
1444     DEQP_SKIPS: deqp-radv-polaris10-skips.txt
1445   tags:
1446     - polaris10
1447
1448 radv-fossils:
1449   extends:
1450     - .fossilize-test
1451     - .test-radv
1452   script:
1453     # Pitcairn (GFX6)
1454     - export RADV_FORCE_FAMILY="pitcairn"
1455     - ./install/fossilize-runner.sh
1456     # Bonaire (GFX7)
1457     - export RADV_FORCE_FAMILY="bonaire"
1458     - ./install/fossilize-runner.sh
1459     # Polaris10 (GFX8)
1460     - export RADV_FORCE_FAMILY="polaris10"
1461     - ./install/fossilize-runner.sh
1462     # Vega10 (GFX9)
1463     - export RADV_FORCE_FAMILY="gfx900"
1464     - ./install/fossilize-runner.sh
1465     # Navi10 (GFX10)
1466     - export RADV_FORCE_FAMILY="gfx1010"
1467     - ./install/fossilize-runner.sh
1468     # Sienna Cichlid (GFX10)
1469     - export RADV_FORCE_FAMILY="gfx1030"
1470     - ./install/fossilize-runner.sh
1471
1472 # Traces CI
1473 .traces-test:
1474   cache:
1475     key: ${CI_JOB_NAME}
1476     paths:
1477       - traces-db/
1478   variables:
1479     TRACIE_UPLOAD_TO_MINIO: 1
1480   artifacts:
1481     reports:
1482       junit: results/junit.xml
1483
1484 .traces-test-gl:
1485   extends:
1486     - .test-gl
1487     - .traces-test
1488   script:
1489     - ./install/tracie-runner-gl.sh
1490
1491 .traces-test-vk:
1492   extends:
1493     - .test-vk
1494     - .traces-test
1495   script:
1496     - ./install/tracie-runner-vk.sh
1497
1498 llvmpipe-traces:
1499   extends:
1500     - .traces-test-gl
1501     - .llvmpipe-rules
1502   variables:
1503     LIBGL_ALWAYS_SOFTWARE: "true"
1504     GALLIUM_DRIVER: "llvmpipe"
1505     DEVICE_NAME: "gl-vmware-llvmpipe"
1506     DRIVER_NAME: "llvmpipe"
1507
1508 radv-polaris10-traces:
1509   extends:
1510     - .traces-test-vk
1511     - .test-radv
1512     - .test-manual
1513   variables:
1514     DEVICE_NAME: "vk-amd-polaris10"
1515     DRIVER_NAME: "radv"
1516   tags:
1517     - polaris10
1518
1519 radv-raven-traces:
1520   extends:
1521     - .traces-test-vk
1522     - .test-radv
1523     - .test-manual
1524   variables:
1525     DEVICE_NAME: "vk-amd-raven"
1526     DRIVER_NAME: "radv"
1527   tags:
1528     - raven
1529
1530 virgl-traces:
1531   extends:
1532     - .traces-test-gl
1533     - .virgl-rules
1534   variables:
1535     LIBGL_ALWAYS_SOFTWARE: "true"
1536     GALLIUM_DRIVER: "virpipe"
1537     DEVICE_NAME: "gl-virgl"
1538     DRIVER_NAME: "virgl"
1539     MESA_GLES_VERSION_OVERRIDE: "3.1"
1540     MESA_GLSL_VERSION_OVERRIDE: "310"