# repository's registry will be used there as well.
variables:
UPSTREAM_REPO: mesa/mesa
- DEBIAN_TAG: "2019-09-18"
- DEBIAN_ARM64_TAG: "arm64v8-2019-08-09"
+ DEBIAN_TAG: "amd64-2019-11-13-2"
+ DEBIAN_TEST_TAG: "amd64-test-2019-11-12-2"
+ DEBIAN_ARM64_TAG: "arm64v8-2019-11-13"
+ DEBIAN_ARM64_TEST_TAG: "arm64v8-test-2019-11-12-2"
STRETCH_TAG: "2019-09-18"
DEBIAN_VERSION: buster-slim
STRETCH_VERSION: stretch-slim
DEBIAN_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TAG"
+ DEBIAN_TEST_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_TEST_TAG"
DEBIAN_ARM64_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TAG"
+ DEBIAN_ARM64_TEST_IMAGE: "$CI_REGISTRY_IMAGE/debian/$DEBIAN_VERSION:$DEBIAN_ARM64_TEST_TAG"
STRETCH_IMAGE: "$CI_REGISTRY_IMAGE/debian/$STRETCH_VERSION:$STRETCH_TAG"
include:
ref: 1f7f57c64ff4ebbf7292e3b7a13600518b8cb24c
file: '/templates/debian.yml'
+include:
+ - local: '.gitlab-ci/lava-gitlab-ci.yml'
+
stages:
- - containers
+ - container
- build
- test
# When to automatically run the CI
.ci-run-policy:
only:
- - branches@mesa/mesa
- - merge_requests
- - /^ci([-/].*)?$/
+ refs:
+ - branches@mesa/mesa
+ - merge_requests
+ - /^ci([-/].*)?$/
+ changes:
+ - VERSION
+ - bin/**/*
+ # GitLab CI
+ - .gitlab-ci.yml
+ - .gitlab-ci/**/*
+ # Meson
+ - meson*
+ - build-support/**/*
+ - subprojects/**/*
+ # SCons
+ - SConstruct
+ - scons/**/*
+ - common.py
+ # Source code
+ - include/**/*
+ - src/**/*
retry:
max: 2
when:
# Build the normal CI native and cross-build docker images.
-debian-10:
+.container:
+ stage: container
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
+ # no need to pull the whole repo to build the container image
+ GIT_STRATEGY: none
+
+debian-10:amd64:
+ extends:
+ - .debian@container-ifnot-exists
+ - .container
+ variables:
DEBIAN_EXEC: 'bash .gitlab-ci/debian-install.sh'
-debian-9:
- extends: debian-10
+.use-debian-10:amd64:
+ image: $DEBIAN_IMAGE
+ needs:
+ - debian-10:amd64
+
+debian-10-test:amd64:
+ extends: debian-10:amd64
+ variables:
+ DEBIAN_TAG: "$DEBIAN_TEST_TAG"
+ DEBIAN_EXEC: 'bash .gitlab-ci/debian-test-install.sh'
+
+debian-9:amd64:
+ extends: debian-10:amd64
variables:
DEBIAN_TAG: $STRETCH_TAG
DEBIAN_VERSION: $STRETCH_VERSION
DEBIAN_IMAGE: $STRETCH_IMAGE
DEBIAN_EXEC: 'bash .gitlab-ci/debian-stretch-install.sh'
-.use-debian-9:
+.use-debian-9:amd64:
image: $STRETCH_IMAGE
needs:
- - debian-9
+ - debian-9:amd64
-# Builds a Docker image with the native environment and VK-GL-CTS for testing.
-test-container:arm64:
+debian-10:arm64:
extends:
- .debian@container-ifnot-exists@arm64v8
- - .ci-run-policy
- stage: containers
+ - .container
variables:
DEBIAN_TAG: "$DEBIAN_ARM64_TAG"
- GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
- DEBIAN_EXEC: 'bash .gitlab-ci/debian-test-install.sh'
+ DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-install.sh'
+
+debian-10-test:arm64:
+ extends:
+ - .debian@container-ifnot-exists@arm64v8
+ - .container
+ variables:
+ DEBIAN_TAG: "$DEBIAN_ARM64_TEST_TAG"
+ DEBIAN_EXEC: 'bash .gitlab-ci/debian-arm64-test-install.sh'
+
# BUILD
-.build:
+# Shared between windows and Linux
+.build-common:
extends: .ci-run-policy
- image: $DEBIAN_IMAGE
stage: build
- cache:
- paths:
- - ccache
artifacts:
when: always
paths:
# scons:
- build/*/config.log
- shader-db
+
+# Just Linux
+.build-linux:
+ extends: .build-common
+ cache:
+ key: ${CI_JOB_NAME}
+ paths:
+ - ccache
variables:
CCACHE_COMPILERCHECK: "content"
# Use ccache transparently, and print stats before/after
- export PATH="/usr/lib/ccache:$PATH"
- export CCACHE_BASEDIR="$PWD"
- export CCACHE_DIR="$PWD/ccache"
+ - ccache --max-size=1500M
- 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
+.build-windows:
+ extends: .build-common
+ tags:
+ - mesa-windows
+ cache:
+ key: ${CI_JOB_NAME}
+ paths:
+ - subprojects/packagecache
+
.meson-build:
- extends: .build
+ extends:
+ - .build-linux
+ - .use-debian-10:amd64
script:
- .gitlab-ci/meson-build.sh
.scons-build:
- extends: .build
+ extends:
+ - .build-linux
+ - .use-debian-10:amd64
variables:
SCONSFLAGS: "-j4"
script:
-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"
+ GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink"
LLVM_VERSION: "7"
EXTRA_OPTION: >
-D osmesa=gallium
-D tools=all
- MESON_SHADERDB: "true"
BUILDTYPE: "debugoptimized"
+ script:
+ - .gitlab-ci/meson-build.sh
+ - .gitlab-ci/run-shader-db.sh
+ - .gitlab-ci/prepare-artifacts.sh
.meson-cross:
extends:
- .meson-build
- - .ci-deqp-artifacts
variables:
UNWIND: "false"
DRI_LOADERS: >
-D gallium-va=false
-D gallium-xa=false
-D gallium-nine=false
- -D llvm=false
- script:
- - .gitlab-ci/meson-build.sh
-meson-armhf:
+.meson-arm:
extends: .meson-cross
+ image: $DEBIAN_ARM64_IMAGE
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.
+ GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
EXTRA_OPTION: >
- -D build-tests=false
-D I-love-half-baked-turnips=true
- -D vulkan-overlay-layer=true
+ needs:
+ - debian-10:arm64
+ tags:
+ - aarch64
+
+meson-armhf:
+ extends: .meson-arm
+ variables:
+ CROSS: armhf
+ LLVM_VERSION: "7"
meson-arm64:
- extends: meson-armhf
+ extends:
+ - .meson-arm
+ - .ci-deqp-artifacts
variables:
- CROSS: arm64
BUILDTYPE: "debugoptimized"
+ VULKAN_DRIVERS: "freedreno,amd"
+ script:
+ - .gitlab-ci/meson-build.sh
+ - .gitlab-ci/prepare-artifacts.sh
# NOTE: Building SWR is 2x (yes two) times slower than all the other
# gallium drivers combined.
CC: "ccache clang-8"
CXX: "ccache clang++-8"
+.meson-windows:
+ extends:
+ - .build-windows
+ before_script:
+ - $ENV:ARCH = "x86"
+ - $ENV:VERSION = "2019\Community"
+ script:
+ - cmd /C .gitlab-ci\meson-build.bat
+
scons-swr:
extends: .scons-build
variables:
meson-clover-old-llvm:
extends:
- meson-clover
- - .use-debian-9
+ - .use-debian-9:amd64
variables:
UNWIND: "false"
DRI_LOADERS: >
-D gallium-xa=false
-D gallium-nine=false
-D gallium-opencl=disabled
+ -D b_sanitize=undefined
+ -D c_args=-fno-sanitize-recover=all
+ -D cpp_args=-fno-sanitize-recover=all
+ UBSAN_OPTIONS: "print_stacktrace=1"
VULKAN_DRIVERS: intel,amd,freedreno
LLVM_VERSION: "8"
EXTRA_OPTION: >
-D llvm=false
-D osmesa=classic
+meson-mingw32-x86_64:
+ extends: .meson-build
+ variables:
+ UNWIND: "false"
+ DRI_DRIVERS: ""
+ GALLIUM_DRIVERS: "swrast"
+ EXTRA_OPTION: >
+ -Dllvm=false
+ -Dosmesa=gallium
+ --cross-file=.gitlab-ci/x86_64-w64-mingw32
+
scons:
extends: .scons-build
variables:
SCONS_TARGET: "llvm=1"
- SCONS_CHECK_COMMAND: "scons llvm=1 check"
+ SCONS_CHECK_COMMAND: "scons llvm=1 force_scons=1 check"
script:
- - SCONS_TARGET="" SCONS_CHECK_COMMAND="scons check" .gitlab-ci/scons-build.sh
+ - SCONS_TARGET="" SCONS_CHECK_COMMAND="scons check force_scons=1" .gitlab-ci/scons-build.sh
- LLVM_VERSION=6.0 .gitlab-ci/scons-build.sh
- LLVM_VERSION=7 .gitlab-ci/scons-build.sh
- LLVM_VERSION=8 .gitlab-ci/scons-build.sh
scons-old-llvm:
extends:
- scons
- - .use-debian-9
+ - .use-debian-9:amd64
script:
- LLVM_VERSION=3.9 .gitlab-ci/scons-build.sh
- LLVM_VERSION=4.0 .gitlab-ci/scons-build.sh
- LLVM_VERSION=5.0 .gitlab-ci/scons-build.sh
-.deqp-test:
- extends: .ci-run-policy
+.test:
+ extends:
+ - .ci-run-policy
+ image: $DEBIAN_TEST_IMAGE
stage: test
- image: $DEBIAN_IMAGE
variables:
GIT_STRATEGY: none # testing doesn't build anything from source
- DEQP_SKIPS: deqp-default-skips.txt
- script:
+ before_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
+ - LD_LIBRARY_PATH=install/lib ldd install/lib/{*,dri/swrast_dri}.so
artifacts:
when: on_failure
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
- results/
dependencies:
- meson-main
- needs: [meson-main]
+ needs:
+ - meson-main
+ - debian-10-test:amd64
+
+.piglit-test:
+ extends: .test
+ artifacts:
+ reports:
+ junit: results/results.xml
+ variables:
+ LIBGL_ALWAYS_SOFTWARE: 1
+ PIGLIT_NO_WINDOW: 1
+ script:
+ - artifacts/piglit/run.sh
+
+piglit-quick_gl:
+ extends: .piglit-test
+ variables:
+ LP_NUM_THREADS: 0
+ PIGLIT_OPTIONS: >
+ -x arb_gpu_shader5
+ -x glx-multithread-clearbuffer
+ -x glx-multithread-shader-compile
+ -x max-texture-size
+ -x maxsize
+ PIGLIT_PROFILES: quick_gl
+
+piglit-glslparser+quick_shader:
+ extends: .piglit-test
+ variables:
+ LP_NUM_THREADS: 1
+ PIGLIT_OPTIONS: >
+ -x spec@arb_arrays_of_arrays@execution@ubo
+ -x spec@arb_gpu_shader_int64@execution$$
+ -x spec@arb_separate_shader_objects@execution
+ -x spec@arb_separate_shader_objects@linker
+ -x spec@arb_shader_storage_buffer_object@execution
+ -x spec@glsl-1.50@execution@built-in-functions
+ PIGLIT_PROFILES: "glslparser quick_shader"
+ PIGLIT_RESULTS: "glslparser+quick_shader"
+
+.deqp-test:
+ extends: .test
+ variables:
+ DEQP_SKIPS: deqp-default-skips.txt
+ script:
+ - ./artifacts/deqp-runner.sh
test-llvmpipe-gles2:
- parallel: 4
variables:
DEQP_VER: gles2
+ DEQP_PARALLEL: 4
+ # Don't use threads inside llvmpipe, we've already got all 4 cores
+ # busy with DEQP_PARALLEL.
+ LP_NUM_THREADS: 0
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"
+ DEQP_SKIPS: deqp-softpipe-skips.txt
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:
+test-softpipe-gles3:
+ parallel: 2
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
+ extends: test-softpipe-gles2
+
+test-softpipe-gles31:
+ parallel: 4
+ variables:
+ DEQP_VER: gles31
+ extends: test-softpipe-gles2
arm64_a630_gles2:
extends: .deqp-test
- image: $DEBIAN_ARM64_IMAGE
+ image: $DEBIAN_ARM64_TEST_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
- mesa-cheza
dependencies:
- meson-arm64
- needs: [ meson-arm64 ]
+ needs:
+ - meson-arm64
+ - debian-10-test:arm64
arm64_a630_gles31:
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