Files
MobileGL/MobileGL/MG_IntegrationTest/run_integration_test.sh
T

48 lines
1.9 KiB
Bash

#!/bin/bash
# Run the headless MobileGL integration scenarios on one backend:
# ./run_integration_test.sh espryt [gtest args...] -> DirectGLES
# ./run_integration_test.sh magma [gtest args...] -> DirectVulkan
#
# The backend is latched at initialization from MOBILEGL_BACKEND_TYPE, so one
# process is one backend; this script is the dev-box equivalent of the two ctest
# registrations in CMakeLists.txt.
#
# Pin the vendor libraries explicitly, for the same reason
# MG_Benchmark/Driver/run_driver_bench.sh does: a bare libEGL on a glvnd system
# resolves to whatever vendor comes first, which is usually llvmpipe - a
# software rasteriser silently replacing the GPU under a GPU test. Override
# MGL_EGL_VENDOR / MGL_VK_ICD to test another driver.
#
# Set MOBILEGL_ITEST_REQUIRE_GPU=1 to turn "the harness is unusable" from a clean
# skip into a failure. Do that anywhere the machine is supposed to have a GPU: a
# run that skipped everything and a run that passed everything are otherwise the
# same green, so without it a broken driver pinning is invisible.
set -eu
HERE=$(cd "$(dirname "$0")" && pwd)
BIN=${MOBILEGL_ITEST_BIN:-$HERE/MobileGLIntegrationTest}
EGL_VENDOR=${MGL_EGL_VENDOR:-/usr/share/glvnd/egl_vendor.d/10_nvidia.json}
VK_ICD=${MGL_VK_ICD:-/usr/share/vulkan/icd.d/nvidia_icd.x86_64.json}
MODE=$1; shift
if [ ! -x "$BIN" ]; then
echo "MobileGLIntegrationTest not found at $BIN"
echo "configure with -DMOBILEGL_BUILD_INTEGRATION_TEST=ON and set MOBILEGL_ITEST_BIN"
exit 1
fi
[ -r "$EGL_VENDOR" ] && export __EGL_VENDOR_LIBRARY_FILENAMES=$EGL_VENDOR
export EGL_PLATFORM=${EGL_PLATFORM:-x11}
case "$MODE" in
espryt|DirectGLES)
export MOBILEGL_BACKEND_TYPE=DirectGLES
;;
magma|DirectVulkan)
export MOBILEGL_BACKEND_TYPE=DirectVulkan
[ -r "$VK_ICD" ] && export VK_ICD_FILENAMES=$VK_ICD
;;
*) echo "unknown mode: $MODE (espryt|magma)"; exit 1 ;;
esac
export MOBILEGL_ITEST_REQUIRE_GPU=${MOBILEGL_ITEST_REQUIRE_GPU:-}
exec "$BIN" "$@"