mesa/.gitlab-ci.yml
Gustavo Padovan 74f9bcc21c gitlab-ci: add intel APL and GLK devices with manual triggers
This add support for the Intel Apollo Lake and Gemini Lake families,
however the job will be disabled by default unless the developer
manually hit play for the iris-apl-traces and iris-glk-traces jobs in
GitLab CI.

These devices are still under experimental level support in
the Lava lab and are not guaranteed to work reliably yet. Once they
become reliable and more resilient we will enable them by default in
MesaCI.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8162>
2021-02-16 15:08:27 +01:00

2093 lines
51 KiB
YAML

variables:
FDO_UPSTREAM_REPO: mesa/mesa
MESA_TEMPLATES_COMMIT: &ci-templates-commit 52dd4a94044449c8481d18dcdc221a3c636366d2
CI_PRE_CLONE_SCRIPT: |-
set -o xtrace
/usr/bin/wget -q -O- ${CI_PROJECT_URL}/-/raw/${CI_COMMIT_SHA}/.gitlab-ci/download-git-cache.sh | sh -
set +o xtrace
MINIO_HOST: minio-packet.freedesktop.org
include:
- project: 'freedesktop/ci-templates'
ref: 79c325922670137e8f0a4dc5f6f097e0eb57c1af
file:
- '/templates/ci-fairy.yml'
- project: 'freedesktop/ci-templates'
ref: *ci-templates-commit
file:
- '/templates/debian.yml'
- local: '.gitlab-ci/lava-gitlab-ci.yml'
- local: '.gitlab-ci/test-source-dep.yml'
stages:
- sanity
- container
- container-2
- git-archive
- meson-x86_64
- build-misc
- amd
- intel
- arm
- broadcom
- freedreno
- software-renderer
- layered-backends
- deploy
- success
# Generic rule to not run the job during scheduled pipelines
# ----------------------------------------------------------
.scheduled_pipelines-rules:
rules: &ignore_scheduled_pipelines
if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
when: never
# YAML anchors for rule conditions
# --------------------------------
.rules-anchors:
rules:
# For Marge Bot
- if: &is-for-marge '$GITLAB_USER_LOGIN == "marge-bot"'
when: never
# Forked project branch
- if: &is-forked-branch '$CI_PROJECT_NAMESPACE != "mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
when: manual
# Forked project branch / pre-merge pipeline
- if: &is-forked-branch-or-pre-merge '$CI_PROJECT_NAMESPACE != "mesa" || $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
when: manual
# Pipeline runs for the master branch of the main project
- if: &is-main-master '$CI_PROJECT_NAMESPACE == "mesa" && $CI_COMMIT_REF_NAME == "master" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != "master"'
when: always
# Post-merge pipeline
- if: &is-post-merge '$CI_PROJECT_NAMESPACE == "mesa" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
when: on_success
# Post-merge pipeline, not for Marge Bot
- if: &is-post-merge-not-for-marge '$CI_PROJECT_NAMESPACE == "mesa" && $GITLAB_USER_LOGIN != "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME != $CI_COMMIT_REF_NAME'
when: on_success
# Pre-merge pipeline
- if: &is-pre-merge '$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
when: on_success
# Pre-merge pipeline for Marge Bot
- if: &is-pre-merge-for-marge '$GITLAB_USER_LOGIN == "marge-bot" && $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME == $CI_COMMIT_REF_NAME'
when: on_success
.docs-base:
extends:
- .fdo.ci-fairy
- .ci-run-policy
script:
- apk --no-cache add graphviz
- pip3 install sphinx sphinx_rtd_theme
- sphinx-build -b html docs public
pages:
extends: .docs-base
stage: deploy
artifacts:
paths:
- public
needs: []
rules:
- *ignore_scheduled_pipelines
- if: *is-main-master
changes: &docs-or-ci
- docs/**/*
- .gitlab-ci.yml
when: always
# Other cases default to never
test-docs:
extends: .docs-base
# Cancel job if a newer commit is pushed to the same branch
interruptible: true
stage: deploy
needs: []
rules:
- *ignore_scheduled_pipelines
- if: *is-forked-branch
changes: *docs-or-ci
when: manual
# Other cases default to never
test-docs-mr:
extends:
- test-docs
needs:
- sanity
artifacts:
expose_as: 'Documentation preview'
paths:
- public/
rules:
- if: *is-pre-merge
changes: *docs-or-ci
when: on_success
# Other cases default to never
# When to automatically run the CI
.ci-run-policy:
rules:
- *ignore_scheduled_pipelines
# 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/**/*
# Source code
- include/**/*
- src/**/*
when: on_success
# Otherwise, build/test jobs won't run
- when: never
retry:
max: 2
when:
- runner_system_failure
success:
stage: success
image: debian:stable-slim
rules:
- *ignore_scheduled_pipelines
- if: *is-post-merge
when: never
- if: *is-for-marge
changes: *docs-or-ci
when: never
- changes: *all_paths
when: never
- if: *is-pre-merge
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/meson-logs/*.txt
# Docker image tag helper templates
.incorporate-templates-commit:
variables:
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}"
.incorporate-base-tag+templates-commit:
variables:
FDO_BASE_IMAGE: "${CI_REGISTRY_IMAGE}/${MESA_BASE_IMAGE}:${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
.set-image:
variables:
MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}"
image: "$MESA_IMAGE"
.set-image-base-tag:
extends:
- .set-image
- .incorporate-base-tag+templates-commit
variables:
MESA_IMAGE: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_BASE_TAG}--${MESA_TEMPLATES_COMMIT}"
# Build the CI docker images.
#
# MESA_IMAGE_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
extends:
- .ci-run-policy
- .incorporate-templates-commit
rules:
- *ignore_scheduled_pipelines
# 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: *is-post-merge
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: *is-pre-merge-for-marge
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: *is-post-merge-not-for-marge
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: 'env FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
# no need to pull the whole repo to build the container image
GIT_STRATEGY: none
.use-base-image:
extends:
- .container
- .incorporate-base-tag+templates-commit
# Don't want the .container rules
- .ci-run-policy
stage: container-2
# Debian 10 based x86 build image base
x86_build-base:
extends:
- .fdo.container-build@debian
- .container
variables:
MESA_IMAGE_TAG: &x86_build-base "2021-02-08-container-reorg"
.use-x86_build-base:
extends:
- .fdo.container-build@debian
- .use-base-image
variables:
MESA_BASE_IMAGE: "debian/x86_build-base"
MESA_BASE_TAG: *x86_build-base
needs:
- x86_build-base
# Debian 10 based x86 main build image
x86_build:
extends:
- .use-x86_build-base
variables:
MESA_IMAGE_TAG: &x86_build "2021-02-08-container-reorg"
.use-x86_build:
extends:
- .set-image-base-tag
variables:
MESA_BASE_TAG: *x86_build-base
MESA_IMAGE_PATH: "debian/x86_build"
MESA_IMAGE_TAG: *x86_build
needs:
- x86_build
# Debian 10 based i386 cross-build image
i386_build:
extends:
- .use-x86_build-base
variables:
MESA_IMAGE_TAG: &i386_build "2021-02-08-container-reorg"
.use-i386_build:
extends:
- .set-image-base-tag
variables:
MESA_BASE_TAG: *x86_build-base
MESA_IMAGE_PATH: "debian/i386_build"
MESA_IMAGE_TAG: *i386_build
needs:
- i386_build
# Debian 10 based ppc64el cross-build image
ppc64el_build:
extends:
- .use-x86_build-base
variables:
MESA_IMAGE_TAG: &ppc64el_build "2021-02-08-container-reorg"
.use-ppc64el_build:
extends:
- .set-image-base-tag
variables:
MESA_BASE_TAG: *x86_build-base
MESA_IMAGE_PATH: "debian/ppc64el_build"
MESA_IMAGE_TAG: *ppc64el_build
needs:
- ppc64el_build
# Debian 10 based s390x cross-build image
s390x_build:
extends:
- .use-x86_build-base
variables:
MESA_IMAGE_TAG: &s390x_build "2021-02-08-container-reorg"
.use-s390x_build:
extends:
- .set-image-base-tag
variables:
MESA_BASE_TAG: *x86_build-base
MESA_IMAGE_PATH: "debian/s390x_build"
MESA_IMAGE_TAG: *s390x_build
needs:
- s390x_build
# Android NDK cross-build image
android_build:
extends:
- .use-x86_build-base
variables:
MESA_IMAGE_TAG: &android_build "2021-02-08-container-reorg"
.use-android_build:
extends:
- .set-image-base-tag
variables:
MESA_BASE_TAG: *x86_build-base
MESA_IMAGE_PATH: "debian/android_build"
MESA_IMAGE_TAG: *android_build
needs:
- android_build
# Debian 10 based x86 test image base
x86_test-base:
extends: x86_build-base
variables:
MESA_IMAGE_TAG: &x86_test-base "2021-02-08-container-reorg"
.use-x86_test-base:
extends:
- .fdo.container-build@debian
- .use-base-image
variables:
MESA_BASE_IMAGE: "debian/x86_test-base"
MESA_BASE_TAG: *x86_test-base
needs:
- x86_test-base
# Debian 10 based x86 test image for GL
x86_test-gl:
extends: .use-x86_test-base
variables:
MESA_IMAGE_TAG: &x86_test-gl "2021-02-11-vkglcts-1.2.5.1"
# Debian 10 based x86 test image for VK
x86_test-vk:
extends: .use-x86_test-base
variables:
MESA_IMAGE_TAG: &x86_test-vk "2021-02-11-vkglcts-1.2.5.1"
# Debian 10 based ARM build image
arm_build:
extends:
- .fdo.container-build@debian@arm64v8
- .container
variables:
MESA_IMAGE_TAG: &arm_build "2021-02-08-container-reorg"
.use-arm_build:
extends:
- .set-image
variables:
MESA_IMAGE_PATH: "debian/arm_build"
MESA_IMAGE_TAG: *arm_build
needs:
- arm_build
# Debian 10 based x86 baremetal image base
arm_test-base:
extends:
- .fdo.container-build@debian
- .container
variables:
MESA_IMAGE_TAG: &arm_test-base "2021-02-08-container-reorg"
.use-arm_test-base:
extends:
- .fdo.container-build@debian
- .use-base-image
variables:
MESA_BASE_IMAGE: "debian/arm_test-base"
MESA_BASE_TAG: *arm_test-base
needs:
- arm_test-base
# x86 image with ARM64 rootfs for baremetal testing.
arm64_test:
extends:
- .use-arm_test-base
variables:
MESA_IMAGE_TAG: &arm64_test "2021-02-15-kernel"
.use-arm64_test:
extends:
- .set-image-base-tag
variables:
MESA_BASE_TAG: *arm_test-base
MESA_IMAGE_PATH: "debian/arm64_test"
MESA_IMAGE_TAG: *arm64_test
needs:
- arm64_test
# x86 image with armhf rootfs for baremetal testing
armhf_test:
extends:
- .use-arm_test-base
variables:
MESA_IMAGE_TAG: &armhf_test "2021-02-15-kernel"
.use-armhf_test:
extends:
- .set-image-base-tag
variables:
MESA_BASE_TAG: *arm_test-base
MESA_IMAGE_PATH: "debian/armhf_test"
MESA_IMAGE_TAG: *armhf_test
needs:
- armhf_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:
extends:
- .set-image
variables:
MESA_IMAGE_PATH: "windows/x64_build"
MESA_IMAGE_TAG: "2021-01-29"
MESA_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MESA_IMAGE_PATH:${MESA_IMAGE_TAG}--${MESA_TEMPLATES_COMMIT}"
windows_build_vs2019:
extends:
- .container
- .windows-docker-vs2019
stage: container
variables:
GIT_STRATEGY: fetch # we do actually need the full repository though
timeout: 2h 30m # LLVM + piglit takes ages
tags:
- windows
- shell
- "1809"
- mesa
script:
- .\.gitlab-ci\windows\mesa_container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $MESA_IMAGE $MESA_UPSTREAM_IMAGE
.use-windows_build_vs2019:
extends: .windows-docker-vs2019
image: "$MESA_IMAGE"
needs:
- windows_build_vs2019
# Git archive
make git archive:
extends:
- .fdo.ci-fairy
stage: git-archive
rules:
- if: *is-scheduled-pipeline
when: on_success
# ensure we are running on packet
tags:
- packet.net
script:
# Compactify the .git directory
- git gc --aggressive
# compress the current folder
- tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
# login with the JWT token
- ci-fairy minio login $CI_JOB_JWT
- ci-fairy minio cp ../$CI_PROJECT_NAME.tar.gz minio://$MINIO_HOST/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
# Sanity checks of MR settings and commit logs
sanity:
extends:
- .fdo.ci-fairy
stage: sanity
rules:
- if: *is-pre-merge
when: on_success
# Other cases default to never
variables:
GIT_STRATEGY: none
script:
# ci-fairy check-commits --junit-xml=check-commits.xml
- ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
artifacts:
when: on_failure
reports:
junit: check-*.xml
# BUILD
# Shared between windows and Linux
.build-common:
extends: .ci-run-policy
# Cancel job if a newer commit is pushed to the same branch
interruptible: true
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: 10
script:
- .gitlab-ci/meson-build.sh
.scons-build:
extends:
- .build-linux
- .use-x86_build
stage: build-misc
script:
- env SCONSFLAGS="-j${FDO_CI_CONCURRENT:-4}" .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
GALLIUM_ST: >
-D dri3=enabled
GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,iris"
VULKAN_DRIVERS: "swrast,amd"
BUILDTYPE: "debugoptimized"
EXTRA_OPTION: >
-D werror=true
UPLOAD_FOR_LAVA: 1
DEBIAN_ARCH: amd64
script:
- .gitlab-ci/meson-build.sh
- .gitlab-ci/prepare-artifacts.sh
meson-testing-asan:
extends:
- meson-testing
variables:
EXTRA_OPTION: >
-D b_sanitize=address
UPLOAD_FOR_LAVA: ""
ARTIFACTS_DEBUG_SYMBOLS: 1
meson-clover-testing:
extends:
- .meson-build
- .ci-deqp-artifacts
variables:
UNWIND: "enabled"
LLVM_VERSION: 10
DRI_LOADERS: >
-D glx=disabled
-D egl=disabled
-D gbm=disabled
GALLIUM_ST: >
-D gallium-opencl=icd
-D opencl-spirv=true
GALLIUM_DRIVERS: "swrast"
BUILDTYPE: "debugoptimized"
EXTRA_OPTION: >
-D werror=true
script:
- .gitlab-ci/meson-build.sh
- .gitlab-ci/prepare-artifacts.sh
meson-gallium:
extends: .meson-build
tags:
# i965_asm tests randomly time out on packet runners
- gstreamer
variables:
UNWIND: "enabled"
DRI_LOADERS: >
-D glx=dri
-D gbm=enabled
-D egl=enabled
-D platforms=x11,wayland
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,d3d12"
VULKAN_DRIVERS: swrast
EXTRA_OPTION: >
-D osmesa=true
-D tools=all
-D werror=true
script:
- .gitlab-ci/meson-build.sh
- .gitlab-ci/run-shader-db.sh
- src/freedreno/.gitlab-ci/run-fdtools.sh
# Test a release build with -Werror so new warnings don't sneak in.
meson-release:
extends: .meson-build
variables:
UNWIND: "enabled"
DRI_LOADERS: >
-D glx=dri
-D gbm=enabled
-D egl=enabled
-D platforms=x11,wayland
GALLIUM_ST: >
-D dri3=enabled
-D gallium-extra-hud=true
-D gallium-vdpau=enabled
-D gallium-xvmc=disabled
-D gallium-omx=disabled
-D gallium-va=enabled
-D gallium-xa=enabled
-D gallium-nine=false
-D gallium-opencl=disabled
-D llvm=false
GALLIUM_DRIVERS: "nouveau,kmsro,freedreno,r300,svga,swrast,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12"
BUILDTYPE: "release"
EXTRA_OPTION: >
-D osmesa=true
-D tools=all
-D werror=true
script:
- .gitlab-ci/meson-build.sh
meson-android:
extends:
- .meson-cross
- .use-android_build
variables:
UNWIND: "disabled"
DRI_LOADERS: >
-D glx=disabled
-D gbm=disabled
-D egl=enabled
-D platforms=android
EXTRA_OPTION: >
-D android-stub=true
-D llvm=disabled
-D platform-sdk-version=26
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=disabled
LLVM_VERSION: ""
script:
# arm64 build: Can't build v3d/vc4 because they require expat for v3d_decode.
- PKG_CONFIG_PATH=/usr/local/lib/aarch64-linux-android/pkgconfig/:/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android/pkgconfig/ CROSS=aarch64-linux-android GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost VULKAN_DRIVERS=freedreno .gitlab-ci/meson-build.sh
# x86_64 build:
# Can't do Intel because gen_decoder.c currently requires libexpat, which
# is not a dependency that AOSP wants to accept. Can't do Radeon because
# it requires LLVM, which we don't have an Android build of.
# - PKG_CONFIG_PATH=/usr/local/lib/x86_64-linux-android/pkgconfig/ CROSS=x86_64-linux-android GALLIUM_DRIVERS=iris VULKAN_DRIVERS=intel .gitlab-ci/meson-build.sh
.meson-cross:
extends:
- .meson-build
stage: build-misc
variables:
UNWIND: "disabled"
DRI_LOADERS: >
-D glx=dri
-D gbm=enabled
-D egl=enabled
-D platforms=x11
-D osmesa=false
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
LLVM_VERSION: "8"
.meson-arm:
extends:
- .meson-cross
- .use-arm_build
needs:
- arm_build
variables:
VULKAN_DRIVERS: freedreno,broadcom
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
UPLOAD_FOR_LAVA: 1
DEBIAN_ARCH: armhf
script:
- .gitlab-ci/meson-build.sh
- .gitlab-ci/prepare-artifacts.sh
meson-arm64:
extends:
- .meson-arm
- .ci-deqp-artifacts
variables:
VULKAN_DRIVERS: "freedreno,broadcom"
EXTRA_OPTION: >
-D llvm=disabled
UPLOAD_FOR_LAVA: 1
DEBIAN_ARCH: arm64
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"
EXTRA_OPTION: >
-Dtools=panfrost
-D werror=true
script:
- .gitlab-ci/meson-build.sh
meson-clang:
extends: .meson-build
variables:
UNWIND: "enabled"
DRI_LOADERS: >
-D glvnd=true
DRI_DRIVERS: "auto"
GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swr,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12"
VULKAN_DRIVERS: intel,amd,freedreno,broadcom
CC: "ccache clang-10"
CXX: "ccache clang++-10"
meson-windows-vs2019:
extends:
- .build-windows
- .use-windows_build_vs2019
- .windows-build-rules
stage: build-misc
script:
- . .\.gitlab-ci\windows\mesa_build.ps1
artifacts:
paths:
- _install/
test-d3d12-windows:
extends:
- .build-windows
- .use-windows_build_vs2019
- .windows-test-rules
stage: layered-backends
dependencies:
- meson-windows-vs2019
needs:
- meson-windows-vs2019
variables:
GIT_STRATEGY: none # testing doesn't build anything from source
GALLIUM_DRIVER: d3d12
PIGLIT_PROFILE: quick_gl
PIGLIT_OPTIONS: -x nv_copy_depth_to_color -x repeat-wait -x arb_timer_query@timestamp-get
script:
- . _install/piglit_run.ps1
artifacts:
when: on_failure
name: "mesa_${CI_JOB_NAME}"
paths:
- summary/
.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
EXTRA_OPTION: >
-D werror=true
script:
- LLVM_VERSION=8 .gitlab-ci/meson-build.sh
- LLVM_VERSION=9 .gitlab-ci/meson-build.sh
- .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
-D osmesa=false
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,broadcom
EXTRA_OPTION: >
-D vulkan-overlay-layer=true
-D vulkan-device-select-layer=true
-D build-aco-tests=true
-D werror=true
meson-i386:
extends:
- .meson-cross
- .use-i386_build
variables:
CROSS: i386
VULKAN_DRIVERS: intel,amd,swrast
GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,swrast,virgl,zink"
DRI_DRIVERS: "i915,i965,r100,r200,nouveau"
EXTRA_OPTION: >
-D vulkan-overlay-layer=true
-D vulkan-device-select-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,zink"
VULKAN_DRIVERS: "swrast"
meson-ppc64el:
extends:
- meson-s390x
- .use-ppc64el_build
variables:
CROSS: ppc64el
EXTRA_OPTION: >
-D werror=true
GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl,zink"
VULKAN_DRIVERS: "amd,swrast"
meson-mingw32-x86_64:
extends: .meson-build
stage: build-misc
variables:
UNWIND: "disabled"
DRI_DRIVERS: ""
GALLIUM_DRIVERS: "swrast"
EXTRA_OPTION: >
-Dllvm=disabled
-Dosmesa=true
--cross-file=.gitlab-ci/x86_64-w64-mingw32
.test:
extends:
- .ci-run-policy
# Cancel job if a newer commit is pushed to the same branch
interruptible: true
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/
.use-x86_test-gl:
extends:
- .test
- .set-image-base-tag
variables:
MESA_BASE_TAG: *x86_test-base
MESA_IMAGE_PATH: "debian/x86_test-gl"
MESA_IMAGE_TAG: *x86_test-gl
needs:
- x86_test-gl
.test-gl:
extends:
- .use-x86_test-gl
needs:
- x86_test-gl
- meson-testing
.test-vk:
extends:
- .test
- .set-image-base-tag
variables:
MESA_BASE_TAG: *x86_test-base
MESA_IMAGE_PATH: "debian/x86_test-vk"
MESA_IMAGE_TAG: *x86_test-vk
needs:
- meson-testing
- x86_test-vk
.test-cl:
extends:
- .use-x86_test-gl
needs:
- x86_test-gl
- meson-clover-testing
.piglit-test:
artifacts:
when: on_failure
name: "mesa_${CI_JOB_NAME}"
paths:
- summary/
- results/*.txt
variables:
PIGLIT_NO_WINDOW: 1
script:
- install/piglit/run.sh
.piglit-traces-test:
extends:
- .piglit-test
cache:
key: ${CI_JOB_NAME}
paths:
- replayer-db/
artifacts:
when: on_failure
name: "mesa_${CI_JOB_NAME}"
reports:
junit: results/junit.xml
variables:
PIGLIT_PROFILES: replay
PIGLIT_REPLAY_UPLOAD_TO_MINIO: 1
PIGLIT_REPLAY_EXTRA_ARGS: --keep-image --db-path ${CI_PROJECT_DIR}/replayer-db/
PIGLIT_REPLAY_REFERENCE_IMAGES_BASE_URL: "/mesa-tracie-results/$FDO_UPSTREAM_REPO"
PIGLIT_REPLAY_ARTIFACTS_BASE_URL: "/artifacts/$CI_PROJECT_PATH/$CI_PIPELINE_ID/$CI_JOB_ID"
PIGLIT_HTML_SUMMARY: 0
PIGLIT_JUNIT_RESULTS: 1
.llvmpipe-test:
extends:
- .llvmpipe-rules
variables:
LIBGL_ALWAYS_SOFTWARE: "true"
GALLIUM_DRIVER: "llvmpipe"
llvmpipe-piglit-cl:
extends:
- .test-cl
- .piglit-test
- .llvmpipe-test
- .llvmpipe-cl-rules
variables:
LP_CL: 1
LP_NUM_THREADS: 1
PIGLIT_PROFILES: cl
PIGLIT_RESULTS: "llvmpipe-cl"
PIGLIT_OPTIONS: >
-x bswap -x phatk -x clz-optimizations
script:
- install/piglit/run_cl.sh
llvmpipe-piglit-quick_gl:
extends:
- .test-gl
- .piglit-test
- .llvmpipe-test
variables:
GALLIVM_PERF: "no_filter_hacks"
LP_NUM_THREADS: 0
PIGLIT_OPTIONS: >
--process-isolation false
-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_RESULTS: "llvmpipe-quick_gl"
llvmpipe-piglit-glslparser:
extends:
- .test-gl
- .piglit-test
- .llvmpipe-test
variables:
LP_NUM_THREADS: 0
PIGLIT_PROFILES: glslparser
PIGLIT_RESULTS: "llvmpipe-glslparser"
llvmpipe-piglit-quick_shader:
extends:
- .test-gl
- .piglit-test
- .llvmpipe-test
variables:
GALLIVM_PERF: "no_filter_hacks"
LP_NUM_THREADS: 1
PIGLIT_PROFILES: quick_shader
PIGLIT_RESULTS: "llvmpipe-quick_shader"
llvmpipe-traces:
extends:
- .test-gl
- .piglit-traces-test
- .llvmpipe-test
variables:
EGL_PLATFORM: "surfaceless"
PIGLIT_REPLAY_DESCRIPTION_FILE: "${CI_PROJECT_DIR}/install/traces-llvmpipe.yml"
PIGLIT_REPLAY_DEVICE_NAME: "gl-vmware-llvmpipe"
PIGLIT_RESULTS: "llvmpipe-replay"
.zink-test:
extends:
- .zink-rules
variables:
MESA_LOADER_DRIVER_OVERRIDE: "zink"
ZINK_USE_LAVAPIPE: "true"
zink-piglit-quick_gl:
extends:
- .test-gl
- .piglit-test
- .zink-test
variables:
LP_NUM_THREADS: 0
PIGLIT_OPTIONS: >
-x arb_map_buffer_alignment@arb_map_buffer_alignment-map-invalidate-range
-x glx-make-current
PIGLIT_PROFILES: quick_gl
PIGLIT_RESULTS: "zink-quick_gl"
GALLIVM_PERF: "no_filter_hacks"
.virgl-test:
extends:
- .test-gl
- .virgl-rules
variables:
LIBGL_ALWAYS_SOFTWARE: "true"
GALLIUM_DRIVER: "virpipe"
virgl-traces:
extends:
- .piglit-traces-test
- .virgl-test
variables:
EGL_PLATFORM: "surfaceless"
PIGLIT_REPLAY_DESCRIPTION_FILE: "${CI_PROJECT_DIR}/install/traces-virgl.yml"
PIGLIT_REPLAY_DEVICE_NAME: "gl-virgl"
PIGLIT_RESULTS: "virgl-replay"
MESA_GLES_VERSION_OVERRIDE: "3.1"
MESA_GLSL_VERSION_OVERRIDE: "310"
arm64-a630-traces:
extends:
- .piglit-traces-test
- .arm64-a630-test
variables:
BARE_METAL_TEST_SCRIPT: "/install/piglit/run.sh"
BM_START_XORG: 1
PIGLIT_REPLAY_DESCRIPTION_FILE: "/install/traces-freedreno.yml"
PIGLIT_REPLAY_DEVICE_NAME: "freedreno-a630"
PIGLIT_RESULTS: "freedreno-a630-replay"
# 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"
artifacts:
reports:
junit: results/junit.xml
radv-polaris10-traces:
extends:
- .piglit-traces-test
- .test-vk
- .test-radv
- .test-manual
variables:
PIGLIT_REPLAY_DESCRIPTION_FILE: "${CI_PROJECT_DIR}/install/traces-radv.yml"
PIGLIT_REPLAY_DEVICE_NAME: "vk-amd-polaris10"
PIGLIT_RESULTS: "radv-polaris10-replay"
tags:
- polaris10
radv-raven-traces:
extends:
- .piglit-traces-test
- .test-vk
- .test-radv
- .test-manual
variables:
PIGLIT_REPLAY_DESCRIPTION_FILE: "${CI_PROJECT_DIR}/install/traces-radv.yml"
PIGLIT_REPLAY_DEVICE_NAME: "vk-amd-raven"
PIGLIT_RESULTS: "radv-raven-replay"
tags:
- raven
.deqp-test:
script:
- ./install/deqp-runner.sh
artifacts:
reports:
junit: results/junit.xml
.deqp-test-vk:
extends:
- .deqp-test
variables:
DEQP_VER: vk
.fossilize-test:
script:
- ./install/fossilize-runner.sh
artifacts:
when: on_failure
name: "mesa_${CI_JOB_NAME}"
paths:
- results/
llvmpipe-gles2:
variables:
DEQP_VER: gles2
GALLIVM_PERF: "nopt,no_filter_hacks"
# Don't use threads inside llvmpipe, we've already got all cores
# busy at the deqp-runner level.
LP_NUM_THREADS: 0
GPU_VERSION: llvmpipe
DEQP_EXPECTED_RENDERER: llvmpipe
extends:
- .test-gl
- .deqp-test
- .llvmpipe-test
softpipe-gles2:
extends:
- llvmpipe-gles2
- .softpipe-rules
variables:
GPU_VERSION: softpipe
GALLIUM_DRIVER: "softpipe"
DEQP_EXPECTED_RENDERER: softpipe
softpipe-gles3:
variables:
DEQP_VER: gles3
extends: softpipe-gles2
softpipe-gles31:
parallel: 2
variables:
DEQP_VER: gles31
extends: softpipe-gles2
softpipe-asan-gles31:
variables:
GPU_VERSION: softpipe-asan
DEQP_FRACTION: 10
DEQP_VER: gles31
TEST_LD_PRELOAD: libasan.so.5
extends: softpipe-gles2
needs:
- x86_test-gl
- meson-testing-asan
softpipe-piglit-quick:
extends:
- .piglit-test
- .test-gl
- .softpipe-rules
variables:
GALLIUM_DRIVER: softpipe
# rasterpos skipped until we uprev piglit (commit ff2a7650be7349)
# triangle-rasterization skipped due to flakes thanks to it using a time-based random seed.
# glx-multithread-texture is flaky, undiagnosed
PIGLIT_OPTIONS: >
-x rasterpos
-x triangle-rasterization
-x glx-multithread-texture
-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
-x fs-execution-ordering
-x local-id-explosion
-x arb_pipeline_statistics_query-comp
-x streaming-texture-leak
-x longprim
-x shader-mem-barrier
-x arb_gpu_shader_fp64
-x arb_gpu_shader_int64
-x arb_tessellation_shader
-x glsl-4.00
-x glsl-4.10
-x glsl-4.20
-x glsl-4.30
-x glsl-4.40
-x glsl-4.50
-x gpu_shader4
-x gpu_shader5
PIGLIT_PROFILES: quick_gl quick_shader
PIGLIT_RESULTS: softpipe-quick
# Note that KHR-GL3* test sets include all tests from the previous
# version, so we only need to run one test list (unlike dEQP-GLES,
# where the test sets are separate).
softpipe-gl:
variables:
DEQP_VER: gl33
extends:
- softpipe-gles2
virgl-gles2-on-gl:
variables:
DEQP_VER: gles2
DEQP_NO_SAVE_RESULTS: 1
GPU_VERSION: virgl-gl
# Don't use threads inside llvmpipe, we've already got all cores
# busy at the deqp-runner level.
LP_NUM_THREADS: 0
DEQP_OPTIONS: "--deqp-log-images=disable"
DEQP_EXPECTED_RENDERER: virgl
extends:
- .deqp-test
- .virgl-test
virgl-gles3-on-gl:
variables:
DEQP_VER: gles3
DEQP_RUNNER_OPTIONS: "--timeout 180"
extends: virgl-gles2-on-gl
virgl-gles31-on-gl:
parallel: 2
variables:
DEQP_VER: gles31
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:
- *ignore_scheduled_pipelines
- if: *is-forked-branch
changes:
*all_paths
when: manual
- when: never
variables:
GIT_STRATEGY: none
virgl-gles2-on-gles:
variables:
VIRGL_HOST_API: GLES
GPU_VERSION: virgl-gles
extends:
- virgl-gles2-on-gl
- .test-manual
virgl-gles3-on-gles:
variables:
VIRGL_HOST_API: GLES
GPU_VERSION: virgl-gles
extends:
- virgl-gles3-on-gl
- .test-manual
virgl-gles31-on-gles:
variables:
VIRGL_HOST_API: GLES
GPU_VERSION: virgl-gles
extends:
- virgl-gles31-on-gl
- .test-manual
.arm64-a630-test:
extends:
- .freedreno-test
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"
GPU_VERSION: freedreno-a630
BM_DTB: /lava-files/db820c.dtb
DEQP_EXPECTED_RENDERER: FD630
tags:
- google-freedreno-cheza
script:
- ./install/bare-metal/cros-servo.sh
arm64_a630_gles2:
extends:
- .baremetal-deqp-test
- .arm64-a630-test
variables:
DEQP_VER: gles2
arm64_a630_gles31:
extends:
- .baremetal-deqp-test
- .arm64-a630-test
variables:
DEQP_VER: gles31
arm64_a630_gles3:
extends:
- .baremetal-deqp-test
- .arm64-a630-test
variables:
DEQP_VER: gles3
arm64_a630_gl:
extends:
- .baremetal-deqp-test
- .arm64-a630-test
variables:
DEQP_VER: gl33
arm64_a630_gles_others:
extends:
- .baremetal-deqp-test
- .arm64-a630-test
variables:
BARE_METAL_TEST_SCRIPT: "/install/bare-metal/arm64_a630_gles_others.sh"
arm64_a630_vk:
extends:
- .baremetal-deqp-test-freedreno-vk
- .arm64-a630-test
parallel: 2
variables:
DEQP_FRACTION: 4
# 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:
- .baremetal-deqp-test-freedreno-vk
- .arm64-a630-test
variables:
DEQP_FRACTION: 15
DEQP_CASELIST_FILTER: "dEQP-VK.renderpass.*"
GPU_VERSION: freedreno-a630-bypass
TU_DEBUG: sysmem
.arm64_a630_piglit:
extends:
- .piglit-test
- .arm64-a630-test
- .test-manual
variables:
BARE_METAL_TEST_SCRIPT: "/install/piglit/run.sh"
BM_START_XORG: 1
# Excluding various features we don't support to keep runtime down in
# deciding that they aren't supported.
#
# Also excluding some particularly slow tests (gl-1.3-texture-env takes 100s)
#
# Known flakes in the list are between "arb_blend_func_extended" and
# "varray-disabled"
#
# vs-output-array-vec2-index-wr-before-gs is skipped because it causes
# a flood of GPU hangs and makes the rest of the job flakey
#
# vs-clip-distance/vertex-enables skipped because they seem to be flaky in
# parallel with other tests (reliably fails on its own)
PIGLIT_OPTIONS: >-
-x vs-output-array-vec2-index-wr-before-gs
-x fixed-clip-enables
-x vs-clip-distance-enables
-x vs-clip-vertex-enables
-x arb_blend_func_extended-fbo-extended-blend-pattern_gles2
-x clear-accum
-x copypixels-sync
-x copyteximage-border
-x copytexsubimage
-x draw-sync
-x getteximage-simple
-x gl30basic
-x tcs-input
-x tes-input
-x unaligned-blit
-x user-clip
-x varray-disabled
-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
-x arb_gpu_shader_fp64
-x arb_gpu_shader_gpu5
-x arb_gpu_shader_int64
-x glsl-4.00
-x glsl-4.10
-x glsl-4.20
-x glsl-4.30
-x glsl-4.40
-x glsl-4.50
-x glsl-4.60
-x gl-1.3-texture-env
# Takes ~20 minutes, so manual-only until we can sort out runtime.
arm64_a630_piglit_gl:
extends:
- .arm64_a630_piglit
- .test-manual
variables:
PIGLIT_PROFILES: quick_gl
PIGLIT_RESULTS: freedreno-a630-gl
arm64_a630_piglit_shader:
extends:
- .arm64_a630_piglit
variables:
PIGLIT_PROFILES: quick_shader
PIGLIT_RESULTS: freedreno-a630-shader
.baremetal-test:
extends:
- .ci-run-policy
- .test
# Cancel job if a newer commit is pushed to the same branch
interruptible: true
stage: test
variables:
DRIVER_URL: https://minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}/mesa-arm64.tar.gz
before_script:
# Use this instead of gitlab's artifacts download because it hits packet.net
# instead of fd.o. Set FDO_HTTP_CACHE_URI to an http cache for your test lab to
# improve it even more (see https://docs.mesa3d.org/ci/bare-metal.html for
# setup).
- wget ${FDO_HTTP_CACHE_URI:-}${DRIVER_URL} -S --progress=dot:giga -O- | tar -xz
artifacts:
when: always
name: "mesa_${CI_JOB_NAME}"
paths:
- results/
- serial*.txt
exclude:
- results/*.shader_cache
reports:
junit: results/junit.xml
.baremetal-test-armhf:
extends:
- .baremetal-test
variables:
DRIVER_URL: https://minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}/mesa-armhf.tar.gz
.freedreno-test:
extends:
- .baremetal-test
- .use-arm64_test
- .freedreno-rules
variables:
BM_ROOTFS: /lava-files/rootfs-arm64
FLAKES_CHANNEL: "#freedreno-ci"
PIGLIT_PLATFORM: mixed_glx_egl
script:
- ./install/bare-metal/fastboot.sh
needs:
- arm64_test
- job: meson-arm64
artifacts: false
tags:
- google-freedreno-db410c
.baremetal-deqp-test:
variables:
BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
DEQP_SKIPS: deqp-default-skips.txt
DEQP_PARALLEL: 0 # Default to number of CPUs
.baremetal-deqp-test-freedreno-vk:
extends:
- .baremetal-deqp-test
variables:
DEQP_VER: vk
VK_DRIVER: freedreno
.arm64-a306-test:
extends:
- .freedreno-test
variables:
BM_KERNEL: /lava-files/Image.gz
BM_DTB: /lava-files/apq8016-sbc.dtb
BM_CMDLINE: "ip=dhcp console=ttyMSM0,115200n8"
GPU_VERSION: freedreno-a307
DEQP_EXPECTED_RENDERER: FD307
arm64_a306_gles2:
extends:
- .baremetal-deqp-test
- .arm64-a306-test
variables:
DEQP_VER: gles2
arm64_a306_gles3:
extends:
- .baremetal-deqp-test
- .arm64-a306-test
parallel: 3
variables:
DEQP_VER: gles3
DEQP_FRACTION: 2
# 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:
- .baremetal-deqp-test
- .arm64-a306-test
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-test:
extends:
- .freedreno-test
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"
FDO_CI_CONCURRENT: 1
GPU_VERSION: freedreno-a530
DEQP_EXPECTED_RENDERER: FD530
tags:
- google-freedreno-db820c
arm64_a530_gles2:
extends:
- .baremetal-deqp-test
- .arm64-a530-test
variables:
DEQP_VER: gles2
parallel: 2
arm64_a530_gles3:
extends:
- .baremetal-deqp-test
- .arm64-a530-test
variables:
DEQP_VER: gles3
DEQP_FRACTION: 40
arm64_a530_gles31:
extends:
- arm64_a530_gles3
variables:
DEQP_VER: gles31
DEQP_FRACTION: 10
.arm64_a530_piglit:
extends:
- .piglit-test
- .arm64-a530-test
- .test-manual
variables:
BARE_METAL_TEST_SCRIPT: "/install/piglit/run.sh"
BM_START_XORG: 1
# SMP is disabled in the current kernels for db820c.
FDO_CI_CONCURRENT: 1
# Excluding for flakes in multisample (MSAA fails covered well by deqp, we
# can enable it once we stabilize that.) and other flakes from
# atomic_counters through userclip in the list.
#
# Also excluding some particularly slow tests (gl-1.3-texture-env)
#
# Check fastboot.sh for more piglit tests being excluded!
PIGLIT_OPTIONS: >-
-x atomic_counters
-x gl-1.0-blend-func
-x glsl-1.30@execution@clipping
-x user-clip
-x arb_texture_multisample
-x ext_framebuffer_multisample
-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
-x arb_gpu_shader5
-x arb_gpu_shader_fp64
-x arb_gpu_shader_int64
-x arb_tessellation_shader
-x glsl-1.50
-x glsl-4.00
-x glsl-4.10
-x glsl-4.20
-x glsl-4.30
-x glsl-4.40
-x glsl-4.50
-x glsl-4.60
-x gl-1.3-texture-env
# Takes ~25 minutes, so manual-only until we can sort out runtime.
arm64_a530_piglit_gl:
extends:
- .arm64_a530_piglit
variables:
PIGLIT_PROFILES: quick_gl
PIGLIT_RESULTS: freedreno-a530-gl
arm64_a530_piglit_shader:
extends:
- .arm64_a530_piglit
variables:
PIGLIT_PROFILES: quick_shader
PIGLIT_RESULTS: freedreno-a530-shader
.vc4-rpi3-test:armhf:
extends:
- .baremetal-test-armhf
- .vc4-rules
- .use-armhf_test
variables:
BM_BOOTFS: /boot/armhf
BM_KERNEL_MODULES: vc4
BM_ROOTFS: /lava-files/rootfs-armhf
BM_ROOTFS_EXTRA: /modules/armhf
GPU_VERSION: vc4-rpi3
DEQP_EXPECTED_RENDERER: VC4
script:
- ./install/bare-metal/poe-powered.sh
needs:
- job: armhf_test
artifacts: false
- meson-armhf
tags:
- igalia-rpi3
vc4-rpi3-gles2:armhf:
extends:
- .vc4-rpi3-test:armhf
parallel: 4
variables:
BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
DEQP_VER: gles2
# The vc4s are so slow that it takes about a minute to get through the
# default 500 tests in a group, triggering the serial watchdog.
DEQP_RUNNER_OPTIONS: "--tests-per-group 250"
.vc4-rpi3-piglit:armhf:
extends:
- .piglit-test
- .vc4-rpi3-test:armhf
- .test-manual
variables:
BARE_METAL_TEST_SCRIPT: "/install/piglit/run.sh"
BM_POE_TIMEOUT: 180
PIGLIT_OPTIONS: >-
--timeout 60
-x .tesc
-x .tese
-x arb_gpu_shader_fp64
-x arb_gpu_shader_gpu5
-x arb_gpu_shader_int64
-x arb_tessellation_shader
-x arb_texture_cube_map
-x clipflat
-x copypixels-sync
-x copyteximage
-x depthstencil-default_fb
-x draw-sync
-x egl_ext_device_
-x egl_ext_platform_device
-x ext_framebuffer_multisample
-x ext_timer_query@time-elapsed
-x gl-1.0-blend-func
-x gl-1.3-texture-env
-x glsl-1.30
-x glsl-3.30
-x glsl-4.00
-x glsl-4.10
-x glsl-4.20
-x glsl-4.30
-x glsl-4.40
-x glsl-4.50
-x glsl-4.60
-x glsl-es-3.00
-x glsl-es-3.20
-x glsl-fs-convolution-2
-x glsl-vs-loop
-x glsl-vs-loop-nested
-x glsl-vs-mov-after-deref
-x glx-multithread-clearbuffer
-x glx-multithread-shader-compile
-x image_load_store
-x longprim
-x masked-clear
-x max-texture-size
-x maxsize
-x ppgtt_memory_alignment
-x streaming-texture-leak
-x texturesize
PIGLIT_PLATFORM: gbm
vc4-rpi3-piglit-quick_gl:armhf:
extends:
- .vc4-rpi3-piglit:armhf
variables:
FDO_CI_CONCURRENT: 1
PIGLIT_PROFILES: quick_gl
PIGLIT_RESULTS: "vc4-rpi3-quick_gl"
vc4-rpi3-piglit-quick_shader:armhf:
extends:
- .vc4-rpi3-piglit:armhf
variables:
FDO_CI_CONCURRENT: 2
PIGLIT_PROFILES: quick_shader
PIGLIT_RESULTS: "vc4-rpi3-quick_shader"
.v3d-rpi4-test:armhf:
extends:
- .baremetal-test-armhf
- .v3d-rules
- .use-armhf_test
variables:
BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
BM_BOOTFS: /boot/armhf
BM_KERNEL_MODULES: v3d,vc4
BM_POE_TIMEOUT: 300
BM_ROOTFS: /lava-files/rootfs-armhf
BM_ROOTFS_EXTRA: /modules/armhf
DEQP_EXPECTED_RENDERER: V3D
GPU_VERSION: v3d-rpi4
script:
- ./install/bare-metal/poe-powered.sh
needs:
- armhf_test
- meson-armhf
tags:
- igalia-rpi4
v3d-rpi4-gles31:armhf:
extends:
- .v3d-rpi4-test:armhf
parallel: 2
variables:
DEQP_FRACTION: 2
DEQP_VER: gles31
v3d-rpi4-gles3:armhf:
extends:
- .v3d-rpi4-test:armhf
parallel: 4
variables:
DEQP_FRACTION: 2
DEQP_VER: gles3
v3d-rpi4-gles2:armhf:
extends:
- .v3d-rpi4-test:armhf
variables:
DEQP_VER: gles2
.v3d-rpi4-piglit:armhf:
extends:
- .piglit-test
- .v3d-rpi4-test:armhf
- .test-manual
variables:
BARE_METAL_TEST_SCRIPT: "/install/piglit/run.sh"
PIGLIT_OPTIONS: >-
--timeout 60
-x .tesc
-x .tese
-x arb_gpu_shader_fp64
-x arb_gpu_shader_gpu5
-x arb_gpu_shader_int64
-x arb_tessellation_shader
-x depthstencil-default_fb
-x egl_ext_platform_device
-x ext_timer_query@time-elapsed
-x gl-1.3-texture-env
-x glsl-1.30
-x glsl-3.30
-x glsl-4.00
-x glsl-4.10
-x glsl-4.20
-x glsl-4.30
-x glsl-4.40
-x glsl-4.50
-x glsl-4.60
-x glsl-es-3.00
-x glsl-es-3.20
-x glx-multithread-clearbuffer
-x glx-multithread-shader-compile
-x image_load_store
-x max-texture-size
-x maxsize
-x streaming-texture-leak
-x tex-miplevel-selection
PIGLIT_PLATFORM: gbm
v3d-rpi4-piglit-quick_gl:armhf:
extends:
- .v3d-rpi4-piglit:armhf
variables:
PIGLIT_PROFILES: quick_gl
PIGLIT_RESULTS: "v3d-rpi4-quick_gl"
v3d-rpi4-piglit-quick_shader:armhf:
extends:
- .v3d-rpi4-piglit:armhf
variables:
PIGLIT_PROFILES: quick_shader
PIGLIT_RESULTS: "v3d-rpi4-shader_gl"
v3dv-rpi4-vk:armhf:
extends:
- .baremetal-test-armhf
- .use-armhf_test
- .v3dv-rules
parallel: 6
variables:
BARE_METAL_TEST_SCRIPT: "/install/deqp-runner.sh"
BM_BOOTFS: /boot/armhf
BM_KERNEL_MODULES: v3d,vc4
BM_POE_TIMEOUT: 300
BM_ROOTFS: /lava-files/rootfs-armhf
BM_ROOTFS_EXTRA: /modules/armhf
CPU: arm7hlf
DEQP_EXPECTED_RENDERER: "V3D 4.2"
DEQP_FRACTION: 7
DEQP_VER: vk
GPU_VERSION: v3dv-rpi4
VK_CPU: arm7hlf
VK_DRIVER: broadcom
script:
- ./install/bare-metal/poe-powered.sh
needs:
- armhf_test
- meson-armhf
tags:
- igalia-rpi4
lavapipe-vk:
stage: software-renderer
extends:
- .test-vk
- .llvmpipe-rules
- .deqp-test-vk
variables:
GPU_VERSION: lvp
VK_DRIVER: lvp
DEQP_FRACTION: 10
# RADV CI
.test-radv:
extends:
- .test-vk
- .radv-rules
stage: amd
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:
GPU_VERSION: radv-polaris10
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
# Sienna Cichlid (GFX10)
- export RADV_FORCE_FAMILY="gfx1030"
- ./install/fossilize-runner.sh