summaryrefslogtreecommitdiff
path: root/.gitlab-ci/piglit/piglit-traces.sh
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci/piglit/piglit-traces.sh')
-rwxr-xr-x.gitlab-ci/piglit/piglit-traces.sh228
1 files changed, 0 insertions, 228 deletions
diff --git a/.gitlab-ci/piglit/piglit-traces.sh b/.gitlab-ci/piglit/piglit-traces.sh
deleted file mode 100755
index 3ad3070584b..00000000000
--- a/.gitlab-ci/piglit/piglit-traces.sh
+++ /dev/null
@@ -1,228 +0,0 @@
-#!/usr/bin/env bash
-# shellcheck disable=SC2035 # FIXME glob
-# shellcheck disable=SC2086 # we want word splitting
-
-set -ex
-
-# Our rootfs may not have "less", which apitrace uses during apitrace dump
-export PAGER=cat # FIXME: export everywhere
-
-INSTALL=$(realpath -s "$PWD"/install)
-S3_ARGS="--token-file ${CI_JOB_JWT_FILE}"
-
-RESULTS=$(realpath -s "$PWD"/results)
-mkdir -p "$RESULTS"
-
-if [ "$PIGLIT_REPLAY_SUBCOMMAND" = "profile" ]; then
- yq -iY 'del(.traces[][] | select(.label[]? == "no-perf"))' \
- "$PIGLIT_REPLAY_DESCRIPTION_FILE"
-else
- # keep the images for the later upload
- export PIGLIT_REPLAY_EXTRA_ARGS="--keep-image ${PIGLIT_REPLAY_EXTRA_ARGS}"
-fi
-
-# WINE
-case "$PIGLIT_REPLAY_DEVICE_NAME" in
- vk-*)
- export WINEPREFIX="/dxvk-wine64"
- ;;
- *)
- export WINEPREFIX="/generic-wine64"
- ;;
-esac
-
-#PATH="/opt/wine-stable/bin/:$PATH" # WineHQ path
-
-# Avoid asking about Gecko or Mono instalation
-export WINEDLLOVERRIDES="mscoree=d;mshtml=d" # FIXME: drop, not needed anymore? (wine dir is already created)
-
-
-# Set up the environment.
-# Modifiying here directly LD_LIBRARY_PATH may cause problems when
-# using a command wrapper. Hence, we will just set it when running the
-# command.
-export __LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$INSTALL/lib/"
-if [ -n "${VK_DRIVER}" ]; then
- # Set environment for DXVK.
- export DXVK_LOG_LEVEL="info"
- export DXVK_LOG="$RESULTS/dxvk"
- [ -d "$DXVK_LOG" ] || mkdir -pv "$DXVK_LOG"
- export DXVK_STATE_CACHE=0
- export VK_ICD_FILENAMES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.${VK_CPU:-$(uname -m)}.json"
-fi
-
-# Sanity check to ensure that our environment is sufficient to make our tests
-# run against the Mesa built by CI, rather than any installed distro version.
-MESA_VERSION=$(head -1 "$INSTALL/VERSION" | sed 's/\./\\./g')
-
-# wrapper to supress +x to avoid spamming the log
-quiet() {
- set +x
- "$@"
- set -x
-}
-
-# Set environment for apitrace executable.
-export PATH="/apitrace/build:$PATH"
-export PIGLIT_REPLAY_WINE_BINARY=wine
-export PIGLIT_REPLAY_WINE_APITRACE_BINARY="/apitrace-msvc-win64/bin/apitrace.exe"
-export PIGLIT_REPLAY_WINE_D3DRETRACE_BINARY="/apitrace-msvc-win64/bin/d3dretrace.exe"
-
-echo "Version:"
-apitrace version 2>/dev/null || echo "apitrace not found (Linux)"
-
-SANITY_MESA_VERSION_CMD="wflinfo"
-
-HANG_DETECTION_CMD=""
-
-# Set up the platform windowing system.
-if [ "$EGL_PLATFORM" = "surfaceless" ]; then
- # Use the surfaceless EGL platform.
- export DISPLAY=
- export WAFFLE_PLATFORM="surfaceless_egl"
-
- SANITY_MESA_VERSION_CMD="$SANITY_MESA_VERSION_CMD --platform surfaceless_egl --api gles2"
-
- if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
- # piglit is to use virpipe, and virgl_test_server llvmpipe
- export GALLIUM_DRIVER="$GALLIUM_DRIVER"
-
- LD_LIBRARY_PATH="$__LD_LIBRARY_PATH" \
- GALLIUM_DRIVER=llvmpipe \
- VTEST_USE_EGL_SURFACELESS=1 \
- VTEST_USE_GLES=1 \
- virgl_test_server >"$RESULTS"/vtest-log.txt 2>&1 &
-
- sleep 1
- fi
-elif [ "$PIGLIT_PLATFORM" = "gbm" ]; then
- SANITY_MESA_VERSION_CMD="$SANITY_MESA_VERSION_CMD --platform gbm --api gl"
-elif [ "$PIGLIT_PLATFORM" = "mixed_glx_egl" ]; then
- # It is assumed that you have already brought up your X server before
- # calling this script.
- SANITY_MESA_VERSION_CMD="$SANITY_MESA_VERSION_CMD --platform glx --api gl"
-else
- SANITY_MESA_VERSION_CMD="$SANITY_MESA_VERSION_CMD --platform glx --api gl --profile core"
- # copy-paste from init-stage2.sh, please update accordingly
- {
- WESTON_X11_SOCK="/tmp/.X11-unix/X0"
- export WAYLAND_DISPLAY=wayland-0
- export DISPLAY=:0
- mkdir -p /tmp/.X11-unix
-
- env \
- VK_ICD_FILENAMES="/install/share/vulkan/icd.d/${VK_DRIVER}_icd.$(uname -m).json" \
- weston -Bheadless-backend.so --use-gl -Swayland-0 --xwayland --idle-time=0 &
-
- while [ ! -S "$WESTON_X11_SOCK" ]; do sleep 1; done
- }
-fi
-
-# If the job is parallel at the gitlab job level, will take the corresponding
-# fraction of the caselist.
-if [ -n "$CI_NODE_INDEX" ]; then
- USE_CASELIST=1
-fi
-
-# shellcheck disable=SC2317
-replay_s3_upload_images() {
- find "$RESULTS/$__PREFIX" -type f -name "*.png" -printf "%P\n" \
- | while read -r line; do
-
- __TRACE="${line%-*-*}"
- if grep -q "^$__PREFIX/$__TRACE: pass$" ".gitlab-ci/piglit/$PIGLIT_RESULTS.txt.orig"; then
- if [ "x$CI_PROJECT_PATH" != "x$FDO_UPSTREAM_REPO" ]; then
- continue
- fi
- __S3_PATH="$PIGLIT_REPLAY_REFERENCE_IMAGES_BASE"
- __DESTINATION_FILE_PATH="${line##*-}"
- if curl -L -s -I "https://${__S3_PATH}/${__DESTINATION_FILE_PATH}" | grep -q "content-type: application/octet-stream" 2>/dev/null; then
- continue
- fi
- else
- __S3_PATH="$JOB_ARTIFACTS_BASE"
- __DESTINATION_FILE_PATH="$__S3_TRACES_PREFIX/${line##*-}"
- fi
-
- ci-fairy s3cp $S3_ARGS "$RESULTS/$__PREFIX/$line" \
- "https://${__S3_PATH}/${__DESTINATION_FILE_PATH}"
- done
-}
-
-SANITY_MESA_VERSION_CMD="$SANITY_MESA_VERSION_CMD | tee /tmp/version.txt | grep \"Mesa $MESA_VERSION\(\s\|$\)\""
-
-if [ -d results ]; then
- cd results && rm -rf ..?* .[!.]* *
-fi
-cd /piglit
-
-if [ -n "$USE_CASELIST" ]; then
- PIGLIT_TESTS=$(printf "%s" "$PIGLIT_TESTS")
- PIGLIT_GENTESTS="./piglit print-cmd $PIGLIT_TESTS replay --format \"{name}\" > /tmp/case-list.txt"
- RUN_GENTESTS="export LD_LIBRARY_PATH=$__LD_LIBRARY_PATH; $PIGLIT_GENTESTS"
-
- eval $RUN_GENTESTS
-
- sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt
-
- PIGLIT_TESTS="--test-list /tmp/case-list.txt"
-fi
-
-PIGLIT_OPTIONS=$(printf "%s" "$PIGLIT_OPTIONS")
-
-PIGLIT_TESTS=$(printf "%s" "$PIGLIT_TESTS")
-
-PIGLIT_CMD="./piglit run -l verbose --timeout 300 -j${FDO_CI_CONCURRENT:-4} $PIGLIT_OPTIONS $PIGLIT_TESTS replay "$(/usr/bin/printf "%q" "$RESULTS")
-
-RUN_CMD="export LD_LIBRARY_PATH=$__LD_LIBRARY_PATH; $SANITY_MESA_VERSION_CMD && $HANG_DETECTION_CMD $PIGLIT_CMD"
-
-# The replayer doesn't do any size or checksum verification for the traces in
-# the replayer db, so if we had to restart the system due to intermittent device
-# errors (or tried to cache replayer-db between runs, which would be nice to
-# have), you could get a corrupted local trace that would spuriously fail the
-# run.
-rm -rf replayer-db
-
-if ! eval $RUN_CMD;
-then
- printf "%s\n" "Found $(cat /tmp/version.txt), expected $MESA_VERSION"
-fi
-
-ARTIFACTS_BASE_URL="https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts"
-
-./piglit summary aggregate "$RESULTS" -o junit.xml
-
-PIGLIT_RESULTS="${PIGLIT_RESULTS:-replay}"
-RESULTSFILE="$RESULTS/$PIGLIT_RESULTS.txt"
-mkdir -p .gitlab-ci/piglit
-./piglit summary console "$RESULTS"/results.json.bz2 \
- | tee ".gitlab-ci/piglit/$PIGLIT_RESULTS.txt.orig" \
- | head -n -1 | grep -v ": pass" \
- | sed '/^summary:/Q' \
- > $RESULTSFILE
-
-__PREFIX="trace/$PIGLIT_REPLAY_DEVICE_NAME"
-__S3_PATH="$PIGLIT_REPLAY_ARTIFACTS_BASE_URL"
-__S3_TRACES_PREFIX="traces"
-
-if [ "$PIGLIT_REPLAY_SUBCOMMAND" != "profile" ]; then
- quiet replay_s3_upload_images
-fi
-
-
-if [ ! -s $RESULTSFILE ]; then
- exit 0
-fi
-
-./piglit summary html --exclude-details=pass \
-"$RESULTS"/summary "$RESULTS"/results.json.bz2
-
-find "$RESULTS"/summary -type f -name "*.html" -print0 \
- | xargs -0 sed -i 's%<img src="file://'"${RESULTS}"'.*-\([0-9a-f]*\)\.png%<img src="https://'"${JOB_ARTIFACTS_BASE}"'/traces/\1.png%g'
-find "$RESULTS"/summary -type f -name "*.html" -print0 \
- | xargs -0 sed -i 's%<img src="file://%<img src="https://'"${PIGLIT_REPLAY_REFERENCE_IMAGES_BASE}"'/%g'
-
-echo "Failures in traces:"
-cat $RESULTSFILE
-error echo "Review the image changes and get the new checksums at: ${ARTIFACTS_BASE_URL}/results/summary/problems.html "
-exit 1