X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=.gitlab-ci%2Fdeqp-runner.sh;h=fb3e87bd55c9665cb9b4324d961923b22e8eb50d;hb=af7a7f6ce7bcf95d7eecd507668930272b2e8702;hp=f40b72a45ed60a2415b1d388b4dbc218c84d3d03;hpb=6766d51c15fc8143466b53aa7384d0c06218f12d;p=mesa.git diff --git a/.gitlab-ci/deqp-runner.sh b/.gitlab-ci/deqp-runner.sh index f40b72a45ed..fb3e87bd55c 100755 --- a/.gitlab-ci/deqp-runner.sh +++ b/.gitlab-ci/deqp-runner.sh @@ -7,6 +7,11 @@ DEQP_OPTIONS="$DEQP_OPTIONS --deqp-surface-type=pbuffer" DEQP_OPTIONS="$DEQP_OPTIONS --deqp-gl-config-name=rgba8888d24s8ms0" DEQP_OPTIONS="$DEQP_OPTIONS --deqp-visibility=hidden" +# deqp's shader cache (for vulkan) is not multiprocess safe for a common +# filename, see: +# https://gitlab.freedesktop.org/mesa/parallel-deqp-runner/-/merge_requests/13 +DEQP_OPTIONS="$DEQP_OPTIONS --deqp-shadercache=disable" + if [ -z "$DEQP_VER" ]; then echo 'DEQP_VER must be set to something like "gles2", "gles31" or "vk" for the test run' exit 1 @@ -42,9 +47,14 @@ mkdir -p $RESULTS if [ "$DEQP_VER" = "vk" ]; then cp /deqp/mustpass/vk-master.txt /tmp/case-list.txt DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk -else +elif [ "$DEQP_VER" = "gles2" -o "$DEQP_VER" = "gles3" -o "$DEQP_VER" = "gles31" ]; then cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER + SUITE=dEQP +else + cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt + DEQP=/deqp/external/openglcts/modules/glcts + SUITE=KHR fi # If the job is parallel, take the corresponding fraction of the caselist. @@ -133,15 +143,21 @@ extract_xml_result() { shift 1 qpas=$* start="#beginTestCaseResult $testcase" - for qpa in $qpas; do + + # Pick the first QPA mentioning our testcase + qpa=`grep -l "$start" $qpas | head -n 1` + + # If we found one, go extract just that testcase's contents from the QPA + # to a new QPA, then do testlog-to-xml on that. + if [ -n "$qpa" ]; then while IFS= read -r line; do if [ "$line" = "$start" ]; then dst="$testcase.qpa" echo "#beginSession" > $dst - echo $line >> $dst + echo "$line" >> $dst while IFS= read -r line; do if [ "$line" = "#endTestCaseResult" ]; then - echo $line >> $dst + echo "$line" >> $dst echo "#endSession" >> $dst /deqp/executor/testlog-to-xml $dst "$RESULTS/$testcase$DEQP_RUN_SUFFIX.xml" # copy the stylesheets here so they only end up in artifacts @@ -150,12 +166,12 @@ extract_xml_result() { cp /deqp/testlog.xsl "$RESULTS/" return 0 fi - echo $line >> $dst + echo "$line" >> $dst done return 1 fi done < $qpa - done + fi } extract_xml_results() { @@ -204,15 +220,26 @@ parse_renderer() { } check_renderer() { - echo "Capturing renderer info for driver sanity checks" + echo "Capturing renderer info for GLES driver sanity checks" # If you're having trouble loading your driver, uncommenting this may help # debug. # export EGL_LOG_LEVEL=debug VERSION=`echo $DEQP_VER | tr '[a-z]' '[A-Z]'` - $DEQP $DEQP_OPTIONS --deqp-case=dEQP-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa + $DEQP $DEQP_OPTIONS --deqp-case=$SUITE-$VERSION.info.\* --deqp-log-filename=$RESULTS/deqp-info.qpa parse_renderer } +check_vk_device_name() { + echo "Capturing device info for VK driver sanity checks" + $DEQP $DEQP_OPTIONS --deqp-case=dEQP-VK.info.device --deqp-log-filename=$RESULTS/deqp-info.qpa + DEVICENAME=`grep deviceName $RESULTS/deqp-info.qpa | sed 's|deviceName: ||g'` + echo "deviceName: $DEVICENAME" + if [ -n "$DEQP_EXPECTED_RENDERER" -a $DEVICENAME != "$DEQP_EXPECTED_RENDERER" ]; then + echo "Expected deviceName $DEQP_EXPECTED_RENDERER" + exit 1 + fi +} + # wrapper to supress +x to avoid spamming the log quiet() { set +x @@ -224,16 +251,21 @@ if [ "$GALLIUM_DRIVER" = "virpipe" ]; then # deqp is to use virpipe, and virgl_test_server llvmpipe export GALLIUM_DRIVER="$GALLIUM_DRIVER" + VTEST_ARGS="--use-egl-surfaceless" + if [ "$VIRGL_HOST_API" = "GLES" ]; then + VTEST_ARGS="$VTEST_ARGS --use-gles" + fi + GALLIUM_DRIVER=llvmpipe \ GALLIVM_PERF="nopt,no_filter_hacks" \ - VTEST_USE_EGL_SURFACELESS=1 \ - VTEST_USE_GLES=1 \ - virgl_test_server >$RESULTS/vtest-log.txt 2>&1 & + virgl_test_server $VTEST_ARGS >$RESULTS/vtest-log.txt 2>&1 & sleep 1 fi -if [ $DEQP_VER != vk ]; then +if [ $DEQP_VER = vk ]; then + quiet check_vk_device_name +else quiet check_renderer fi