1*bbecb9d1SAndroid Build Coastguard Worker#!/bin/bash 2*bbecb9d1SAndroid Build Coastguard Worker 3*bbecb9d1SAndroid Build Coastguard Workerset -x 4*bbecb9d1SAndroid Build Coastguard Worker 5*bbecb9d1SAndroid Build Coastguard Worker# Setup paths and import util functions 6*bbecb9d1SAndroid Build Coastguard Worker. $(dirname $(readlink -f "$0"))/util.sh 7*bbecb9d1SAndroid Build Coastguard Worker 8*bbecb9d1SAndroid Build Coastguard WorkerTESTS="" 9*bbecb9d1SAndroid Build Coastguard WorkerBACKENDS="" 10*bbecb9d1SAndroid Build Coastguard WorkerNUM_THREADS=${NUM_THREADS:-$(expr $(expr $(nproc) / 8) + 1)} 11*bbecb9d1SAndroid Build Coastguard Worker 12*bbecb9d1SAndroid Build Coastguard WorkerUSE_HOST_GLES=0 13*bbecb9d1SAndroid Build Coastguard WorkerTEST_APP="deqp" 14*bbecb9d1SAndroid Build Coastguard Worker 15*bbecb9d1SAndroid Build Coastguard Workerparse_input() 16*bbecb9d1SAndroid Build Coastguard Worker{ 17*bbecb9d1SAndroid Build Coastguard Worker while [ -n "$1" ]; do 18*bbecb9d1SAndroid Build Coastguard Worker case $1 in 19*bbecb9d1SAndroid Build Coastguard Worker 20*bbecb9d1SAndroid Build Coastguard Worker -a|--all-backends) 21*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="" 22*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS vtest-softpipe" 23*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS vtest-llvmpipe" 24*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS vtest-gpu" 25*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS softpipe" 26*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS llvmpipe" 27*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS gpu" 28*bbecb9d1SAndroid Build Coastguard Worker ;; 29*bbecb9d1SAndroid Build Coastguard Worker 30*bbecb9d1SAndroid Build Coastguard Worker -v|--vtest) 31*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="" 32*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS vtest-softpipe" 33*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS vtest-llvmpipe" 34*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS vtest-gpu" 35*bbecb9d1SAndroid Build Coastguard Worker ;; 36*bbecb9d1SAndroid Build Coastguard Worker 37*bbecb9d1SAndroid Build Coastguard Worker --host-gles) 38*bbecb9d1SAndroid Build Coastguard Worker USE_HOST_GLES=1 39*bbecb9d1SAndroid Build Coastguard Worker ;; 40*bbecb9d1SAndroid Build Coastguard Worker 41*bbecb9d1SAndroid Build Coastguard Worker --host-gl) 42*bbecb9d1SAndroid Build Coastguard Worker USE_HOST_GLES=0 43*bbecb9d1SAndroid Build Coastguard Worker ;; 44*bbecb9d1SAndroid Build Coastguard Worker 45*bbecb9d1SAndroid Build Coastguard Worker -b|--backend) 46*bbecb9d1SAndroid Build Coastguard Worker NEW_BACKEND="$2" 47*bbecb9d1SAndroid Build Coastguard Worker shift 48*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="$BACKENDS $NEW_BACKEND" 49*bbecb9d1SAndroid Build Coastguard Worker ;; 50*bbecb9d1SAndroid Build Coastguard Worker 51*bbecb9d1SAndroid Build Coastguard Worker -j|--threads) 52*bbecb9d1SAndroid Build Coastguard Worker NUM_THREADS=$2 53*bbecb9d1SAndroid Build Coastguard Worker shift 54*bbecb9d1SAndroid Build Coastguard Worker ;; 55*bbecb9d1SAndroid Build Coastguard Worker 56*bbecb9d1SAndroid Build Coastguard Worker --gles2) 57*bbecb9d1SAndroid Build Coastguard Worker TESTS="$TESTS gles2" 58*bbecb9d1SAndroid Build Coastguard Worker ;; 59*bbecb9d1SAndroid Build Coastguard Worker 60*bbecb9d1SAndroid Build Coastguard Worker --gles3) 61*bbecb9d1SAndroid Build Coastguard Worker TESTS="$TESTS gles3" 62*bbecb9d1SAndroid Build Coastguard Worker ;; 63*bbecb9d1SAndroid Build Coastguard Worker 64*bbecb9d1SAndroid Build Coastguard Worker --gles31) 65*bbecb9d1SAndroid Build Coastguard Worker TESTS="$TESTS gles31" 66*bbecb9d1SAndroid Build Coastguard Worker ;; 67*bbecb9d1SAndroid Build Coastguard Worker 68*bbecb9d1SAndroid Build Coastguard Worker --gl30) 69*bbecb9d1SAndroid Build Coastguard Worker TESTS="$TESTS gl30" 70*bbecb9d1SAndroid Build Coastguard Worker ;; 71*bbecb9d1SAndroid Build Coastguard Worker 72*bbecb9d1SAndroid Build Coastguard Worker --gl31) 73*bbecb9d1SAndroid Build Coastguard Worker TESTS="$TESTS gl31" 74*bbecb9d1SAndroid Build Coastguard Worker ;; 75*bbecb9d1SAndroid Build Coastguard Worker 76*bbecb9d1SAndroid Build Coastguard Worker --gl32) 77*bbecb9d1SAndroid Build Coastguard Worker TESTS="$TESTS gl32" 78*bbecb9d1SAndroid Build Coastguard Worker ;; 79*bbecb9d1SAndroid Build Coastguard Worker 80*bbecb9d1SAndroid Build Coastguard Worker -d|--deqp) 81*bbecb9d1SAndroid Build Coastguard Worker TEST_APP="deqp" 82*bbecb9d1SAndroid Build Coastguard Worker ;; 83*bbecb9d1SAndroid Build Coastguard Worker 84*bbecb9d1SAndroid Build Coastguard Worker -p|--piglit) 85*bbecb9d1SAndroid Build Coastguard Worker TEST_APP="piglit" 86*bbecb9d1SAndroid Build Coastguard Worker ;; 87*bbecb9d1SAndroid Build Coastguard Worker 88*bbecb9d1SAndroid Build Coastguard Worker *) 89*bbecb9d1SAndroid Build Coastguard Worker echo "Unknown flag $1" 90*bbecb9d1SAndroid Build Coastguard Worker exit 1 91*bbecb9d1SAndroid Build Coastguard Worker esac 92*bbecb9d1SAndroid Build Coastguard Worker shift 93*bbecb9d1SAndroid Build Coastguard Worker done 94*bbecb9d1SAndroid Build Coastguard Worker 95*bbecb9d1SAndroid Build Coastguard Worker if [[ -z $BACKENDS ]]; then 96*bbecb9d1SAndroid Build Coastguard Worker BACKENDS="gpu" 97*bbecb9d1SAndroid Build Coastguard Worker fi 98*bbecb9d1SAndroid Build Coastguard Worker} 99*bbecb9d1SAndroid Build Coastguard Worker 100*bbecb9d1SAndroid Build Coastguard Workercompare_previous() 101*bbecb9d1SAndroid Build Coastguard Worker{ 102*bbecb9d1SAndroid Build Coastguard Worker if [ ! -f $PREVIOUS_RESULTS_DIR/results.txt ]; then 103*bbecb9d1SAndroid Build Coastguard Worker return 2 104*bbecb9d1SAndroid Build Coastguard Worker fi 105*bbecb9d1SAndroid Build Coastguard Worker 106*bbecb9d1SAndroid Build Coastguard Worker # Piglit tests use @ as separator for path/to/test 107*bbecb9d1SAndroid Build Coastguard Worker IGNORE_TESTS=$(sed "s/\@/\//g" $IGNORE_TESTS_FILE 2>/dev/null) 108*bbecb9d1SAndroid Build Coastguard Worker 109*bbecb9d1SAndroid Build Coastguard Worker # Avoid introducing changes while doing this comparison 110*bbecb9d1SAndroid Build Coastguard Worker TMP_RESULTS=$(mktemp /tmp/virgl_ci_results.XXXXXX) 111*bbecb9d1SAndroid Build Coastguard Worker TMP_PREV_RESULTS=$(mktemp /tmp/virgl_ci_previous_results.XXXXXX) 112*bbecb9d1SAndroid Build Coastguard Worker cp $RESULTS_DIR/results.txt $TMP_RESULTS 113*bbecb9d1SAndroid Build Coastguard Worker cp $PREVIOUS_RESULTS_DIR/results.txt $TMP_PREV_RESULTS 114*bbecb9d1SAndroid Build Coastguard Worker 115*bbecb9d1SAndroid Build Coastguard Worker for TEST in $IGNORE_TESTS; do 116*bbecb9d1SAndroid Build Coastguard Worker sed -i "\:$TEST:d" $TMP_RESULTS $TMP_PREV_RESULTS 117*bbecb9d1SAndroid Build Coastguard Worker done 118*bbecb9d1SAndroid Build Coastguard Worker 119*bbecb9d1SAndroid Build Coastguard Worker if [ "$TEST_APP" = "piglit" ]; then 120*bbecb9d1SAndroid Build Coastguard Worker # This distinction adds too much variability 121*bbecb9d1SAndroid Build Coastguard Worker sed -i "s/crash/fail/g" $TMP_RESULTS $TMP_PREV_RESULTS 122*bbecb9d1SAndroid Build Coastguard Worker elif [ "$TEST_APP" = "deqp" ]; then 123*bbecb9d1SAndroid Build Coastguard Worker # This distinction adds too much variability 124*bbecb9d1SAndroid Build Coastguard Worker sed -i "s/QualityWarning/Pass/g" $TMP_RESULTS $TMP_PREV_RESULTS 125*bbecb9d1SAndroid Build Coastguard Worker sed -i "s/CompatibilityWarning/Pass/g" $TMP_RESULTS $TMP_PREV_RESULTS 126*bbecb9d1SAndroid Build Coastguard Worker fi 127*bbecb9d1SAndroid Build Coastguard Worker 128*bbecb9d1SAndroid Build Coastguard Worker # Sort results files 129*bbecb9d1SAndroid Build Coastguard Worker sort -V $TMP_RESULTS -o $TMP_RESULTS 130*bbecb9d1SAndroid Build Coastguard Worker sort -V $TMP_PREV_RESULTS -o $TMP_PREV_RESULTS 131*bbecb9d1SAndroid Build Coastguard Worker 132*bbecb9d1SAndroid Build Coastguard Worker diff -u $TMP_PREV_RESULTS $TMP_RESULTS 2>&1 > $RESULTS_DIR/regression_diff.txt 133*bbecb9d1SAndroid Build Coastguard Worker if [ $? -ne 0 ]; then 134*bbecb9d1SAndroid Build Coastguard Worker touch $VIRGL_PATH/results/regressions_detected 135*bbecb9d1SAndroid Build Coastguard Worker return 1 136*bbecb9d1SAndroid Build Coastguard Worker else 137*bbecb9d1SAndroid Build Coastguard Worker rm -rf $RESULTS_DIR/regression_diff.txt 138*bbecb9d1SAndroid Build Coastguard Worker return 0 139*bbecb9d1SAndroid Build Coastguard Worker fi 140*bbecb9d1SAndroid Build Coastguard Worker} 141*bbecb9d1SAndroid Build Coastguard Worker 142*bbecb9d1SAndroid Build Coastguard Workerinterpret_results() 143*bbecb9d1SAndroid Build Coastguard Worker{ 144*bbecb9d1SAndroid Build Coastguard Worker PASSED_TESTS="$1" 145*bbecb9d1SAndroid Build Coastguard Worker TOTAL_TESTS="$2" 146*bbecb9d1SAndroid Build Coastguard Worker UNRELIABLE="$3" 147*bbecb9d1SAndroid Build Coastguard Worker 148*bbecb9d1SAndroid Build Coastguard Worker # TODO: Add comparison for the unreliable tests 149*bbecb9d1SAndroid Build Coastguard Worker if [ $UNRELIABLE -eq 0 ]; then 150*bbecb9d1SAndroid Build Coastguard Worker compare_previous 151*bbecb9d1SAndroid Build Coastguard Worker case $? in 152*bbecb9d1SAndroid Build Coastguard Worker 0) 153*bbecb9d1SAndroid Build Coastguard Worker echo "Pass - matches previous results" 154*bbecb9d1SAndroid Build Coastguard Worker return 0 155*bbecb9d1SAndroid Build Coastguard Worker ;; 156*bbecb9d1SAndroid Build Coastguard Worker 157*bbecb9d1SAndroid Build Coastguard Worker 1) 158*bbecb9d1SAndroid Build Coastguard Worker echo "Fail - diff against previous results: $RESULTS_DIR/regression_diff.txt" 159*bbecb9d1SAndroid Build Coastguard Worker echo -n "Changes detected: " 160*bbecb9d1SAndroid Build Coastguard Worker grep ^+ $RESULTS_DIR/regression_diff.txt | wc -l 161*bbecb9d1SAndroid Build Coastguard Worker head -n20 $RESULTS_DIR/regression_diff.txt 162*bbecb9d1SAndroid Build Coastguard Worker return 1 163*bbecb9d1SAndroid Build Coastguard Worker ;; 164*bbecb9d1SAndroid Build Coastguard Worker 165*bbecb9d1SAndroid Build Coastguard Worker 2) 166*bbecb9d1SAndroid Build Coastguard Worker echo "Pass - no previous results, but passed $PASSED_TESTS/$TOTAL_TESTS tests" 167*bbecb9d1SAndroid Build Coastguard Worker return 0 168*bbecb9d1SAndroid Build Coastguard Worker ;; 169*bbecb9d1SAndroid Build Coastguard Worker 170*bbecb9d1SAndroid Build Coastguard Worker *) 171*bbecb9d1SAndroid Build Coastguard Worker echo "BUG!" 172*bbecb9d1SAndroid Build Coastguard Worker return 1 173*bbecb9d1SAndroid Build Coastguard Worker ;; 174*bbecb9d1SAndroid Build Coastguard Worker esac 175*bbecb9d1SAndroid Build Coastguard Worker else 176*bbecb9d1SAndroid Build Coastguard Worker if [ $PASSED_TESTS -eq $TOTAL_TESTS ] && [ $TOTAL_TESTS -ne 0 ]; then 177*bbecb9d1SAndroid Build Coastguard Worker echo "Pass - passed $PASSED_TESTS/$TOTAL_TESTS tests" 178*bbecb9d1SAndroid Build Coastguard Worker return 0 179*bbecb9d1SAndroid Build Coastguard Worker else 180*bbecb9d1SAndroid Build Coastguard Worker echo "Fail - passed $PASSED_TESTS/$TOTAL_TESTS tests: $RESULTS_DIR/results.txt" 181*bbecb9d1SAndroid Build Coastguard Worker return 1 182*bbecb9d1SAndroid Build Coastguard Worker fi 183*bbecb9d1SAndroid Build Coastguard Worker fi 184*bbecb9d1SAndroid Build Coastguard Worker} 185*bbecb9d1SAndroid Build Coastguard Worker 186*bbecb9d1SAndroid Build Coastguard Workerrun_vtest_server() 187*bbecb9d1SAndroid Build Coastguard Worker{ 188*bbecb9d1SAndroid Build Coastguard Worker ( 189*bbecb9d1SAndroid Build Coastguard Worker if [ $USE_HOST_GLES -eq 1 ]; then 190*bbecb9d1SAndroid Build Coastguard Worker VTEST_USE_EGL_SURFACELESS=1 \ 191*bbecb9d1SAndroid Build Coastguard Worker VTEST_USE_GLES=1 \ 192*bbecb9d1SAndroid Build Coastguard Worker virgl_test_server &>$VTEST_LOG_FILE & 193*bbecb9d1SAndroid Build Coastguard Worker else 194*bbecb9d1SAndroid Build Coastguard Worker VTEST_USE_EGL_SURFACELESS=1 \ 195*bbecb9d1SAndroid Build Coastguard Worker virgl_test_server &>$VTEST_LOG_FILE & 196*bbecb9d1SAndroid Build Coastguard Worker fi 197*bbecb9d1SAndroid Build Coastguard Worker ) 198*bbecb9d1SAndroid Build Coastguard Worker} 199*bbecb9d1SAndroid Build Coastguard Worker 200*bbecb9d1SAndroid Build Coastguard Workerrun_test_suite() 201*bbecb9d1SAndroid Build Coastguard Worker{ 202*bbecb9d1SAndroid Build Coastguard Worker local BACKEND="$1" 203*bbecb9d1SAndroid Build Coastguard Worker local TEST_NAME="$2" 204*bbecb9d1SAndroid Build Coastguard Worker local UNRELIABLE="$3" 205*bbecb9d1SAndroid Build Coastguard Worker local LOCAL_TEST_FILE="$4" 206*bbecb9d1SAndroid Build Coastguard Worker local RES_FILE=$RESULTS_FILE 207*bbecb9d1SAndroid Build Coastguard Worker 208*bbecb9d1SAndroid Build Coastguard Worker# echo "run_test_suite() OUTPUT_PATH: $OUTPUT_PATH" 209*bbecb9d1SAndroid Build Coastguard Worker# echo "run_test_suite() LOG_FILE: $LOG_FILE" 210*bbecb9d1SAndroid Build Coastguard Worker# echo "run_test_suite() RESULTS_FILE: $RESULTS_FILE" 211*bbecb9d1SAndroid Build Coastguard Worker 212*bbecb9d1SAndroid Build Coastguard Worker UNRELIABLE_STRING="" 213*bbecb9d1SAndroid Build Coastguard Worker if [ $UNRELIABLE -eq 1 ]; then 214*bbecb9d1SAndroid Build Coastguard Worker UNRELIABLE_STRING="unreliable " 215*bbecb9d1SAndroid Build Coastguard Worker RES_FILE="$RES_FILE.unreliable" 216*bbecb9d1SAndroid Build Coastguard Worker fi 217*bbecb9d1SAndroid Build Coastguard Worker 218*bbecb9d1SAndroid Build Coastguard Worker if [[ $BACKEND == *"vtest"* ]]; then 219*bbecb9d1SAndroid Build Coastguard Worker printf "Running ${UNRELIABLE_STRING}$TEST_APP-$TEST_NAME on vtest-$DRIVER_NAME: " 220*bbecb9d1SAndroid Build Coastguard Worker else 221*bbecb9d1SAndroid Build Coastguard Worker printf "Running ${UNRELIABLE_STRING}$TEST_APP-$TEST_NAME on $DRIVER_NAME: " 222*bbecb9d1SAndroid Build Coastguard Worker fi 223*bbecb9d1SAndroid Build Coastguard Worker 224*bbecb9d1SAndroid Build Coastguard Worker if test $UNRELIABLE -eq 1; then 225*bbecb9d1SAndroid Build Coastguard Worker LOCAL_TEST_FILE="$IGNORE_TESTS_FILE" 226*bbecb9d1SAndroid Build Coastguard Worker if test ! -f $LOCAL_TEST_FILE -o $(wc -l $LOCAL_TEST_FILE | cut -f1 -d' ') -eq 0; then 227*bbecb9d1SAndroid Build Coastguard Worker echo "Unreliable: no ignore tests." 228*bbecb9d1SAndroid Build Coastguard Worker return 0 229*bbecb9d1SAndroid Build Coastguard Worker fi 230*bbecb9d1SAndroid Build Coastguard Worker fi 231*bbecb9d1SAndroid Build Coastguard Worker 232*bbecb9d1SAndroid Build Coastguard Worker case $TEST_APP in 233*bbecb9d1SAndroid Build Coastguard Worker piglit) 234*bbecb9d1SAndroid Build Coastguard Worker # Don't run GLX tests 235*bbecb9d1SAndroid Build Coastguard Worker PIGLIT_TESTS=" -x glx" 236*bbecb9d1SAndroid Build Coastguard Worker 237*bbecb9d1SAndroid Build Coastguard Worker if test $UNRELIABLE -eq 1; then 238*bbecb9d1SAndroid Build Coastguard Worker # XXX: Fold the glx exception? 239*bbecb9d1SAndroid Build Coastguard Worker PIGLIT_TESTS_CMD="--test-list $LOCAL_TEST_FILE" 240*bbecb9d1SAndroid Build Coastguard Worker else 241*bbecb9d1SAndroid Build Coastguard Worker # TODO: create test_file for normal runs 242*bbecb9d1SAndroid Build Coastguard Worker PIGLIT_TESTS_CMD="$PIGLIT_TESTS -t $TEST_NAME" 243*bbecb9d1SAndroid Build Coastguard Worker 244*bbecb9d1SAndroid Build Coastguard Worker fi 245*bbecb9d1SAndroid Build Coastguard Worker 246*bbecb9d1SAndroid Build Coastguard Worker EGL_PLATFORM=x11 \ 247*bbecb9d1SAndroid Build Coastguard Worker piglit run --platform x11_egl \ 248*bbecb9d1SAndroid Build Coastguard Worker -l verbose \ 249*bbecb9d1SAndroid Build Coastguard Worker --jobs $NUM_THREADS \ 250*bbecb9d1SAndroid Build Coastguard Worker $PIGLIT_TESTS_CMD \ 251*bbecb9d1SAndroid Build Coastguard Worker gpu \ 252*bbecb9d1SAndroid Build Coastguard Worker /tmp/ &> $LOG_FILE 253*bbecb9d1SAndroid Build Coastguard Worker 254*bbecb9d1SAndroid Build Coastguard Worker piglit summary console /tmp/ | grep -B 999999 "summary:" | grep -v "summary:" > "$RES_FILE" 255*bbecb9d1SAndroid Build Coastguard Worker 256*bbecb9d1SAndroid Build Coastguard Worker piglit summary html $(dirname "$RES_FILE")/summary /tmp 257*bbecb9d1SAndroid Build Coastguard Worker 258*bbecb9d1SAndroid Build Coastguard Worker TOTAL_TESTS=$(cat $RES_FILE | wc -l) 259*bbecb9d1SAndroid Build Coastguard Worker PASSED_TESTS=$(grep " pass" $RES_FILE | wc -l) 260*bbecb9d1SAndroid Build Coastguard Worker ;; 261*bbecb9d1SAndroid Build Coastguard Worker 262*bbecb9d1SAndroid Build Coastguard Worker deqp) 263*bbecb9d1SAndroid Build Coastguard Worker deqp \ 264*bbecb9d1SAndroid Build Coastguard Worker --cts-build-dir $CTS_PATH/build \ 265*bbecb9d1SAndroid Build Coastguard Worker --test-names-file "$LOCAL_TEST_FILE" \ 266*bbecb9d1SAndroid Build Coastguard Worker --results-file "$RES_FILE" \ 267*bbecb9d1SAndroid Build Coastguard Worker --threads $NUM_THREADS &> $LOG_FILE 268*bbecb9d1SAndroid Build Coastguard Worker 269*bbecb9d1SAndroid Build Coastguard Worker # Remove header 270*bbecb9d1SAndroid Build Coastguard Worker sed -i "/#/d" $RES_FILE 271*bbecb9d1SAndroid Build Coastguard Worker 272*bbecb9d1SAndroid Build Coastguard Worker # Sort results file to make diffs easier to read 273*bbecb9d1SAndroid Build Coastguard Worker sort -V $RES_FILE -o $RES_FILE 274*bbecb9d1SAndroid Build Coastguard Worker 275*bbecb9d1SAndroid Build Coastguard Worker TOTAL_TESTS=$(cat $RES_FILE | wc -l) 276*bbecb9d1SAndroid Build Coastguard Worker PASSED_TESTS=$(grep " Pass" $RES_FILE | wc -l) 277*bbecb9d1SAndroid Build Coastguard Worker ;; 278*bbecb9d1SAndroid Build Coastguard Worker esac 279*bbecb9d1SAndroid Build Coastguard Worker 280*bbecb9d1SAndroid Build Coastguard Worker interpret_results $PASSED_TESTS $TOTAL_TESTS $UNRELIABLE 281*bbecb9d1SAndroid Build Coastguard Worker return $? 282*bbecb9d1SAndroid Build Coastguard Worker} 283*bbecb9d1SAndroid Build Coastguard Worker 284*bbecb9d1SAndroid Build Coastguard Workercreate_result_dir() 285*bbecb9d1SAndroid Build Coastguard Worker{ 286*bbecb9d1SAndroid Build Coastguard Worker if [[ -n $GALLIUM_DRIVER ]]; then 287*bbecb9d1SAndroid Build Coastguard Worker HOST_DRIVER="_${GALLIUM_DRIVER}" 288*bbecb9d1SAndroid Build Coastguard Worker elif [[ -n $DRIVER_NAME ]]; then 289*bbecb9d1SAndroid Build Coastguard Worker HOST_DRIVER="_${DRIVER_NAME}" 290*bbecb9d1SAndroid Build Coastguard Worker fi 291*bbecb9d1SAndroid Build Coastguard Worker 292*bbecb9d1SAndroid Build Coastguard Worker if [ $USE_HOST_GLES -eq 0 ]; then 293*bbecb9d1SAndroid Build Coastguard Worker HOST_GL="gl" 294*bbecb9d1SAndroid Build Coastguard Worker else 295*bbecb9d1SAndroid Build Coastguard Worker HOST_GL="es" 296*bbecb9d1SAndroid Build Coastguard Worker fi 297*bbecb9d1SAndroid Build Coastguard Worker 298*bbecb9d1SAndroid Build Coastguard Worker TEST_PATH=${HOST_GL}_host${HOST_DRIVER}/${TEST_APP}_${TEST_NAME} 299*bbecb9d1SAndroid Build Coastguard Worker RESULTS_DIR=$VIRGL_PATH/results/${TEST_PATH} 300*bbecb9d1SAndroid Build Coastguard Worker 301*bbecb9d1SAndroid Build Coastguard Worker if [ "$HOST_DRIVER" = "_softpipe" -o "$HOST_DRIVER" = "_llvmpipe" ]; then 302*bbecb9d1SAndroid Build Coastguard Worker PREVIOUS_RESULTS_DIR=$VIRGL_PATH/ci/previous_results/${TEST_PATH} 303*bbecb9d1SAndroid Build Coastguard Worker else 304*bbecb9d1SAndroid Build Coastguard Worker echo WARNING: Results are not up-to-date! 305*bbecb9d1SAndroid Build Coastguard Worker PREVIOUS_RESULTS_DIR=$VIRGL_PATH/ci/previous_results/archived/${TEST_PATH} 306*bbecb9d1SAndroid Build Coastguard Worker fi 307*bbecb9d1SAndroid Build Coastguard Worker 308*bbecb9d1SAndroid Build Coastguard Worker IGNORE_TESTS_FILE=$PREVIOUS_RESULTS_DIR/ignore_tests.txt 309*bbecb9d1SAndroid Build Coastguard Worker 310*bbecb9d1SAndroid Build Coastguard Worker # Remove comments from test-list 311*bbecb9d1SAndroid Build Coastguard Worker FILTERED_TEST_FILE=$(mktemp /tmp/virgl-ci.XXXXX) 312*bbecb9d1SAndroid Build Coastguard Worker sed '/^#/d;/^$/d' $IGNORE_TESTS_FILE 2>/dev/null > $FILTERED_TEST_FILE 313*bbecb9d1SAndroid Build Coastguard Worker IGNORE_TESTS_FILE=$FILTERED_TEST_FILE 314*bbecb9d1SAndroid Build Coastguard Worker 315*bbecb9d1SAndroid Build Coastguard Worker mkdir -p "$RESULTS_DIR" 316*bbecb9d1SAndroid Build Coastguard Worker 317*bbecb9d1SAndroid Build Coastguard Worker export OUTPUT_PATH="${RESULTS_DIR}" 318*bbecb9d1SAndroid Build Coastguard Worker export RESULTS_FILE="${OUTPUT_PATH}/results.txt" 319*bbecb9d1SAndroid Build Coastguard Worker export LOG_FILE="${OUTPUT_PATH}/log.txt" 320*bbecb9d1SAndroid Build Coastguard Worker export VTEST_LOG_FILE="${OUTPUT_PATH}/vtest_log.txt" 321*bbecb9d1SAndroid Build Coastguard Worker} 322*bbecb9d1SAndroid Build Coastguard Worker 323*bbecb9d1SAndroid Build Coastguard Workerrun_test_on_backends() 324*bbecb9d1SAndroid Build Coastguard Worker{ 325*bbecb9d1SAndroid Build Coastguard Worker local BACKENDS="$1" 326*bbecb9d1SAndroid Build Coastguard Worker local TEST_NAME="$2" 327*bbecb9d1SAndroid Build Coastguard Worker local TEST_FILE="$3" 328*bbecb9d1SAndroid Build Coastguard Worker local RET=0 329*bbecb9d1SAndroid Build Coastguard Worker 330*bbecb9d1SAndroid Build Coastguard Worker# echo "run_test_on_backends() BACKENDS: $BACKENDS" 331*bbecb9d1SAndroid Build Coastguard Worker# echo "run_test_on_backends() TEST_NAME: $TEST_NAME" 332*bbecb9d1SAndroid Build Coastguard Worker# echo "run_test_on_backends() TEST_FILE: $TEST_FILE" 333*bbecb9d1SAndroid Build Coastguard Worker 334*bbecb9d1SAndroid Build Coastguard Worker for BACKEND in $BACKENDS; do 335*bbecb9d1SAndroid Build Coastguard Worker unset DRIVER_NAME 336*bbecb9d1SAndroid Build Coastguard Worker unset GALLIUM_DRIVER 337*bbecb9d1SAndroid Build Coastguard Worker unset GALLIVM_PERF 338*bbecb9d1SAndroid Build Coastguard Worker unset LIBGL_ALWAYS_SOFTWARE 339*bbecb9d1SAndroid Build Coastguard Worker unset VTEST_USE_EGL_SURFACELESS 340*bbecb9d1SAndroid Build Coastguard Worker 341*bbecb9d1SAndroid Build Coastguard Worker case $BACKEND in 342*bbecb9d1SAndroid Build Coastguard Worker vtest-softpipe|softpipe) 343*bbecb9d1SAndroid Build Coastguard Worker export LIBGL_ALWAYS_SOFTWARE=1 344*bbecb9d1SAndroid Build Coastguard Worker export GALLIUM_DRIVER=softpipe 345*bbecb9d1SAndroid Build Coastguard Worker export DRIVER_NAME=$GALLIUM_DRIVER 346*bbecb9d1SAndroid Build Coastguard Worker ;; 347*bbecb9d1SAndroid Build Coastguard Worker 348*bbecb9d1SAndroid Build Coastguard Worker vtest-llvmpipe|llvmpipe) 349*bbecb9d1SAndroid Build Coastguard Worker export GALLIVM_PERF=nopt,no_filter_hacks 350*bbecb9d1SAndroid Build Coastguard Worker export LIBGL_ALWAYS_SOFTWARE=1 351*bbecb9d1SAndroid Build Coastguard Worker export GALLIUM_DRIVER=llvmpipe 352*bbecb9d1SAndroid Build Coastguard Worker export DRIVER_NAME=$GALLIUM_DRIVER 353*bbecb9d1SAndroid Build Coastguard Worker ;; 354*bbecb9d1SAndroid Build Coastguard Worker 355*bbecb9d1SAndroid Build Coastguard Worker vtest-gpu|gpu) 356*bbecb9d1SAndroid Build Coastguard Worker DEVICE_NAME=$(basename /dev/dri/renderD128) 357*bbecb9d1SAndroid Build Coastguard Worker export DRIVER_NAME="$(basename `readlink /sys/class/drm/${DEVICE_NAME}/device/driver`)" 358*bbecb9d1SAndroid Build Coastguard Worker ;; 359*bbecb9d1SAndroid Build Coastguard Worker esac 360*bbecb9d1SAndroid Build Coastguard Worker 361*bbecb9d1SAndroid Build Coastguard Worker # This case statement is broken into two parts 362*bbecb9d1SAndroid Build Coastguard Worker # because for the second part the LOG_FILE has 363*bbecb9d1SAndroid Build Coastguard Worker # declared, which is needed to redirect FDs 364*bbecb9d1SAndroid Build Coastguard Worker create_result_dir 365*bbecb9d1SAndroid Build Coastguard Worker 366*bbecb9d1SAndroid Build Coastguard Worker case $BACKEND in 367*bbecb9d1SAndroid Build Coastguard Worker vtest-*) 368*bbecb9d1SAndroid Build Coastguard Worker run_vtest_server 369*bbecb9d1SAndroid Build Coastguard Worker export GALLIUM_DRIVER=virpipe 370*bbecb9d1SAndroid Build Coastguard Worker ;; 371*bbecb9d1SAndroid Build Coastguard Worker 372*bbecb9d1SAndroid Build Coastguard Worker *) 373*bbecb9d1SAndroid Build Coastguard Worker ;; 374*bbecb9d1SAndroid Build Coastguard Worker esac 375*bbecb9d1SAndroid Build Coastguard Worker 376*bbecb9d1SAndroid Build Coastguard Worker # Execute both mustpass and unstable tests 377*bbecb9d1SAndroid Build Coastguard Worker # Only the former twigger an overall run fail 378*bbecb9d1SAndroid Build Coastguard Worker run_test_suite "$BACKEND" "$TEST_NAME" 0 "$TEST_FILE" 379*bbecb9d1SAndroid Build Coastguard Worker if [ $? -ne 0 ]; then 380*bbecb9d1SAndroid Build Coastguard Worker RET=1 381*bbecb9d1SAndroid Build Coastguard Worker fi 382*bbecb9d1SAndroid Build Coastguard Worker 383*bbecb9d1SAndroid Build Coastguard Worker run_test_suite "$BACKEND" "$TEST_NAME" 1 "$TEST_FILE" 384*bbecb9d1SAndroid Build Coastguard Worker 385*bbecb9d1SAndroid Build Coastguard Worker killall -q virgl_test_server 386*bbecb9d1SAndroid Build Coastguard Worker done 387*bbecb9d1SAndroid Build Coastguard Worker 388*bbecb9d1SAndroid Build Coastguard Worker return $RET 389*bbecb9d1SAndroid Build Coastguard Worker} 390*bbecb9d1SAndroid Build Coastguard Worker 391*bbecb9d1SAndroid Build Coastguard Workerrun_all_tests() 392*bbecb9d1SAndroid Build Coastguard Worker{ 393*bbecb9d1SAndroid Build Coastguard Worker local BACKENDS=$1 394*bbecb9d1SAndroid Build Coastguard Worker local TESTS=$2 395*bbecb9d1SAndroid Build Coastguard Worker local RET=0 396*bbecb9d1SAndroid Build Coastguard Worker 397*bbecb9d1SAndroid Build Coastguard Worker if [ $USE_HOST_GLES -eq 0 ]; then 398*bbecb9d1SAndroid Build Coastguard Worker echo "Running test(s) on GL Host" 399*bbecb9d1SAndroid Build Coastguard Worker echo "--------------------------" 400*bbecb9d1SAndroid Build Coastguard Worker else 401*bbecb9d1SAndroid Build Coastguard Worker echo "Running test(s) on GLES Host" 402*bbecb9d1SAndroid Build Coastguard Worker echo "----------------------------" 403*bbecb9d1SAndroid Build Coastguard Worker fi 404*bbecb9d1SAndroid Build Coastguard Worker# echo "run_all_tests() BACKENDS: $BACKENDS" 405*bbecb9d1SAndroid Build Coastguard Worker# echo "run_all_tests() TESTS: $TESTS" 406*bbecb9d1SAndroid Build Coastguard Worker 407*bbecb9d1SAndroid Build Coastguard Worker 408*bbecb9d1SAndroid Build Coastguard Worker # TODO: add similar must pass lists for piglit 409*bbecb9d1SAndroid Build Coastguard Worker for TEST in $TESTS; do 410*bbecb9d1SAndroid Build Coastguard Worker case $TEST in 411*bbecb9d1SAndroid Build Coastguard Worker gles2|gles3|gles31) 412*bbecb9d1SAndroid Build Coastguard Worker TEST_FILE="$CTS_PATH/android/cts/master/$TEST-master.txt" 413*bbecb9d1SAndroid Build Coastguard Worker ;; 414*bbecb9d1SAndroid Build Coastguard Worker gl30|gl31|gl32) 415*bbecb9d1SAndroid Build Coastguard Worker TEST_FILE="$CTS_PATH/external/openglcts/data/mustpass/gl/khronos_mustpass/4.6.1.x/$TEST-master.txt" 416*bbecb9d1SAndroid Build Coastguard Worker ;; 417*bbecb9d1SAndroid Build Coastguard Worker esac 418*bbecb9d1SAndroid Build Coastguard Worker 419*bbecb9d1SAndroid Build Coastguard Worker run_test_on_backends "$BACKENDS" "$TEST" "$TEST_FILE" 420*bbecb9d1SAndroid Build Coastguard Worker 421*bbecb9d1SAndroid Build Coastguard Worker if [ $? -ne 0 ]; then 422*bbecb9d1SAndroid Build Coastguard Worker RET=1 423*bbecb9d1SAndroid Build Coastguard Worker fi 424*bbecb9d1SAndroid Build Coastguard Worker done 425*bbecb9d1SAndroid Build Coastguard Worker 426*bbecb9d1SAndroid Build Coastguard Worker exit $RET 427*bbecb9d1SAndroid Build Coastguard Worker} 428*bbecb9d1SAndroid Build Coastguard Worker 429*bbecb9d1SAndroid Build Coastguard Workersetup() 430*bbecb9d1SAndroid Build Coastguard Worker{ 431*bbecb9d1SAndroid Build Coastguard Worker Xvfb :0 -screen 0 1024x768x24 &>/dev/null & 432*bbecb9d1SAndroid Build Coastguard Worker export DISPLAY=:0 433*bbecb9d1SAndroid Build Coastguard Worker sleep 2 434*bbecb9d1SAndroid Build Coastguard Worker} 435*bbecb9d1SAndroid Build Coastguard Worker 436*bbecb9d1SAndroid Build Coastguard Workersetup 437*bbecb9d1SAndroid Build Coastguard Workerparse_input $@ 438*bbecb9d1SAndroid Build Coastguard Workerrun_all_tests "$BACKENDS" "$TESTS" 439