16bcc9ab10ac97718c8a43ed76bd83241ad727ba
[mesa.git] / .gitlab-ci.yml
1 variables:
2 FDO_UPSTREAM_REPO: mesa/mesa
3
4 include:
5 - project: 'freedesktop/ci-templates'
6 ref: 59de540b620c45739871d1a073d76d5521989d11
7 file: '/templates/debian.yml'
8 - local: '.gitlab-ci/lava-gitlab-ci.yml'
9 - local: '.gitlab-ci/test-source-dep.yml'
10
11 stages:
12 - deploy
13 - container
14 - container-2
15 - meson-x86_64
16 - scons
17 - meson-misc
18 - llvmpipe
19 - softpipe
20 - freedreno
21 - panfrost
22 - radv
23 - lima
24 - virgl
25 - success
26
27 .docs-base:
28 image: alpine
29 stage: deploy
30 script:
31 - apk --no-cache add py3-pip
32 - pip3 install sphinx sphinx_rtd_theme
33 - sphinx-build -b html docs public
34
35 pages:
36 extends: .docs-base
37 artifacts:
38 paths:
39 - public
40 only:
41 refs:
42 - master@mesa/mesa
43 changes:
44 - docs/**/*
45 - .gitlab-ci.yml
46
47 test-docs:
48 extends: .docs-base
49 except:
50 refs:
51 - master@mesa/mesa
52 only:
53 changes:
54 - docs/**/*
55 - .gitlab-ci.yml
56
57 # When to automatically run the CI
58 .ci-run-policy:
59 rules:
60 # If any files affecting the pipeline are changed, build/test jobs run
61 # automatically once all dependency jobs have passed
62 - changes: &all_paths
63 - VERSION
64 - bin/git_sha1_gen.py
65 - bin/install_megadrivers.py
66 - bin/meson_get_version.py
67 - bin/symbols-check.py
68 # GitLab CI
69 - .gitlab-ci.yml
70 - .gitlab-ci/**/*
71 # Meson
72 - meson*
73 - build-support/**/*
74 - subprojects/**/*
75 # SCons
76 - SConstruct
77 - scons/**/*
78 - common.py
79 # Source code
80 - include/**/*
81 - src/**/*
82 when: on_success
83 # Otherwise, build/test jobs won't run
84 - when: never
85 retry:
86 max: 2
87 when:
88 - runner_system_failure
89 # Cancel CI run if a newer commit is pushed to the same branch
90 interruptible: true
91
92 success:
93 stage: success
94 image: debian:stable-slim
95 only:
96 - merge_requests
97 except:
98 changes:
99 *all_paths
100 variables:
101 GIT_STRATEGY: none
102 script:
103 - echo "Dummy job to make sure every merge request pipeline runs at least one job"
104
105
106 .ci-deqp-artifacts:
107 artifacts:
108 name: "mesa_${CI_JOB_NAME}"
109 when: always
110 untracked: false
111 paths:
112 # Watch out! Artifacts are relative to the build dir.
113 # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
114 - artifacts
115
116 # Build the CI docker images.
117 #
118 # FDO_DISTRIBUTION_TAG is the tag of the docker image used by later stage jobs. If the
119 # image doesn't exist yet, the container stage job generates it.
120 #
121 # In order to generate a new image, one should generally change the tag.
122 # While removing the image from the registry would also work, that's not
123 # recommended except for ephemeral images during development: Replacing
124 # an image after a significant amount of time might pull in newer
125 # versions of gcc/clang or other packages, which might break the build
126 # with older commits using the same tag.
127 #
128 # After merging a change resulting in generating a new image to the
129 # main repository, it's recommended to remove the image from the source
130 # repository's container registry, so that the image from the main
131 # repository's registry will be used there as well.
132
133 .container:
134 stage: container
135 extends:
136 - .ci-run-policy
137 rules:
138 # Run pipeline by default in the main project if any CI pipeline
139 # configuration files were changed, to ensure docker images are up to date
140 - if: '$CI_PROJECT_PATH == "mesa/mesa"'
141 changes:
142 - .gitlab-ci.yml
143 - .gitlab-ci/**/*
144 when: on_success
145 # Run pipeline by default if it was triggered by Marge Bot, is for a
146 # merge request, and any files affecting the pipeline were changed
147 - if: '$GITLAB_USER_LOGIN == "marge-bot" && $CI_PROJECT_PATH != "mesa/mesa"'
148 changes:
149 *all_paths
150 when: on_success
151 # Run pipeline by default in the main project if it was not triggered by
152 # Marge Bot, and any files affecting the pipeline were changed
153 - if: '$GITLAB_USER_LOGIN != "marge-bot" && $CI_PROJECT_PATH == "mesa/mesa"'
154 changes:
155 *all_paths
156 when: on_success
157 # Allow triggering jobs manually in other cases if any files affecting the
158 # pipeline were changed
159 - changes:
160 *all_paths
161 when: manual
162 # Otherwise, container jobs won't run
163 - when: never
164 variables:
165 FDO_DISTRIBUTION_VERSION: buster-slim
166 FDO_REPO_SUFFIX: "debian/$CI_JOB_NAME"
167 FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
168 # no need to pull the whole repo to build the container image
169 GIT_STRATEGY: none
170
171 # Debian 10 based x86 build image base
172 x86_build-base:
173 extends:
174 - .fdo.container-build@debian
175 - .container
176 variables:
177 FDO_DISTRIBUTION_TAG: &x86_build-base "2020-06-12"
178
179 .use-x86_build-base:
180 extends:
181 - x86_build-base
182 - .ci-run-policy
183 stage: container-2
184 variables:
185 BASE_TAG: *x86_build-base
186 FDO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/x86_build-base:$BASE_TAG"
187 needs:
188 - x86_build-base
189
190 # Debian 10 based x86 main build image
191 x86_build:
192 extends:
193 - .use-x86_build-base
194 variables:
195 FDO_DISTRIBUTION_TAG: &x86_build "2020-06-02"
196
197 .use-x86_build:
198 variables:
199 TAG: *x86_build
200 image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG"
201 needs:
202 - x86_build-base
203 - x86_build
204
205 # Debian 10 based i386 cross-build image
206 i386_build:
207 extends:
208 - .use-x86_build-base
209 variables:
210 FDO_DISTRIBUTION_TAG: &i386_build "2020-06-02"
211
212 .use-i386_build:
213 variables:
214 TAG: *i386_build
215 image: "$CI_REGISTRY_IMAGE/debian/i386_build:$TAG"
216 needs:
217 - x86_build-base
218 - i386_build
219
220 # Debian 10 based ppc64el cross-build image
221 ppc64el_build:
222 extends:
223 - .use-x86_build-base
224 variables:
225 FDO_DISTRIBUTION_TAG: &ppc64el_build "2020-06-02"
226
227 .use-ppc64el_build:
228 variables:
229 TAG: *ppc64el_build
230 image: "$CI_REGISTRY_IMAGE/debian/ppc64el_build:$TAG"
231 needs:
232 - x86_build-base
233 - ppc64el_build
234
235 # Debian 10 based s390x cross-build image
236 s390x_build:
237 extends:
238 - .use-x86_build-base
239 variables:
240 FDO_DISTRIBUTION_TAG: &s390x_build "2020-06-02"
241
242 .use-s390x_build:
243 variables:
244 TAG: *s390x_build
245 image: "$CI_REGISTRY_IMAGE/debian/s390x_build:$TAG"
246 needs:
247 - x86_build-base
248 - s390x_build
249
250 # Debian 10 based x86 test image base
251 x86_test-base:
252 extends: x86_build-base
253 variables:
254 FDO_DISTRIBUTION_TAG: &x86_test-base "2020-06-02"
255
256 .use-x86_test-base:
257 extends:
258 - x86_build-base
259 - .ci-run-policy
260 stage: container-2
261 variables:
262 BASE_TAG: *x86_test-base
263 FDO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/x86_test-base:$BASE_TAG"
264 needs:
265 - x86_test-base
266
267 # Debian 10 based x86 test image for GL
268 x86_test-gl:
269 extends: .use-x86_test-base
270 variables:
271 FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-06-23-virgl"
272
273 # Debian 10 based x86 test image for VK
274 x86_test-vk:
275 extends: .use-x86_test-base
276 variables:
277 FDO_DISTRIBUTION_TAG: &x86_test-vk "2020-06-18-vkcts"
278
279 # Debian 9 based x86 build image (old LLVM)
280 x86_build_old:
281 extends: x86_build-base
282 variables:
283 FDO_DISTRIBUTION_TAG: &x86_build_old "2020-06-12"
284 FDO_DISTRIBUTION_VERSION: stretch-slim
285
286 .use-x86_build_old:
287 variables:
288 TAG: *x86_build_old
289 image: "$CI_REGISTRY_IMAGE/debian/x86_build_old:$TAG"
290 needs:
291 - x86_build_old
292
293 # Debian 10 based ARM build image
294 arm_build:
295 extends:
296 - .fdo.container-build@debian@arm64v8
297 - .container
298 variables:
299 FDO_DISTRIBUTION_TAG: &arm_build "2020-06-22-tracie"
300
301 .use-arm_build:
302 variables:
303 TAG: *arm_build
304 image: "$CI_REGISTRY_IMAGE/debian/arm_build:$TAG"
305 needs:
306 - arm_build
307
308 # Debian 10 based x86 baremetal image base
309 arm_test-base:
310 extends:
311 - .fdo.container-build@debian
312 - .container
313 variables:
314 FDO_DISTRIBUTION_TAG: &arm_test-base "2020-06-22-tracie"
315
316 .use-arm_test-base:
317 extends:
318 - arm_test-base
319 - .ci-run-policy
320 stage: container-2
321 variables:
322 BASE_TAG: *arm_test-base
323 FDO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/arm_test-base:$BASE_TAG"
324 needs:
325 - arm_test-base
326
327 # x86 image with ARM64 rootfs for baremetal testing.
328 arm64_test:
329 extends:
330 - .use-arm_test-base
331 variables:
332 FDO_DISTRIBUTION_TAG: &arm64_test "2020-06-25-kernelfix"
333
334 .use-arm64_test:
335 variables:
336 TAG: *arm64_test
337 image: "$CI_REGISTRY_IMAGE/debian/arm64_test:$TAG"
338 needs:
339 - arm_test-base
340 - arm64_test
341
342 # Native Windows docker builds
343 #
344 # Unlike the above Linux-based builds - including MinGW/SCons builds which
345 # cross-compile for Windows - which use the freedesktop ci-templates, we
346 # cannot use the same scheme here. As Windows lacks support for
347 # Docker-in-Docker, and Podman does not run natively on Windows, we have
348 # to open-code much of the same ourselves.
349 #
350 # This is achieved by first running in a native Windows shell instance
351 # (host PowerShell) in the container stage to build and push the image,
352 # then in the build stage by executing inside Docker.
353
354 .windows-docker-vs2019:
355 variables:
356 WINDOWS_TAG: "2020-05-05-llvm"
357 WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/windows/x64_build:$WINDOWS_TAG"
358 WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows/x64_build:$WINDOWS_TAG"
359
360 windows_build_vs2019:
361 extends:
362 - .container
363 - .windows-docker-vs2019
364 stage: container
365 variables:
366 GIT_STRATEGY: fetch # we do actually need the full repository though
367 timeout: 4h # LLVM takes ages
368 tags:
369 - windows
370 - shell
371 - "1809"
372 - mesa
373 script:
374 - .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE
375
376 .use-windows_build_vs2019:
377 extends: .windows-docker-vs2019
378 image: "$WINDOWS_IMAGE"
379 needs:
380 - windows_build_vs2019
381
382 # BUILD
383
384 # Shared between windows and Linux
385 .build-common:
386 extends: .ci-run-policy
387 artifacts:
388 name: "mesa_${CI_JOB_NAME}"
389 when: always
390 paths:
391 - _build/meson-logs/*.txt
392 # scons:
393 - build/*/config.log
394 - shader-db
395
396 # Just Linux
397 .build-linux:
398 extends: .build-common
399 variables:
400 CCACHE_COMPILERCHECK: "content"
401 CCACHE_COMPRESS: "true"
402 CCACHE_DIR: /cache/mesa/ccache
403 # Use ccache transparently, and print stats before/after
404 before_script:
405 - export PATH="/usr/lib/ccache:$PATH"
406 - export CCACHE_BASEDIR="$PWD"
407 - ccache --show-stats
408 after_script:
409 - ccache --show-stats
410
411 .build-windows:
412 extends: .build-common
413 tags:
414 - windows
415 - docker
416 - "1809"
417 - mesa
418 cache:
419 key: ${CI_JOB_NAME}
420 paths:
421 - subprojects/packagecache
422
423 .meson-build:
424 extends:
425 - .build-linux
426 - .use-x86_build
427 stage: meson-x86_64
428 variables:
429 LLVM_VERSION: 9
430 script:
431 - .gitlab-ci/meson-build.sh
432
433 .scons-build:
434 extends:
435 - .build-linux
436 - .use-x86_build
437 stage: scons
438 variables:
439 SCONSFLAGS: "-j4"
440 script:
441 - .gitlab-ci/scons-build.sh
442
443 meson-testing:
444 extends:
445 - .meson-build
446 - .ci-deqp-artifacts
447 variables:
448 UNWIND: "enabled"
449 DRI_LOADERS: >
450 -D glx=dri
451 -D gbm=enabled
452 -D egl=enabled
453 -D platforms=x11,drm,surfaceless
454 GALLIUM_ST: >
455 -D dri3=enabled
456 GALLIUM_DRIVERS: "swrast,virgl"
457 VULKAN_DRIVERS: amd
458 BUILDTYPE: "debugoptimized"
459 EXTRA_OPTION: >
460 -D werror=true
461 script:
462 - .gitlab-ci/meson-build.sh
463 - .gitlab-ci/prepare-artifacts.sh
464
465 meson-gallium:
466 extends: .meson-build
467 variables:
468 UNWIND: "enabled"
469 DRI_LOADERS: >
470 -D glx=dri
471 -D gbm=enabled
472 -D egl=enabled
473 -D platforms=x11,wayland,drm,surfaceless
474 GALLIUM_ST: >
475 -D dri3=enabled
476 -D gallium-extra-hud=true
477 -D gallium-vdpau=enabled
478 -D gallium-xvmc=enabled
479 -D gallium-omx=bellagio
480 -D gallium-va=enabled
481 -D gallium-xa=enabled
482 -D gallium-nine=true
483 -D gallium-opencl=disabled
484 GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink"
485 EXTRA_OPTION: >
486 -D osmesa=gallium
487 -D tools=all
488 script:
489 - .gitlab-ci/meson-build.sh
490 - .gitlab-ci/run-shader-db.sh
491
492 meson-classic:
493 extends: .meson-build
494 variables:
495 UNWIND: "enabled"
496 DRI_LOADERS: >
497 -D glx=dri
498 -D gbm=enabled
499 -D egl=enabled
500 -D platforms=x11,wayland,drm,surfaceless
501 DRI_DRIVERS: "auto"
502 EXTRA_OPTION: >
503 -D osmesa=classic
504 -D tools=all
505
506 .meson-cross:
507 extends:
508 - .meson-build
509 stage: meson-misc
510 variables:
511 UNWIND: "disabled"
512 DRI_LOADERS: >
513 -D glx=disabled
514 -D gbm=disabled
515 -D egl=enabled
516 -D platforms=surfaceless
517 -D osmesa=none
518 GALLIUM_ST: >
519 -D dri3=disabled
520 -D gallium-vdpau=disabled
521 -D gallium-xvmc=disabled
522 -D gallium-omx=disabled
523 -D gallium-va=disabled
524 -D gallium-xa=disabled
525 -D gallium-nine=false
526 LLVM_VERSION: "8"
527
528 .meson-arm:
529 extends:
530 - .meson-cross
531 - .use-arm_build
532 variables:
533 VULKAN_DRIVERS: freedreno
534 GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
535 BUILDTYPE: "debugoptimized"
536 tags:
537 - aarch64
538
539 meson-armhf:
540 extends:
541 - .meson-arm
542 - .ci-deqp-artifacts
543 variables:
544 CROSS: armhf
545 LLVM_VERSION: "7"
546 EXTRA_OPTION: >
547 -D llvm=disabled
548 script:
549 - .gitlab-ci/meson-build.sh
550 - .gitlab-ci/prepare-artifacts.sh
551
552 meson-arm64:
553 extends:
554 - .meson-arm
555 - .ci-deqp-artifacts
556 variables:
557 VULKAN_DRIVERS: "freedreno"
558 EXTRA_OPTION: >
559 -D llvm=disabled
560 script:
561 - .gitlab-ci/meson-build.sh
562 - .gitlab-ci/prepare-artifacts.sh
563
564 meson-arm64-build-test:
565 extends:
566 - .meson-arm
567 - .ci-deqp-artifacts
568 variables:
569 VULKAN_DRIVERS: "amd"
570 script:
571 - .gitlab-ci/meson-build.sh
572
573 meson-clang:
574 extends: .meson-build
575 variables:
576 UNWIND: "enabled"
577 DRI_LOADERS: >
578 -D glvnd=true
579 DRI_DRIVERS: "auto"
580 GALLIUM_DRIVERS: "auto"
581 VULKAN_DRIVERS: intel,amd,freedreno
582 CC: "ccache clang-9"
583 CXX: "ccache clang++-9"
584
585 meson-windows-vs2019:
586 extends:
587 - .build-windows
588 - .use-windows_build_vs2019
589 stage: meson-misc
590 script:
591 - . .\.gitlab-ci\windows\mesa_build.ps1
592
593 scons-win64:
594 extends: .scons-build
595 variables:
596 SCONS_TARGET: platform=windows machine=x86_64 debug=1
597 SCONS_CHECK_COMMAND: "true"
598 allow_failure: true
599
600 meson-clover:
601 extends: .meson-build
602 variables:
603 UNWIND: "enabled"
604 DRI_LOADERS: >
605 -D glx=disabled
606 -D egl=disabled
607 -D gbm=disabled
608 GALLIUM_DRIVERS: "r600,radeonsi"
609 GALLIUM_ST: >
610 -D dri3=disabled
611 -D gallium-vdpau=disabled
612 -D gallium-xvmc=disabled
613 -D gallium-omx=disabled
614 -D gallium-va=disabled
615 -D gallium-xa=disabled
616 -D gallium-nine=false
617 -D gallium-opencl=icd
618 script:
619 - .gitlab-ci/meson-build.sh
620 - LLVM_VERSION=8 .gitlab-ci/meson-build.sh
621
622 meson-clover-old-llvm:
623 extends:
624 - meson-clover
625 - .use-x86_build_old
626 variables:
627 UNWIND: "disabled"
628 DRI_LOADERS: >
629 -D glx=disabled
630 -D egl=disabled
631 -D gbm=disabled
632 -D platforms=drm,surfaceless
633 GALLIUM_DRIVERS: "i915,r600"
634 script:
635 - LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh
636 - LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh
637 - LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh
638 - LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh
639 - LLVM_VERSION=7 .gitlab-ci/meson-build.sh
640
641 meson-vulkan:
642 extends: .meson-build
643 variables:
644 UNWIND: "disabled"
645 DRI_LOADERS: >
646 -D glx=disabled
647 -D gbm=disabled
648 -D egl=disabled
649 -D platforms=x11,wayland,drm
650 -D osmesa=none
651 GALLIUM_ST: >
652 -D dri3=enabled
653 -D gallium-vdpau=disabled
654 -D gallium-xvmc=disabled
655 -D gallium-omx=disabled
656 -D gallium-va=disabled
657 -D gallium-xa=disabled
658 -D gallium-nine=false
659 -D gallium-opencl=disabled
660 -D b_sanitize=undefined
661 -D c_args=-fno-sanitize-recover=all
662 -D cpp_args=-fno-sanitize-recover=all
663 UBSAN_OPTIONS: "print_stacktrace=1"
664 VULKAN_DRIVERS: intel,amd,freedreno
665 EXTRA_OPTION: >
666 -D vulkan-overlay-layer=true
667 -D werror=true
668
669 meson-i386:
670 extends:
671 - .meson-cross
672 - .use-i386_build
673 variables:
674 CROSS: i386
675 VULKAN_DRIVERS: intel,amd
676 GALLIUM_DRIVERS: "iris,r300,radeonsi,swrast,virgl"
677 EXTRA_OPTION: >
678 -D vulkan-overlay-layer=true
679 -D werror=true
680
681 meson-s390x:
682 extends:
683 - .meson-cross
684 - .use-s390x_build
685 tags:
686 - kvm
687 variables:
688 CROSS: s390x
689 EXTRA_OPTION: >
690 -D werror=true
691 GALLIUM_DRIVERS: "swrast"
692
693 meson-ppc64el:
694 extends:
695 - meson-s390x
696 - .use-ppc64el_build
697 variables:
698 CROSS: ppc64el
699 EXTRA_OPTION: ""
700 GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl"
701 VULKAN_DRIVERS: "amd"
702
703 meson-mingw32-x86_64:
704 extends: .meson-build
705 stage: meson-misc
706 variables:
707 UNWIND: "disabled"
708 DRI_DRIVERS: ""
709 GALLIUM_DRIVERS: "swrast"
710 EXTRA_OPTION: >
711 -Dllvm=disabled
712 -Dosmesa=gallium
713 --cross-file=.gitlab-ci/x86_64-w64-mingw32
714
715 .test:
716 extends:
717 - .ci-run-policy
718 variables:
719 GIT_STRATEGY: none # testing doesn't build anything from source
720 before_script:
721 # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
722 - rm -rf install
723 - tar -xf artifacts/install.tar
724 - LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
725 artifacts:
726 when: always
727 name: "mesa_${CI_JOB_NAME}"
728 paths:
729 - results/
730
731 .test-gl:
732 extends:
733 - .test
734 variables:
735 TAG: *x86_test-gl
736 image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:$TAG"
737 needs:
738 - x86_build-base
739 - x86_build
740 - meson-testing
741 - x86_test-base
742 - x86_test-gl
743 dependencies:
744 - meson-testing
745
746 .test-vk:
747 extends:
748 - .test
749 variables:
750 TAG: *x86_test-vk
751 image: "$CI_REGISTRY_IMAGE/debian/x86_test-vk:$TAG"
752 needs:
753 - x86_build-base
754 - x86_build
755 - meson-testing
756 - x86_test-base
757 - x86_test-vk
758 dependencies:
759 - meson-testing
760
761 .piglit-test:
762 extends:
763 - .test-gl
764 - .llvmpipe-rules
765 artifacts:
766 when: on_failure
767 name: "mesa_${CI_JOB_NAME}"
768 paths:
769 - summary/
770 variables:
771 LIBGL_ALWAYS_SOFTWARE: 1
772 PIGLIT_NO_WINDOW: 1
773 script:
774 - install/piglit/run.sh
775
776 piglit-quick_gl:
777 extends: .piglit-test
778 variables:
779 LP_NUM_THREADS: 0
780 NIR_VALIDATE: 0
781 PIGLIT_OPTIONS: >
782 --process-isolation false
783 -x arb_gpu_shader5
784 -x egl_ext_device_
785 -x egl_ext_platform_device
786 -x ext_timer_query@time-elapsed
787 -x glx-multithread-clearbuffer
788 -x glx-multithread-shader-compile
789 -x max-texture-size
790 -x maxsize
791 PIGLIT_PROFILES: quick_gl
792
793 piglit-glslparser:
794 extends: .piglit-test
795 variables:
796 LP_NUM_THREADS: 0
797 NIR_VALIDATE: 0
798 PIGLIT_PROFILES: glslparser
799
800 piglit-quick_shader:
801 extends: .piglit-test
802 variables:
803 LP_NUM_THREADS: 1
804 NIR_VALIDATE: 0
805 PIGLIT_PROFILES: quick_shader
806
807 .deqp-test:
808 variables:
809 DEQP_SKIPS: deqp-default-skips.txt
810 script:
811 - ./install/deqp-runner.sh
812
813 .deqp-test-gl:
814 extends:
815 - .test-gl
816 - .deqp-test
817
818 .deqp-test-vk:
819 extends:
820 - .test-vk
821 - .deqp-test
822 variables:
823 DEQP_VER: vk
824
825 .fossilize-test:
826 extends: .test-vk
827 script:
828 - ./install/fossilize-runner.sh
829 artifacts:
830 when: on_failure
831 name: "mesa_${CI_JOB_NAME}"
832 paths:
833 - results/
834
835 llvmpipe-gles2:
836 variables:
837 DEQP_VER: gles2
838 DEQP_PARALLEL: 4
839 NIR_VALIDATE: 0
840 # Don't use threads inside llvmpipe, we've already got all 4 cores
841 # busy with DEQP_PARALLEL.
842 LP_NUM_THREADS: 0
843 DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
844 LIBGL_ALWAYS_SOFTWARE: "true"
845 DEQP_EXPECTED_RENDERER: llvmpipe
846 extends:
847 - .deqp-test-gl
848 - .llvmpipe-rules
849
850 softpipe-gles2:
851 extends:
852 - llvmpipe-gles2
853 - .softpipe-rules
854 variables:
855 DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
856 DEQP_SKIPS: deqp-softpipe-skips.txt
857 GALLIUM_DRIVER: "softpipe"
858 DEQP_EXPECTED_RENDERER: softpipe
859
860 softpipe-gles3:
861 parallel: 2
862 variables:
863 DEQP_VER: gles3
864 extends: softpipe-gles2
865
866 softpipe-gles31:
867 parallel: 4
868 variables:
869 DEQP_VER: gles31
870 extends: softpipe-gles2
871
872 virgl-gles2-on-gl:
873 variables:
874 DEQP_VER: gles2
875 DEQP_PARALLEL: 4
876 NIR_VALIDATE: 0
877 DEQP_NO_SAVE_RESULTS: 1
878 # Don't use threads inside llvmpipe, we've already got all 4 cores
879 # busy with DEQP_PARALLEL.
880 LP_NUM_THREADS: 0
881 DEQP_EXPECTED_FAILS: deqp-virgl-gl-fails.txt
882 DEQP_OPTIONS: "--deqp-log-images=disable"
883 LIBGL_ALWAYS_SOFTWARE: "true"
884 GALLIUM_DRIVER: "virpipe"
885 DEQP_EXPECTED_RENDERER: virgl
886 extends:
887 - .deqp-test-gl
888 - .virgl-rules
889
890 virgl-gles3-on-gl:
891 parallel: 2
892 variables:
893 DEQP_VER: gles3
894 DEQP_RUNNER_OPTIONS: "--timeout 180"
895 extends: virgl-gles2-on-gl
896
897 virgl-gles31-on-gl:
898 parallel: 4
899 variables:
900 DEQP_VER: gles31
901 MESA_GLES_VERSION_OVERRIDE: "3.1"
902 MESA_GLSL_VERSION_OVERRIDE: "310"
903 MESA_EXTENSION_OVERRIDE: "-GL_OES_tessellation_shader"
904 extends: virgl-gles3-on-gl
905
906 virgl-gl30-on-gl:
907 variables:
908 DEQP_VER: gl30
909 extends: virgl-gles2-on-gl
910
911 virgl-gl31-on-gl:
912 variables:
913 DEQP_VER: gl31
914 extends: virgl-gles2-on-gl
915
916 virgl-gl32-on-gl:
917 variables:
918 DEQP_VER: gl32
919 extends: virgl-gles2-on-gl
920
921 # Rules for tests that should not be present in MRs or the main
922 # project's pipeline (don't block marge or report red on
923 # mesa/mesamaster) but should be present on pipelines in personal
924 # branches (so you can opt in to running the flaky test when you want
925 # to).
926 .test-manual:
927 rules:
928 - if: '$CI_PROJECT_PATH != "mesa/mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
929 changes:
930 *all_paths
931 when: manual
932 - when: never
933
934 virgl-gles2-on-gles:
935 variables:
936 VIRGL_HOST_API: GLES
937 DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
938 extends:
939 - virgl-gles2-on-gl
940 - .test-manual
941
942 virgl-gles3-on-gles:
943 variables:
944 VIRGL_HOST_API: GLES
945 DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
946 extends:
947 - virgl-gles3-on-gl
948 - .test-manual
949
950 virgl-gles31-on-gles:
951 variables:
952 VIRGL_HOST_API: GLES
953 DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
954 extends:
955 - virgl-gles31-on-gl
956 - .test-manual
957
958 arm64_a630_gles2:
959 extends:
960 - arm64_a306_gles2
961 variables:
962 BM_KERNEL: /lava-files/cheza-kernel
963 BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 root=/dev/nfs rw nfsrootdebug nfsroot=,tcp,nfsvers=4.2 init=/init"
964 DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
965 DEQP_SKIPS: deqp-freedreno-a630-skips.txt
966 GIT_STRATEGY: none
967 DEQP_EXPECTED_RENDERER: FD630
968 DEQP_NO_SAVE_RESULTS: ""
969 tags:
970 - google-freedreno-cheza
971 script:
972 - ./install/bare-metal/cros-servo.sh
973
974 arm64_a630_gles31:
975 extends: arm64_a630_gles2
976 variables:
977 DEQP_VER: gles31
978 # gles31 is about 12 minutes with validation enabled.
979 NIR_VALIDATE: 0
980
981 arm64_a630_gles3:
982 extends: arm64_a630_gles2
983 variables:
984 DEQP_VER: gles3
985 # gles3 is about 15 minutes with validation enabled.
986 NIR_VALIDATE: 0
987
988 # We almost always manage to lower UBOs back to constant uploads in
989 # the test suite, so get a little testing for it here.
990 arm64_a630_noubo:
991 extends: arm64_a630_gles31
992 variables:
993 DEQP_VER: gles31
994 IR3_SHADER_DEBUG: nouboopt
995 DEQP_CASELIST_FILTER: "functional.*ubo"
996
997 # The driver does some guessing as to whether to render using gmem
998 # or bypass, and some GLES3.1 features interact with either one.
999 # Do a little testing with gmem and bypass forced.
1000 arm64_a630_bypass:
1001 extends: arm64_a630_gles31
1002 variables:
1003 CI_NODE_INDEX: 1
1004 CI_NODE_TOTAL: 5
1005 FD_MESA_DEBUG: nogmem
1006 DEQP_EXPECTED_FAILS: deqp-freedreno-a630-bypass-fails.txt
1007
1008 arm64_a630_traces:
1009 extends:
1010 - arm64_a630_gles2
1011 variables:
1012 BARE_METAL_TEST_SCRIPT: "/install/tracie-runner-gl.sh"
1013 DEVICE_NAME: "freedreno-a630"
1014 TRACIE_NO_UNIT_TESTS: 1
1015 # This lets us run several more traces which don't use any features we're
1016 # missing.
1017 MESA_GLSL_VERSION_OVERRIDE: "460"
1018 MESA_GL_VERSION_OVERRIDE: "4.6"
1019
1020 # Along with checking gmem path, check that we don't get obvious nir
1021 # validation failures (though it's too expensive to have it on for the
1022 # full CTS)
1023 arm64_a630_gmem:
1024 extends: arm64_a630_gles31
1025 variables:
1026 CI_NODE_INDEX: 1
1027 CI_NODE_TOTAL: 5
1028 FD_MESA_DEBUG: nobypass
1029 NIR_VALIDATE: 1
1030
1031 arm64_a630_vk:
1032 extends: arm64_a630_gles2
1033 variables:
1034 DEQP_VER: vk
1035 CI_NODE_INDEX: 1
1036 CI_NODE_TOTAL: 50
1037 VK_DRIVER: freedreno
1038 # Force binning in the main run, which makes sure we render at
1039 # least 2 bins. This is the path that impacts the most different
1040 # features. However, we end up with flaky results in
1041 # dEQP-VK.binding_model.*.geometry and dEQP-VK.glsl.*_vertex.
1042 TU_DEBUG: forcebin
1043
1044 # Do a separate sysmem pass over the testcases that really affect sysmem
1045 # rendering. This is currently very flaky, leave it as an option for devs
1046 # to click play on in their branches.
1047 arm64_a630_vk_sysmem:
1048 extends:
1049 - arm64_a630_vk
1050 variables:
1051 CI_NODE_INDEX: 1
1052 CI_NODE_TOTAL: 10
1053 DEQP_CASELIST_FILTER: "dEQP-VK.renderpass.*"
1054 DEQP_EXPECTED_FAILS: deqp-freedreno-a630-bypass-fails.txt
1055 TU_DEBUG: sysmem
1056
1057 .baremetal-test:
1058 extends:
1059 - .ci-run-policy
1060 - .test
1061 stage: test
1062 artifacts:
1063 when: always
1064 name: "mesa_${CI_JOB_NAME}"
1065 paths:
1066 - results/
1067 - serial*.txt
1068
1069 arm64_a306_gles2:
1070 extends:
1071 - .baremetal-test
1072 - .use-arm64_test
1073 - .freedreno-rules
1074 variables:
1075 BM_KERNEL: /lava-files/Image.gz
1076 BM_DTB: /lava-files/apq8016-sbc.dtb
1077 BM_ROOTFS: /lava-files/rootfs-arm64
1078 BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8"
1079 FLAKES_CHANNEL: "#freedreno-ci"
1080 BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
1081 DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt
1082 DEQP_SKIPS: deqp-freedreno-a307-skips.txt
1083 DEQP_VER: gles2
1084 DEQP_PARALLEL: 4
1085 DEQP_EXPECTED_RENDERER: FD307
1086 # Since we can't get artifacts back yet, skip making them.
1087 DEQP_NO_SAVE_RESULTS: 1
1088 # NIR_VALIDATE=0 left intentionally unset as a3xx is fast enough at its small testsuite.
1089 script:
1090 - ./install/bare-metal/fastboot.sh
1091 needs:
1092 - arm_test-base
1093 - arm64_test
1094 - arm_build
1095 - meson-arm64
1096 tags:
1097 - google-freedreno-db410c
1098
1099 # Fractional run, single threaded, due to flaky results
1100 arm64_a306_gles3:
1101 extends:
1102 - arm64_a306_gles2
1103 variables:
1104 DEQP_VER: gles3
1105 DEQP_PARALLEL: 1
1106 CI_NODE_INDEX: 1
1107 CI_NODE_TOTAL: 25
1108 NIR_VALIDATE: 0
1109
1110 # Fractional runs with debug options. Note that since we're not
1111 # hitting the iommu faults, we can run in parallel (derive from gles2, not gles3).
1112 arm64_a306_gles3_options:
1113 extends: arm64_a306_gles2
1114 variables:
1115 DEQP_VER: gles3
1116 script:
1117 # Check that the non-constbuf UBO case works.
1118 - DEQP_RUN_SUFFIX=-nouboopt IR3_SHADER_DEBUG=nouboopt DEQP_CASELIST_FILTER="functional.*ubo" ./install/bare-metal/fastboot.sh
1119
1120 arm64_a530_gles2:
1121 extends:
1122 - arm64_a306_gles2
1123 variables:
1124 BM_KERNEL: /lava-files/db820c-kernel
1125 BM_DTB: /lava-files/db820c.dtb
1126 # Disable SMP because only CPU 0 is at a freq higher than 19mhz on
1127 # current upstream kernel.
1128 BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 nosmp"
1129 DEQP_EXPECTED_FAILS: deqp-freedreno-a530-fails.txt
1130 DEQP_SKIPS: deqp-freedreno-a530-skips.txt
1131 DEQP_EXPECTED_RENDERER: FD530
1132 NIR_VALIDATE: 0
1133 tags:
1134 - google-freedreno-db820c
1135
1136 arm64_a530_gles3:
1137 extends:
1138 - arm64_a530_gles2
1139 variables:
1140 DEQP_VER: gles3
1141 DEQP_PARALLEL: 1
1142 CI_NODE_INDEX: 1
1143 CI_NODE_TOTAL: 40
1144
1145 arm64_a530_gles31:
1146 extends:
1147 - arm64_a530_gles3
1148 variables:
1149 DEQP_VER: gles31
1150 CI_NODE_INDEX: 1
1151 CI_NODE_TOTAL: 10
1152
1153 # RADV CI
1154 .test-radv:
1155 extends: .radv-rules
1156 stage: radv
1157 variables:
1158 VK_DRIVER: radeon
1159 ACO_DEBUG: validateir,validatera
1160
1161 # Can only be triggered manually on personal branches because RADV is the only
1162 # driver that does Vulkan testing at the moment.
1163 radv_polaris10_vkcts:
1164 extends:
1165 - .deqp-test-vk
1166 - .test-radv
1167 - .test-manual
1168 variables:
1169 DEQP_SKIPS: deqp-radv-polaris10-skips.txt
1170 tags:
1171 - polaris10
1172
1173 radv-fossils:
1174 extends:
1175 - .fossilize-test
1176 - .test-radv
1177 script:
1178 # Pitcairn (GFX6)
1179 - export RADV_FORCE_FAMILY="pitcairn"
1180 - ./install/fossilize-runner.sh
1181 # Bonaire (GFX7)
1182 - export RADV_FORCE_FAMILY="bonaire"
1183 - ./install/fossilize-runner.sh
1184 # Polaris10 (GFX8)
1185 - export RADV_FORCE_FAMILY="polaris10"
1186 - ./install/fossilize-runner.sh
1187 # Vega10 (GFX9)
1188 - export RADV_FORCE_FAMILY="gfx900"
1189 - ./install/fossilize-runner.sh
1190 # Navi10 (GFX10)
1191 - export RADV_FORCE_FAMILY="gfx1010"
1192 - ./install/fossilize-runner.sh
1193
1194 # Traces CI
1195 .traces-test:
1196 cache:
1197 key: ${CI_JOB_NAME}
1198 paths:
1199 - traces-db/
1200
1201 .traces-test-gl:
1202 extends:
1203 - .test-gl
1204 - .traces-test
1205 script:
1206 - ./install/tracie-runner-gl.sh
1207
1208 .traces-test-vk:
1209 extends:
1210 - .test-vk
1211 - .traces-test
1212 script:
1213 - ./install/tracie-runner-vk.sh
1214
1215 llvmpipe-traces:
1216 extends:
1217 - .traces-test-gl
1218 - .llvmpipe-rules
1219 variables:
1220 LIBGL_ALWAYS_SOFTWARE: "true"
1221 GALLIUM_DRIVER: "llvmpipe"
1222 DEVICE_NAME: "gl-vmware-llvmpipe"
1223
1224 radv-polaris10-traces:
1225 extends:
1226 - .traces-test-vk
1227 - .test-radv
1228 - .test-manual
1229 variables:
1230 DEVICE_NAME: "vk-amd-polaris10"
1231 tags:
1232 - polaris10
1233
1234 virgl-traces:
1235 extends:
1236 - .traces-test-gl
1237 - .virgl-rules
1238 variables:
1239 LIBGL_ALWAYS_SOFTWARE: "true"
1240 GALLIUM_DRIVER: "virpipe"
1241 DEVICE_NAME: "gl-virgl"
1242 MESA_GLES_VERSION_OVERRIDE: "3.1"
1243 MESA_GLSL_VERSION_OVERRIDE: "310"