egl: Fix _eglPointerIsDereferencable w/o mincore()
[mesa.git] / .gitlab-ci.yml
1 variables:
2 UPSTREAM_REPO: mesa/mesa
3
4 include:
5 - project: 'wayland/ci-templates'
6 # Must be the same as in .gitlab-ci/lava-gitlab-ci.yml
7 ref: 0a9bdd33a98f05af6761ab118b5074952242aab0
8 file: '/templates/debian.yml'
9 - local: '.gitlab-ci/lava-gitlab-ci.yml'
10
11 stages:
12 - container
13 - build
14 - test
15 - success
16
17
18 # When to automatically run the CI
19 .ci-run-policy:
20 rules:
21 # Run pipeline by default for merge requests changing files affecting it
22 - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
23 changes: &paths
24 - VERSION
25 - bin/**/*
26 # GitLab CI
27 - .gitlab-ci.yml
28 - .gitlab-ci/**/*
29 # Meson
30 - meson*
31 - build-support/**/*
32 - subprojects/**/*
33 # SCons
34 - SConstruct
35 - scons/**/*
36 - common.py
37 # Source code
38 - include/**/*
39 - src/**/*
40 when: on_success
41 # Run pipeline by default in the main project if files affecting it were
42 # changed
43 - if: '$CI_PROJECT_PATH == "mesa/mesa"'
44 changes:
45 *paths
46 when: on_success
47 # Allow triggering jobs manually on branches of forked projects
48 - if: '$CI_PROJECT_PATH != "mesa/mesa"'
49 if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
50 when: manual
51 # Otherwise, most jobs won't run
52 - when: never
53 retry:
54 max: 2
55 when:
56 - runner_system_failure
57 # Cancel CI run if a newer commit is pushed to the same branch
58 interruptible: true
59
60 success:
61 stage: success
62 image: debian:stable-slim
63 only:
64 - merge_requests
65 except:
66 changes:
67 *paths
68 script:
69 - echo "Dummy job to make sure every merge request pipeline runs at least one job"
70
71
72 .ci-deqp-artifacts:
73 artifacts:
74 when: always
75 untracked: false
76 paths:
77 # Watch out! Artifacts are relative to the build dir.
78 # https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
79 - artifacts
80
81 # Build the CI docker images.
82 #
83 # DEBIAN_TAG is the tag of the docker image used by later stage jobs. If the
84 # image doesn't exist yet, the container stage job generates it.
85 #
86 # In order to generate a new image, one should generally change the tag.
87 # While removing the image from the registry would also work, that's not
88 # recommended except for ephemeral images during development: Replacing
89 # an image after a significant amount of time might pull in newer
90 # versions of gcc/clang or other packages, which might break the build
91 # with older commits using the same tag.
92 #
93 # After merging a change resulting in generating a new image to the
94 # main repository, it's recommended to remove the image from the source
95 # repository's container registry, so that the image from the main
96 # repository's registry will be used there as well.
97
98 .container:
99 stage: container
100 extends:
101 - .ci-run-policy
102 variables:
103 DEBIAN_VERSION: buster-slim
104 REPO_SUFFIX: $CI_JOB_NAME
105 DEBIAN_EXEC: 'bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
106 # no need to pull the whole repo to build the container image
107 GIT_STRATEGY: none
108
109 # Debian 10 based x86 build image
110 x86_build:
111 extends:
112 - .debian@container-ifnot-exists
113 - .container
114 variables:
115 DEBIAN_TAG: &x86_build "2020-01-14"
116
117 .use-x86_build:
118 variables:
119 TAG: *x86_build
120 image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG"
121 needs:
122 - x86_build
123
124 # Debian 10 based x86 test image for GL
125 x86_test-gl:
126 extends: x86_build
127 variables:
128 DEBIAN_TAG: &x86_test-gl "2020-01-14"
129
130 # Debian 10 based x86 test image for VK
131 x86_test-vk:
132 extends: x86_build
133 variables:
134 DEBIAN_TAG: &x86_test-vk "2020-01-14"
135 # Can only be triggered manually on personal branches because RADV is the only
136 # driver that does Vulkan testing at the moment.
137 rules:
138 # Never build the test image for VK by default in the main project.
139 - if: '$CI_PROJECT_PATH == "mesa/mesa"'
140 when: never
141 # Never build the test image for VK by default for merge requests.
142 - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
143 when: never
144 # Otherwise, allow building it manually for personal branches.
145 - when: manual
146
147
148 # Debian 9 based x86 build image (old LLVM)
149 x86_build_old:
150 extends: x86_build
151 variables:
152 DEBIAN_TAG: &x86_build_old "2019-09-18"
153 DEBIAN_VERSION: stretch-slim
154
155 .use-x86_build_old:
156 variables:
157 TAG: *x86_build_old
158 image: "$CI_REGISTRY_IMAGE/debian/x86_build_old:$TAG"
159 needs:
160 - x86_build_old
161
162 # Debian 10 based ARM build image
163 arm_build:
164 extends:
165 - .debian@container-ifnot-exists@arm64v8
166 - .container
167 variables:
168 DEBIAN_TAG: &arm_build "2020-01-14"
169
170 .use-arm_build:
171 variables:
172 TAG: *arm_build
173 image: "$CI_REGISTRY_IMAGE/debian/arm_build:$TAG"
174 needs:
175 - arm_build
176
177 # Debian 10 based ARM test image
178 arm_test:
179 extends: arm_build
180 variables:
181 DEBIAN_TAG: &arm_test "2019-12-18"
182
183 .use-arm_test:
184 variables:
185 TAG: *arm_test
186 image: "$CI_REGISTRY_IMAGE/debian/arm_test:$TAG"
187 needs:
188 - meson-arm64
189 - arm_test
190
191
192 # BUILD
193
194 # Shared between windows and Linux
195 .build-common:
196 extends: .ci-run-policy
197 stage: build
198 artifacts:
199 when: always
200 paths:
201 - _build/meson-logs/*.txt
202 # scons:
203 - build/*/config.log
204 - shader-db
205
206 # Just Linux
207 .build-linux:
208 extends: .build-common
209 variables:
210 CCACHE_COMPILERCHECK: "content"
211 CCACHE_COMPRESS: "true"
212 CCACHE_DIR: /cache/mesa/ccache
213 # Use ccache transparently, and print stats before/after
214 before_script:
215 - export PATH="/usr/lib/ccache:$PATH"
216 - export CCACHE_BASEDIR="$PWD"
217 - ccache --show-stats
218 after_script:
219 - ccache --show-stats
220
221 .build-windows:
222 extends: .build-common
223 tags:
224 - mesa-windows
225 cache:
226 key: ${CI_JOB_NAME}
227 paths:
228 - subprojects/packagecache
229
230 .meson-build:
231 extends:
232 - .build-linux
233 - .use-x86_build
234 variables:
235 LLVM_VERSION: 9
236 script:
237 - .gitlab-ci/meson-build.sh
238
239 .scons-build:
240 extends:
241 - .build-linux
242 - .use-x86_build
243 variables:
244 SCONSFLAGS: "-j4"
245 script:
246 - .gitlab-ci/scons-build.sh
247
248 meson-testing:
249 extends:
250 - .meson-build
251 - .ci-deqp-artifacts
252 variables:
253 UNWIND: "true"
254 DRI_LOADERS: >
255 -D glx=dri
256 -D gbm=true
257 -D egl=true
258 -D platforms=x11,drm,surfaceless
259 GALLIUM_ST: >
260 -D dri3=true
261 GALLIUM_DRIVERS: "swrast"
262 VULKAN_DRIVERS: amd
263 BUILDTYPE: "debugoptimized"
264 script:
265 - .gitlab-ci/meson-build.sh
266 - .gitlab-ci/prepare-artifacts.sh
267
268 meson-main:
269 extends: .meson-build
270 variables:
271 UNWIND: "true"
272 DRI_LOADERS: >
273 -D glx=dri
274 -D gbm=true
275 -D egl=true
276 -D platforms=x11,wayland,drm,surfaceless
277 DRI_DRIVERS: "i915,i965,r100,r200,nouveau"
278 GALLIUM_ST: >
279 -D dri3=true
280 -D gallium-extra-hud=true
281 -D gallium-vdpau=true
282 -D gallium-xvmc=true
283 -D gallium-omx=bellagio
284 -D gallium-va=true
285 -D gallium-xa=true
286 -D gallium-nine=true
287 -D gallium-opencl=disabled
288 GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink"
289 EXTRA_OPTION: >
290 -D osmesa=gallium
291 -D tools=all
292 script:
293 - .gitlab-ci/meson-build.sh
294 - .gitlab-ci/run-shader-db.sh
295
296 .meson-cross:
297 extends:
298 - .meson-build
299 variables:
300 UNWIND: "false"
301 DRI_LOADERS: >
302 -D glx=disabled
303 -D gbm=false
304 -D egl=true
305 -D platforms=surfaceless
306 -D osmesa=none
307 GALLIUM_ST: >
308 -D dri3=false
309 -D gallium-vdpau=false
310 -D gallium-xvmc=false
311 -D gallium-omx=disabled
312 -D gallium-va=false
313 -D gallium-xa=false
314 -D gallium-nine=false
315
316 .meson-arm:
317 extends:
318 - .meson-cross
319 - .use-arm_build
320 variables:
321 VULKAN_DRIVERS: freedreno
322 GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
323 BUILDTYPE: "debugoptimized"
324 EXTRA_OPTION: >
325 -D I-love-half-baked-turnips=true
326 tags:
327 - aarch64
328
329 meson-armhf:
330 extends:
331 - .meson-arm
332 - .ci-deqp-artifacts
333 variables:
334 CROSS: armhf
335 LLVM_VERSION: "7"
336 script:
337 - .gitlab-ci/meson-build.sh
338 - .gitlab-ci/prepare-artifacts.sh
339
340 meson-arm64:
341 extends:
342 - .meson-arm
343 - .ci-deqp-artifacts
344 variables:
345 LLVM_VERSION: "8"
346 VULKAN_DRIVERS: "freedreno,amd"
347 script:
348 - .gitlab-ci/meson-build.sh
349 - .gitlab-ci/prepare-artifacts.sh
350
351 meson-clang:
352 extends: .meson-build
353 variables:
354 UNWIND: "true"
355 DRI_LOADERS: >
356 -D glvnd=true
357 DRI_DRIVERS: "auto"
358 GALLIUM_DRIVERS: "auto"
359 VULKAN_DRIVERS: intel,amd,freedreno
360 CC: "ccache clang-9"
361 CXX: "ccache clang++-9"
362
363 .meson-windows:
364 extends:
365 - .build-windows
366 before_script:
367 - $ENV:ARCH = "x86"
368 - $ENV:VERSION = "2019\Community"
369 script:
370 - cmd /C .gitlab-ci\meson-build.bat
371
372 scons-swr:
373 extends: .scons-build
374 variables:
375 SCONS_TARGET: "swr=1"
376 SCONS_CHECK_COMMAND: "true"
377 LLVM_VERSION: "6.0"
378
379 scons-win64:
380 extends: .scons-build
381 variables:
382 SCONS_TARGET: platform=windows machine=x86_64
383 SCONS_CHECK_COMMAND: "true"
384
385 meson-clover:
386 extends: .meson-build
387 variables:
388 UNWIND: "true"
389 DRI_LOADERS: >
390 -D glx=disabled
391 -D egl=false
392 -D gbm=false
393 GALLIUM_ST: >
394 -D dri3=false
395 -D gallium-vdpau=false
396 -D gallium-xvmc=false
397 -D gallium-omx=disabled
398 -D gallium-va=false
399 -D gallium-xa=false
400 -D gallium-nine=false
401 -D gallium-opencl=icd
402 script:
403 - export GALLIUM_DRIVERS="r600,radeonsi"
404 - .gitlab-ci/meson-build.sh
405 - LLVM_VERSION=8 .gitlab-ci/meson-build.sh
406 - export GALLIUM_DRIVERS="i915,r600"
407 - LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh
408 - LLVM_VERSION=7 .gitlab-ci/meson-build.sh
409
410 meson-clover-old-llvm:
411 extends:
412 - meson-clover
413 - .use-x86_build_old
414 variables:
415 UNWIND: "false"
416 DRI_LOADERS: >
417 -D glx=disabled
418 -D egl=false
419 -D gbm=false
420 -D platforms=drm,surfaceless
421 GALLIUM_DRIVERS: "i915,r600"
422 script:
423 - LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh
424 - LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh
425 - LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh
426
427 meson-vulkan:
428 extends: .meson-build
429 variables:
430 UNWIND: "false"
431 DRI_LOADERS: >
432 -D glx=disabled
433 -D gbm=false
434 -D egl=false
435 -D platforms=x11,wayland,drm
436 -D osmesa=none
437 GALLIUM_ST: >
438 -D dri3=true
439 -D gallium-vdpau=false
440 -D gallium-xvmc=false
441 -D gallium-omx=disabled
442 -D gallium-va=false
443 -D gallium-xa=false
444 -D gallium-nine=false
445 -D gallium-opencl=disabled
446 -D b_sanitize=undefined
447 -D c_args=-fno-sanitize-recover=all
448 -D cpp_args=-fno-sanitize-recover=all
449 UBSAN_OPTIONS: "print_stacktrace=1"
450 VULKAN_DRIVERS: intel,amd,freedreno
451 EXTRA_OPTION: >
452 -D vulkan-overlay-layer=true
453
454 # While the main point of this build is testing the i386 cross build,
455 # we also use this one to test some other options that are exclusive
456 # with meson-main's choices (classic swrast and osmesa)
457 meson-i386:
458 extends: .meson-cross
459 variables:
460 CROSS: i386
461 VULKAN_DRIVERS: intel
462 DRI_DRIVERS: "swrast"
463 GALLIUM_DRIVERS: "iris"
464 EXTRA_OPTION: >
465 -D vulkan-overlay-layer=true
466 -D llvm=false
467 -D osmesa=classic
468
469 meson-mingw32-x86_64:
470 extends: .meson-build
471 variables:
472 UNWIND: "false"
473 DRI_DRIVERS: ""
474 GALLIUM_DRIVERS: "swrast"
475 EXTRA_OPTION: >
476 -Dllvm=false
477 -Dosmesa=gallium
478 --cross-file=.gitlab-ci/x86_64-w64-mingw32
479
480 scons:
481 extends: .scons-build
482 variables:
483 SCONS_TARGET: "llvm=1"
484 SCONS_CHECK_COMMAND: "scons llvm=1 force_scons=1 check"
485 script:
486 - SCONS_TARGET="" SCONS_CHECK_COMMAND="scons check force_scons=1" .gitlab-ci/scons-build.sh
487 - LLVM_VERSION=9 .gitlab-ci/scons-build.sh
488
489 scons-old-llvm:
490 extends:
491 - scons
492 - .use-x86_build_old
493 script:
494 - LLVM_VERSION=3.9 .gitlab-ci/scons-build.sh
495
496 .test:
497 extends:
498 - .ci-run-policy
499 stage: test
500 variables:
501 GIT_STRATEGY: none # testing doesn't build anything from source
502 before_script:
503 # Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
504 - rm -rf install
505 - tar -xf artifacts/install.tar
506 - LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
507 artifacts:
508 when: always
509 name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
510 paths:
511 - results/
512 dependencies:
513 - meson-testing
514
515 .test-gl:
516 extends:
517 - .test
518 variables:
519 TAG: *x86_test-gl
520 image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:$TAG"
521 needs:
522 - meson-testing
523 - x86_test-gl
524
525 .test-vk:
526 extends:
527 - .test
528 variables:
529 TAG: *x86_test-vk
530 image: "$CI_REGISTRY_IMAGE/debian/x86_test-vk:$TAG"
531 needs:
532 - meson-testing
533 - x86_test-vk
534
535 .piglit-test:
536 extends: .test-gl
537 artifacts:
538 when: on_failure
539 name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
540 paths:
541 - summary/
542 variables:
543 LIBGL_ALWAYS_SOFTWARE: 1
544 PIGLIT_NO_WINDOW: 1
545 script:
546 - artifacts/piglit/run.sh
547
548 piglit-quick_gl:
549 extends: .piglit-test
550 variables:
551 LP_NUM_THREADS: 0
552 NIR_VALIDATE: 0
553 PIGLIT_OPTIONS: >
554 --process-isolation false
555 -x arb_gpu_shader5
556 -x egl_ext_device_
557 -x egl_ext_platform_device
558 -x ext_timer_query@time-elapsed
559 -x glx-multithread-clearbuffer
560 -x glx-multithread-shader-compile
561 -x max-texture-size
562 -x maxsize
563 PIGLIT_PROFILES: quick_gl
564
565 piglit-glslparser:
566 extends: .piglit-test
567 variables:
568 LP_NUM_THREADS: 0
569 NIR_VALIDATE: 0
570 PIGLIT_PROFILES: glslparser
571
572 piglit-quick_shader:
573 extends: .piglit-test
574 variables:
575 LP_NUM_THREADS: 1
576 NIR_VALIDATE: 0
577 PIGLIT_PROFILES: quick_shader
578
579 .deqp-test:
580 variables:
581 DEQP_SKIPS: deqp-default-skips.txt
582 script:
583 - ./artifacts/deqp-runner.sh
584
585 .deqp-test-gl:
586 extends:
587 - .test-gl
588 - .deqp-test
589
590 .deqp-test-vk:
591 extends:
592 - .test-vk
593 - .deqp-test
594 variables:
595 DEQP_VER: vk
596
597 test-llvmpipe-gles2:
598 variables:
599 DEQP_VER: gles2
600 DEQP_PARALLEL: 4
601 NIR_VALIDATE: 0
602 # Don't use threads inside llvmpipe, we've already got all 4 cores
603 # busy with DEQP_PARALLEL.
604 LP_NUM_THREADS: 0
605 DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
606 LIBGL_ALWAYS_SOFTWARE: "true"
607 extends: .deqp-test-gl
608
609 test-softpipe-gles2:
610 extends: test-llvmpipe-gles2
611 variables:
612 DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
613 DEQP_SKIPS: deqp-softpipe-skips.txt
614 GALLIUM_DRIVER: "softpipe"
615
616 test-softpipe-gles3:
617 parallel: 2
618 variables:
619 DEQP_VER: gles3
620 extends: test-softpipe-gles2
621
622 test-softpipe-gles31:
623 parallel: 4
624 variables:
625 DEQP_VER: gles31
626 extends: test-softpipe-gles2
627
628 arm64_a630_gles2:
629 extends:
630 - .deqp-test-gl
631 - .use-arm_test
632 variables:
633 DEQP_VER: gles2
634 DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
635 DEQP_SKIPS: deqp-freedreno-a630-skips.txt
636 NIR_VALIDATE: 0
637 DEQP_PARALLEL: 4
638 FLAKES_CHANNEL: "#freedreno-ci"
639 tags:
640 - mesa-cheza
641 dependencies:
642 - meson-arm64
643
644 arm64_a630_gles31:
645 extends: arm64_a630_gles2
646 variables:
647 DEQP_VER: gles31
648
649 arm64_a630_gles3:
650 extends: arm64_a630_gles2
651 variables:
652 DEQP_VER: gles3
653
654 arm64_a306_gles2:
655 extends: arm64_a630_gles2
656 variables:
657 DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt
658 DEQP_SKIPS: deqp-default-skips.txt
659 tags:
660 - db410c
661
662 # RADV CI
663 .test-radv:
664 variables:
665 VK_DRIVER: radeon
666 RADV_DEBUG: checkir
667 # Can only be triggered manually on personal branches because RADV is the only
668 # driver that does Vulkan testing at the moment.
669 rules:
670 # Never test RADV by default in the main project.
671 - if: '$CI_PROJECT_PATH == "mesa/mesa"'
672 when: never
673 # Never test RADV by default for merge requests.
674 - if: '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
675 when: never
676 # Otherwise, allow testing RADV if the test image for VK has been manually
677 # started.
678 - when: on_success
679
680 radv_polaris10_vkcts:
681 extends:
682 - .deqp-test-vk
683 - .test-radv
684 variables:
685 DEQP_PARALLEL: 4
686 DEQP_SKIPS: deqp-radv-polaris10-skips.txt
687 tags:
688 - polaris10