mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2024-11-30 13:44:06 +08:00
3cdc0d5098
Having it as the last stage meant that the pages job could only run once all other jobs had finished. The new position means it can run in parallel with build jobs. Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5711>
1253 lines
29 KiB
YAML
1253 lines
29 KiB
YAML
variables:
|
|
FDO_UPSTREAM_REPO: mesa/mesa
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: 59de540b620c45739871d1a073d76d5521989d11
|
|
file: '/templates/debian.yml'
|
|
- local: '.gitlab-ci/lava-gitlab-ci.yml'
|
|
- local: '.gitlab-ci/test-source-dep.yml'
|
|
|
|
stages:
|
|
- container+docs
|
|
- container-2
|
|
- deploy
|
|
- meson-x86_64
|
|
- scons
|
|
- meson-misc
|
|
- llvmpipe
|
|
- softpipe
|
|
- freedreno
|
|
- panfrost
|
|
- radv
|
|
- lima
|
|
- virgl
|
|
- success
|
|
|
|
.docs-base:
|
|
extends: .ci-run-policy
|
|
image: alpine
|
|
script:
|
|
- apk --no-cache add py3-pip
|
|
- pip3 install sphinx sphinx_rtd_theme
|
|
- sphinx-build -b html docs public
|
|
|
|
pages:
|
|
extends: .docs-base
|
|
stage: deploy
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
rules:
|
|
- if: '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == "master"'
|
|
changes: &docs-or-ci
|
|
- docs/**/*
|
|
- .gitlab-ci.yml
|
|
when: always
|
|
# Other cases default to never
|
|
|
|
test-docs:
|
|
extends: .docs-base
|
|
stage: container+docs
|
|
rules:
|
|
- if: '$CI_PROJECT_NAMESPACE == "mesa"'
|
|
when: never
|
|
- if: '$GITLAB_USER_LOGIN == "marge-bot"'
|
|
changes: *docs-or-ci
|
|
when: on_success
|
|
- changes: *docs-or-ci
|
|
when: manual
|
|
# Other cases default to never
|
|
|
|
# When to automatically run the CI
|
|
.ci-run-policy:
|
|
rules:
|
|
# If any files affecting the pipeline are changed, build/test jobs run
|
|
# automatically once all dependency jobs have passed
|
|
- changes: &all_paths
|
|
- VERSION
|
|
- bin/git_sha1_gen.py
|
|
- bin/install_megadrivers.py
|
|
- bin/meson_get_version.py
|
|
- bin/symbols-check.py
|
|
# GitLab CI
|
|
- .gitlab-ci.yml
|
|
- .gitlab-ci/**/*
|
|
# Meson
|
|
- meson*
|
|
- build-support/**/*
|
|
- subprojects/**/*
|
|
# SCons
|
|
- SConstruct
|
|
- scons/**/*
|
|
- common.py
|
|
# Source code
|
|
- include/**/*
|
|
- src/**/*
|
|
when: on_success
|
|
# Otherwise, build/test jobs won't run
|
|
- when: never
|
|
retry:
|
|
max: 2
|
|
when:
|
|
- runner_system_failure
|
|
# Cancel CI run if a newer commit is pushed to the same branch
|
|
interruptible: true
|
|
|
|
success:
|
|
stage: success
|
|
image: debian:stable-slim
|
|
rules:
|
|
- if: '$CI_PROJECT_NAMESPACE == "mesa"'
|
|
when: never
|
|
- if: '$GITLAB_USER_LOGIN == "marge-bot"'
|
|
changes: *docs-or-ci
|
|
when: never
|
|
- changes: *all_paths
|
|
when: never
|
|
- when: on_success
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
script:
|
|
- echo "Dummy job to make sure every merge request pipeline runs at least one job"
|
|
|
|
|
|
.ci-deqp-artifacts:
|
|
artifacts:
|
|
name: "mesa_${CI_JOB_NAME}"
|
|
when: always
|
|
untracked: false
|
|
paths:
|
|
# Watch out! Artifacts are relative to the build dir.
|
|
# https://gitlab.com/gitlab-org/gitlab-ce/commit/8788fb925706cad594adf6917a6c5f6587dd1521
|
|
- artifacts
|
|
|
|
# Build the CI docker images.
|
|
#
|
|
# FDO_DISTRIBUTION_TAG is the tag of the docker image used by later stage jobs. If the
|
|
# image doesn't exist yet, the container stage job 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.
|
|
|
|
.container:
|
|
stage: container+docs
|
|
extends:
|
|
- .ci-run-policy
|
|
rules:
|
|
# Run pipeline by default in the main project if any CI pipeline
|
|
# configuration files were changed, to ensure docker images are up to date
|
|
- if: '$CI_PROJECT_PATH == "mesa/mesa"'
|
|
changes:
|
|
- .gitlab-ci.yml
|
|
- .gitlab-ci/**/*
|
|
when: on_success
|
|
# Run pipeline by default if it was triggered by Marge Bot, is for a
|
|
# merge request, and any files affecting the pipeline were changed
|
|
- if: '$GITLAB_USER_LOGIN == "marge-bot" && $CI_PROJECT_PATH != "mesa/mesa"'
|
|
changes:
|
|
*all_paths
|
|
when: on_success
|
|
# Run pipeline by default in the main project if it was not triggered by
|
|
# Marge Bot, and any files affecting the pipeline were changed
|
|
- if: '$GITLAB_USER_LOGIN != "marge-bot" && $CI_PROJECT_PATH == "mesa/mesa"'
|
|
changes:
|
|
*all_paths
|
|
when: on_success
|
|
# Allow triggering jobs manually in other cases if any files affecting the
|
|
# pipeline were changed
|
|
- changes:
|
|
*all_paths
|
|
when: manual
|
|
# Otherwise, container jobs won't run
|
|
- when: never
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: buster-slim
|
|
FDO_REPO_SUFFIX: "debian/$CI_JOB_NAME"
|
|
FDO_DISTRIBUTION_EXEC: 'bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
|
|
# no need to pull the whole repo to build the container image
|
|
GIT_STRATEGY: none
|
|
|
|
# Debian 10 based x86 build image base
|
|
x86_build-base:
|
|
extends:
|
|
- .fdo.container-build@debian
|
|
- .container
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &x86_build-base "2020-06-12"
|
|
|
|
.use-x86_build-base:
|
|
extends:
|
|
- x86_build-base
|
|
- .ci-run-policy
|
|
stage: container-2
|
|
variables:
|
|
BASE_TAG: *x86_build-base
|
|
FDO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/x86_build-base:$BASE_TAG"
|
|
needs:
|
|
- x86_build-base
|
|
|
|
# Debian 10 based x86 main build image
|
|
x86_build:
|
|
extends:
|
|
- .use-x86_build-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &x86_build "2020-06-02"
|
|
|
|
.use-x86_build:
|
|
variables:
|
|
TAG: *x86_build
|
|
image: "$CI_REGISTRY_IMAGE/debian/x86_build:$TAG"
|
|
needs:
|
|
- x86_build-base
|
|
- x86_build
|
|
|
|
# Debian 10 based i386 cross-build image
|
|
i386_build:
|
|
extends:
|
|
- .use-x86_build-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &i386_build "2020-06-02"
|
|
|
|
.use-i386_build:
|
|
variables:
|
|
TAG: *i386_build
|
|
image: "$CI_REGISTRY_IMAGE/debian/i386_build:$TAG"
|
|
needs:
|
|
- x86_build-base
|
|
- i386_build
|
|
|
|
# Debian 10 based ppc64el cross-build image
|
|
ppc64el_build:
|
|
extends:
|
|
- .use-x86_build-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &ppc64el_build "2020-06-02"
|
|
|
|
.use-ppc64el_build:
|
|
variables:
|
|
TAG: *ppc64el_build
|
|
image: "$CI_REGISTRY_IMAGE/debian/ppc64el_build:$TAG"
|
|
needs:
|
|
- x86_build-base
|
|
- ppc64el_build
|
|
|
|
# Debian 10 based s390x cross-build image
|
|
s390x_build:
|
|
extends:
|
|
- .use-x86_build-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &s390x_build "2020-06-02"
|
|
|
|
.use-s390x_build:
|
|
variables:
|
|
TAG: *s390x_build
|
|
image: "$CI_REGISTRY_IMAGE/debian/s390x_build:$TAG"
|
|
needs:
|
|
- x86_build-base
|
|
- s390x_build
|
|
|
|
# Debian 10 based x86 test image base
|
|
x86_test-base:
|
|
extends: x86_build-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &x86_test-base "2020-06-02"
|
|
|
|
.use-x86_test-base:
|
|
extends:
|
|
- x86_build-base
|
|
- .ci-run-policy
|
|
stage: container-2
|
|
variables:
|
|
BASE_TAG: *x86_test-base
|
|
FDO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/x86_test-base:$BASE_TAG"
|
|
needs:
|
|
- x86_test-base
|
|
|
|
# Debian 10 based x86 test image for GL
|
|
x86_test-gl:
|
|
extends: .use-x86_test-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &x86_test-gl "2020-06-23-virgl"
|
|
|
|
# Debian 10 based x86 test image for VK
|
|
x86_test-vk:
|
|
extends: .use-x86_test-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &x86_test-vk "2020-06-18-vkcts"
|
|
|
|
# Debian 9 based x86 build image (old LLVM)
|
|
x86_build_old:
|
|
extends: x86_build-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &x86_build_old "2020-06-12"
|
|
FDO_DISTRIBUTION_VERSION: stretch-slim
|
|
|
|
.use-x86_build_old:
|
|
variables:
|
|
TAG: *x86_build_old
|
|
image: "$CI_REGISTRY_IMAGE/debian/x86_build_old:$TAG"
|
|
needs:
|
|
- x86_build_old
|
|
|
|
# Debian 10 based ARM build image
|
|
arm_build:
|
|
extends:
|
|
- .fdo.container-build@debian@arm64v8
|
|
- .container
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &arm_build "2020-06-22-tracie"
|
|
|
|
.use-arm_build:
|
|
variables:
|
|
TAG: *arm_build
|
|
image: "$CI_REGISTRY_IMAGE/debian/arm_build:$TAG"
|
|
needs:
|
|
- arm_build
|
|
|
|
# Debian 10 based x86 baremetal image base
|
|
arm_test-base:
|
|
extends:
|
|
- .fdo.container-build@debian
|
|
- .container
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &arm_test-base "2020-06-22-tracie"
|
|
|
|
.use-arm_test-base:
|
|
extends:
|
|
- arm_test-base
|
|
- .ci-run-policy
|
|
stage: container-2
|
|
variables:
|
|
BASE_TAG: *arm_test-base
|
|
FDO_BASE_IMAGE: "$CI_REGISTRY_IMAGE/debian/arm_test-base:$BASE_TAG"
|
|
needs:
|
|
- arm_test-base
|
|
|
|
# x86 image with ARM64 rootfs for baremetal testing.
|
|
arm64_test:
|
|
extends:
|
|
- .use-arm_test-base
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: &arm64_test "2020-06-25-kernelfix"
|
|
|
|
.use-arm64_test:
|
|
variables:
|
|
TAG: *arm64_test
|
|
image: "$CI_REGISTRY_IMAGE/debian/arm64_test:$TAG"
|
|
needs:
|
|
- arm_test-base
|
|
- arm64_test
|
|
|
|
# Native Windows docker builds
|
|
#
|
|
# Unlike the above Linux-based builds - including MinGW/SCons builds which
|
|
# cross-compile for Windows - which use the freedesktop ci-templates, we
|
|
# cannot use the same scheme here. As Windows lacks support for
|
|
# Docker-in-Docker, and Podman does not run natively on Windows, we have
|
|
# to open-code much of the same ourselves.
|
|
#
|
|
# This is achieved by first running in a native Windows shell instance
|
|
# (host PowerShell) in the container stage to build and push the image,
|
|
# then in the build stage by executing inside Docker.
|
|
|
|
.windows-docker-vs2019:
|
|
variables:
|
|
WINDOWS_TAG: "2020-05-05-llvm"
|
|
WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/windows/x64_build:$WINDOWS_TAG"
|
|
WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/windows/x64_build:$WINDOWS_TAG"
|
|
|
|
.windows_build_vs2019:
|
|
extends:
|
|
- .container
|
|
- .windows-docker-vs2019
|
|
stage: container+docs
|
|
variables:
|
|
GIT_STRATEGY: fetch # we do actually need the full repository though
|
|
timeout: 4h # LLVM takes ages
|
|
tags:
|
|
- windows
|
|
- shell
|
|
- "1809"
|
|
- mesa
|
|
script:
|
|
- .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE
|
|
|
|
.use-windows_build_vs2019:
|
|
extends: .windows-docker-vs2019
|
|
image: "$WINDOWS_IMAGE"
|
|
needs:
|
|
- windows_build_vs2019
|
|
|
|
# BUILD
|
|
|
|
# Shared between windows and Linux
|
|
.build-common:
|
|
extends: .ci-run-policy
|
|
artifacts:
|
|
name: "mesa_${CI_JOB_NAME}"
|
|
when: always
|
|
paths:
|
|
- _build/meson-logs/*.txt
|
|
# scons:
|
|
- build/*/config.log
|
|
- shader-db
|
|
|
|
# Just Linux
|
|
.build-linux:
|
|
extends: .build-common
|
|
variables:
|
|
CCACHE_COMPILERCHECK: "content"
|
|
CCACHE_COMPRESS: "true"
|
|
CCACHE_DIR: /cache/mesa/ccache
|
|
# Use ccache transparently, and print stats before/after
|
|
before_script:
|
|
- export PATH="/usr/lib/ccache:$PATH"
|
|
- export CCACHE_BASEDIR="$PWD"
|
|
- ccache --show-stats
|
|
after_script:
|
|
- ccache --show-stats
|
|
|
|
.build-windows:
|
|
extends: .build-common
|
|
tags:
|
|
- windows
|
|
- docker
|
|
- "1809"
|
|
- mesa
|
|
cache:
|
|
key: ${CI_JOB_NAME}
|
|
paths:
|
|
- subprojects/packagecache
|
|
|
|
.meson-build:
|
|
extends:
|
|
- .build-linux
|
|
- .use-x86_build
|
|
stage: meson-x86_64
|
|
variables:
|
|
LLVM_VERSION: 9
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
|
|
.scons-build:
|
|
extends:
|
|
- .build-linux
|
|
- .use-x86_build
|
|
stage: scons
|
|
variables:
|
|
SCONSFLAGS: "-j4"
|
|
script:
|
|
- .gitlab-ci/scons-build.sh
|
|
|
|
meson-testing:
|
|
extends:
|
|
- .meson-build
|
|
- .ci-deqp-artifacts
|
|
variables:
|
|
UNWIND: "enabled"
|
|
DRI_LOADERS: >
|
|
-D glx=dri
|
|
-D gbm=enabled
|
|
-D egl=enabled
|
|
-D platforms=x11,drm,surfaceless
|
|
GALLIUM_ST: >
|
|
-D dri3=enabled
|
|
GALLIUM_DRIVERS: "swrast,virgl"
|
|
VULKAN_DRIVERS: amd
|
|
BUILDTYPE: "debugoptimized"
|
|
EXTRA_OPTION: >
|
|
-D werror=true
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
- .gitlab-ci/prepare-artifacts.sh
|
|
|
|
meson-gallium:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "enabled"
|
|
DRI_LOADERS: >
|
|
-D glx=dri
|
|
-D gbm=enabled
|
|
-D egl=enabled
|
|
-D platforms=x11,wayland,drm,surfaceless
|
|
GALLIUM_ST: >
|
|
-D dri3=enabled
|
|
-D gallium-extra-hud=true
|
|
-D gallium-vdpau=enabled
|
|
-D gallium-xvmc=enabled
|
|
-D gallium-omx=bellagio
|
|
-D gallium-va=enabled
|
|
-D gallium-xa=enabled
|
|
-D gallium-nine=true
|
|
-D gallium-opencl=disabled
|
|
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink"
|
|
EXTRA_OPTION: >
|
|
-D osmesa=gallium
|
|
-D tools=all
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
- .gitlab-ci/run-shader-db.sh
|
|
|
|
meson-classic:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "enabled"
|
|
DRI_LOADERS: >
|
|
-D glx=dri
|
|
-D gbm=enabled
|
|
-D egl=enabled
|
|
-D platforms=x11,wayland,drm,surfaceless
|
|
DRI_DRIVERS: "auto"
|
|
EXTRA_OPTION: >
|
|
-D osmesa=classic
|
|
-D tools=all
|
|
|
|
.meson-cross:
|
|
extends:
|
|
- .meson-build
|
|
stage: meson-misc
|
|
variables:
|
|
UNWIND: "disabled"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D gbm=disabled
|
|
-D egl=enabled
|
|
-D platforms=surfaceless
|
|
-D osmesa=none
|
|
GALLIUM_ST: >
|
|
-D dri3=disabled
|
|
-D gallium-vdpau=disabled
|
|
-D gallium-xvmc=disabled
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=disabled
|
|
-D gallium-xa=disabled
|
|
-D gallium-nine=false
|
|
LLVM_VERSION: "8"
|
|
|
|
.meson-arm:
|
|
extends:
|
|
- .meson-cross
|
|
- .use-arm_build
|
|
variables:
|
|
VULKAN_DRIVERS: freedreno
|
|
GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4"
|
|
BUILDTYPE: "debugoptimized"
|
|
tags:
|
|
- aarch64
|
|
|
|
meson-armhf:
|
|
extends:
|
|
- .meson-arm
|
|
- .ci-deqp-artifacts
|
|
variables:
|
|
CROSS: armhf
|
|
LLVM_VERSION: "7"
|
|
EXTRA_OPTION: >
|
|
-D llvm=disabled
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
- .gitlab-ci/prepare-artifacts.sh
|
|
|
|
meson-arm64:
|
|
extends:
|
|
- .meson-arm
|
|
- .ci-deqp-artifacts
|
|
variables:
|
|
VULKAN_DRIVERS: "freedreno"
|
|
EXTRA_OPTION: >
|
|
-D llvm=disabled
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
- .gitlab-ci/prepare-artifacts.sh
|
|
|
|
meson-arm64-build-test:
|
|
extends:
|
|
- .meson-arm
|
|
- .ci-deqp-artifacts
|
|
variables:
|
|
VULKAN_DRIVERS: "amd"
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
|
|
meson-clang:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "enabled"
|
|
DRI_LOADERS: >
|
|
-D glvnd=true
|
|
DRI_DRIVERS: "auto"
|
|
GALLIUM_DRIVERS: "auto"
|
|
VULKAN_DRIVERS: intel,amd,freedreno
|
|
CC: "ccache clang-9"
|
|
CXX: "ccache clang++-9"
|
|
|
|
.meson-windows-vs2019:
|
|
extends:
|
|
- .build-windows
|
|
- .use-windows_build_vs2019
|
|
stage: meson-misc
|
|
script:
|
|
- . .\.gitlab-ci\windows\mesa_build.ps1
|
|
|
|
scons-win64:
|
|
extends: .scons-build
|
|
variables:
|
|
SCONS_TARGET: platform=windows machine=x86_64 debug=1
|
|
SCONS_CHECK_COMMAND: "true"
|
|
allow_failure: true
|
|
|
|
meson-clover:
|
|
extends: .meson-build
|
|
variables:
|
|
UNWIND: "enabled"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D egl=disabled
|
|
-D gbm=disabled
|
|
GALLIUM_DRIVERS: "r600,radeonsi"
|
|
GALLIUM_ST: >
|
|
-D dri3=disabled
|
|
-D gallium-vdpau=disabled
|
|
-D gallium-xvmc=disabled
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=disabled
|
|
-D gallium-xa=disabled
|
|
-D gallium-nine=false
|
|
-D gallium-opencl=icd
|
|
script:
|
|
- .gitlab-ci/meson-build.sh
|
|
- LLVM_VERSION=8 .gitlab-ci/meson-build.sh
|
|
|
|
meson-clover-old-llvm:
|
|
extends:
|
|
- meson-clover
|
|
- .use-x86_build_old
|
|
variables:
|
|
UNWIND: "disabled"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D egl=disabled
|
|
-D gbm=disabled
|
|
-D platforms=drm,surfaceless
|
|
GALLIUM_DRIVERS: "i915,r600"
|
|
script:
|
|
- 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: "disabled"
|
|
DRI_LOADERS: >
|
|
-D glx=disabled
|
|
-D gbm=disabled
|
|
-D egl=disabled
|
|
-D platforms=x11,wayland,drm
|
|
-D osmesa=none
|
|
GALLIUM_ST: >
|
|
-D dri3=enabled
|
|
-D gallium-vdpau=disabled
|
|
-D gallium-xvmc=disabled
|
|
-D gallium-omx=disabled
|
|
-D gallium-va=disabled
|
|
-D gallium-xa=disabled
|
|
-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
|
|
EXTRA_OPTION: >
|
|
-D vulkan-overlay-layer=true
|
|
-D werror=true
|
|
|
|
meson-i386:
|
|
extends:
|
|
- .meson-cross
|
|
- .use-i386_build
|
|
variables:
|
|
CROSS: i386
|
|
VULKAN_DRIVERS: intel,amd
|
|
GALLIUM_DRIVERS: "iris,r300,radeonsi,swrast,virgl"
|
|
EXTRA_OPTION: >
|
|
-D vulkan-overlay-layer=true
|
|
-D werror=true
|
|
|
|
meson-s390x:
|
|
extends:
|
|
- .meson-cross
|
|
- .use-s390x_build
|
|
tags:
|
|
- kvm
|
|
variables:
|
|
CROSS: s390x
|
|
EXTRA_OPTION: >
|
|
-D werror=true
|
|
GALLIUM_DRIVERS: "swrast"
|
|
|
|
meson-ppc64el:
|
|
extends:
|
|
- meson-s390x
|
|
- .use-ppc64el_build
|
|
variables:
|
|
CROSS: ppc64el
|
|
EXTRA_OPTION: ""
|
|
GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl"
|
|
VULKAN_DRIVERS: "amd"
|
|
|
|
meson-mingw32-x86_64:
|
|
extends: .meson-build
|
|
stage: meson-misc
|
|
variables:
|
|
UNWIND: "disabled"
|
|
DRI_DRIVERS: ""
|
|
GALLIUM_DRIVERS: "swrast"
|
|
EXTRA_OPTION: >
|
|
-Dllvm=disabled
|
|
-Dosmesa=gallium
|
|
--cross-file=.gitlab-ci/x86_64-w64-mingw32
|
|
|
|
.test:
|
|
extends:
|
|
- .ci-run-policy
|
|
variables:
|
|
GIT_STRATEGY: none # testing doesn't build anything from source
|
|
before_script:
|
|
# Note: Build dir (and thus install) may be dirty due to GIT_STRATEGY
|
|
- rm -rf install
|
|
- tar -xf artifacts/install.tar
|
|
- LD_LIBRARY_PATH=install/lib find install/lib -name "*.so" -print -exec ldd {} \;
|
|
artifacts:
|
|
when: always
|
|
name: "mesa_${CI_JOB_NAME}"
|
|
paths:
|
|
- results/
|
|
|
|
.test-gl:
|
|
extends:
|
|
- .test
|
|
variables:
|
|
TAG: *x86_test-gl
|
|
image: "$CI_REGISTRY_IMAGE/debian/x86_test-gl:$TAG"
|
|
needs:
|
|
- x86_build-base
|
|
- x86_build
|
|
- meson-testing
|
|
- x86_test-base
|
|
- x86_test-gl
|
|
dependencies:
|
|
- meson-testing
|
|
|
|
.test-vk:
|
|
extends:
|
|
- .test
|
|
variables:
|
|
TAG: *x86_test-vk
|
|
image: "$CI_REGISTRY_IMAGE/debian/x86_test-vk:$TAG"
|
|
needs:
|
|
- x86_build-base
|
|
- x86_build
|
|
- meson-testing
|
|
- x86_test-base
|
|
- x86_test-vk
|
|
dependencies:
|
|
- meson-testing
|
|
|
|
.piglit-test:
|
|
extends:
|
|
- .test-gl
|
|
- .llvmpipe-rules
|
|
artifacts:
|
|
when: on_failure
|
|
name: "mesa_${CI_JOB_NAME}"
|
|
paths:
|
|
- summary/
|
|
variables:
|
|
LIBGL_ALWAYS_SOFTWARE: 1
|
|
PIGLIT_NO_WINDOW: 1
|
|
script:
|
|
- install/piglit/run.sh
|
|
|
|
piglit-quick_gl:
|
|
extends: .piglit-test
|
|
variables:
|
|
LP_NUM_THREADS: 0
|
|
NIR_VALIDATE: 0
|
|
PIGLIT_OPTIONS: >
|
|
--process-isolation false
|
|
-x arb_gpu_shader5
|
|
-x egl_ext_device_
|
|
-x egl_ext_platform_device
|
|
-x ext_timer_query@time-elapsed
|
|
-x glx-multithread-clearbuffer
|
|
-x glx-multithread-shader-compile
|
|
-x max-texture-size
|
|
-x maxsize
|
|
PIGLIT_PROFILES: quick_gl
|
|
|
|
piglit-glslparser:
|
|
extends: .piglit-test
|
|
variables:
|
|
LP_NUM_THREADS: 0
|
|
NIR_VALIDATE: 0
|
|
PIGLIT_PROFILES: glslparser
|
|
|
|
piglit-quick_shader:
|
|
extends: .piglit-test
|
|
variables:
|
|
LP_NUM_THREADS: 1
|
|
NIR_VALIDATE: 0
|
|
PIGLIT_PROFILES: quick_shader
|
|
|
|
.deqp-test:
|
|
variables:
|
|
DEQP_SKIPS: deqp-default-skips.txt
|
|
script:
|
|
- ./install/deqp-runner.sh
|
|
|
|
.deqp-test-gl:
|
|
extends:
|
|
- .test-gl
|
|
- .deqp-test
|
|
|
|
.deqp-test-vk:
|
|
extends:
|
|
- .test-vk
|
|
- .deqp-test
|
|
variables:
|
|
DEQP_VER: vk
|
|
|
|
.fossilize-test:
|
|
extends: .test-vk
|
|
script:
|
|
- ./install/fossilize-runner.sh
|
|
artifacts:
|
|
when: on_failure
|
|
name: "mesa_${CI_JOB_NAME}"
|
|
paths:
|
|
- results/
|
|
|
|
llvmpipe-gles2:
|
|
variables:
|
|
DEQP_VER: gles2
|
|
DEQP_PARALLEL: 4
|
|
NIR_VALIDATE: 0
|
|
# 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_EXPECTED_RENDERER: llvmpipe
|
|
extends:
|
|
- .deqp-test-gl
|
|
- .llvmpipe-rules
|
|
|
|
softpipe-gles2:
|
|
extends:
|
|
- llvmpipe-gles2
|
|
- .softpipe-rules
|
|
variables:
|
|
DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
|
|
DEQP_SKIPS: deqp-softpipe-skips.txt
|
|
GALLIUM_DRIVER: "softpipe"
|
|
DEQP_EXPECTED_RENDERER: softpipe
|
|
|
|
softpipe-gles3:
|
|
parallel: 2
|
|
variables:
|
|
DEQP_VER: gles3
|
|
extends: softpipe-gles2
|
|
|
|
softpipe-gles31:
|
|
parallel: 4
|
|
variables:
|
|
DEQP_VER: gles31
|
|
extends: softpipe-gles2
|
|
|
|
virgl-gles2-on-gl:
|
|
variables:
|
|
DEQP_VER: gles2
|
|
DEQP_PARALLEL: 4
|
|
NIR_VALIDATE: 0
|
|
DEQP_NO_SAVE_RESULTS: 1
|
|
# 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-virgl-gl-fails.txt
|
|
DEQP_OPTIONS: "--deqp-log-images=disable"
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
GALLIUM_DRIVER: "virpipe"
|
|
DEQP_EXPECTED_RENDERER: virgl
|
|
extends:
|
|
- .deqp-test-gl
|
|
- .virgl-rules
|
|
|
|
virgl-gles3-on-gl:
|
|
parallel: 2
|
|
variables:
|
|
DEQP_VER: gles3
|
|
DEQP_RUNNER_OPTIONS: "--timeout 180"
|
|
extends: virgl-gles2-on-gl
|
|
|
|
virgl-gles31-on-gl:
|
|
parallel: 4
|
|
variables:
|
|
DEQP_VER: gles31
|
|
MESA_GLES_VERSION_OVERRIDE: "3.1"
|
|
MESA_GLSL_VERSION_OVERRIDE: "310"
|
|
MESA_EXTENSION_OVERRIDE: "-GL_OES_tessellation_shader"
|
|
extends: virgl-gles3-on-gl
|
|
|
|
virgl-gl30-on-gl:
|
|
variables:
|
|
DEQP_VER: gl30
|
|
extends: virgl-gles2-on-gl
|
|
|
|
virgl-gl31-on-gl:
|
|
variables:
|
|
DEQP_VER: gl31
|
|
extends: virgl-gles2-on-gl
|
|
|
|
virgl-gl32-on-gl:
|
|
variables:
|
|
DEQP_VER: gl32
|
|
extends: virgl-gles2-on-gl
|
|
|
|
# Rules for tests that should not be present in MRs or the main
|
|
# project's pipeline (don't block marge or report red on
|
|
# mesa/mesamaster) but should be present on pipelines in personal
|
|
# branches (so you can opt in to running the flaky test when you want
|
|
# to).
|
|
.test-manual:
|
|
rules:
|
|
- if: '$CI_PROJECT_PATH != "mesa/mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
|
|
changes:
|
|
*all_paths
|
|
when: manual
|
|
- when: never
|
|
|
|
virgl-gles2-on-gles:
|
|
variables:
|
|
VIRGL_HOST_API: GLES
|
|
DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
|
|
extends:
|
|
- virgl-gles2-on-gl
|
|
- .test-manual
|
|
|
|
virgl-gles3-on-gles:
|
|
variables:
|
|
VIRGL_HOST_API: GLES
|
|
DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
|
|
extends:
|
|
- virgl-gles3-on-gl
|
|
- .test-manual
|
|
|
|
virgl-gles31-on-gles:
|
|
variables:
|
|
VIRGL_HOST_API: GLES
|
|
DEQP_EXPECTED_FAILS: deqp-virgl-gles-fails.txt
|
|
extends:
|
|
- virgl-gles31-on-gl
|
|
- .test-manual
|
|
|
|
arm64_a630_gles2:
|
|
extends:
|
|
- arm64_a306_gles2
|
|
variables:
|
|
BM_KERNEL: /lava-files/cheza-kernel
|
|
BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 root=/dev/nfs rw nfsrootdebug nfsroot=,tcp,nfsvers=4.2 init=/init"
|
|
DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
|
|
DEQP_SKIPS: deqp-freedreno-a630-skips.txt
|
|
GIT_STRATEGY: none
|
|
DEQP_EXPECTED_RENDERER: FD630
|
|
DEQP_NO_SAVE_RESULTS: ""
|
|
tags:
|
|
- google-freedreno-cheza
|
|
script:
|
|
- ./install/bare-metal/cros-servo.sh
|
|
|
|
arm64_a630_gles31:
|
|
extends: arm64_a630_gles2
|
|
variables:
|
|
DEQP_VER: gles31
|
|
# gles31 is about 12 minutes with validation enabled.
|
|
NIR_VALIDATE: 0
|
|
|
|
arm64_a630_gles3:
|
|
extends: arm64_a630_gles2
|
|
variables:
|
|
DEQP_VER: gles3
|
|
# gles3 is about 15 minutes with validation enabled.
|
|
NIR_VALIDATE: 0
|
|
|
|
# We almost always manage to lower UBOs back to constant uploads in
|
|
# the test suite, so get a little testing for it here.
|
|
arm64_a630_noubo:
|
|
extends: arm64_a630_gles31
|
|
variables:
|
|
DEQP_VER: gles31
|
|
IR3_SHADER_DEBUG: nouboopt
|
|
DEQP_CASELIST_FILTER: "functional.*ubo"
|
|
|
|
# The driver does some guessing as to whether to render using gmem
|
|
# or bypass, and some GLES3.1 features interact with either one.
|
|
# Do a little testing with gmem and bypass forced.
|
|
arm64_a630_bypass:
|
|
extends: arm64_a630_gles31
|
|
variables:
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 5
|
|
FD_MESA_DEBUG: nogmem
|
|
DEQP_EXPECTED_FAILS: deqp-freedreno-a630-bypass-fails.txt
|
|
|
|
arm64_a630_traces:
|
|
extends:
|
|
- arm64_a630_gles2
|
|
variables:
|
|
BARE_METAL_TEST_SCRIPT: "/install/tracie-runner-gl.sh"
|
|
DEVICE_NAME: "freedreno-a630"
|
|
TRACIE_NO_UNIT_TESTS: 1
|
|
# This lets us run several more traces which don't use any features we're
|
|
# missing.
|
|
MESA_GLSL_VERSION_OVERRIDE: "460"
|
|
MESA_GL_VERSION_OVERRIDE: "4.6"
|
|
|
|
# Along with checking gmem path, check that we don't get obvious nir
|
|
# validation failures (though it's too expensive to have it on for the
|
|
# full CTS)
|
|
arm64_a630_gmem:
|
|
extends: arm64_a630_gles31
|
|
variables:
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 5
|
|
FD_MESA_DEBUG: nobypass
|
|
NIR_VALIDATE: 1
|
|
|
|
arm64_a630_vk:
|
|
extends: arm64_a630_gles2
|
|
variables:
|
|
DEQP_VER: vk
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 50
|
|
VK_DRIVER: freedreno
|
|
# Force binning in the main run, which makes sure we render at
|
|
# least 2 bins. This is the path that impacts the most different
|
|
# features. However, we end up with flaky results in
|
|
# dEQP-VK.binding_model.*.geometry and dEQP-VK.glsl.*_vertex.
|
|
TU_DEBUG: forcebin
|
|
|
|
# Do a separate sysmem pass over the testcases that really affect sysmem
|
|
# rendering. This is currently very flaky, leave it as an option for devs
|
|
# to click play on in their branches.
|
|
arm64_a630_vk_sysmem:
|
|
extends:
|
|
- arm64_a630_vk
|
|
variables:
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 10
|
|
DEQP_CASELIST_FILTER: "dEQP-VK.renderpass.*"
|
|
DEQP_EXPECTED_FAILS: deqp-freedreno-a630-bypass-fails.txt
|
|
TU_DEBUG: sysmem
|
|
|
|
.baremetal-test:
|
|
extends:
|
|
- .ci-run-policy
|
|
- .test
|
|
stage: test
|
|
artifacts:
|
|
when: always
|
|
name: "mesa_${CI_JOB_NAME}"
|
|
paths:
|
|
- results/
|
|
- serial*.txt
|
|
|
|
arm64_a306_gles2:
|
|
extends:
|
|
- .baremetal-test
|
|
- .use-arm64_test
|
|
- .freedreno-rules
|
|
variables:
|
|
BM_KERNEL: /lava-files/Image.gz
|
|
BM_DTB: /lava-files/apq8016-sbc.dtb
|
|
BM_ROOTFS: /lava-files/rootfs-arm64
|
|
BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8"
|
|
FLAKES_CHANNEL: "#freedreno-ci"
|
|
BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
|
|
DEQP_EXPECTED_FAILS: deqp-freedreno-a307-fails.txt
|
|
DEQP_SKIPS: deqp-freedreno-a307-skips.txt
|
|
DEQP_VER: gles2
|
|
DEQP_PARALLEL: 4
|
|
DEQP_EXPECTED_RENDERER: FD307
|
|
# Since we can't get artifacts back yet, skip making them.
|
|
DEQP_NO_SAVE_RESULTS: 1
|
|
# NIR_VALIDATE=0 left intentionally unset as a3xx is fast enough at its small testsuite.
|
|
script:
|
|
- ./install/bare-metal/fastboot.sh
|
|
needs:
|
|
- arm_test-base
|
|
- arm64_test
|
|
- arm_build
|
|
- meson-arm64
|
|
tags:
|
|
- google-freedreno-db410c
|
|
|
|
# Fractional run, single threaded, due to flaky results
|
|
arm64_a306_gles3:
|
|
extends:
|
|
- arm64_a306_gles2
|
|
variables:
|
|
DEQP_VER: gles3
|
|
DEQP_PARALLEL: 1
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 25
|
|
NIR_VALIDATE: 0
|
|
|
|
# Fractional runs with debug options. Note that since we're not
|
|
# hitting the iommu faults, we can run in parallel (derive from gles2, not gles3).
|
|
arm64_a306_gles3_options:
|
|
extends: arm64_a306_gles2
|
|
variables:
|
|
DEQP_VER: gles3
|
|
script:
|
|
# Check that the non-constbuf UBO case works.
|
|
- DEQP_RUN_SUFFIX=-nouboopt IR3_SHADER_DEBUG=nouboopt DEQP_CASELIST_FILTER="functional.*ubo" ./install/bare-metal/fastboot.sh
|
|
|
|
arm64_a530_gles2:
|
|
extends:
|
|
- arm64_a306_gles2
|
|
variables:
|
|
BM_KERNEL: /lava-files/db820c-kernel
|
|
BM_DTB: /lava-files/db820c.dtb
|
|
# Disable SMP because only CPU 0 is at a freq higher than 19mhz on
|
|
# current upstream kernel.
|
|
BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8 nosmp"
|
|
DEQP_EXPECTED_FAILS: deqp-freedreno-a530-fails.txt
|
|
DEQP_SKIPS: deqp-freedreno-a530-skips.txt
|
|
DEQP_EXPECTED_RENDERER: FD530
|
|
NIR_VALIDATE: 0
|
|
tags:
|
|
- google-freedreno-db820c
|
|
|
|
arm64_a530_gles3:
|
|
extends:
|
|
- arm64_a530_gles2
|
|
variables:
|
|
DEQP_VER: gles3
|
|
DEQP_PARALLEL: 1
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 40
|
|
|
|
arm64_a530_gles31:
|
|
extends:
|
|
- arm64_a530_gles3
|
|
variables:
|
|
DEQP_VER: gles31
|
|
CI_NODE_INDEX: 1
|
|
CI_NODE_TOTAL: 10
|
|
|
|
# RADV CI
|
|
.test-radv:
|
|
extends: .radv-rules
|
|
stage: radv
|
|
variables:
|
|
VK_DRIVER: radeon
|
|
ACO_DEBUG: validateir,validatera
|
|
|
|
# Can only be triggered manually on personal branches because RADV is the only
|
|
# driver that does Vulkan testing at the moment.
|
|
radv_polaris10_vkcts:
|
|
extends:
|
|
- .deqp-test-vk
|
|
- .test-radv
|
|
- .test-manual
|
|
variables:
|
|
DEQP_SKIPS: deqp-radv-polaris10-skips.txt
|
|
tags:
|
|
- polaris10
|
|
|
|
radv-fossils:
|
|
extends:
|
|
- .fossilize-test
|
|
- .test-radv
|
|
script:
|
|
# Pitcairn (GFX6)
|
|
- export RADV_FORCE_FAMILY="pitcairn"
|
|
- ./install/fossilize-runner.sh
|
|
# Bonaire (GFX7)
|
|
- export RADV_FORCE_FAMILY="bonaire"
|
|
- ./install/fossilize-runner.sh
|
|
# Polaris10 (GFX8)
|
|
- export RADV_FORCE_FAMILY="polaris10"
|
|
- ./install/fossilize-runner.sh
|
|
# Vega10 (GFX9)
|
|
- export RADV_FORCE_FAMILY="gfx900"
|
|
- ./install/fossilize-runner.sh
|
|
# Navi10 (GFX10)
|
|
- export RADV_FORCE_FAMILY="gfx1010"
|
|
- ./install/fossilize-runner.sh
|
|
|
|
# Traces CI
|
|
.traces-test:
|
|
cache:
|
|
key: ${CI_JOB_NAME}
|
|
paths:
|
|
- traces-db/
|
|
|
|
.traces-test-gl:
|
|
extends:
|
|
- .test-gl
|
|
- .traces-test
|
|
script:
|
|
- ./install/tracie-runner-gl.sh
|
|
|
|
.traces-test-vk:
|
|
extends:
|
|
- .test-vk
|
|
- .traces-test
|
|
script:
|
|
- ./install/tracie-runner-vk.sh
|
|
|
|
llvmpipe-traces:
|
|
extends:
|
|
- .traces-test-gl
|
|
- .llvmpipe-rules
|
|
variables:
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
GALLIUM_DRIVER: "llvmpipe"
|
|
DEVICE_NAME: "gl-vmware-llvmpipe"
|
|
|
|
radv-polaris10-traces:
|
|
extends:
|
|
- .traces-test-vk
|
|
- .test-radv
|
|
- .test-manual
|
|
variables:
|
|
DEVICE_NAME: "vk-amd-polaris10"
|
|
tags:
|
|
- polaris10
|
|
|
|
virgl-traces:
|
|
extends:
|
|
- .traces-test-gl
|
|
- .virgl-rules
|
|
variables:
|
|
LIBGL_ALWAYS_SOFTWARE: "true"
|
|
GALLIUM_DRIVER: "virpipe"
|
|
DEVICE_NAME: "gl-virgl"
|
|
MESA_GLES_VERSION_OVERRIDE: "3.1"
|
|
MESA_GLSL_VERSION_OVERRIDE: "310"
|