summaryrefslogtreecommitdiff
path: root/lib/mesa/.gitlab-ci.yml
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2021-09-09 09:46:47 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2021-09-09 09:46:47 +0000
commit17251c8fe97e6c8f1f6e21767313ce4bfa80a547 (patch)
tree89369bcb8fa98db8d7510cb0b94f7dfcc39e2eac /lib/mesa/.gitlab-ci.yml
parentac84aa63606be1381cde78da15d054e26a4e1ab3 (diff)
Import Mesa 21.1.8
Diffstat (limited to 'lib/mesa/.gitlab-ci.yml')
-rw-r--r--lib/mesa/.gitlab-ci.yml1190
1 files changed, 1190 insertions, 0 deletions
diff --git a/lib/mesa/.gitlab-ci.yml b/lib/mesa/.gitlab-ci.yml
new file mode 100644
index 000000000..796ae2b26
--- /dev/null
+++ b/lib/mesa/.gitlab-ci.yml
@@ -0,0 +1,1190 @@
+variables:
+ FDO_UPSTREAM_REPO: mesa/mesa
+ MESA_TEMPLATES_COMMIT: &ci-templates-commit 290b79e0e78eab67a83766f4e9691be554fc4afd
+ 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'
+ - local: 'src/amd/ci/gitlab-ci.yml'
+ - local: 'src/broadcom/ci/gitlab-ci.yml'
+ - local: 'src/freedreno/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/iris/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/lima/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/panfrost/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/radeonsi/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/softpipe/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/virgl/ci/gitlab-ci.yml'
+ - local: 'src/gallium/drivers/zink/ci/gitlab-ci.yml'
+ - local: 'src/gallium/frontends/lavapipe/ci/gitlab-ci.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 -W -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
+ - _build/meson-logs/strace
+
+
+# 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: bullseye-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 11 based x86 build image base
+x86_build-base:
+ extends:
+ - .fdo.container-build@debian
+ - .container
+ variables:
+ MESA_IMAGE_TAG: &x86_build-base "2021-03-31-bullseye"
+
+.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 11 based x86 main build image
+x86_build:
+ extends:
+ - .use-x86_build-base
+ variables:
+ MESA_IMAGE_TAG: &x86_build "2021-04-13-glvnd"
+
+.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 11 based i386 cross-build image
+i386_build:
+ extends:
+ - .use-x86_build-base
+ variables:
+ MESA_IMAGE_TAG: &i386_build "2021-04-13-bullseye"
+
+.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 11 based ppc64el cross-build image
+ppc64el_build:
+ extends:
+ - .use-x86_build-base
+ variables:
+ MESA_IMAGE_TAG: &ppc64el_build "2021-04-13-bullseye"
+
+.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 11 based s390x cross-build image
+s390x_build:
+ extends:
+ - .use-x86_build-base
+ variables:
+ MESA_IMAGE_TAG: &s390x_build "2021-04-13-bullseye"
+
+.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-04-08-libdrm"
+
+.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 11 based x86 test image base
+x86_test-base:
+ extends: x86_build-base
+ variables:
+ MESA_IMAGE_TAG: &x86_test-base "2021-03-31-cargo"
+
+.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 11 based x86 test image for GL
+x86_test-gl:
+ extends: .use-x86_test-base
+ variables:
+ MESA_IMAGE_TAG: &x86_test-gl "2021-04-14-cargo"
+
+# Debian 11 based x86 test image for VK
+x86_test-vk:
+ extends: .use-x86_test-base
+ variables:
+ MESA_IMAGE_TAG: &x86_test-vk "2021-04-14-cargo"
+
+# Debian 11 based ARM build image
+arm_build:
+ extends:
+ - .fdo.container-build@debian
+ - .container
+ tags:
+ - aarch64
+ variables:
+ MESA_IMAGE_TAG: &arm_build "2021-04-13-bullseye"
+
+.use-arm_build:
+ extends:
+ - .set-image
+ variables:
+ MESA_IMAGE_PATH: "debian/arm_build"
+ MESA_IMAGE_TAG: *arm_build
+ needs:
+ - arm_build
+
+# Kernel & rootfs for ARM64 baremetal testing
+kernel+rootfs_arm64-baremetal:
+ extends:
+ - .use-arm_build
+ - .kernel+rootfs
+ tags:
+ - aarch64
+ variables:
+ DEBIAN_ARCH: "arm64"
+ KERNEL_URL: "https://github.com/anholt/linux/archive/mesa-ci-2021-04-01-5.11.tar.gz"
+ MESA_ROOTFS_TAG: &arm-baremetal "2021-04-14-librenderdoc"
+ MINIO_SUFFIX: "baremetal"
+
+# Kernel & rootfs for armhf baremetal testing
+kernel+rootfs_armhf-baremetal:
+ extends:
+ - kernel+rootfs_arm64-baremetal
+ variables:
+ DEBIAN_ARCH: "armhf"
+ MESA_ROOTFS_TAG: *arm-baremetal
+
+# x86 image with ARM64 & armhf kernel & rootfs for baremetal testing
+arm_test:
+ extends:
+ - .fdo.container-build@debian
+ - .container
+ # Don't want the .container rules
+ - .ci-run-policy
+ stage: build-misc
+ needs:
+ - kernel+rootfs_arm64-baremetal
+ - kernel+rootfs_armhf-baremetal
+ variables:
+ FDO_DISTRIBUTION_EXEC: 'env ARTIFACTS_PREFIX=https://${MINIO_HOST}/mesa-lava ARTIFACTS_SUFFIX=baremetal/${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT} CI_PROJECT_PATH=${CI_PROJECT_PATH} FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} FDO_UPSTREAM_REPO=${FDO_UPSTREAM_REPO} bash .gitlab-ci/container/${CI_JOB_NAME}.sh'
+ FDO_DISTRIBUTION_TAG: "${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
+ MESA_ARM_BUILD_TAG: *arm_build
+ MESA_IMAGE_TAG: &arm_test "2021-04-14-librenderdoc"
+ MESA_ROOTFS_TAG: *arm-baremetal
+
+.use-arm_test:
+ image: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}--${MESA_ROOTFS_TAG}--${MESA_ARM_BUILD_TAG}--${MESA_TEMPLATES_COMMIT}"
+ variables:
+ MESA_ARM_BUILD_TAG: *arm_build
+ MESA_IMAGE_PATH: "debian/arm_test"
+ MESA_IMAGE_TAG: *arm_test
+ MESA_ROOTFS_TAG: *arm-baremetal
+ needs:
+ - arm_test
+
+# Native Windows docker builds
+#
+# Unlike the above Linux-based builds - including MinGW 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: "$CI_REGISTRY_IMAGE/${MESA_IMAGE_PATH}:${MESA_IMAGE_TAG}"
+ MESA_IMAGE_PATH: "windows/x64_build"
+ MESA_IMAGE_TAG: "2021-03-15-tls"
+ MESA_UPSTREAM_IMAGE: "$CI_REGISTRY/$FDO_UPSTREAM_REPO/$MESA_IMAGE_PATH:${MESA_IMAGE_TAG}"
+
+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
+ - _build/meson-logs/strace
+ - 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: 11
+ script:
+ - .gitlab-ci/meson/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 valgrind=false
+ -D werror=true
+ MINIO_ARTIFACT_NAME: mesa-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
+ -D valgrind=false
+ MINIO_ARTIFACT_NAME: ""
+ ARTIFACTS_DEBUG_SYMBOLS: 1
+
+meson-clover-testing:
+ extends:
+ - .meson-build
+ - .ci-deqp-artifacts
+ variables:
+ UNWIND: "enabled"
+ 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 valgrind=false
+ -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
+ 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: "iris,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
+ -D valgrind=false
+ 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: ""
+ PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files"
+ script:
+ - 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,vc4,v3d VULKAN_DRIVERS=freedreno,broadcom,virtio-experimental .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
+
+.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
+ EXTRA_OPTION: >
+ -D llvm=disabled
+ -D valgrind=false
+ MINIO_ARTIFACT_NAME: mesa-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
+ -D valgrind=false
+ MINIO_ARTIFACT_NAME: mesa-arm64
+ script:
+ - .gitlab-ci/meson/build.sh
+ - .gitlab-ci/prepare-artifacts.sh
+
+meson-arm64-asan:
+ extends:
+ - meson-arm64
+ variables:
+ EXTRA_OPTION: >
+ -D llvm=disabled
+ -D b_sanitize=address
+ -D valgrind=false
+ ARTIFACTS_DEBUG_SYMBOLS: 1
+ MINIO_ARTIFACT_NAME: mesa-arm64-asan
+ MESON_TEST_ARGS: "--no-suite mesa:compiler"
+
+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,virtio-experimental
+ CC: clang
+ CXX: clang++
+
+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_TESTS: -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/
+
+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 valgrind=false
+ -D werror=true
+ script:
+ - 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,virtio-experimental
+ EXTRA_OPTION: >
+ -D vulkan-layers=device-select,overlay
+ -D build-aco-tests=true
+ -D werror=true
+
+meson-i386:
+ extends:
+ - .meson-cross
+ - .use-i386_build
+ variables:
+ CROSS: i386
+ VULKAN_DRIVERS: intel,amd,swrast,virtio-experimental
+ GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,swrast,virgl,zink"
+ DRI_DRIVERS: "i915,i965,r100,r200,nouveau"
+ EXTRA_OPTION: >
+ -D vulkan-layers=device-select,overlay
+ -D werror=true
+
+meson-s390x:
+ extends:
+ - meson-ppc64el
+ - .use-s390x_build
+ tags:
+ - kvm
+ variables:
+ CROSS: s390x
+ EXTRA_OPTION: >
+ -D werror=true
+ GALLIUM_DRIVERS: "swrast,zink"
+ # The lp_test_blend test times out with LLVM 11
+ LLVM_VERSION: 9
+ VULKAN_DRIVERS: "swrast"
+
+meson-ppc64el:
+ extends:
+ - .meson-cross
+ - .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
+ -Dzlib=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:
+ - results/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
+
+.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/
+
+# 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
+
+.baremetal-test:
+ extends:
+ - .ci-run-policy
+ - .test
+ # Cancel job if a newer commit is pushed to the same branch
+ interruptible: true
+ stage: test
+ 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:-}https://minio-packet.freedesktop.org/artifacts/${CI_PROJECT_PATH}/${CI_PIPELINE_ID}/${MINIO_ARTIFACT_NAME}.tar.gz -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:
+ MINIO_ARTIFACT_NAME: mesa-armhf
+
+.baremetal-arm64-asan-test:
+ variables:
+ TEST_LD_PRELOAD: libasan.so.6
+ MINIO_ARTIFACT_NAME: mesa-arm64-asan
+ needs:
+ - arm_test
+ - job: meson-arm64-asan
+ artifacts: false
+
+.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