ci: Build a cheza kernel.
[mesa.git] / .gitlab-ci / deqp-runner.sh
index f40b72a45ed60a2415b1d388b4dbc218c84d3d03..bcaa5d39afdb8f6d06803fe3e1f905e0cb54aba3 100755 (executable)
@@ -133,7 +133,13 @@ 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"
@@ -155,7 +161,7 @@ extract_xml_result() {
                 return 1
             fi
         done < $qpa
-    done
+    fi
 }
 
 extract_xml_results() {
@@ -204,7 +210,7 @@ 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
@@ -213,6 +219,17 @@ check_renderer() {
     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
@@ -233,7 +250,9 @@ if [ "$GALLIUM_DRIVER" = "virpipe" ]; then
     sleep 1
 fi
 
-if [ $DEQP_VER != vk ]; then
+if [ $DEQP_VER = vk ]; then
+    quiet check_vk_device_name
+else
     quiet check_renderer
 fi