debian/x86_test-base:
extends: debian/x86_build-base
variables:
- MESA_IMAGE_TAG: &debian-x86_test-base "2021-07-02-bump-libdrm"
+ MESA_IMAGE_TAG: &debian-x86_test-base "2021-07-30-deqp-runner"
.use-debian/x86_test-base:
extends:
variables:
GIT_STRATEGY: fetch
KERNEL_URL: *kernel-rootfs-url
- MESA_ROOTFS_TAG: &kernel-rootfs "2021-08-02-rust-bump"
+ MESA_ROOTFS_TAG: &kernel-rootfs "2021-08-03-deqp-runner"
DISTRIBUTION_TAG: &distribution-tag-arm "${MESA_ROOTFS_TAG}--${MESA_ARTIFACTS_TAG}--${MESA_TEMPLATES_COMMIT}"
script:
- .gitlab-ci/container/lava_build.sh
cargo install --locked deqp-runner \
-j ${FDO_CI_CONCURRENT:-4} \
- --version 0.7.2 \
+ --version 0.8.2 \
--root /usr/local \
$EXTRA_CARGO_ARGS
# Generate test case list file.
if [ "$DEQP_VER" = "vk" ]; then
- cp /deqp/mustpass/vk-$DEQP_VARIANT.txt /tmp/case-list.txt
+ MUSTPASS=/deqp/mustpass/vk-$DEQP_VARIANT.txt
DEQP=/deqp/external/vulkancts/modules/vulkan/deqp-vk
HANG_DETECTION_CMD="/parallel-deqp-runner/build/bin/hang-detection"
elif [ "$DEQP_VER" = "gles2" -o "$DEQP_VER" = "gles3" -o "$DEQP_VER" = "gles31" -o "$DEQP_VER" = "egl" ]; then
- cp /deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt /tmp/case-list.txt
+ MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
DEQP=/deqp/modules/$DEQP_VER/deqp-$DEQP_VER
SUITE=dEQP
elif [ "$DEQP_VER" = "gles2-khr" -o "$DEQP_VER" = "gles3-khr" -o "$DEQP_VER" = "gles31-khr" -o "$DEQP_VER" = "gles32-khr" ]; then
- cp /deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt /tmp/case-list.txt
+ MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
DEQP=/deqp/external/openglcts/modules/glcts
SUITE=dEQP
else
- cp /deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt /tmp/case-list.txt
+ MUSTPASS=/deqp/mustpass/$DEQP_VER-$DEQP_VARIANT.txt
DEQP=/deqp/external/openglcts/modules/glcts
SUITE=KHR
fi
-# If the caselist is too long to run in a reasonable amount of time, let the job
-# specify what fraction (1/n) of the caselist we should run. Note: N~M is a gnu
-# sed extension to match every nth line (first line is #1).
-if [ -n "$DEQP_FRACTION" ]; then
- sed -ni 1~$DEQP_FRACTION"p" /tmp/case-list.txt
-fi
+if [ -z "$DEQP_SUITE" ]; then
+ cp $MUSTPASS /tmp/case-list.txt
-# If the job is parallel at the gitab job level, take the corresponding fraction
-# of the caselist.
-if [ -n "$CI_NODE_INDEX" ]; then
- sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt
-fi
+ # If the caselist is too long to run in a reasonable amount of time, let the job
+ # specify what fraction (1/n) of the caselist we should run. Note: N~M is a gnu
+ # sed extension to match every nth line (first line is #1).
+ if [ -n "$DEQP_FRACTION" ]; then
+ sed -ni 1~$DEQP_FRACTION"p" /tmp/case-list.txt
+ fi
-if [ -n "$DEQP_CASELIST_FILTER" ]; then
- sed -ni "/$DEQP_CASELIST_FILTER/p" /tmp/case-list.txt
-fi
+ # If the job is parallel at the gitab job level, take the corresponding fraction
+ # of the caselist.
+ if [ -n "$CI_NODE_INDEX" ]; then
+ sed -ni $CI_NODE_INDEX~$CI_NODE_TOTAL"p" /tmp/case-list.txt
+ fi
-if [ -n "$DEQP_CASELIST_INV_FILTER" ]; then
- sed -ni "/$DEQP_CASELIST_INV_FILTER/!p" /tmp/case-list.txt
-fi
+ if [ -n "$DEQP_CASELIST_FILTER" ]; then
+ sed -ni "/$DEQP_CASELIST_FILTER/p" /tmp/case-list.txt
+ fi
+
+ if [ -n "$DEQP_CASELIST_INV_FILTER" ]; then
+ sed -ni "/$DEQP_CASELIST_INV_FILTER/!p" /tmp/case-list.txt
+ fi
-if [ ! -s /tmp/case-list.txt ]; then
- echo "Caselist generation failed"
- exit 1
+ if [ ! -s /tmp/case-list.txt ]; then
+ echo "Caselist generation failed"
+ exit 1
+ fi
fi
if [ -e "$INSTALL/deqp-$GPU_VERSION-fails.txt" ]; then
SUMMARY_LIMIT="--summary-limit 0"
fi
-run_cts() {
- deqp=$1
- caselist=$2
- output=$3
- deqp-runner \
- run \
- --deqp $deqp \
- --output $RESULTS \
- --caselist $caselist \
- --skips $INSTALL/deqp-all-skips.txt $DEQP_SKIPS \
- --flakes $INSTALL/deqp-$GPU_VERSION-flakes.txt \
- --testlog-to-xml /deqp/executor/testlog-to-xml \
- $JOB \
- $SUMMARY_LIMIT \
- $DEQP_RUNNER_OPTIONS \
- -- \
- $DEQP_OPTIONS
-}
-
parse_renderer() {
RENDERER=`grep -A1 TestCaseResult.\*info.renderer $RESULTS/deqp-info.qpa | grep '<Text' | sed 's|.*<Text>||g' | sed 's|</Text>||g'`
VERSION=`grep -A1 TestCaseResult.\*info.version $RESULTS/deqp-info.qpa | grep '<Text' | sed 's|.*<Text>||g' | sed 's|</Text>||g'`
export LD_PRELOAD=$TEST_LD_PRELOAD
-run_cts $DEQP /tmp/case-list.txt $RESULTS_CSV
+if [ -z "$DEQP_SUITE" ]; then
+ deqp-runner \
+ run \
+ --deqp $DEQP \
+ --output $RESULTS \
+ --caselist /tmp/case-list.txt \
+ --skips $INSTALL/deqp-all-skips.txt $DEQP_SKIPS \
+ --flakes $INSTALL/deqp-$GPU_VERSION-flakes.txt \
+ --testlog-to-xml /deqp/executor/testlog-to-xml \
+ $JOB \
+ $SUMMARY_LIMIT \
+ $DEQP_RUNNER_OPTIONS \
+ -- \
+ $DEQP_OPTIONS
+else
+ deqp-runner \
+ suite \
+ --suite $INSTALL/deqp-$DEQP_SUITE.toml \
+ --output $RESULTS \
+ --skips $INSTALL/deqp-all-skips.txt $DEQP_SKIPS \
+ --flakes $INSTALL/deqp-$GPU_VERSION-flakes.txt \
+ --testlog-to-xml /deqp/executor/testlog-to-xml \
+ --fraction-start $CI_NODE_INDEX \
+ --fraction $CI_NODE_TOTAL \
+ $JOB \
+ $SUMMARY_LIMIT \
+ $DEQP_RUNNER_OPTIONS
+fi
+
DEQP_EXITCODE=$?
export LD_PRELOAD=
cp -Rp .gitlab-ci/report-flakes.py install/
cp -Rp .gitlab-ci/vkd3d-proton install/
find . -path \*/ci/\*.txt \
+ -o -path \*/ci/\*.toml \
-o -path \*/ci/\*traces\*.yml \
| xargs -I '{}' cp -p '{}' install/
--- /dev/null
+[[deqp]]
+deqp = "/deqp/modules/gles2/deqp-gles2"
+caselists = ["/deqp/mustpass/gles2-master.txt"]
+deqp_args = [
+ "--deqp-surface-width=256",
+ "--deqp-surface-height=256",
+ "--deqp-surface-type=pbuffer",
+ "--deqp-gl-config-name=rgba8888d24s8ms0",
+ "--deqp-visibility=hidden"
+]
+
+[[deqp]]
+deqp = "/deqp/modules/gles3/deqp-gles3"
+caselists = ["/deqp/mustpass/gles3-master.txt"]
+deqp_args = [
+ "--deqp-surface-width=256",
+ "--deqp-surface-height=256",
+ "--deqp-surface-type=pbuffer",
+ "--deqp-gl-config-name=rgba8888d24s8ms0",
+ "--deqp-visibility=hidden"
+]
+
+[[deqp]]
+deqp = "/deqp/modules/gles31/deqp-gles31"
+caselists = ["/deqp/mustpass/gles31-master.txt"]
+deqp_args = [
+ "--deqp-surface-width=256",
+ "--deqp-surface-height=256",
+ "--deqp-surface-type=pbuffer",
+ "--deqp-gl-config-name=rgba8888d24s8ms0",
+ "--deqp-visibility=hidden"
+]
+
+# Note that KHR-GL3* test sets include all tests from the previous
+# version, so we only need to run one test list (unlike dEQP-GLES,
+# where the test sets are separate).
+[[deqp]]
+deqp = "/deqp/external/openglcts/modules/glcts"
+caselists = [
+ "/deqp/mustpass/gles2-khr-master.txt",
+ "/deqp/mustpass/gles3-khr-master.txt",
+ "/deqp/mustpass/gles31-khr-master.txt",
+ "/deqp/mustpass/gl33-master.txt",
+]
+deqp_args = [
+ "--deqp-surface-width=256",
+ "--deqp-surface-height=256",
+ "--deqp-surface-type=pbuffer",
+ "--deqp-gl-config-name=rgba8888d24s8ms0",
+ "--deqp-visibility=hidden"
+]
-softpipe-gles2:
+.softpipe-deqp-test:
extends:
- - llvmpipe-gles2
- .softpipe-rules
+ - .test-gl
+ - .deqp-test
variables:
GPU_VERSION: softpipe
+ LIBGL_ALWAYS_SOFTWARE: "true"
GALLIUM_DRIVER: "softpipe"
DEQP_EXPECTED_RENDERER: softpipe
FLAKES_CHANNEL: "#mesa-swrast-ci"
-softpipe-gles3:
+softpipe-deqp:
variables:
- DEQP_VER: gles3
- extends: softpipe-gles2
-
-softpipe-gles31:
+ DEQP_VER: gles2 # for the renderer check
+ DEQP_SUITE: softpipe
parallel: 2
- variables:
- DEQP_VER: gles31
- extends: softpipe-gles2
-
-softpipe-khr-gles2:
- variables:
- DEQP_VER: gles2-khr
- extends: softpipe-gles2
-
-softpipe-khr-gles3:
- variables:
- DEQP_VER: gles3-khr
- extends: softpipe-gles2
-
-softpipe-khr-gles31:
- variables:
- DEQP_VER: gles31-khr
- extends: softpipe-gles2
+ extends: .softpipe-deqp-test
softpipe-asan-gles31:
variables:
DEQP_FRACTION: 10
DEQP_VER: gles31
TEST_LD_PRELOAD: libasan.so.6
- extends: softpipe-gles2
+ extends: .softpipe-deqp-test
needs:
- debian/x86_test-gl
- debian-testing-asan
-x glsl-uniform-interstage-limits
PIGLIT_PROFILES: quick_gl quick_shader
PIGLIT_RESULTS: softpipe-quick
-
-# Note that KHR-GL3* test sets include all tests from the previous
-# version, so we only need to run one test list (unlike dEQP-GLES,
-# where the test sets are separate).
-softpipe-gl:
- variables:
- DEQP_VER: gl33
- extends:
- - softpipe-gles2