diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b150c44dff2..b59c3e78a5f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -407,7 +407,7 @@ debian/android_build: 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: @@ -480,7 +480,7 @@ fedora/x86_build: 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 diff --git a/.gitlab-ci/container/build-deqp-runner.sh b/.gitlab-ci/container/build-deqp-runner.sh index 532e71cf5d4..3c12f433739 100644 --- a/.gitlab-ci/container/build-deqp-runner.sh +++ b/.gitlab-ci/container/build-deqp-runner.sh @@ -4,6 +4,6 @@ set -ex cargo install --locked deqp-runner \ -j ${FDO_CI_CONCURRENT:-4} \ - --version 0.7.2 \ + --version 0.8.2 \ --root /usr/local \ $EXTRA_CARGO_ARGS diff --git a/.gitlab-ci/deqp-runner.sh b/.gitlab-ci/deqp-runner.sh index e9c02f4a26a..cc4a539e2b3 100755 --- a/.gitlab-ci/deqp-runner.sh +++ b/.gitlab-ci/deqp-runner.sh @@ -47,47 +47,51 @@ HANG_DETECTION_CMD="" # 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 [ ! -s /tmp/case-list.txt ]; then - echo "Caselist generation failed" - exit 1 + 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 + fi fi if [ -e "$INSTALL/deqp-$GPU_VERSION-fails.txt" ]; then @@ -116,25 +120,6 @@ if [ -n "$DEQP_NO_SAVE_RESULTS" ]; 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 '||g' | sed 's|||g'` VERSION=`grep -A1 TestCaseResult.\*info.version $RESULTS/deqp-info.qpa | grep '||g' | sed 's|||g'` @@ -214,7 +199,35 @@ FAILURES_CSV=$RESULTS/failures.csv 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= diff --git a/.gitlab-ci/prepare-artifacts.sh b/.gitlab-ci/prepare-artifacts.sh index a9a47daedb0..393329effc4 100755 --- a/.gitlab-ci/prepare-artifacts.sh +++ b/.gitlab-ci/prepare-artifacts.sh @@ -38,6 +38,7 @@ cp -Rp .gitlab-ci/deqp-*.txt install/ 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/ diff --git a/src/gallium/drivers/softpipe/ci/deqp-softpipe.toml b/src/gallium/drivers/softpipe/ci/deqp-softpipe.toml new file mode 100644 index 00000000000..a5995e6fe69 --- /dev/null +++ b/src/gallium/drivers/softpipe/ci/deqp-softpipe.toml @@ -0,0 +1,51 @@ +[[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" +] diff --git a/src/gallium/drivers/softpipe/ci/gitlab-ci.yml b/src/gallium/drivers/softpipe/ci/gitlab-ci.yml index 7f21bde882e..fdb925e1b1c 100644 --- a/src/gallium/drivers/softpipe/ci/gitlab-ci.yml +++ b/src/gallium/drivers/softpipe/ci/gitlab-ci.yml @@ -1,38 +1,21 @@ -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: @@ -40,7 +23,7 @@ softpipe-asan-gles31: 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 @@ -86,12 +69,3 @@ softpipe-piglit-quick: -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