diff --git a/tests/manual/gl.pl b/tests/manual/gl.pl index 6c1e338132f602e2d2dfacd52552ef9049fcb1df..635ee1aa4b34be8869cba438ae102162a01c9ead 100755 --- a/tests/manual/gl.pl +++ b/tests/manual/gl.pl @@ -713,7 +713,7 @@ my $flatpak_app; my $flatpak_runtime; my @multiarch_tuples = qw(x86_64-linux-gnu); my $app; -my $gl_stack; +my $gl_stack = 'greedy'; my $arch = 'x86_64'; my $libc_provider_tree = 'auto'; my $libcapsule_tree = 'container'; @@ -749,11 +749,16 @@ Options: [….Games.Platform/$arch/stretch] --gl-provider=USR|SYSROOT Get libGL etc. from USR or SYSROOT [/] - --gl-stack=none|STACK Get libGL etc. from STACK/lib/MULTIARCH + --gl-stack=greedy|mesa|nvidia|STACK If STACK is specified, get libGL + etc. from STACK/lib/MULTIARCH instead of --gl-provider, but still use --gl-provider libc, libX11, - libcapsule if appropriate - [none] + libcapsule if appropriate. + Otherwise get appropriate libraries + for Mesa, NVIDIA, or everything + we might possibly need from + --gl-provider + [greedy] --x11-provider=auto|container|gl-provider|USR|SYSROOT Use libX11 etc. from here [auto] @@ -886,6 +891,7 @@ my (undef, undef, $container_libc_version) = File::Spec->splitpath($container_libc_so); my $updates_tree = "$tmpdir/updates"; +make_path("$tmpdir/updates", verbose => 1); if ($libc_provider_tree eq 'auto') { if (versioncmp($container_libc_version, $gl_provider_libc_version) <= 0) { @@ -926,7 +932,7 @@ else { my @dri_path; -if (defined $gl_stack && $gl_stack ne 'none') { +if (defined $gl_stack && $gl_stack !~ m/^(?:greedy|mesa|nvidia)$/) { diag "Using standalone GL stack $gl_stack"; push @bwrap, '--ro-bind', $gl_stack, '/gl'; @@ -938,26 +944,37 @@ if (defined $gl_stack && $gl_stack ne 'none') { else { my $gl_provider_gl = "$tmpdir/gl"; + my @libs = ( + qw(EGL GL GLESv1_CM GLESv2 GLX GLdispatch glx), + qr{lib(EGL|GLESv1_CM|GLESv2|GLX|drm|vdpau)_.*\.so\.[0-9]+}, + ); + + push @libs, qw( + Xau Xdamage Xdmcp Xext Xfixes Xxf86vm + drm gbm glapi wayland-client wayland-server + xcb-dri2 xcb-dri3 xcb-present xcb-sync xcb-xfixes xshmfence + ) if $gl_stack =~ m/^(?:greedy|mesa)$/; + + push @libs, ( + qw(cuda nvcuvid vdpau), + # We allow any extension for these, not just a single integer + qr{libnvidia-.*\.so\..*}, + ) if $gl_stack =~ m/^(?:greedy|nvidia)$/; + diag "Using GL stack from $gl_provider_tree"; capture_libs_if_newer($gl_provider_tree, undef, - \@multiarch_tuples, $gl_provider_gl, [ - qw(EGL GL GLESv1_CM GLESv2 GLX GLdispatch - Xau Xdamage Xdmcp Xext Xfixes Xxf86vm - cuda drm gbm glapi glx nvcuvid vdpau - wayland-client wayland-server - xcb-dri2 xcb-dri3 xcb-present xcb-sync xcb-xfixes xshmfence), - qr{lib(EGL|GLESv1_CM|GLESv2|GLX|drm|vdpau)_.*\.so\.[0-9]+}, - # We allow any extension for these, not just a single integer - qr{libnvidia-.*\.so\..*}, - ], '/gl-provider', $ansi_green); - - diag "Updating libraries from $gl_provider_tree if necessary"; - capture_libs_if_newer($gl_provider_tree, $container_tree, - \@multiarch_tuples, $gl_provider_gl, [ - qw(bsd edit elf expat ffi gcc_s - ncurses pciaccess sensors stdc++ tinfo z), - qr{libLLVM-.*\.so\.[0-9]+}, - ], '/gl-provider', $ansi_green); + \@multiarch_tuples, $gl_provider_gl, \@libs, + '/gl-provider', $ansi_green); + + if ($gl_stack =~ m/^(?:greedy|mesa)$/) { + diag "Updating libraries from $gl_provider_tree if necessary"; + capture_libs_if_newer($gl_provider_tree, $container_tree, + \@multiarch_tuples, $gl_provider_gl, [ + qw(bsd edit elf expat ffi gcc_s + ncurses pciaccess sensors stdc++ tinfo z), + qr{libLLVM-.*\.so\.[0-9]+}, + ], '/gl-provider', $ansi_green); + } foreach my $tuple (@multiarch_tuples) { my $ldso = multiarch_tuple_to_ldso($tuple);