mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-12 03:30:22 +01:00
Yes, some tests fail, but we can turn those into XFAILs at meson time. Better to keep the things that work working than not cover them at all. Unfortunately XPASS results will not cause the build to fail until we update CI to meson 0.51 or newer. Reviewed-by: Daniel Stone <daniels@collabora.com>
419 lines
11 KiB
YAML
419 lines
11 KiB
YAML
# This is the tag of the docker image used for the build jobs. If the
|
|
# image doesn't exist yet, the containers stage generates it.
|
|
#
|
|
# In order to generate a new image, one should generally change the tag.
|
|
# While removing the image from the registry would also work, that's not
|
|
# recommended except for ephemeral images during development: Replacing
|
|
# an image after a significant amount of time might pull in newer
|
|
# versions of gcc/clang or other packages, which might break the build
|
|
# with older commits using the same tag.
|
|
#
|
|
# After merging a change resulting in generating a new image to the
|
|
# main repository, it's recommended to remove the image from the source
|
|
# repository's container registry, so that the image from the main
|
|
# repository's registry will be used there as well.
|
|
variables:
|
|
UPSTREAM_REPO: mesa/mesa
|
|
DEBIAN_TAG: "2019-09-11"
|
|
DEBIAN_ARM64_TAG: "arm64v8-2019-08-09"
|
|
DEBIAN_VERSION: stretch-slim
|
|
DEBIAN_ARM64_VERSION: buster-slim
|
|
DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
|
|
DEBIAN_ARM64_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_ARM64_VERSION:$DEBIAN_ARM64_TAG"
|
|
|
|
include:
|
|
- project: 'wayland/ci-templates'
|
|
ref: 1f7f57c6
|
|
file: '/templates/debian.yml'
|
|
|
|
stages:
|
|
- containers
|
|
- build
|
|
- test
|
|
|
|
|
|
# When to automatically run the CI
|
|
.ci-run-policy:
|
|
only:
|
|
- branches@mesa/mesa
|
|
- merge_requests
|
|
- /^ci([-/].*)?$/
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
|
|
.ci-deqp-artifacts:
|
|
artifacts:
|
|
when: always
|
|
untracked: false
|
|
paths:
|
|
# Watch out! Artifacts are relative to the build dir.
|
|
# https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
|
|
- artifacts
|
|
|
|
# Builds the normal CI native and cross-build docker image.
|
|
debian:
|
|
extends:
|
|
- .debian@container-ifnot-exists
|
|
- .ci-run-policy
|
|
stage: containers
|
|
variables:
|
|
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
|
DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
|
|
|
|
# Builds a Docker image with the native environment and VK-GL-CTS for testing.
|
|
test-container:arm64:
|
|
extends:
|
|
- .debian@container-ifnot-exists@arm64v8
|
|
- .ci-run-policy
|
|
stage: containers
|
|
variables:
|
|
DEBIAN_TAG: "$DEBIAN_ARM64_TAG"
|
|
DEBIAN_VERSION: "$DEBIAN_ARM64_VERSION"
|
|
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
|
DEBIAN_EXEC: 'bash .gitlab-ci/debian-test-install.sh'
|
|
|
|
# BUILD
|
|
|
|
.build:
|
|
extends: .ci-run-policy
|
|
image: $DEBIAN_IMAGE
|
|
stage: build
|
|
cache:
|
|
paths:
|
|
- ccache
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs/*.txt
|
|
# scons:
|
|
- build/*/config.log
|
|
- shader-db
|
|
variables:
|
|
CCACHE_COMPILERCHECK: "content"
|
|
# Use ccache transparently, and print stats before/after
|
|
before_script:
|
|
- export PATH="/usr/lib/ccache:$PATH"
|
|
- export CCACHE_BASEDIR="$PWD"
|
|
- export CCACHE_DIR="$PWD/ccache"
|
|
- ccache --zero-stats || true
|
|
- ccache --show-stats || true
|
|
after_script:
|
|
# In case the install dir is being saved as artifacts, tar it up
|
|
# so that symlinks and hardlinks aren't each packed separately in
|
|
# the zip file.
|
|
- if [ -d install ]; then
|
|
tar -cf artifacts/install.tar install;
|
|
fi
|
|
- export CCACHE_DIR="$PWD/ccache"
|
|
- ccache --show-stats
|
|
|
|
.meson-build:
|
|
extends: .build
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
|
|
.scons-build:
|
|
extends: .build
|
|
variables:
|
|
SCONSFLAGS: "-j4"
|
|
script:
|
|
- if test -n "$LLVM_VERSION"; then
|
|
export LLVM_CONFIG="llvm-config-${LLVM_VERSION}";
|
|
fi
|
|
- scons $SCONS_TARGET
|
|
- eval $SCONS_CHECK_COMMAND
|
|
|
|
meson-main:
|
|
extends:
|
|
- .meson-build
|
|
- .ci-deqp-artifacts
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_LOADERS: >
|
|
-D glx=dri
|
|
-D gbm=true
|
|
-D egl=true
|
|
-D platforms=x11,wayland,drm,surfaceless
|
|
DRI_DRIVERS: "i915,i965,r100,r200,nouveau"
|
|
GALLIUM_ST: >
|
|
-D dri3=true
|
|
-D gallium-extra-hud=true
|
|
-D gallium-vdpau=true
|
|
-D gallium-xvmc=true
|
|
-D gallium-omx=bellagio
|
|
-D gallium-va=true
|
|
-D gallium-xa=true
|
|
-D gallium-nine=true
|
|
-D gallium-opencl=disabled
|
|
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima"
|
|
LLVM_VERSION: "7"
|
|
EXTRA_OPTION: >
|
|
-D osmesa=gallium
|
|
-D tools=all
|
|
MESON_SHADERDB: "true"
|
|
BUILDTYPE: "debugoptimized"
|
|
|
|
.meson-cross:
|
|
extends:
|
|
- .meson-build
|
|
- .ci-deqp-artifacts
|
|
variables:
|
|
UNWIND: "false"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D gbm=false
|
|
-D egl=true
|
|
-D platforms=surfaceless
|
|
-D osmesa=none
|
|
GALLIUM_ST: >
|
|
-D dri3=false
|
|
-D gallium-vdpau=false
|
|
-D gallium-xvmc=false
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=false
|
|
-D gallium-xa=false
|
|
-D gallium-nine=false
|
|
-D llvm=false
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
|
|
meson-armhf:
|
|
extends: .meson-cross
|
|
variables:
|
|
CROSS: armhf
|
|
VULKAN_DRIVERS: freedreno
|
|
GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,tegra,v3d,vc4"
|
|
# Disable the tests since we're cross compiling.
|
|
EXTRA_OPTION: >
|
|
-D build-tests=false
|
|
-D I-love-half-baked-turnips=true
|
|
-D vulkan-overlay-layer=true
|
|
|
|
meson-arm64:
|
|
extends: meson-armhf
|
|
variables:
|
|
CROSS: arm64
|
|
BUILDTYPE: "debugoptimized"
|
|
|
|
# NOTE: Building SWR is 2x (yes two) times slower than all the other
|
|
# gallium drivers combined.
|
|
# Start this early so that it doesn't limit the total run time.
|
|
#
|
|
# We also stick the glvnd build here, since we want non-glvnd in
|
|
# meson-main for actual driver CI.
|
|
meson-swr-glvnd:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_LOADERS: >
|
|
-D glvnd=true
|
|
-D egl=true
|
|
GALLIUM_ST: >
|
|
-D dri3=true
|
|
-D gallium-vdpau=false
|
|
-D gallium-xvmc=false
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=false
|
|
-D gallium-xa=false
|
|
-D gallium-nine=false
|
|
-D gallium-opencl=disabled
|
|
GALLIUM_DRIVERS: "swr,iris"
|
|
LLVM_VERSION: "6.0"
|
|
|
|
meson-clang:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_DRIVERS: "auto"
|
|
GALLIUM_DRIVERS: "auto"
|
|
VULKAN_DRIVERS: intel,amd,freedreno
|
|
CC: "ccache clang-8"
|
|
CXX: "ccache clang++-8"
|
|
before_script:
|
|
- export CCACHE_BASEDIR="$PWD" CCACHE_DIR="$PWD/ccache"
|
|
- ccache --zero-stats --show-stats || true
|
|
# clang++ breaks if it picks up the GCC 8 directory without libstdc++.so
|
|
- apt-get remove -y libgcc-8-dev
|
|
|
|
scons-swr:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: "swr=1"
|
|
SCONS_CHECK_COMMAND: "true"
|
|
LLVM_VERSION: "6.0"
|
|
|
|
scons-win64:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: platform=windows machine=x86_64
|
|
SCONS_CHECK_COMMAND: "true"
|
|
|
|
meson-clover:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "true"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D egl=false
|
|
-D gbm=false
|
|
GALLIUM_ST: >
|
|
-D dri3=false
|
|
-D gallium-vdpau=false
|
|
-D gallium-xvmc=false
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=false
|
|
-D gallium-xa=false
|
|
-D gallium-nine=false
|
|
-D gallium-opencl=icd
|
|
script:
|
|
- export GALLIUM_DRIVERS="r600,radeonsi"
|
|
- .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=8 .gitlab-ci/meson-build.sh
|
|
- export GALLIUM_DRIVERS="i915,r600"
|
|
- LLVM_VERSION=3.9 .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=4.0 .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=5.0 .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=6.0 .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=7 .gitlab-ci/meson-build.sh
|
|
|
|
meson-vulkan:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "false"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D gbm=false
|
|
-D egl=false
|
|
-D platforms=x11,wayland,drm
|
|
-D osmesa=none
|
|
GALLIUM_ST: >
|
|
-D dri3=true
|
|
-D gallium-vdpau=false
|
|
-D gallium-xvmc=false
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=false
|
|
-D gallium-xa=false
|
|
-D gallium-nine=false
|
|
-D gallium-opencl=disabled
|
|
VULKAN_DRIVERS: intel,amd,freedreno
|
|
LLVM_VERSION: "8"
|
|
EXTRA_OPTION: >
|
|
-D vulkan-overlay-layer=true
|
|
|
|
# While the main point of this build is testing the i386 cross build,
|
|
# we also use this one to test some other options that are exclusive
|
|
# with meson-main's choices (classic swrast and osmesa)
|
|
meson-i386:
|
|
extends: .meson-cross
|
|
variables:
|
|
CROSS: i386
|
|
VULKAN_DRIVERS: intel
|
|
DRI_DRIVERS: "swrast"
|
|
GALLIUM_DRIVERS: "iris"
|
|
EXTRA_OPTION: >
|
|
-D vulkan-overlay-layer=true
|
|
-D llvm=false
|
|
-D osmesa=classic
|
|
|
|
scons-nollvm:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: "llvm=0"
|
|
SCONS_CHECK_COMMAND: "scons llvm=0 check"
|
|
|
|
scons-llvm:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: "llvm=1"
|
|
SCONS_CHECK_COMMAND: "scons llvm=1 check"
|
|
LLVM_VERSION: "3.9"
|
|
|
|
.deqp-test:
|
|
extends: .ci-run-policy
|
|
stage: test
|
|
image: $DEBIAN_IMAGE
|
|
variables:
|
|
GIT_STRATEGY: none # testing doesn't build anything from source
|
|
DEQP_SKIPS: deqp-default-skips.txt
|
|
script:
|
|
# Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
|
|
- rm -rf install
|
|
- tar -xf artifacts/install.tar
|
|
- ./artifacts/deqp-runner.sh
|
|
artifacts:
|
|
when: on_failure
|
|
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
|
|
paths:
|
|
- results/
|
|
dependencies:
|
|
- meson-main
|
|
needs: [meson-main]
|
|
|
|
test-llvmpipe-gles2:
|
|
parallel: 4
|
|
variables:
|
|
DEQP_VER: gles2
|
|
DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
DEQP_RENDERER_MATCH: "llvmpipe"
|
|
extends: .deqp-test
|
|
|
|
test-softpipe-gles2:
|
|
extends: test-llvmpipe-gles2
|
|
variables:
|
|
DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
|
|
DEQP_RENDERER_MATCH: "softpipe"
|
|
GALLIUM_DRIVER: "softpipe"
|
|
|
|
# The GLES2 CTS run takes about 8 minutes of CPU time, while GLES3 is
|
|
# 25 minutes. Until we can get its runtime down, just do a partial
|
|
# (every 10 tests) run.
|
|
test-softpipe-gles3-limited:
|
|
variables:
|
|
DEQP_VER: gles3
|
|
DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
DEQP_RENDERER_MATCH: "softpipe"
|
|
GALLIUM_DRIVER: "softpipe"
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 10
|
|
extends: .deqp-test
|
|
|
|
arm64_a630_gles2:
|
|
extends: .deqp-test
|
|
image: $DEBIAN_ARM64_IMAGE
|
|
variables:
|
|
DEQP_VER: gles2
|
|
DEQP_RENDERER_MATCH: "FD630"
|
|
DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
|
|
DEQP_SKIPS: deqp-freedreno-a630-skips.txt
|
|
NIR_VALIDATE: 0
|
|
tags:
|
|
- mesa-cheza
|
|
dependencies:
|
|
- meson-arm64
|
|
needs: [ meson-arm64 ]
|
|
|
|
arm64_a630_gles31:
|
|
extends: arm64_a630_gles2
|
|
parallel: 4
|
|
variables:
|
|
DEQP_VER: gles31
|
|
|
|
arm64_a630_gles3:
|
|
parallel: 6
|
|
extends: arm64_a630_gles2
|
|
variables:
|
|
DEQP_VER: gles3
|
|
|
|
arm64_a306_gles2:
|
|
parallel: 4
|
|
extends: arm64_a630_gles2
|
|
variables:
|
|
DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt
|
|
DEQP_SKIPS: deqp-default-skips.txt
|
|
DEQP_RENDERER_MATCH: "FD307"
|
|
tags:
|
|
- db410c
|