File: //snap/mesa-2404/current/bin/gpu-2404-provider-wrapper
#!/bin/bash
set -euo pipefail
# The second content element is mounted at "${content_target}-2"
COMPONENT_PATH="$( cd -- "$(dirname "$0")"/.. ; pwd -P )-2"
# Use the component mangler to bootstrap the environment
if [ -f ${COMPONENT_PATH}/kernel-gpu-2404-sentinel ]; then
. ${COMPONENT_PATH}/kernel-gpu-2404-provider-mangler
fi
SELF="$( cd -- "$(dirname "$0")/.." ; pwd -P )/usr"
ARCH_TRIPLETS=( x86_64-linux-gnu i386-linux-gnu )
# VDPAU_DRIVER_PATH only supports a single path, rely on LD_LIBRARY_PATH instead
for arch in ${ARCH_TRIPLETS[@]}; do
GBM_BACKENDS_PATH=${GBM_BACKENDS_PATH:+$GBM_BACKENDS_PATH:}${SELF}/lib/${arch}/gbm
LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}${SELF}/lib/${arch}:${SELF}/lib/${arch}/vdpau
LIBGL_DRIVERS_PATH=${LIBGL_DRIVERS_PATH:+$LIBGL_DRIVERS_PATH:}${SELF}/lib/${arch}/dri/
LIBVA_DRIVERS_PATH=${LIBVA_DRIVERS_PATH:+$LIBVA_DRIVERS_PATH:}${SELF}/lib/${arch}/dri/
done
__EGL_VENDOR_LIBRARY_DIRS=${__EGL_VENDOR_LIBRARY_DIRS:+$__EGL_VENDOR_LIBRARY_DIRS:}${SELF}/share/glvnd/egl_vendor.d
__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS=${__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:+$__EGL_EXTERNAL_PLATFORM_CONFIG_DIRS:}${SELF}/share/egl/egl_external_platform.d
DRIRC_CONFIGDIR=$( cd -- "$(dirname "$0")/../drirc.d" ; pwd -P )
VK_LAYER_PATH=${VK_LAYER_PATH:+$VK_LAYER_PATH:}${SELF}/share/vulkan/implicit_layer.d/:${SELF}/share/vulkan/explicit_layer.d/
XDG_DATA_DIRS=${XDG_DATA_DIRS:+$XDG_DATA_DIRS:}${SELF}/share
XLOCALEDIR=${SELF}/share/X11/locale
# These are in the default LD_LIBRARY_PATH, but in case the snap dropped it inadvertently
if [ -d "/var/lib/snapd/lib/gl" ] && [[ ! ${LD_LIBRARY_PATH} =~ (^|:)/var/lib/snapd/lib/gl(:|$) ]]; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/var/lib/snapd/lib/gl
fi
if [ -d "/var/lib/snapd/lib/gl32" ] && [[ ! ${LD_LIBRARY_PATH} =~ (^|:)/var/lib/snapd/lib/gl32(:|$) ]]; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/var/lib/snapd/lib/gl32
fi
if [ -d "/var/lib/snapd/lib/glvnd/egl_vendor.d" ]; then
# This needs to be prepended, as glvnd goes depth-first on these
# TODO maybe collect the JSONs into a separate location so their ordering matters,
# and not the dir order
__EGL_VENDOR_LIBRARY_DIRS=/var/lib/snapd/lib/glvnd/egl_vendor.d:${__EGL_VENDOR_LIBRARY_DIRS}
fi
if [ -d "/var/lib/snapd/lib/vulkan/icd.d" ]; then
XDG_DATA_DIRS=${XDG_DATA_DIRS}:/var/lib/snapd/lib
fi
if [ -d "/var/lib/snapd/lib/gl/vdpau" ]; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/var/lib/snapd/lib/gl/vdpau
fi
if [ -d "/var/lib/snapd/lib/gl32/vdpau" ]; then
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/var/lib/snapd/lib/gl32/vdpau
fi
if [ -d "/var/lib/snapd/lib/gl/gbm" ]; then
GBM_BACKENDS_PATH=${GBM_BACKENDS_PATH}:/var/lib/snapd/lib/gl/gbm
fi
if [ -d "/var/lib/snapd/lib/gl32/gbm" ]; then
GBM_BACKENDS_PATH=${GBM_BACKENDS_PATH}:/var/lib/snapd/lib/gl32/gbm
fi
export GBM_BACKENDS_PATH
export LD_LIBRARY_PATH
export LIBGL_DRIVERS_PATH
if [ "${__NV_PRIME_RENDER_OFFLOAD:-}" != 1 ]; then
# Prevent picking VA-API (Intel/AMD) over NVIDIA VDPAU
# https://download.nvidia.com/XFree86/Linux-x86_64/510.54/README/primerenderoffload.html#configureapplications
export LIBVA_DRIVERS_PATH
fi
export __EGL_VENDOR_LIBRARY_DIRS
export __EGL_EXTERNAL_PLATFORM_CONFIG_DIRS
export DRIRC_CONFIGDIR
export VK_LAYER_PATH
export XDG_DATA_DIRS
export XLOCALEDIR
exec "$@"