ci: Bump kernel and Mesa version

1. Bump the kernel version to the drm-misc-next-2025-09-04 tag, fixing
   various issues required for vkms testing.

2. Use /sys/bus/faux/devices/vkms/drm/ instead of /sys/devices/platform/vkms/drm/
   for the card basename.

3. Bump Mesa to the commit needed for vkms+lavapipe. This also needs another
   leak workaround, so the code got a small cleanup.

Signed-off-by: Robert Mader <robert.mader@collabora.com>
This commit is contained in:
Robert Mader 2025-06-24 15:30:43 +02:00
parent e187420e38
commit 5e7835bf2b
4 changed files with 24 additions and 17 deletions

View file

@ -43,7 +43,7 @@
variables:
FDO_UPSTREAM_REPO: wayland/weston
FDO_REPO_SUFFIX: "$BUILD_OS-$FDO_DISTRIBUTION_VERSION/$BUILD_ARCH"
FDO_DISTRIBUTION_TAG: '2025-09-04-mesa-25.2.2'
FDO_DISTRIBUTION_TAG: '2025-09-24-linux-drm-misc-next-2025-09-04-and-mesa-25.3-kms-dri-sw-vulkan-vkms'
include:

View file

@ -59,7 +59,7 @@ fdo_log_section_end install_meson
# just a regular container.
fdo_log_section_start_collapsed install_kernel "install_kernel"
if [[ -n "$KERNEL_DEFCONFIG" ]]; then
git clone --depth=1 --branch=v6.14 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux
git clone --depth=1 --branch=drm-misc-next-2025-09-04 https://gitlab.freedesktop.org/drm/misc/kernel.git linux
cd linux
if [[ "${BUILD_ARCH}" = "x86-64" ]]; then
@ -181,8 +181,11 @@ make install
cd ../..
rm -rf libx11
git clone --branch mesa-25.2.2 --depth=1 https://gitlab.freedesktop.org/mesa/mesa.git
git clone --single-branch --branch main https://gitlab.freedesktop.org/mesa/mesa.git
cd mesa
# Last commit needed to make the Vulkan backend work with vkms+lavapipe, will be
# released in 25.3.
git checkout -b snapshot 45dc8b4d979aa2275f20db399a4430f0224799f5
meson setup build --wrap-mode=nofallback -Dauto_features=disabled \
-Dgallium-drivers=llvmpipe -Dvulkan-drivers=swrast -Dvideo-codecs= \
-Degl=enabled -Dgbm=enabled -Dgles2=enabled -Dllvm=enabled \

View file

@ -12,7 +12,7 @@ export LIBSEAT_BACKEND=seatd
# devices are loaded is not predictable, so the DRM node that VKMS takes can
# change across each boot. That's why we have this one-liner shell script to get
# the appropriate node for VKMS.
export WESTON_TEST_SUITE_DRM_DEVICE=$(basename /sys/devices/platform/vkms/drm/card*)
export WESTON_TEST_SUITE_DRM_DEVICE=$(basename /sys/bus/faux/devices/vkms/drm/card*)
# ninja test depends on meson, and meson itself looks for its modules on folder
# $HOME/.local/lib/pythonX.Y/site-packages (the Python version may differ).
@ -27,8 +27,9 @@ export SEATD_LOGLEVEL=debug
# Terrible hack, per comment in weston-test-runner.c's main(): find Mesa's
# llvmpipe/lavapipe driver module location
export WESTON_CI_LEAK_DL_HANDLE=$(find /usr/local -name swrast_dri.so -print 2>/dev/null || true)
export WESTON_CI_LEAK_DL_HANDLE_LVP=$(find /usr/local -name libvulkan_lvp.so -print 2>/dev/null || true)
export WESTON_CI_LEAK_DL_HANDLES=$(find /usr/local -name swrast_dri.so -print 2>/dev/null || true):
export WESTON_CI_LEAK_DL_HANDLES=$WESTON_CI_LEAK_DL_HANDLES:$(find /usr/local -name libvulkan_lvp.so -print 2>/dev/null || true)
export WESTON_CI_LEAK_DL_HANDLES=$WESTON_CI_LEAK_DL_HANDLES:$(find /usr/local -name libgallium\*.so -print 2>/dev/null || true)
# run the tests and save the exit status
# we give ourselves a very generous timeout multiplier due to ASan overhead

View file

@ -669,8 +669,7 @@ main(int argc, char *argv[])
enum test_result_code ret;
enum test_result_code result = RESULT_OK;
const struct fixture_setup_array *fsa;
const char *leak_dl_handle;
const char *leak_dl_handle_lvp;
char *leak_dl_handles;
int fi;
int fi_end;
@ -682,17 +681,21 @@ main(int argc, char *argv[])
* Turns out if llvmpipe is always live, then the pointers are always
* reachable, so LeakSanitizer just tells us about our own code rather
* than LLVM's, so ...
*
* This hack works so well that it also solved the obscure leak reports
* for lavapipe and libgallium!
*/
leak_dl_handle = getenv("WESTON_CI_LEAK_DL_HANDLE");
if (leak_dl_handle)
(void) dlopen(leak_dl_handle, RTLD_LAZY | RTLD_GLOBAL | RTLD_NODELETE);
leak_dl_handles = getenv("WESTON_CI_LEAK_DL_HANDLES");
if (leak_dl_handles) {
char* token;
/* ... and this hack works so well that it also solved the obscure leak
* reports for lavapipe, so we copied it!
*/
leak_dl_handle_lvp = getenv("WESTON_CI_LEAK_DL_HANDLE_LVP");
if (leak_dl_handle_lvp)
(void) dlopen(leak_dl_handle_lvp, RTLD_LAZY | RTLD_GLOBAL | RTLD_NODELETE);
token = strtok(leak_dl_handles, ":");
while (token) {
if (strlen(token) > 0)
(void) dlopen(token, RTLD_LAZY | RTLD_GLOBAL | RTLD_NODELETE);
token = strtok(NULL, ":");
}
}
harness = weston_test_harness_create(argc, argv);