22.1.x regression for gtk4 memorytexture test-case on llvmpipe, bisected to 6bbbe15a
GTK 4's test suite (version 4.6.6, Debian package libgtk-4-1 version 4.6.6+ds-1) passes with Mesa 22.0.5 (Debian package 22.0.5-1), but fails with Mesa 22.1.3 (Debian package 22.1.3-1) or with 22.1.4 (local build), when run in a container/chroot environment using xvfb-run and llvmpipe.
In the failing test, GTK fills a small local memory buffer with a random colour, uploads it to a GL texture, downloads it using glReadPixels and compares each pixel with a matching in-memory texture. The good result is that the colour is the same random colour that it chose; the failing result observed is that the texture is transparent black, rgba(0,0,0,0).
The test executable has several variations of this test for different texture sizes, colour formats and code paths, which can be selected with the -p
option. The ones ending with /gl
are the ones that fail as I described, and /memorytexture/download_4x4/b8g8r8/gl
is the example I've been using for bisection.
Because Debian installs GTK 4's test suite for "as-installed" testing, it's possible to reproduce this without rebuilding GTK, which is quite convenient:
# apt install gtk-4-tests xvfb xauth dbus
# adduser --disabled-password user
# runuser -u user -- xvfb-run dbus-run-session -- \
/usr/libexec/installed-tests/gtk-4.0/gdk/memorytexture \
-p /memorytexture/download_4x4/b8g8r8/gl
Alternatively, the same test can be run from a GTK build tree.
In a debian:bullseye-slim
container, this passes; in a debian:sid-slim
container, or after starting from a debian:bullseye-slim
container and upgrading Mesa to 22.1.3-1 from unstable (sid), it fails.
Bisection indicates that 6bbbe15a "Reinstate: llvmpipe: allow vertex processing and fragment processing in parallel" was the first bad commit. If I start at 22.1.4 and revert that commit, the test succeeds.