diff options
author | Jonathan Gray <jsg@cvs.openbsd.org> | 2021-09-09 09:46:47 +0000 |
---|---|---|
committer | Jonathan Gray <jsg@cvs.openbsd.org> | 2021-09-09 09:46:47 +0000 |
commit | 17251c8fe97e6c8f1f6e21767313ce4bfa80a547 (patch) | |
tree | 89369bcb8fa98db8d7510cb0b94f7dfcc39e2eac /lib/mesa/.gitlab-ci.yml | |
parent | ac84aa63606be1381cde78da15d054e26a4e1ab3 (diff) |
Import Mesa 21.1.8
Diffstat (limited to 'lib/mesa/.gitlab-ci.yml')
-rw-r--r-- | lib/mesa/.gitlab-ci.yml | 1190 |
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 |