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