1*bbecb9d1SAndroid Build Coastguard Worker#!/bin/bash 2*bbecb9d1SAndroid Build Coastguard Worker 3*bbecb9d1SAndroid Build Coastguard Workerrun_setup() 4*bbecb9d1SAndroid Build Coastguard Worker{ 5*bbecb9d1SAndroid Build Coastguard Worker set -x 6*bbecb9d1SAndroid Build Coastguard Worker 7*bbecb9d1SAndroid Build Coastguard Worker use_meson=$1 8*bbecb9d1SAndroid Build Coastguard Worker 9*bbecb9d1SAndroid Build Coastguard Worker if [ "x$2" = "xfuzzer" ]; then 10*bbecb9d1SAndroid Build Coastguard Worker use_clang_fuzzer=1 11*bbecb9d1SAndroid Build Coastguard Worker fi 12*bbecb9d1SAndroid Build Coastguard Worker 13*bbecb9d1SAndroid Build Coastguard Worker if [ "x$2" = "xtrace_stderr" ]; then 14*bbecb9d1SAndroid Build Coastguard Worker use_trace_stderr=1 15*bbecb9d1SAndroid Build Coastguard Worker fi 16*bbecb9d1SAndroid Build Coastguard Worker 17*bbecb9d1SAndroid Build Coastguard Worker if [ "x$2" = "xvenus" ]; then 18*bbecb9d1SAndroid Build Coastguard Worker use_venus=1 19*bbecb9d1SAndroid Build Coastguard Worker fi 20*bbecb9d1SAndroid Build Coastguard Worker 21*bbecb9d1SAndroid Build Coastguard Worker # Let .gitlab-ci or local ci runner set 22*bbecb9d1SAndroid Build Coastguard Worker # desired thread count 23*bbecb9d1SAndroid Build Coastguard Worker NUM_THREADS=${NUM_THREADS:-$(expr $(expr $(nproc) / 8) + 1)} 24*bbecb9d1SAndroid Build Coastguard Worker export NUM_THREADS 25*bbecb9d1SAndroid Build Coastguard Worker echo "Using $NUM_THREADS threads" 26*bbecb9d1SAndroid Build Coastguard Worker 27*bbecb9d1SAndroid Build Coastguard Worker export LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:/usr/local/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH 28*bbecb9d1SAndroid Build Coastguard Worker 29*bbecb9d1SAndroid Build Coastguard Worker export CCACHE_BASEDIR="$(pwd)" 30*bbecb9d1SAndroid Build Coastguard Worker export CCACHE_DIR="$(pwd)/ccache" 31*bbecb9d1SAndroid Build Coastguard Worker export PATH="/usr/lib/ccache:$PATH" 32*bbecb9d1SAndroid Build Coastguard Worker mkdir -p $CCACHE_DIR 33*bbecb9d1SAndroid Build Coastguard Worker ccache -s 34*bbecb9d1SAndroid Build Coastguard Worker 35*bbecb9d1SAndroid Build Coastguard Worker # To prevent hitting assertions such as the below: 36*bbecb9d1SAndroid Build Coastguard Worker # sb/sb_sched.cpp:1207:schedule_alu: Assertion '!"unscheduled pending instructions"' failed. 37*bbecb9d1SAndroid Build Coastguard Worker export R600_DEBUG=nosb 38*bbecb9d1SAndroid Build Coastguard Worker 39*bbecb9d1SAndroid Build Coastguard Worker # If render node, like /dev/dri/renderD128, has not been set 40*bbecb9d1SAndroid Build Coastguard Worker # or exists use llvmpipe instead of HW GPU. 41*bbecb9d1SAndroid Build Coastguard Worker if [[ ! -c $RENDER_DEVICE ]]; then 42*bbecb9d1SAndroid Build Coastguard Worker export SOFTWARE_ONLY=1 43*bbecb9d1SAndroid Build Coastguard Worker fi 44*bbecb9d1SAndroid Build Coastguard Worker 45*bbecb9d1SAndroid Build Coastguard Worker if [[ $LOCAL_MESA ]]; then 46*bbecb9d1SAndroid Build Coastguard Worker pushd $LOCAL_MESA 47*bbecb9d1SAndroid Build Coastguard Worker mkdir -p build && \ 48*bbecb9d1SAndroid Build Coastguard Worker meson build/ && \ 49*bbecb9d1SAndroid Build Coastguard Worker meson configure build/ -Dprefix=/usr/local -Dplatforms=x11,wayland -Ddri-drivers= -Dgallium-drivers=swrast,virgl,radeonsi,iris -Dbuildtype=debugoptimized -Dllvm=true -Dglx=dri -Dgallium-vdpau=false -Dgallium-va=false -Dvulkan-drivers=[] -Dlibdir=lib && \ 50*bbecb9d1SAndroid Build Coastguard Worker ninja -C build/ install -j $NUM_THREADS 51*bbecb9d1SAndroid Build Coastguard Worker if [ $? -ne 0 ]; then 52*bbecb9d1SAndroid Build Coastguard Worker meson setup --wipe build/ 53*bbecb9d1SAndroid Build Coastguard Worker ninja -C build/ install -j $NUM_THREADS || exit 1 54*bbecb9d1SAndroid Build Coastguard Worker fi 55*bbecb9d1SAndroid Build Coastguard Worker popd 56*bbecb9d1SAndroid Build Coastguard Worker fi 57*bbecb9d1SAndroid Build Coastguard Worker 58*bbecb9d1SAndroid Build Coastguard Worker rm -rf ./results/ 59*bbecb9d1SAndroid Build Coastguard Worker mkdir -p ./results/ 60*bbecb9d1SAndroid Build Coastguard Worker 61*bbecb9d1SAndroid Build Coastguard Worker mkdir -p build 62*bbecb9d1SAndroid Build Coastguard Worker if [ "x$use_clang_fuzzer" = "x1" ]; then 63*bbecb9d1SAndroid Build Coastguard Worker export CC=clang 64*bbecb9d1SAndroid Build Coastguard Worker export FUZZER=-Dfuzzer=true 65*bbecb9d1SAndroid Build Coastguard Worker fi 66*bbecb9d1SAndroid Build Coastguard Worker 67*bbecb9d1SAndroid Build Coastguard Worker if [ "x$use_trace_stderr" = "x1" ]; then 68*bbecb9d1SAndroid Build Coastguard Worker export TRACING=-Dtracing=stderr 69*bbecb9d1SAndroid Build Coastguard Worker fi 70*bbecb9d1SAndroid Build Coastguard Worker 71*bbecb9d1SAndroid Build Coastguard Worker if [ "x$use_venus" = "x1" ]; then 72*bbecb9d1SAndroid Build Coastguard Worker export VENUS=-Dvenus-experimental=true 73*bbecb9d1SAndroid Build Coastguard Worker fi 74*bbecb9d1SAndroid Build Coastguard Worker 75*bbecb9d1SAndroid Build Coastguard Worker pwd | grep virglrenderer >/dev/null || pushd /virglrenderer && pushd $(pwd) 76*bbecb9d1SAndroid Build Coastguard Worker meson build/ -Dprefix=/usr/local -Ddebug=true -Dtests=true --fatal-meson-warnings $FUZZER $TRACING $VENUS 77*bbecb9d1SAndroid Build Coastguard Worker ninja -C build -j$NUM_THREADS install 78*bbecb9d1SAndroid Build Coastguard Worker popd 79*bbecb9d1SAndroid Build Coastguard Worker} 80*bbecb9d1SAndroid Build Coastguard Worker 81*bbecb9d1SAndroid Build Coastguard Workerrun_make_check_meson() 82*bbecb9d1SAndroid Build Coastguard Worker{ 83*bbecb9d1SAndroid Build Coastguard Worker run_setup meson 84*bbecb9d1SAndroid Build Coastguard Worker ( 85*bbecb9d1SAndroid Build Coastguard Worker mkdir -p ./results/make_check_meson 86*bbecb9d1SAndroid Build Coastguard Worker VRENDTEST_USE_EGL_SURFACELESS=1 ninja -Cbuild -j$NUM_THREADS test 87*bbecb9d1SAndroid Build Coastguard Worker RET=$? 88*bbecb9d1SAndroid Build Coastguard Worker cp ./build/meson-logs/testlog.txt ./results/make_check_meson/ 89*bbecb9d1SAndroid Build Coastguard Worker return $RET 90*bbecb9d1SAndroid Build Coastguard Worker ) 91*bbecb9d1SAndroid Build Coastguard Worker} 92*bbecb9d1SAndroid Build Coastguard Worker 93*bbecb9d1SAndroid Build Coastguard Workerrun_make_check_clang_fuzzer() 94*bbecb9d1SAndroid Build Coastguard Worker{ 95*bbecb9d1SAndroid Build Coastguard Worker run_setup meson fuzzer 96*bbecb9d1SAndroid Build Coastguard Worker ( 97*bbecb9d1SAndroid Build Coastguard Worker mkdir -p ./results/make_check_clang_fuzzer 98*bbecb9d1SAndroid Build Coastguard Worker pushd ./build 99*bbecb9d1SAndroid Build Coastguard Worker VRENDTEST_USE_EGL_SURFACELESS=1 ninja -j$NUM_THREADS test 100*bbecb9d1SAndroid Build Coastguard Worker RET=$? 101*bbecb9d1SAndroid Build Coastguard Worker cp ./meson-logs/testlog.txt ../results/make_check_clang_fuzzer/ 102*bbecb9d1SAndroid Build Coastguard Worker popd 103*bbecb9d1SAndroid Build Coastguard Worker return $RET 104*bbecb9d1SAndroid Build Coastguard Worker ) 105*bbecb9d1SAndroid Build Coastguard Worker} 106*bbecb9d1SAndroid Build Coastguard Worker 107*bbecb9d1SAndroid Build Coastguard Workerrun_make_check_trace_stderr() 108*bbecb9d1SAndroid Build Coastguard Worker{ 109*bbecb9d1SAndroid Build Coastguard Worker run_setup meson trace_stderr 110*bbecb9d1SAndroid Build Coastguard Worker ( 111*bbecb9d1SAndroid Build Coastguard Worker mkdir -p ./results/make_check_trace_stderr 112*bbecb9d1SAndroid Build Coastguard Worker pushd ./build 113*bbecb9d1SAndroid Build Coastguard Worker VRENDTEST_USE_EGL_SURFACELESS=1 ninja -j$NUM_THREADS test 114*bbecb9d1SAndroid Build Coastguard Worker RET=$? 115*bbecb9d1SAndroid Build Coastguard Worker cp ./meson-logs/testlog.txt ../results/make_check_trace_stderr/ 116*bbecb9d1SAndroid Build Coastguard Worker popd 117*bbecb9d1SAndroid Build Coastguard Worker return $RET 118*bbecb9d1SAndroid Build Coastguard Worker ) 119*bbecb9d1SAndroid Build Coastguard Worker} 120*bbecb9d1SAndroid Build Coastguard Worker 121*bbecb9d1SAndroid Build Coastguard Workerrun_make_check_venus() 122*bbecb9d1SAndroid Build Coastguard Worker{ 123*bbecb9d1SAndroid Build Coastguard Worker run_setup meson venus 124*bbecb9d1SAndroid Build Coastguard Worker ( 125*bbecb9d1SAndroid Build Coastguard Worker mkdir -p ./results/make_check_venus 126*bbecb9d1SAndroid Build Coastguard Worker VRENDTEST_USE_EGL_SURFACELESS=1 ninja -Cbuild -j$NUM_THREADS test 127*bbecb9d1SAndroid Build Coastguard Worker RET=$? 128*bbecb9d1SAndroid Build Coastguard Worker cp ./build/meson-logs/testlog.txt ./results/make_check_venus/ 129*bbecb9d1SAndroid Build Coastguard Worker return $RET 130*bbecb9d1SAndroid Build Coastguard Worker ) 131*bbecb9d1SAndroid Build Coastguard Worker} 132*bbecb9d1SAndroid Build Coastguard Worker 133*bbecb9d1SAndroid Build Coastguard Workerrun_deqp() 134*bbecb9d1SAndroid Build Coastguard Worker{ 135*bbecb9d1SAndroid Build Coastguard Worker local retval=0 136*bbecb9d1SAndroid Build Coastguard Worker run_setup meson 137*bbecb9d1SAndroid Build Coastguard Worker OGL_BACKEND="$1" 138*bbecb9d1SAndroid Build Coastguard Worker SUITE="$2" 139*bbecb9d1SAndroid Build Coastguard Worker 140*bbecb9d1SAndroid Build Coastguard Worker if [ "$SUITE" = "gl" ]; then 141*bbecb9d1SAndroid Build Coastguard Worker TEST_SUITE="--gl30 --gl31 --gl32" 142*bbecb9d1SAndroid Build Coastguard Worker fi 143*bbecb9d1SAndroid Build Coastguard Worker 144*bbecb9d1SAndroid Build Coastguard Worker if [ "$SUITE" = "gles" ]; then 145*bbecb9d1SAndroid Build Coastguard Worker TEST_SUITE="--gles2 --gles3 --gles31" 146*bbecb9d1SAndroid Build Coastguard Worker fi 147*bbecb9d1SAndroid Build Coastguard Worker 148*bbecb9d1SAndroid Build Coastguard Worker if [ "$SUITE" = "gles2" ]; then 149*bbecb9d1SAndroid Build Coastguard Worker TEST_SUITE="--gles2" 150*bbecb9d1SAndroid Build Coastguard Worker fi 151*bbecb9d1SAndroid Build Coastguard Worker 152*bbecb9d1SAndroid Build Coastguard Worker if [ "$SUITE" = "gles3" ]; then 153*bbecb9d1SAndroid Build Coastguard Worker TEST_SUITE="--gles3" 154*bbecb9d1SAndroid Build Coastguard Worker fi 155*bbecb9d1SAndroid Build Coastguard Worker 156*bbecb9d1SAndroid Build Coastguard Worker if [ "$SUITE" = "gles31" ]; then 157*bbecb9d1SAndroid Build Coastguard Worker TEST_SUITE="--gles31" 158*bbecb9d1SAndroid Build Coastguard Worker fi 159*bbecb9d1SAndroid Build Coastguard Worker 160*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="" 161*bbecb9d1SAndroid Build Coastguard Worker if [[ -z "$HARDWARE_ONLY" ]]; then 162*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="${BACKENDS} --backend vtest-llvmpipe" 163*bbecb9d1SAndroid Build Coastguard Worker fi 164*bbecb9d1SAndroid Build Coastguard Worker 165*bbecb9d1SAndroid Build Coastguard Worker if [[ -z "$SOFTWARE_ONLY" ]]; then 166*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="${BACKENDS} --backend vtest-gpu" 167*bbecb9d1SAndroid Build Coastguard Worker fi 168*bbecb9d1SAndroid Build Coastguard Worker 169*bbecb9d1SAndroid Build Coastguard Worker pwd | grep virglrenderer >/dev/null || pushd /virglrenderer/ci && pushd ci 170*bbecb9d1SAndroid Build Coastguard Worker ./run_test_suite.sh --deqp ${TEST_SUITE} \ 171*bbecb9d1SAndroid Build Coastguard Worker --host-${OGL_BACKEND} \ 172*bbecb9d1SAndroid Build Coastguard Worker ${BACKENDS} 173*bbecb9d1SAndroid Build Coastguard Worker retval=$? 174*bbecb9d1SAndroid Build Coastguard Worker popd 175*bbecb9d1SAndroid Build Coastguard Worker 176*bbecb9d1SAndroid Build Coastguard Worker return $retval 177*bbecb9d1SAndroid Build Coastguard Worker} 178*bbecb9d1SAndroid Build Coastguard Worker 179*bbecb9d1SAndroid Build Coastguard Workerrun_piglit() 180*bbecb9d1SAndroid Build Coastguard Worker{ 181*bbecb9d1SAndroid Build Coastguard Worker local retval=0 182*bbecb9d1SAndroid Build Coastguard Worker run_setup meson 183*bbecb9d1SAndroid Build Coastguard Worker 184*bbecb9d1SAndroid Build Coastguard Worker OGL_BACKEND="$1" 185*bbecb9d1SAndroid Build Coastguard Worker 186*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="" 187*bbecb9d1SAndroid Build Coastguard Worker if [[ -z "$HARDWARE_ONLY" ]]; then 188*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="${BACKENDS} --backend vtest-llvmpipe" 189*bbecb9d1SAndroid Build Coastguard Worker fi 190*bbecb9d1SAndroid Build Coastguard Worker 191*bbecb9d1SAndroid Build Coastguard Worker if [[ -z "$SOFTWARE_ONLY" ]]; then 192*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="${BACKENDS} --backend vtest-gpu" 193*bbecb9d1SAndroid Build Coastguard Worker fi 194*bbecb9d1SAndroid Build Coastguard Worker 195*bbecb9d1SAndroid Build Coastguard Worker pwd | grep virglrenderer >/dev/null || pushd /virglrenderer/ci && pushd ci 196*bbecb9d1SAndroid Build Coastguard Worker ./run_test_suite.sh --piglit --gles2 --gles3 \ 197*bbecb9d1SAndroid Build Coastguard Worker --host-${OGL_BACKEND} \ 198*bbecb9d1SAndroid Build Coastguard Worker ${BACKENDS} 199*bbecb9d1SAndroid Build Coastguard Worker retval=$? 200*bbecb9d1SAndroid Build Coastguard Worker popd 201*bbecb9d1SAndroid Build Coastguard Worker 202*bbecb9d1SAndroid Build Coastguard Worker return $retval 203*bbecb9d1SAndroid Build Coastguard Worker} 204*bbecb9d1SAndroid Build Coastguard Worker 205*bbecb9d1SAndroid Build Coastguard Workerparse_input() 206*bbecb9d1SAndroid Build Coastguard Worker{ 207*bbecb9d1SAndroid Build Coastguard Worker RET=0 208*bbecb9d1SAndroid Build Coastguard Worker while [ -n "$1" ]; do 209*bbecb9d1SAndroid Build Coastguard Worker echo "" 210*bbecb9d1SAndroid Build Coastguard Worker 211*bbecb9d1SAndroid Build Coastguard Worker case $1 in 212*bbecb9d1SAndroid Build Coastguard Worker --make-check-meson) 213*bbecb9d1SAndroid Build Coastguard Worker run_make_check_meson 214*bbecb9d1SAndroid Build Coastguard Worker ;; 215*bbecb9d1SAndroid Build Coastguard Worker 216*bbecb9d1SAndroid Build Coastguard Worker --make-check-clang-fuzzer) 217*bbecb9d1SAndroid Build Coastguard Worker run_make_check_clang_fuzzer 218*bbecb9d1SAndroid Build Coastguard Worker ;; 219*bbecb9d1SAndroid Build Coastguard Worker 220*bbecb9d1SAndroid Build Coastguard Worker --make-check-trace-stderr) 221*bbecb9d1SAndroid Build Coastguard Worker run_make_check_trace_stderr 222*bbecb9d1SAndroid Build Coastguard Worker ;; 223*bbecb9d1SAndroid Build Coastguard Worker 224*bbecb9d1SAndroid Build Coastguard Worker --make-check-venus) 225*bbecb9d1SAndroid Build Coastguard Worker run_make_check_venus 226*bbecb9d1SAndroid Build Coastguard Worker ;; 227*bbecb9d1SAndroid Build Coastguard Worker 228*bbecb9d1SAndroid Build Coastguard Worker --deqp-gl-gl-tests) 229*bbecb9d1SAndroid Build Coastguard Worker run_deqp gl gl 230*bbecb9d1SAndroid Build Coastguard Worker ;; 231*bbecb9d1SAndroid Build Coastguard Worker 232*bbecb9d1SAndroid Build Coastguard Worker --deqp-gl-gles-tests) 233*bbecb9d1SAndroid Build Coastguard Worker run_deqp gl gles 234*bbecb9d1SAndroid Build Coastguard Worker ;; 235*bbecb9d1SAndroid Build Coastguard Worker 236*bbecb9d1SAndroid Build Coastguard Worker --deqp-gl-gles2-tests) 237*bbecb9d1SAndroid Build Coastguard Worker run_deqp gl gles2 238*bbecb9d1SAndroid Build Coastguard Worker ;; 239*bbecb9d1SAndroid Build Coastguard Worker 240*bbecb9d1SAndroid Build Coastguard Worker --deqp-gl-gles3-tests) 241*bbecb9d1SAndroid Build Coastguard Worker run_deqp gl gles3 242*bbecb9d1SAndroid Build Coastguard Worker ;; 243*bbecb9d1SAndroid Build Coastguard Worker 244*bbecb9d1SAndroid Build Coastguard Worker --deqp-gl-gles31-tests) 245*bbecb9d1SAndroid Build Coastguard Worker run_deqp gl gles31 246*bbecb9d1SAndroid Build Coastguard Worker ;; 247*bbecb9d1SAndroid Build Coastguard Worker 248*bbecb9d1SAndroid Build Coastguard Worker --deqp-gles-gl-tests) 249*bbecb9d1SAndroid Build Coastguard Worker run_deqp gles gl 250*bbecb9d1SAndroid Build Coastguard Worker ;; 251*bbecb9d1SAndroid Build Coastguard Worker 252*bbecb9d1SAndroid Build Coastguard Worker --deqp-gles-gles-tests) 253*bbecb9d1SAndroid Build Coastguard Worker run_deqp gles gles 254*bbecb9d1SAndroid Build Coastguard Worker ;; 255*bbecb9d1SAndroid Build Coastguard Worker 256*bbecb9d1SAndroid Build Coastguard Worker --deqp-gles-gles2-tests) 257*bbecb9d1SAndroid Build Coastguard Worker run_deqp gles gles2 258*bbecb9d1SAndroid Build Coastguard Worker ;; 259*bbecb9d1SAndroid Build Coastguard Worker 260*bbecb9d1SAndroid Build Coastguard Worker --deqp-gles-gles3-tests) 261*bbecb9d1SAndroid Build Coastguard Worker run_deqp gles gles3 262*bbecb9d1SAndroid Build Coastguard Worker ;; 263*bbecb9d1SAndroid Build Coastguard Worker 264*bbecb9d1SAndroid Build Coastguard Worker --deqp-gles-gles31-tests) 265*bbecb9d1SAndroid Build Coastguard Worker run_deqp gles gles31 266*bbecb9d1SAndroid Build Coastguard Worker ;; 267*bbecb9d1SAndroid Build Coastguard Worker 268*bbecb9d1SAndroid Build Coastguard Worker --piglit-gl) 269*bbecb9d1SAndroid Build Coastguard Worker run_piglit gl 270*bbecb9d1SAndroid Build Coastguard Worker ;; 271*bbecb9d1SAndroid Build Coastguard Worker 272*bbecb9d1SAndroid Build Coastguard Worker --piglit-gles) 273*bbecb9d1SAndroid Build Coastguard Worker run_piglit gles 274*bbecb9d1SAndroid Build Coastguard Worker ;; 275*bbecb9d1SAndroid Build Coastguard Worker 276*bbecb9d1SAndroid Build Coastguard Worker *) 277*bbecb9d1SAndroid Build Coastguard Worker echo "Unknown test option $1" 278*bbecb9d1SAndroid Build Coastguard Worker exit 1 279*bbecb9d1SAndroid Build Coastguard Worker esac 280*bbecb9d1SAndroid Build Coastguard Worker 281*bbecb9d1SAndroid Build Coastguard Worker if [ $? -ne 0 ]; then 282*bbecb9d1SAndroid Build Coastguard Worker RET=1 283*bbecb9d1SAndroid Build Coastguard Worker fi 284*bbecb9d1SAndroid Build Coastguard Worker 285*bbecb9d1SAndroid Build Coastguard Worker shift 286*bbecb9d1SAndroid Build Coastguard Worker done 287*bbecb9d1SAndroid Build Coastguard Worker 288*bbecb9d1SAndroid Build Coastguard Worker exit $RET 289*bbecb9d1SAndroid Build Coastguard Worker} 290*bbecb9d1SAndroid Build Coastguard Worker 291*bbecb9d1SAndroid Build Coastguard Workerparse_input $@ 292