• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env bash
2# shellcheck disable=SC2086 # we want word splitting
3# shellcheck disable=SC1091 # paths only become valid at runtime
4
5. "${SCRIPTS_DIR}/setup-test-env.sh"
6
7set -ex
8
9if [ -z "$GPU_VERSION" ]; then
10   echo 'GPU_VERSION must be set to something like "llvmpipe" or "freedreno-a630" (the name used in your ci/gpu-version-*.txt)'
11   exit 1
12fi
13
14INSTALL="$PWD/install"
15
16# Set up the driver environment.
17export LD_LIBRARY_PATH="$INSTALL/lib/"
18export EGL_PLATFORM=surfaceless
19ARCH=$(uname -m)
20export VK_DRIVER_FILES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.$ARCH.json"
21
22# Ensure Mesa Shader Cache resides on tmpfs.
23SHADER_CACHE_HOME=${XDG_CACHE_HOME:-${HOME}/.cache}
24SHADER_CACHE_DIR=${MESA_SHADER_CACHE_DIR:-${SHADER_CACHE_HOME}/mesa_shader_cache}
25
26findmnt -n tmpfs ${SHADER_CACHE_HOME} || findmnt -n tmpfs ${SHADER_CACHE_DIR} || {
27    mkdir -p ${SHADER_CACHE_DIR}
28    mount -t tmpfs -o nosuid,nodev,size=2G,mode=1755 tmpfs ${SHADER_CACHE_DIR}
29}
30
31if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
32    # deqp is to use virpipe, and virgl_test_server llvmpipe
33    export GALLIUM_DRIVER="$GALLIUM_DRIVER"
34
35    VTEST_ARGS="--use-egl-surfaceless"
36    if [ "$VIRGL_HOST_API" = "GLES" ]; then
37        VTEST_ARGS="$VTEST_ARGS --use-gles"
38    fi
39
40    GALLIUM_DRIVER=llvmpipe \
41    GALLIVM_PERF="nopt" \
42    virgl_test_server $VTEST_ARGS >$RESULTS_DIR/vtest-log.txt 2>&1 &
43
44    sleep 1
45fi
46
47if [ -n "$PIGLIT_FRACTION" ] || [ -n "$CI_NODE_INDEX" ]; then
48    FRACTION=$((${PIGLIT_FRACTION:-1} * ${CI_NODE_TOTAL:-1}))
49PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --fraction $FRACTION"
50fi
51
52# If the job is parallel at the gitab job level, take the corresponding fraction
53# of the caselist.
54if [ -n "$CI_NODE_INDEX" ]; then
55   PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --fraction-start ${CI_NODE_INDEX}"
56fi
57
58if [ -e "$INSTALL/$GPU_VERSION-fails.txt" ]; then
59    PIGLIT_RUNNER_OPTIONS="$PIGLIT_RUNNER_OPTIONS --baseline $INSTALL/$GPU_VERSION-fails.txt"
60fi
61
62# Default to an empty known flakes file if it doesn't exist.
63touch $INSTALL/$GPU_VERSION-flakes.txt
64
65if [ -n "$VK_DRIVER" ] && [ -e "$INSTALL/$VK_DRIVER-skips.txt" ]; then
66    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$VK_DRIVER-skips.txt"
67fi
68
69if [ -n "$GALLIUM_DRIVER" ] && [ -e "$INSTALL/$GALLIUM_DRIVER-skips.txt" ]; then
70    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GALLIUM_DRIVER-skips.txt"
71fi
72
73if [ -n "$DRIVER_NAME" ] && [ -e "$INSTALL/$DRIVER_NAME-skips.txt" ]; then
74    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$DRIVER_NAME-skips.txt"
75fi
76
77if [ -e "$INSTALL/$GPU_VERSION-skips.txt" ]; then
78    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GPU_VERSION-skips.txt"
79fi
80
81if [ -e "$INSTALL/$GPU_VERSION-slow-skips.txt" ] && [[ $CI_JOB_NAME != *full* ]]; then
82    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/$GPU_VERSION-slow-skips.txt"
83fi
84
85if [ "$PIGLIT_PLATFORM" != "gbm" ] ; then
86    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/x11-skips.txt"
87fi
88
89if [ "$PIGLIT_PLATFORM" = "gbm" ]; then
90    PIGLIT_SKIPS="$PIGLIT_SKIPS $INSTALL/gbm-skips.txt"
91fi
92
93set +e
94
95piglit-runner \
96    run \
97    --piglit-folder /piglit \
98    --output $RESULTS_DIR \
99    --jobs ${FDO_CI_CONCURRENT:-4} \
100    --skips $INSTALL/all-skips.txt $PIGLIT_SKIPS \
101    --flakes $INSTALL/$GPU_VERSION-flakes.txt \
102    --profile $PIGLIT_PROFILES \
103    --process-isolation \
104    $PIGLIT_RUNNER_OPTIONS \
105    -v -v
106
107PIGLIT_EXITCODE=$?
108
109deqp-runner junit \
110   --testsuite $PIGLIT_PROFILES \
111   --results $RESULTS_DIR/failures.csv \
112   --output $RESULTS_DIR/junit.xml \
113   --limit 50 \
114   --template "See $ARTIFACTS_BASE_URL/results/{{testcase}}.xml"
115
116# Report the flakes to the IRC channel for monitoring (if configured):
117if [ -n "$FLAKES_CHANNEL" ]; then
118  python3 $INSTALL/report-flakes.py \
119         --host irc.oftc.net \
120         --port 6667 \
121         --results $RESULTS_DIR/results.csv \
122         --known-flakes $INSTALL/$GPU_VERSION-flakes.txt \
123         --channel "$FLAKES_CHANNEL" \
124         --runner "$CI_RUNNER_DESCRIPTION" \
125         --job "$CI_JOB_ID" \
126         --url "$CI_JOB_URL" \
127         --branch "${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-$CI_COMMIT_BRANCH}" \
128         --branch-title "${CI_MERGE_REQUEST_TITLE:-$CI_COMMIT_TITLE}" || true
129fi
130
131# Compress results.csv to save on bandwidth during the upload of artifacts to
132# GitLab. This reduces a full piglit run to 550 KB, down from 6 MB, and takes
133# 55ms on my Ryzen 5950X (with or without parallelism).
134zstd --quiet --rm --threads ${FDO_CI_CONCURRENT:-0} -8 $RESULTS_DIR/results.csv -o $RESULTS_DIR/results.csv.zst
135
136exit $PIGLIT_EXITCODE
137