aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci')
-rw-r--r--.gitlab-ci/build-cts-runner.sh10
-rw-r--r--.gitlab-ci/debian-arm64-test-install.sh8
-rw-r--r--.gitlab-ci/debian-test-install.sh5
-rw-r--r--.gitlab-ci/deqp-freedreno-a630-skips.txt3
-rwxr-xr-x.gitlab-ci/deqp-runner.sh101
5 files changed, 48 insertions, 79 deletions
diff --git a/.gitlab-ci/build-cts-runner.sh b/.gitlab-ci/build-cts-runner.sh
new file mode 100644
index 00000000000..2622819f2e5
--- /dev/null
+++ b/.gitlab-ci/build-cts-runner.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+set -ex
+
+git clone https://github.com/anholt/cts_runner.git --depth 1 -b anholt-mesa-ci-2
+cd cts_runner
+meson build/
+ninja -C build -j4 install
+cd ..
+rm -rf cts_runner
diff --git a/.gitlab-ci/debian-arm64-test-install.sh b/.gitlab-ci/debian-arm64-test-install.sh
index b59d6646ebb..2ea6327cb84 100644
--- a/.gitlab-ci/debian-arm64-test-install.sh
+++ b/.gitlab-ci/debian-arm64-test-install.sh
@@ -23,13 +23,20 @@ apt-get -y install \
libllvm8 \
libpng16-16 \
libpng-dev \
+ libvulkan-dev \
+ libvulkan1 \
meson \
pkg-config \
procps \
python \
+ waffle-utils \
wget \
zlib1g
+############### Build dEQP runner
+
+. .gitlab-ci/build-cts-runner.sh
+
############### Build dEQP
. .gitlab-ci/build-deqp.sh
@@ -47,6 +54,7 @@ apt-get purge -y \
libgbm-dev \
libgles2-mesa-dev \
libpng-dev \
+ libvulkan-dev \
meson \
pkg-config \
python \
diff --git a/.gitlab-ci/debian-test-install.sh b/.gitlab-ci/debian-test-install.sh
index 4af73993519..59dcbbd064b 100644
--- a/.gitlab-ci/debian-test-install.sh
+++ b/.gitlab-ci/debian-test-install.sh
@@ -32,6 +32,7 @@ apt-get install -y --no-remove \
libpng16-16 \
libpng-dev \
libvulkan1 \
+ libvulkan-dev \
libwaffle-dev \
libwayland-server0 \
libxcb-xfixes0 \
@@ -65,6 +66,10 @@ rm -rf target_api
popd
+############### Build dEQP runner
+
+. .gitlab-ci/build-cts-runner.sh
+
############### Build dEQP
. .gitlab-ci/build-deqp.sh
diff --git a/.gitlab-ci/deqp-freedreno-a630-skips.txt b/.gitlab-ci/deqp-freedreno-a630-skips.txt
index 65d340c3687..477f4bd06e0 100644
--- a/.gitlab-ci/deqp-freedreno-a630-skips.txt
+++ b/.gitlab-ci/deqp-freedreno-a630-skips.txt
@@ -27,3 +27,6 @@ dEQP-GLES3.functional.texture.specification.texsubimage2d_pbo.r16ui_2d
# Layered rendering is sysmem only and needs working clears
dEQP-GLES31.functional.geometry_shading.layered.*
dEQP-GLES31.functional.geometry_shading.instanced.*layer.*
+
+# Intermittent timeout
+dEQP-GLES31.functional.ssbo.layout.random.all_shared_buffer.23
diff --git a/.gitlab-ci/deqp-runner.sh b/.gitlab-ci/deqp-runner.sh
index 822665ca66e..2e93a643a36 100755
--- a/.gitlab-ci/deqp-runner.sh
+++ b/.gitlab-ci/deqp-runner.sh
@@ -6,8 +6,6 @@ DEQP_OPTIONS=(--deqp-surface-width=256 --deqp-surface-height=256)
DEQP_OPTIONS+=(--deqp-surface-type=pbuffer)
DEQP_OPTIONS+=(--deqp-gl-config-name=rgba8888d24s8ms0)
DEQP_OPTIONS+=(--deqp-visibility=hidden)
-DEQP_OPTIONS+=(--deqp-log-images=disable)
-DEQP_OPTIONS+=(--deqp-crashhandler=enable)
# It would be nice to be able to enable the watchdog, so that hangs in a test
# don't need to wait the full hour for the run to time out. However, some
@@ -26,20 +24,7 @@ if [ -z "$DEQP_SKIPS" ]; then
exit 1
fi
-# Prep the expected failure list
-if [ -n "$DEQP_EXPECTED_FAILS" ]; then
- export DEQP_EXPECTED_FAILS=`pwd`/artifacts/$DEQP_EXPECTED_FAILS
-else
- export DEQP_EXPECTED_FAILS=/tmp/expect-no-failures.txt
- touch $DEQP_EXPECTED_FAILS
-fi
-sort < $DEQP_EXPECTED_FAILS > /tmp/expected-fails.txt
-
-# Fix relative paths on inputs.
-export DEQP_SKIPS=`pwd`/artifacts/$DEQP_SKIPS
-
-# Be a good citizen on the shared runners.
-export LP_NUM_THREADS=4
+ARTIFACTS=`pwd`/artifacts
# Set up the driver environment.
export LD_LIBRARY_PATH=`pwd`/install/lib/
@@ -52,19 +37,9 @@ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
RESULTS=`pwd`/results
mkdir -p $RESULTS
-cd /deqp/modules/$DEQP_VER
-
# Generate test case list file
cp /deqp/mustpass/$DEQP_VER-master.txt /tmp/case-list.txt
-# Note: not using sorted input and comm, becuase I want to run the tests in
-# the same order that dEQP would.
-while read -r line; do
- if echo "$line" | grep -q '^[^#]'; then
- sed -i "/$line/d" /tmp/case-list.txt
- fi
-done < $DEQP_SKIPS
-
# If the job is parallel, take the corresponding fraction of the caselist.
# Note: N~M is a gnu sed extension to match every nth line (first line is #1).
if [ -n "$CI_NODE_INDEX" ]; then
@@ -76,61 +51,29 @@ if [ ! -s /tmp/case-list.txt ]; then
exit 1
fi
-# Cannot use tee because dash doesn't have pipefail
-touch /tmp/result.txt
-tail -f /tmp/result.txt &
-
-./deqp-$DEQP_VER "${DEQP_OPTIONS[@]}" --deqp-log-filename=$RESULTS/results.qpa --deqp-caselist-file=/tmp/case-list.txt >> /tmp/result.txt
-DEQP_EXITCODE=$?
-
-sed -ne \
- '/StatusCode="Fail"/{x;p}; s/#beginTestCaseResult //; T; h' \
- $RESULTS/results.qpa \
- > /tmp/unsorted-fails.txt
-
-# Scrape out the renderer that the test run used, so we can validate that the
-# right driver was used.
-if grep -q "dEQP-.*.info.renderer" /tmp/case-list.txt; then
- # This is an ugly dependency on the .qpa format: Print 3 lines after the
- # match, which happens to contain the result.
- RENDERER=`sed -n '/#beginTestCaseResult dEQP-.*.info.renderer/{n;n;n;p}' $RESULTS/results.qpa | sed -n -E "s|<Text>(.*)</Text>|\1|p"`
-
- echo "GL_RENDERER for this test run: $RENDERER"
-
- if [ -n "$DEQP_RENDERER_MATCH" ]; then
- echo $RENDERER | grep -q $DEQP_RENDERER_MATCH > /dev/null
- fi
+if [ -n "$DEQP_EXPECTED_FAILS" ]; then
+ XFAIL="--xfail-list $ARTIFACTS/$DEQP_EXPECTED_FAILS"
fi
-if grep -q "dEQP-.*.info.version" /tmp/case-list.txt; then
- # This is an ugly dependency on the .qpa format: Print 3 lines after the
- # match, which happens to contain the result.
- VERSION=`sed -n '/#beginTestCaseResult dEQP-.*.info.version/{n;n;n;p}' $RESULTS/results.qpa | sed -n -E "s|<Text>(.*)</Text>|\1|p"`
- echo "Driver version tested: $VERSION"
-fi
+set +e
+
+vulkan-cts-runner \
+ --deqp /deqp/modules/$DEQP_VER/deqp-$DEQP_VER \
+ --output $RESULTS/cts-runner-results.txt \
+ --caselist /tmp/case-list.txt \
+ --exclude-list $ARTIFACTS/$DEQP_SKIPS \
+ $XFAIL \
+ --job ${DEQP_PARALLEL:-1} \
+ -- \
+ "${DEQP_OPTIONS[@]}"
+DEQP_EXITCODE=$?
if [ $DEQP_EXITCODE -ne 0 ]; then
- exit $DEQP_EXITCODE
-fi
-
-sort < /tmp/unsorted-fails.txt > $RESULTS/fails.txt
-
-comm -23 $RESULTS/fails.txt /tmp/expected-fails.txt > /tmp/new-fails.txt
-if [ -s /tmp/new-fails.txt ]; then
- echo "Unexpected failures:"
- cat /tmp/new-fails.txt
- exit 1
-else
- echo "No new failures"
-fi
-
-sort /tmp/case-list.txt > /tmp/sorted-case-list.txt
-comm -12 /tmp/sorted-case-list.txt /tmp/expected-fails.txt > /tmp/expected-fails-in-caselist.txt
-comm -13 $RESULTS/fails.txt /tmp/expected-fails-in-caselist.txt > /tmp/new-passes.txt
-if [ -s /tmp/new-passes.txt ]; then
- echo "Unexpected passes, please update $DEQP_EXPECTED_FAILS (or add flaky tests to $DEQP_SKIPS):"
- cat /tmp/new-passes.txt
- exit 1
-else
- echo "No new passes"
+ echo "Some unexpected results found (see cts-runner-results.txt in artifacts for full results):"
+ cat $RESULTS/cts-runner-results.txt | \
+ grep -v ",Pass" | \
+ grep -v ",Skip" | \
+ grep -v ",ExpectedFail" | \
+ head -n 50
+ exit $DEQP_EXITCODE
fi