• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/sh
2
3set -ex
4
5if [ -z "$GPU_VERSION" ]; then
6   echo 'GPU_VERSION must be set to something like "llvmpipe" or "freedreno-a630" (the name used in your ci/gpu-version-*.txt)'
7   exit 1
8fi
9
10INSTALL=`pwd`/install
11
12# Set up the driver environment.
13export LD_LIBRARY_PATH=`pwd`/install/lib/
14export EGL_PLATFORM=surfaceless
15export VK_ICD_FILENAMES=`pwd`/install/share/vulkan/icd.d/"$VK_DRIVER"_icd.${VK_CPU:-`uname -m`}.json
16
17RESULTS=`pwd`/${PIGLIT_RESULTS_DIR:-results}
18mkdir -p $RESULTS
19
20# Ensure Mesa Shader Cache resides on tmpfs.
21SHADER_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
22SHADER_CACHE_DIR=${MESA_SHADER_CACHE_DIR:-${SHADER_CACHE_HOME}/mesa_shader_cache}
23
24findmnt -n tmpfs ${SHADER_CACHE_HOME} || findmnt -n tmpfs ${SHADER_CACHE_DIR} || {
25    mkdir -p ${SHADER_CACHE_DIR}
26    mount -t tmpfs -o nosuid,nodev,size=2G,mode=1755 tmpfs ${SHADER_CACHE_DIR}
27}
28
29if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
30    # deqp is to use virpipe, and virgl_test_server llvmpipe
31    export GALLIUM_DRIVER="$GALLIUM_DRIVER"
32
33    VTEST_ARGS="--use-egl-surfaceless"
34    if [ "$VIRGL_HOST_API" = "GLES" ]; then
35        VTEST_ARGS="$VTEST_ARGS --use-gles"
36    fi
37
38    GALLIUM_DRIVER=llvmpipe \
39    GALLIVM_PERF="nopt" \
40    virgl_test_server $VTEST_ARGS >$RESULTS/vtest-log.txt 2>&1 &
41
42    sleep 1
43fi
44
45if [ -n "$PIGLIT_FRACTION" -o -n "$CI_NODE_INDEX" ]; then
46   FRACTION=`expr ${PIGLIT_FRACTION:-1} \* ${CI_NODE_TOTAL:-1}`
47PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --fraction $FRACTION"
48fi
49
50# If the job is parallel at the gitab job level, take the corresponding fraction
51# of the caselist.
52if [ -n "$CI_NODE_INDEX" ]; then
53   PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --fraction-start ${CI_NODE_INDEX}"
54fi
55
56if [ -e "$INSTALL/$GPU_VERSION-fails.txt" ]; then
57    PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --baseline $INSTALL/$GPU_VERSION-fails.txt"
58fi
59
60# Default to an empty known flakes file if it doesn't exist.
61touch $INSTALL/$GPU_VERSION-flakes.txt
62
63if [ -n "$VK_DRIVER" ] && [ -e "$INSTALL/$VK_DRIVER-skips.txt" ]; then
64    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$VK_DRIVER-skips.txt"
65fi
66
67if [ -n "$GALLIUM_DRIVER" ] && [ -e "$INSTALL/$GALLIUM_DRIVER-skips.txt" ]; then
68    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GALLIUM_DRIVER-skips.txt"
69fi
70
71if [ -n "$DRIVER_NAME" ] && [ -e "$INSTALL/$DRIVER_NAME-skips.txt" ]; then
72    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$DRIVER_NAME-skips.txt"
73fi
74
75if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
76    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GPU_VERSION-skips.txt"
77fi
78
79set +e
80
81piglit-runner \
82    run \
83    --piglit-folder /piglit \
84    --output $RESULTS \
85    --jobs ${FDO_CI_CONCURRENT:-4} \
86    --skips $INSTALL/all-skips.txt $PIGLIT_SKIPS \
87    --flakes $INSTALL/$GPU_VERSION-flakes.txt \
88    --profile $PIGLIT_PROFILES \
89    --process-isolation \
90    $PIGLIT_RUNNER_OPTIONS \
91    -v -v
92
93PIGLIT_EXITCODE=$?
94
95deqp-runner junit \
96   --testsuite $PIGLIT_PROFILES \
97   --results $RESULTS/failures.csv \
98   --output $RESULTS/junit.xml \
99   --limit 50 \
100   --template "See https://$CI_PROJECT_ROOT_NAMESPACE.pages.freedesktop.org/-/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/results/{{testcase}}.xml"
101
102# Report the flakes to the IRC channel for monitoring (if configured):
103if [ -n "$FLAKES_CHANNEL" ]; then
104  python3 $INSTALL/report-flakes.py \
105         --host irc.oftc.net \
106         --port 6667 \
107         --results $RESULTS/results.csv \
108         --known-flakes $INSTALL/$GPU_VERSION-flakes.txt \
109         --channel "$FLAKES_CHANNEL" \
110         --runner "$CI_RUNNER_DESCRIPTION" \
111         --job "$CI_JOB_ID" \
112         --url "$CI_JOB_URL" \
113         --branch "${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-$CI_COMMIT_BRANCH}" \
114         --branch-title "${CI_MERGE_REQUEST_TITLE:-$CI_COMMIT_TITLE}"
115fi
116
117exit $PIGLIT_EXITCODE
118