Module: vkd3d
Branch: master
Commit: b3ce73984d8a16de6d38ee8b05400aab4d0c4367
URL: https://gitlab.winehq.org/wine/vkd3d/-/commit/b3ce73984d8a16de6d38ee8b05400…
Author: Giovanni Mascellani <gmascellani(a)codeweavers.com>
Date: Thu Mar 28 13:52:59 2024 +0100
ci: Make llvmpipe from Mesa 24.0.3 available in the CI image.
---
gitlab/README | 17 ++++++++++++++++-
gitlab/image.docker | 15 +++++++++++++++
2 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/gitlab/README b/gitlab/README
index 3b520323..94cbde4e 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 270c509b..fb3ed626 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.2… | tar zx -C /usr/local ./lib/libdxcompiler.so ./lib/libdxil.so && \
groupadd host-render -g 800 && \