diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5d46f1ff18a..f9ff9edc52c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -87,6 +87,7 @@ stages: - git-archive - build-x86_64 - build-misc + - lint - amd - intel - nouveau diff --git a/.gitlab-ci/build/gitlab-ci.yml b/.gitlab-ci/build/gitlab-ci.yml index 7e2b0b003bc..cf701594f3e 100644 --- a/.gitlab-ci/build/gitlab-ci.yml +++ b/.gitlab-ci/build/gitlab-ci.yml @@ -123,7 +123,7 @@ debian-testing-msan: GALLIUM_DRIVERS: "iris,nouveau,kmsro,r300,r600,swrast,svga,v3d,vc4,virgl,etnaviv,panfrost,lima,zink,radeonsi,tegra,d3d12,crocus" VULKAN_DRIVERS: intel,amd,broadcom,virtio-experimental -debian-clover-testing: +.debian-cl-testing: extends: - .meson-build - .ci-deqp-artifacts @@ -133,9 +133,6 @@ debian-clover-testing: -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: > @@ -144,6 +141,22 @@ debian-clover-testing: - .gitlab-ci/meson/build.sh - .gitlab-ci/prepare-artifacts.sh +debian-clover-testing: + extends: + - .debian-cl-testing + variables: + GALLIUM_ST: > + -D gallium-opencl=icd + -D opencl-spirv=true + +debian-rusticl-testing: + extends: + - .debian-cl-testing + variables: + GALLIUM_ST: > + -D gallium-rusticl=true + -D opencl-spirv=true + debian-build-testing: extends: .meson-build variables: @@ -163,6 +176,7 @@ debian-build-testing: -D gallium-xa=enabled -D gallium-nine=true -D gallium-opencl=disabled + -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: > @@ -195,6 +209,7 @@ debian-release: -D gallium-xa=enabled -D gallium-nine=false -D gallium-opencl=disabled + -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" @@ -244,6 +259,7 @@ fedora-release: -D gallium-xa=enabled -D gallium-nine=false -D gallium-opencl=icd + -D gallium-rusticl=false -D gles1=disabled -D gles2=enabled -D llvm=enabled @@ -290,6 +306,7 @@ debian-android: -D gallium-xa=disabled -D gallium-nine=false -D gallium-opencl=disabled + -D gallium-rusticl=false LLVM_VERSION: "" PKG_CONFIG_LIBDIR: "/disable/non/android/system/pc/files" script: @@ -463,7 +480,7 @@ windows-vs2019: - _build/meson-logs/*.txt - _install/ -debian-clover: +.debian-cl: extends: .meson-build variables: UNWIND: "enabled" @@ -471,6 +488,12 @@ debian-clover: -D glx=disabled -D egl=disabled -D gbm=disabled + EXTRA_OPTION: > + -D valgrind=false + +debian-clover: + extends: .debian-cl + variables: GALLIUM_DRIVERS: "r600,radeonsi,swrast" GALLIUM_ST: > -D dri3=disabled @@ -481,8 +504,22 @@ debian-clover: -D gallium-xa=disabled -D gallium-nine=false -D gallium-opencl=icd - EXTRA_OPTION: > - -D valgrind=false + -D gallium-rusticl=false + +debian-rusticl: + extends: .debian-cl + variables: + GALLIUM_DRIVERS: "iris,swrast" + 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 + -D gallium-rusticl=true debian-vulkan: extends: .meson-build @@ -503,6 +540,7 @@ debian-vulkan: -D gallium-xa=disabled -D gallium-nine=false -D gallium-opencl=disabled + -D gallium-rusticl=false -D b_sanitize=undefined -D c_args=-fno-sanitize-recover=all -D cpp_args=-fno-sanitize-recover=all @@ -573,6 +611,7 @@ debian-mingw32-x86_64: VULKAN_DRIVERS: "swrast,amd,microsoft-experimental" GALLIUM_ST: > -D gallium-opencl=icd + -D gallium-rusticl=false -D opencl-spirv=true -D microsoft-clc=enabled -D static-libclc=all diff --git a/.gitlab-ci/container/build-rust.sh b/.gitlab-ci/container/build-rust.sh index 2fdfb22115e..2bc5e771794 100644 --- a/.gitlab-ci/container/build-rust.sh +++ b/.gitlab-ci/container/build-rust.sh @@ -11,14 +11,21 @@ set -ex mkdir -p "$HOME"/.cargo ln -s /usr/local/bin "$HOME"/.cargo/bin +# Rusticl requires at least Rust 1.59.0 +# +# Also, oick a specific snapshot from rustup so the compiler doesn't drift on +# us. +RUST_VERSION=1.59.0-2022-02-24 + # For rust in Mesa, we use rustup to install. This lets us pick an arbitrary # version of the compiler, rather than whatever the container's Debian comes # with. -# -# Pick the rust compiler (1.48) available in Debian stable, and pick a specific -# snapshot from rustup so the compiler doesn't drift on us. -wget https://sh.rustup.rs -O - | \ - sh -s -- -y --default-toolchain 1.49.0-2020-12-31 +wget https://sh.rustup.rs -O - | sh -s -- \ + --default-toolchain $RUST_VERSION \ + --profile minimal \ + -y + +rustup component add rustfmt # Set up a config script for cross compiling -- cargo needs your system cc for # linking in cross builds, but doesn't know what you want to use for system cc. diff --git a/.gitlab-ci/container/debian/x86_build-base.sh b/.gitlab-ci/container/debian/x86_build-base.sh index a3459d1b7cc..1d02aba16ef 100644 --- a/.gitlab-ci/container/debian/x86_build-base.sh +++ b/.gitlab-ci/container/debian/x86_build-base.sh @@ -28,6 +28,7 @@ apt-get install -y --no-remove \ bison \ ccache \ dpkg-cross \ + findutils \ flex \ g++ \ cmake \ @@ -78,6 +79,11 @@ apt-get install -y --no-remove \ # Needed for ci-fairy, this revision is able to upload files to MinIO pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@34f4ade99434043f88e164933f570301fd18b125 +# We need at least 0.61.4 for proper Rust +pip3 install meson==0.61.5 + +. .gitlab-ci/container/build-rust.sh + . .gitlab-ci/container/debian/x86_build-base-wine.sh ############### Uninstall ephemeral packages diff --git a/.gitlab-ci/container/debian/x86_build.sh b/.gitlab-ci/container/debian/x86_build.sh index c03e82abb1e..466991ed42f 100644 --- a/.gitlab-ci/container/debian/x86_build.sh +++ b/.gitlab-ci/container/debian/x86_build.sh @@ -90,6 +90,12 @@ rm -rf DirectX-Headers pip3 install git+https://git.lavasoftware.org/lava/lavacli@3db3ddc45e5358908bc6a17448059ea2340492b7 +# install bindgen +RUSTFLAGS='-L native=/usr/local/lib' cargo install \ + bindgen --version 0.59.2 \ + -j ${FDO_CI_CONCURRENT:-4} \ + --root /usr/local + ############### Uninstall the build software apt-get purge -y \ diff --git a/.gitlab-ci/image-tags.yml b/.gitlab-ci/image-tags.yml index 8526d23cc0b..f516d859fc5 100644 --- a/.gitlab-ci/image-tags.yml +++ b/.gitlab-ci/image-tags.yml @@ -1,9 +1,9 @@ variables: DEBIAN_X86_BUILD_BASE_IMAGE: "debian/x86_build-base" - DEBIAN_BASE_TAG: "2022-09-07-ci-templates" + DEBIAN_BASE_TAG: "2022-09-11-rusticl" DEBIAN_X86_BUILD_IMAGE_PATH: "debian/x86_build" - DEBIAN_BUILD_TAG: "2022-09-07-ci-templates" + DEBIAN_BUILD_TAG: "2022-09-11-rusticl" DEBIAN_X86_BUILD_MINGW_IMAGE_PATH: "debian/x86_build-mingw" DEBIAN_BUILD_MINGW_TAG: "2022-08-25-shellcheck" @@ -11,8 +11,8 @@ variables: DEBIAN_X86_TEST_BASE_IMAGE: "debian/x86_test-base" DEBIAN_X86_TEST_IMAGE_PATH: "debian/x86_test-gl" - DEBIAN_X86_TEST_GL_TAG: "2022-09-07-ci-templates" - DEBIAN_X86_TEST_VK_TAG: "2022-09-07-ci-templates" + DEBIAN_X86_TEST_GL_TAG: "2022-09-11-rusticl" + DEBIAN_X86_TEST_VK_TAG: "2022-09-11-rusticl" FEDORA_X86_BUILD_TAG: "2022-08-25-shellcheck" KERNEL_ROOTFS_TAG: "2022-09-08-nouveau" diff --git a/.gitlab-ci/test-source-dep.yml b/.gitlab-ci/test-source-dep.yml index dfb629b1d1a..caf119879d2 100644 --- a/.gitlab-ci/test-source-dep.yml +++ b/.gitlab-ci/test-source-dep.yml @@ -114,7 +114,7 @@ stage: software-renderer rules: - !reference [.no_scheduled_pipelines-rules, rules] - - changes: + - changes: &llvmpipe_cl_files - .gitlab-ci.yml - .gitlab-ci/**/* - meson.build @@ -130,10 +130,21 @@ - changes: *llvmpipe_file_list when: on_success - - changes: &clover_file_list + +.llvmpipe-clover-rules: + rules: + - !reference [.llvmpipe-cl-rules, rules] + - changes: - src/gallium/frontends/clover/**/* when: on_success +.llvmpipe-rusticl-rules: + rules: + - !reference [.llvmpipe-cl-rules, rules] + - changes: + - src/gallium/frontends/rusticl/**/* + when: on_success + .collabora-farm-rules: rules: - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/' @@ -627,3 +638,12 @@ - changes: *lavapipe_file_list when: on_success + +# Rules for linters +.lint-rustfmt-rules: + rules: + - !reference [.no_scheduled_pipelines-rules, rules] + - !reference [.core-rules, rules] + - changes: + - src/**/*.rs + when: on_success diff --git a/.gitlab-ci/test/gitlab-ci.yml b/.gitlab-ci/test/gitlab-ci.yml index dfd2f4bd6d9..3ae963d2d6b 100644 --- a/.gitlab-ci/test/gitlab-ci.yml +++ b/.gitlab-ci/test/gitlab-ci.yml @@ -17,6 +17,18 @@ paths: - results/ +rustfmt: + # Cancel job if a newer commit is pushed to the same branch + interruptible: true + stage: lint + extends: + - .use-debian/x86_build + - .lint-rustfmt-rules + variables: + GIT_STRATEGY: fetch + script: + - git ls-files */{lib,app}.rs | xargs rustfmt --check + .test-gl: extends: - .test @@ -39,7 +51,6 @@ - .use-debian/x86_test-gl needs: - debian/x86_test-gl - - debian-clover-testing .vkd3d-proton-test: artifacts: diff --git a/src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml b/src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml index 586a63ce5cf..2dd16d18aa6 100644 --- a/src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml +++ b/src/gallium/drivers/llvmpipe/ci/gitlab-ci.yml @@ -7,22 +7,40 @@ FLAKES_CHANNEL: "#mesa-swrast-ci" GPU_VERSION: llvmpipe -llvmpipe-piglit-cl: +.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_TESTS: > -x bswap -x phatk -x clz-optimizations script: - install/piglit/run_cl.sh +llvmpipe-piglit-clover: + extends: + - .llvmpipe-piglit-cl + - .llvmpipe-clover-rules + needs: + - debian-clover-testing + - debian/x86_test-gl + variables: + PIGLIT_RESULTS: "llvmpipe-clover" + +llvmpipe-piglit-rusticl: + extends: + - .llvmpipe-piglit-cl + - .llvmpipe-rusticl-rules + needs: + - debian-rusticl-testing + - debian/x86_test-gl + variables: + PIGLIT_RESULTS: "llvmpipe-rusticl" + llvmpipe-traces: extends: - .test-gl diff --git a/src/gallium/drivers/llvmpipe/ci/llvmpipe-cl.txt b/src/gallium/drivers/llvmpipe/ci/llvmpipe-clover.txt similarity index 100% rename from src/gallium/drivers/llvmpipe/ci/llvmpipe-cl.txt rename to src/gallium/drivers/llvmpipe/ci/llvmpipe-clover.txt diff --git a/src/gallium/drivers/llvmpipe/ci/llvmpipe-rusticl.txt b/src/gallium/drivers/llvmpipe/ci/llvmpipe-rusticl.txt new file mode 100644 index 00000000000..4829d24696f --- /dev/null +++ b/src/gallium/drivers/llvmpipe/ci/llvmpipe-rusticl.txt @@ -0,0 +1,103 @@ +api/clbuildprogram: fail +api/clcompileprogram: fail +api/clcreateprogramwithbinary: fail +api/clenqueuefillimage: crash +api/clenqueuemigratememobjects: fail +api/clgetcommandqueueinfo: fail +api/clgetdeviceinfo: fail +api/clgetextensionfunctionaddressforplatform: fail +api/clgetkernelarginfo: fail +api/cllinkprogram: fail +interop/egl_khr_cl_event2: skip +program/build/fail/invalid-version-declaration: fail +program/build/include-directories: fail +program/execute/amdgcn-callee-saved-registers: skip +program/execute/amdgcn-f16-inline-immediates: skip +program/execute/amdgcn-f32-inline-immediates/add integer 64: fail +program/execute/amdgcn-f64-inline-immediates: skip +program/execute/amdgcn-i16-inline-immediates: skip +program/execute/atomic_int64_add-global: skip +program/execute/atomic_int64_add-global-return: skip +program/execute/atomic_int64_add-local: skip +program/execute/atomic_int64_and-global: skip +program/execute/atomic_int64_and-global-return: skip +program/execute/atomic_int64_and-local: skip +program/execute/atomic_int64_cmpxchg-global: skip +program/execute/atomic_int64_cmpxchg-global-return: skip +program/execute/atomic_int64_cmpxchg-local: skip +program/execute/atomic_int64_dec-global: skip +program/execute/atomic_int64_dec-global-return: skip +program/execute/atomic_int64_dec-local: skip +program/execute/atomic_int64_inc-global: skip +program/execute/atomic_int64_inc-global-return: skip +program/execute/atomic_int64_inc-local: skip +program/execute/atomic_int64_max-global: skip +program/execute/atomic_int64_max-global-return: skip +program/execute/atomic_int64_max-local: skip +program/execute/atomic_int64_min-global: skip +program/execute/atomic_int64_min-global-return: skip +program/execute/atomic_int64_min-local: skip +program/execute/atomic_int64_or-global: skip +program/execute/atomic_int64_or-global-return: skip +program/execute/atomic_int64_or-local: skip +program/execute/atomic_int64_sub-global: skip +program/execute/atomic_int64_sub-global-return: skip +program/execute/atomic_int64_sub-local: skip +program/execute/atomic_int64_xchg-global: skip +program/execute/atomic_int64_xchg-global-return: skip +program/execute/atomic_int64_xchg-local: skip +program/execute/atomic_int64_xor-global: skip +program/execute/atomic_int64_xor-global-return: skip +program/execute/atomic_int64_xor-local: skip +program/execute/builtin/builtin-float-nextafter-1.0.generated/nextafter float1: fail +program/execute/builtin/builtin-float-nextafter-1.0.generated/nextafter float16: fail +program/execute/builtin/builtin-float-nextafter-1.0.generated/nextafter float2: fail +program/execute/builtin/builtin-float-nextafter-1.0.generated/nextafter float4: fail +program/execute/builtin/builtin-float-nextafter-1.0.generated/nextafter float8: fail +program/execute/builtin/builtin-float-sincos-1.0.generated: timeout +program/execute/builtin/builtin-shuffle-double-ulong: skip +program/execute/builtin/builtin-shuffle-half-ushort: skip +program/execute/builtin/builtin-shuffle2-double-ulong: skip +program/execute/builtin/builtin-shuffle2-half-ushort: skip +program/execute/call-clobbers-amdgcn: skip +program/execute/calls-large-struct/byval struct: fail +program/execute/calls-struct/regs struct: fail +program/execute/calls-struct/small struct in regs: fail +program/execute/fdiv-modifiers-f64: skip +program/execute/global-offset/3d, input dependent: fail +program/execute/load-hi16-generic: skip +program/execute/load-lo16-generic: skip +program/execute/mad-mix: skip +program/execute/program-tester-check-local-size-test-should-skip/this test should skip: skip +program/execute/scalar-arithmetic-double: skip +program/execute/store-hi16-generic: skip +program/execute/store/store-double-global: skip +program/execute/store/store-double-local: skip +program/execute/store/store-double16-global: skip +program/execute/store/store-double16-local: skip +program/execute/store/store-double2-global: skip +program/execute/store/store-double2-local: skip +program/execute/store/store-double4-global: skip +program/execute/store/store-double4-local: skip +program/execute/store/store-double8-global: skip +program/execute/store/store-double8-local: skip +program/execute/vload/vload-double-constant: skip +program/execute/vload/vload-double-global: skip +program/execute/vload/vload-double-local: skip +program/execute/vload/vload-double-private: skip +program/execute/vload/vload-half-constant: skip +program/execute/vload/vload-half-global: skip +program/execute/vload/vload-half-local: skip +program/execute/vload/vload-half-private: skip +program/execute/vstore/vstore-double-global: skip +program/execute/vstore/vstore-double-local: skip +program/execute/vstore/vstore-double-private: skip +program/execute/vstore/vstore-half-global: skip +program/execute/vstore/vstore-half-local: skip +program/execute/vstore/vstore-half-private: skip +program/execute/vstore/vstore_half-double-global: skip +program/execute/vstore/vstore_half-double-local: skip +program/execute/vstore/vstore_half-double-private: skip +program/execute/vstore/vstorea_half-double-global: skip +program/execute/vstore/vstorea_half-double-local: skip +program/execute/vstore/vstorea_half-double-private: skip