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