# Shared between windows and Linux .build-common: extends: .container+build-rules # Cancel job if a newer commit is pushed to the same branch interruptible: true # Build jobs don't take more than 1-3 minutes. 5-8 min max on a fresh runner # without a populated ccache. # These jobs are never slow, either they finish within reasonable time or # something has gone wrong and the job will never terminate, so we should # instead timeout so that the retry mechanism can kick in. # A few exception are made, see `timeout:` overrides in the rest of this # file. timeout: 30m artifacts: name: "mesa_${CI_JOB_NAME}" when: always paths: - _build/meson-logs/*.txt - _build/meson-logs/strace - artifacts # 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: - !reference [default, before_script] - | export PATH="/usr/lib/ccache:$PATH" export CCACHE_BASEDIR="$PWD" if test -x /usr/bin/ccache; then section_start ccache_before "ccache stats before build" ccache --show-stats section_end ccache_before fi after_script: - if test -x /usr/bin/ccache; then ccache --show-stats | grep "Hits:"; fi - !reference [default, after_script] .build-windows: extends: - .build-common - .windows-docker-tags cache: key: ${CI_JOB_NAME} paths: - subprojects/packagecache .meson-build: extends: - .build-linux - .use-debian/x86_64_build stage: build-x86_64 variables: LLVM_VERSION: 15 script: - .gitlab-ci/meson/build.sh debian-testing: extends: - .meson-build - .ci-deqp-artifacts 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-nine=true -D gallium-va=enabled -D gallium-rusticl=true GALLIUM_DRIVERS: "swrast,virgl,radeonsi,zink,crocus,iris,i915,r300,svga" VULKAN_DRIVERS: "swrast,amd,intel,intel_hasvk,virtio,nouveau" BUILDTYPE: "debugoptimized" EXTRA_OPTION: > -D spirv-to-dxil=true -D valgrind=disabled -D perfetto=true -D tools=drm-shim S3_ARTIFACT_NAME: mesa-x86_64-default-${BUILDTYPE} LLVM_VERSION: 15 script: - .gitlab-ci/meson/build.sh - .gitlab-ci/prepare-artifacts.sh artifacts: reports: junit: artifacts/ci_scripts_report.xml debian-testing-asan: extends: - debian-testing variables: C_ARGS: > -Wno-error=stringop-truncation EXTRA_OPTION: > -D b_sanitize=address -D valgrind=disabled -D tools=dlclose-skip -D intel-clc=system S3_ARTIFACT_NAME: "" ARTIFACTS_DEBUG_SYMBOLS: 1 # Do a host build for intel-clc (asan complains not being loaded # as the first library) HOST_BUILD_OPTIONS: > -D build-tests=false -D enable-glcpp-tests=false -D gallium-opencl=disabled -D gallium-drivers= -D vulkan-drivers= -D video-codecs= -D glx=disabled -D platforms= -D intel-clc=enabled -D install-intel-clc=true debian-testing-msan: # https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo # msan cannot fully work until it's used together with msan libc extends: - debian-clang variables: # l_undef is incompatible with msan EXTRA_OPTION: -D b_sanitize=memory -D b_lundef=false -D intel-clc=system S3_ARTIFACT_NAME: "" ARTIFACTS_DEBUG_SYMBOLS: 1 # Don't run all the tests yet: # GLSL has some issues in sexpression reading. # gtest has issues in its test initialization. MESON_TEST_ARGS: "--suite glcpp --suite format" GALLIUM_DRIVERS: "freedreno,iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus" VULKAN_DRIVERS: intel,amd,broadcom,virtio # Do a host build for intel-clc (msan complains about # uninitialized values in the LLVM libs) HOST_BUILD_OPTIONS: > -D build-tests=false -D enable-glcpp-tests=false -D gallium-opencl=disabled -D gallium-drivers= -D vulkan-drivers= -D video-codecs= -D glx=disabled -D platforms= -D intel-clc=enabled -D install-intel-clc=true debian-build-testing: extends: .meson-build variables: BUILDTYPE: debug 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-omx=bellagio -D gallium-va=enabled -D gallium-xa=enabled -D gallium-nine=true -D gallium-rusticl=false GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,asahi,crocus" VULKAN_DRIVERS: swrast EXTRA_OPTION: > -D spirv-to-dxil=true -D osmesa=true -D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,lima,panfrost,asahi -D b_lto=true LLVM_VERSION: 15 S3_ARTIFACT_NAME: debian-build-testing script: | section_start lava-pytest "lava-pytest" .gitlab-ci/lava/lava-pytest.sh section_switch shellcheck "shellcheck" .gitlab-ci/run-shellcheck.sh section_switch yamllint "yamllint" .gitlab-ci/run-yamllint.sh section_switch meson "meson" .gitlab-ci/meson/build.sh .gitlab-ci/prepare-artifacts.sh timeout: 15m shader-db: stage: code-validation extends: - .use-debian/x86_64_build - .container+build-rules needs: - debian-build-testing variables: S3_ARTIFACT_NAME: debian-build-testing before_script: - !reference [.download_s3, before_script] script: | section_switch shader-db "shader-db" .gitlab-ci/run-shader-db.sh artifacts: paths: - shader-db timeout: 15m # Test a release build with -Werror so new warnings don't sneak in. debian-release: extends: .meson-build variables: LLVM_VERSION: 15 UNWIND: "enabled" C_ARGS: > -Wno-error=stringop-overread 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-omx=disabled -D gallium-va=enabled -D gallium-xa=enabled -D gallium-nine=false -D gallium-rusticl=false -D llvm=enabled GALLIUM_DRIVERS: "i915,iris,nouveau,kmsro,freedreno,r300,svga,swrast,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,d3d12,crocus" VULKAN_DRIVERS: "amd,imagination-experimental,microsoft-experimental" EXTRA_OPTION: > -D spirv-to-dxil=true -D osmesa=true -D tools=all -D intel-clc=enabled -D intel-rt=enabled -D imagination-srv=true BUILDTYPE: "release" S3_ARTIFACT_NAME: "mesa-x86_64-default-${BUILDTYPE}" script: - .gitlab-ci/meson/build.sh - 'if [ -n "$MESA_CI_PERFORMANCE_ENABLED" ]; then .gitlab-ci/prepare-artifacts.sh; fi' alpine-build-testing: extends: - .meson-build - .use-alpine/x86_64_build stage: build-x86_64 variables: BUILDTYPE: "release" C_ARGS: > -Wno-error=cpp -Wno-error=array-bounds -Wno-error=stringop-overread DRI_LOADERS: > -D glx=disabled -D gbm=enabled -D egl=enabled -D glvnd=disabled -D platforms=wayland LLVM_VERSION: "16" GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink" GALLIUM_ST: > -D dri3=enabled -D gallium-extra-hud=true -D gallium-vdpau=disabled -D gallium-omx=disabled -D gallium-va=enabled -D gallium-xa=disabled -D gallium-nine=true -D gallium-rusticl=false -D gles1=disabled -D gles2=enabled -D llvm=enabled -D microsoft-clc=disabled -D shared-llvm=enabled UNWIND: "disabled" VULKAN_DRIVERS: "amd,broadcom,freedreno,intel,imagination-experimental" fedora-release: extends: - .meson-build - .use-fedora/x86_64_build variables: BUILDTYPE: "release" C_LINK_ARGS: > -Wno-error=stringop-overflow -Wno-error=stringop-overread CPP_ARGS: > -Wno-error=dangling-reference -Wno-error=overloaded-virtual CPP_LINK_ARGS: > -Wno-error=stringop-overflow -Wno-error=stringop-overread DRI_LOADERS: > -D glx=dri -D gbm=enabled -D egl=enabled -D glvnd=enabled -D platforms=x11,wayland EXTRA_OPTION: > -D b_lto=true -D osmesa=true -D selinux=true -D tools=drm-shim,etnaviv,freedreno,glsl,intel,nir,nouveau,lima,panfrost,imagination -D vulkan-layers=device-select,overlay -D intel-rt=enabled -D imagination-srv=true -D teflon=true GALLIUM_DRIVERS: "crocus,etnaviv,freedreno,i915,iris,kmsro,lima,nouveau,panfrost,r300,r600,radeonsi,svga,swrast,tegra,v3d,vc4,virgl,zink" GALLIUM_ST: > -D dri3=enabled -D gallium-extra-hud=true -D gallium-vdpau=enabled -D gallium-omx=disabled -D gallium-va=enabled -D gallium-xa=enabled -D gallium-nine=false -D gallium-rusticl=true -D gles1=disabled -D gles2=enabled -D llvm=enabled -D microsoft-clc=disabled -D shared-llvm=enabled LLVM_VERSION: "" UNWIND: "disabled" VULKAN_DRIVERS: "amd,broadcom,freedreno,imagination-experimental,intel,intel_hasvk" debian-android: extends: - .meson-cross - .use-debian/android_build - .ci-deqp-artifacts variables: BUILDTYPE: debug UNWIND: "disabled" C_ARGS: > -Wno-error=asm-operand-widths -Wno-error=constant-conversion -Wno-error=enum-conversion -Wno-error=initializer-overrides -Wno-error=sometimes-uninitialized CPP_ARGS: > -Wno-error=c99-designator -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=self-assign 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=33 -D valgrind=disabled -D android-libbacktrace=disabled -D intel-clc=system GALLIUM_ST: > -D dri3=disabled -D gallium-vdpau=disabled -D gallium-omx=disabled -D gallium-va=disabled -D gallium-xa=disabled -D gallium-nine=false -D gallium-rusticl=false LLVM_VERSION: "15" PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files" HOST_BUILD_OPTIONS: > -D build-tests=false -D enable-glcpp-tests=false -D gallium-opencl=disabled -D gallium-drivers= -D vulkan-drivers= -D video-codecs= -D glx=disabled -D platforms= -D intel-clc=enabled -D install-intel-clc=true ARTIFACTS_DEBUG_SYMBOLS: 1 S3_ARTIFACT_NAME: mesa-x86_64-android-${BUILDTYPE} script: - CROSS=aarch64-linux-android GALLIUM_DRIVERS=etnaviv,freedreno,lima,panfrost,vc4,v3d VULKAN_DRIVERS=freedreno,broadcom,virtio .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 Gallium # drivers because they requires LLVM, which we don't have an Android build # of. - CROSS=x86_64-linux-android GALLIUM_DRIVERS=iris,virgl VULKAN_DRIVERS=amd,intel .gitlab-ci/meson/build.sh - .gitlab-ci/prepare-artifacts.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,wayland -D osmesa=false GALLIUM_ST: > -D dri3=enabled -D gallium-vdpau=disabled -D gallium-omx=disabled -D gallium-va=disabled -D gallium-xa=disabled -D gallium-nine=false .meson-arm: extends: - .meson-cross - .use-debian/arm64_build needs: - debian/arm64_build variables: VULKAN_DRIVERS: freedreno,broadcom GALLIUM_DRIVERS: "etnaviv,freedreno,kmsro,lima,nouveau,panfrost,swrast,tegra,v3d,vc4,zink" BUILDTYPE: "debugoptimized" tags: - aarch64 debian-arm32: extends: - .meson-arm - .ci-deqp-artifacts variables: CROSS: armhf EXTRA_OPTION: > -D llvm=disabled -D valgrind=disabled S3_ARTIFACT_NAME: mesa-arm32-default-${BUILDTYPE} # The strip command segfaults, failing to strip the binary and leaving # tempfiles in our artifacts. ARTIFACTS_DEBUG_SYMBOLS: 1 script: - .gitlab-ci/meson/build.sh - .gitlab-ci/prepare-artifacts.sh debian-arm32-asan: extends: - debian-arm32 variables: EXTRA_OPTION: > -D llvm=disabled -D b_sanitize=address -D valgrind=disabled -D tools=dlclose-skip ARTIFACTS_DEBUG_SYMBOLS: 1 S3_ARTIFACT_NAME: mesa-arm32-asan-${BUILDTYPE} MESON_TEST_ARGS: "--no-suite mesa:compiler --no-suite mesa:util" debian-arm64: extends: - .meson-arm - .ci-deqp-artifacts variables: C_ARGS: > -Wno-error=array-bounds -Wno-error=stringop-truncation VULKAN_DRIVERS: "freedreno,broadcom,panfrost,imagination-experimental" EXTRA_OPTION: > -D llvm=disabled -D valgrind=disabled -D imagination-srv=true -D perfetto=true -D freedreno-kmds=msm,virtio -D teflon=true S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE} script: - .gitlab-ci/meson/build.sh - .gitlab-ci/prepare-artifacts.sh debian-arm64-asan: extends: - debian-arm64 variables: EXTRA_OPTION: > -D llvm=disabled -D b_sanitize=address -D valgrind=disabled -D tools=dlclose-skip ARTIFACTS_DEBUG_SYMBOLS: 1 S3_ARTIFACT_NAME: mesa-arm64-asan-${BUILDTYPE} MESON_TEST_ARGS: "--no-suite mesa:compiler" debian-arm64-build-test: extends: - .meson-arm - .ci-deqp-artifacts variables: VULKAN_DRIVERS: "amd" EXTRA_OPTION: > -Dtools=panfrost,imagination debian-arm64-release: extends: - debian-arm64 variables: BUILDTYPE: release S3_ARTIFACT_NAME: mesa-arm64-default-${BUILDTYPE} C_ARGS: > -Wno-error=array-bounds -Wno-error=stringop-truncation -Wno-error=stringop-overread script: - .gitlab-ci/meson/build.sh - 'if [ -n "$MESA_CI_PERFORMANCE_ENABLED" ]; then .gitlab-ci/prepare-artifacts.sh; fi' debian-clang: extends: .meson-build variables: BUILDTYPE: debug LLVM_VERSION: 15 UNWIND: "enabled" C_ARGS: > -Wno-error=constant-conversion -Wno-error=enum-conversion -Wno-error=initializer-overrides -Wno-error=sometimes-uninitialized -Werror=misleading-indentation CPP_ARGS: > -Wno-error=c99-designator -Wno-error=overloaded-virtual -Wno-error=tautological-constant-out-of-range-compare -Wno-error=unused-private-field DRI_LOADERS: > -D glx=dri -D gbm=enabled -D egl=enabled -D glvnd=enabled -D platforms=x11,wayland GALLIUM_ST: > -D dri3=enabled -D gallium-extra-hud=true -D gallium-vdpau=enabled -D gallium-omx=bellagio -D gallium-va=enabled -D gallium-xa=enabled -D gallium-nine=true -D gles1=enabled -D gles2=enabled -D llvm=enabled -D microsoft-clc=disabled -D shared-llvm=enabled -D opencl-spirv=true -D shared-glapi=enabled GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,freedreno,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus,i915,asahi" VULKAN_DRIVERS: intel,amd,freedreno,broadcom,virtio,swrast,panfrost,imagination-experimental,microsoft-experimental,nouveau EXTRA_OPTION: -D spirv-to-dxil=true -D osmesa=true -D imagination-srv=true -D tools=drm-shim,etnaviv,freedreno,glsl,intel,intel-ui,nir,nouveau,lima,panfrost,asahi,imagination -D vulkan-layers=device-select,overlay -D build-aco-tests=true -D intel-clc=enabled -D intel-rt=enabled -D imagination-srv=true -D teflon=true CC: clang-${LLVM_VERSION} CXX: clang++-${LLVM_VERSION} debian-clang-release: extends: debian-clang variables: BUILDTYPE: "release" DRI_LOADERS: > -D glx=xlib -D platforms=x11,wayland GALLIUM_ST: > -D dri3=enabled -D gallium-extra-hud=true -D gallium-vdpau=enabled -D gallium-omx=bellagio -D gallium-va=enabled -D gallium-xa=enabled -D gallium-nine=true -D gles1=disabled -D gles2=disabled -D llvm=enabled -D microsoft-clc=disabled -D shared-llvm=enabled -D opencl-spirv=true -D shared-glapi=disabled windows-msvc: extends: - .build-windows - .use-windows_build_msvc - .windows-build-rules stage: build-misc script: - pwsh -ExecutionPolicy RemoteSigned .\.gitlab-ci\windows\mesa_build.ps1 artifacts: paths: - _build/meson-logs/*.txt - _install/ debian-vulkan: extends: .meson-build variables: BUILDTYPE: debug LLVM_VERSION: 15 UNWIND: "disabled" DRI_LOADERS: > -D glx=disabled -D gbm=disabled -D egl=disabled -D opengl=false -D gles1=disabled -D gles2=disabled -D platforms=x11,wayland -D osmesa=false GALLIUM_ST: > -D dri3=enabled -D gallium-vdpau=disabled -D gallium-omx=disabled -D gallium-va=disabled -D gallium-xa=disabled -D gallium-nine=false -D gallium-rusticl=false -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: amd,broadcom,freedreno,intel,intel_hasvk,panfrost,virtio,imagination-experimental,microsoft-experimental,nouveau EXTRA_OPTION: > -D vulkan-layers=device-select,overlay -D build-aco-tests=true -D intel-rt=disabled -D imagination-srv=true debian-x86_32: extends: - .meson-cross - .use-debian/x86_32_build variables: BUILDTYPE: debug CROSS: i386 VULKAN_DRIVERS: intel,amd,swrast,virtio GALLIUM_DRIVERS: "iris,nouveau,r300,r600,radeonsi,swrast,virgl,zink,crocus,d3d12" LLVM_VERSION: 15 EXTRA_OPTION: > -D vulkan-layers=device-select,overlay -D intel-clc=system HOST_BUILD_OPTIONS: > -D build-tests=false -D enable-glcpp-tests=false -D gallium-opencl=disabled -D gallium-drivers= -D vulkan-drivers= -D video-codecs= -D glx=disabled -D platforms= -D intel-clc=enabled -D install-intel-clc=true debian-s390x: extends: - debian-ppc64el - .use-debian/s390x_build - .s390x-rules tags: - kvm variables: CROSS: s390x GALLIUM_DRIVERS: "swrast,zink" LLVM_VERSION: 15 VULKAN_DRIVERS: "swrast" debian-ppc64el: extends: - .meson-cross - .use-debian/ppc64el_build - .ppc64el-rules variables: BUILDTYPE: debug CROSS: ppc64el GALLIUM_DRIVERS: "nouveau,radeonsi,swrast,virgl,zink" VULKAN_DRIVERS: "amd,swrast"