The Mesa version in Debian bookworm (22.3.6) we use for testing is now a bit outdated. While it's valuable to test on older drivers because they might be more representative of what users are running, it's also useful to test on recent drivers, which gives a less noisy signal to developers.
For the moment we enable it only for llvmpipe, because RADV is already passing all the tests anyway. And we don't bother with 32 bit here.
On llvmpipe using Mesa 24 fixes three shader runner tests.
-- v3: ci: Make llvmpipe from Mesa 24.0.3 available in the CI image. ci: Run tests on llvmpipe from Mesa 24.0.3.
From: Giovanni Mascellani gmascellani@codeweavers.com
--- gitlab/build-linux | 2 +- gitlab/build.yml | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/gitlab/build-linux b/gitlab/build-linux index 532a462a1..b149132c4 100755 --- a/gitlab/build-linux +++ b/gitlab/build-linux @@ -11,7 +11,7 @@ set -Eeuxo pipefail rm -fr build mkdir build cd build -export LD_LIBRARY_PATH=/usr/local/lib +export LD_LIBRARY_PATH="/usr/local/lib:${LD_LIBRARY_PATH-}" if ../configure --enable-demos --with-spirv-tools DXCOMPILER_LIBS="-L/usr/local/lib" CFLAGS="-g -O2 -Werror" CPPFLAGS="-DVKD3D_SHADER_UNSUPPORTED_DXIL -DVKD3D_SHADER_UNSUPPORTED_GLSL" && \ make -j$(nproc) ; then make -j$(nproc) AM_COLOR_TESTS=always check || \ diff --git a/gitlab/build.yml b/gitlab/build.yml index af68e9ef4..fb8a68792 100644 --- a/gitlab/build.yml +++ b/gitlab/build.yml @@ -61,6 +61,17 @@ build-llvmpipe-32: CC: 'i686-linux-gnu-gcc' VKD3D_SHADER_CONFIG: 'force_validation'
+build-llvmpipe-64-mesa24: + extends: .build-linux + allow_failure: + exit_codes: + - 2 + variables: + VK_DRIVER_FILES: '/opt/mesa24/share/vulkan/icd.d/lvp_icd.x86_64.json' + LD_LIBRARY_PATH: '/opt/mesa24/lib/x86_64-linux-gnu' + __EGL_VENDOR_LIBRARY_FILENAMES: '/opt/mesa24/share/glvnd/egl_vendor.d/50_mesa.json' + VKD3D_SHADER_CONFIG: 'force_validation' + build-crosstest: stage: build rules:
From: Giovanni Mascellani gmascellani@codeweavers.com
--- gitlab/README | 17 ++++++++++++++++- gitlab/image.docker | 15 +++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/gitlab/README b/gitlab/README index 3b5203233..94cbde4ed 100644 --- a/gitlab/README +++ b/gitlab/README @@ -8,7 +8,22 @@ the vkd3d tests on each merge request. The CI target image-linux, in the file image.yml, builds a Docker image based on Debian bookworm with all the packages required for testing, and uploads it to the GitLab container registry. The Docker -script is in the file image.docker. +script is in the file image.docker. Most of the dependencies are +installed directly from the Debian repositories, with a few +exceptions: + + * widl is compiled from Wine sources, because installing it from the + Debian repositories would carry all the rest of Wine and make the + Docker image quite larger; + + * SPIRV-Tools are recompiled from sources, because the packages in + Debian do not ship shared objects and are not multiarch-compatible; + in order to make the packages multiarch-compatible, the utilities + are dropped (they're not used by the CI anyway); + + * llvmpipe from Mesa 24.0.1 is compiled (in addition to version + 22.3.6 available in Debian bookworm), because some Vulkan features + required by vkd3d are not available in Mesa 22.3.6.
The file build.yml contains the actual testing targets. Currently vkd3d is tested on Linux, on x86-64 and i386, each architecture with diff --git a/gitlab/image.docker b/gitlab/image.docker index 270c509ba..fb3ed6260 100644 --- a/gitlab/image.docker +++ b/gitlab/image.docker @@ -23,6 +23,8 @@ RUN export DEBIAN_FRONTEND=noninteractive; \ apt-get install -y build-essential pkg-config gcc-mingw-w64 crossbuild-essential-i386 \ autoconf automake libtool flex bison curl \ git ca-certificates rsync \ + llvm-15-dev meson ninja-build python3-mako \ + zlib1g-dev libexpat-dev libdrm-dev libglvnd-dev \ doxygen doxygen-latex graphviz \ mesa-vulkan-drivers mesa-vulkan-drivers:i386 \ vulkan-tools spirv-headers \ @@ -36,6 +38,7 @@ RUN export DEBIAN_FRONTEND=noninteractive; \ libxcb-keysyms1-dev libxcb-keysyms1-dev:i386 && \ apt-get build-dep -y spirv-tools && \ apt-get build-dep -y -ai386 spirv-tools && \ + git clone --depth 1 --branch wine-3.21 https://gitlab.winehq.org/wine/wine.git && \ cd wine && \ mkdir build && \ @@ -45,6 +48,7 @@ RUN export DEBIAN_FRONTEND=noninteractive; \ cp tools/widl/widl /usr/local/bin && \ cd ../.. && \ rm -rf wine && \ + apt-get source spirv-tools && \ cd spirv-tools-* && \ sed -i -e 's|-DBUILD_SHARED_LIBS=OFF|-DBUILD_SHARED_LIBS=ON|g' debian/rules && \ @@ -55,6 +59,7 @@ RUN export DEBIAN_FRONTEND=noninteractive; \ rm -f spirv-tools-dbgsym_*.deb && \ dpkg -i spirv-tools_*.deb && \ rm -fr * && \ + apt-get source spirv-tools && \ cd spirv-tools-* && \ sed -i -e 's|-DBUILD_SHARED_LIBS=OFF|-DBUILD_SHARED_LIBS=ON|g' debian/rules && \ @@ -65,6 +70,16 @@ RUN export DEBIAN_FRONTEND=noninteractive; \ rm -f spirv-tools-dbgsym_*.deb && \ dpkg -i spirv-tools_*.deb && \ rm -fr * && \ + + git clone --depth 1 --branch mesa-24.0.3 https://gitlab.freedesktop.org/mesa/mesa.git && \ + cd mesa && \ + mkdir build && \ + cd build && \ + meson setup -Dprefix=/opt/mesa24 -Dplatforms= -Dvideo-codecs= -Dvulkan-drivers=swrast -Dgallium-drivers=swrast -Dopengl=true -Degl=enabled -Dglvnd=true -Dshared-glapi=enabled -Dglx=disabled -Dgles1=disabled -Dgles2=disabled .. && \ + meson install && \ + cd ../.. && \ + rm -fr mesa && \ + apt-get clean && \ curl -L -s https://github.com/microsoft/DirectXShaderCompiler/releases/download/v1.7.23... | tar zx -C /usr/local ./lib/libdxcompiler.so ./lib/libdxil.so && \ groupadd host-render -g 800 && \
On Wed Apr 3 14:35:59 2024 +0000, Henri Verbeet wrote:
Seems helpful. I notice we run the Vulkan and d3d12 tests with 24.0.3, but not the shader runner GL runs though.
The latest revision should do the trick, see [a test run](https://gitlab.winehq.org/giomasce/vkd3d/-/jobs/66766).