#!/bin/sh set -ex if [ "x$VK_DRIVER" = "x" ]; then exit 1 fi INSTALL=$(realpath -s "$PWD"/install) RESULTS=$(realpath -s "$PWD"/results) # Set up the driver 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/:/vkd3d-proton-tests/x64/" # 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=$(cat "$INSTALL/VERSION" | sed 's/\./\\./g') # Set the Vulkan driver to use. export VK_ICD_FILENAMES="$INSTALL/share/vulkan/icd.d/${VK_DRIVER}_icd.x86_64.json" # Set environment for Wine. export WINEDEBUG="-all" export WINEPREFIX="/vkd3d-proton-wine64" export WINEESYNC=1 print_red() { RED='\033[0;31m' NC='\033[0m' # No Color printf "${RED}" "$@" printf "${NC}" } # wrapper to supress +x to avoid spamming the log quiet() { set +x "$@" set -x } SANITY_MESA_VERSION_CMD="vulkaninfo | tee /tmp/version.txt | grep \"Mesa $MESA_VERSION\(\s\|$\)\"" HANG_DETECTION_CMD="/parallel-deqp-runner/build/bin/hang-detection" RUN_CMD="export LD_LIBRARY_PATH=$__LD_LIBRARY_PATH; $SANITY_MESA_VERSION_CMD" set +e eval $RUN_CMD if [ $? -ne 0 ]; then printf "%s\n" "Found $(cat /tmp/version.txt), expected $MESA_VERSION" fi set -e if [ -d "$RESULTS" ]; then cd "$RESULTS" && rm -rf ..?* .[!.]* * && cd - else mkdir "$RESULTS" fi VKD3D_PROTON_TESTSUITE_CMD="/vkd3d-proton-tests/x64/bin/d3d12 >$RESULTS/vkd3d-proton.log" quiet printf "%s\n" "Running vkd3d-proton testsuite..." RUN_CMD="export LD_LIBRARY_PATH=$__LD_LIBRARY_PATH; $HANG_DETECTION_CMD $VKD3D_PROTON_TESTSUITE_CMD" set +e eval $RUN_CMD VKD3D_PROTON_RESULTS="${VKD3D_PROTON_RESULTS:-vkd3d-proton-results}" RESULTSFILE="$RESULTS/$VKD3D_PROTON_RESULTS.txt" mkdir -p .gitlab-ci/vkd3d-proton grep "Test failed" "$RESULTS"/vkd3d-proton.log > "$RESULTSFILE" if [ -f "$INSTALL/$VKD3D_PROTON_RESULTS.txt" ]; then cp "$INSTALL/$VKD3D_PROTON_RESULTS.txt" \ ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline" else touch ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline" fi if diff -q ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline" "$RESULTSFILE"; then echo "SUCCESS: No changes found!" exit 0 fi quiet print_red printf "%s\n" "Changes found, see vkd3d-proton.log!" quiet diff --color=always -u ".gitlab-ci/vkd3d-proton/$VKD3D_PROTON_RESULTS.txt.baseline" "$RESULTSFILE" exit 1