2023-04-13 03:29:51 +08:00
|
|
|
#!/usr/bin/env bash
|
2022-07-16 22:40:04 +08:00
|
|
|
# shellcheck disable=SC2086 # we want word splitting
|
2020-02-20 21:30:36 +08:00
|
|
|
|
2023-04-12 21:46:36 +08:00
|
|
|
# When changing this file, you need to bump the following
|
|
|
|
# .gitlab-ci/image-tags.yml tags:
|
2023-05-27 01:10:57 +08:00
|
|
|
# DEBIAN_X86_64_TEST_ANDROID_TAG
|
|
|
|
# DEBIAN_X86_64_TEST_GL_TAG
|
|
|
|
# DEBIAN_X86_64_TEST_VK_TAG
|
2023-04-12 21:46:36 +08:00
|
|
|
# KERNEL_ROOTFS_TAG
|
|
|
|
|
2023-11-03 01:50:31 +08:00
|
|
|
set -ex -o pipefail
|
2020-02-20 21:30:36 +08:00
|
|
|
|
2023-11-03 01:22:14 +08:00
|
|
|
|
2024-01-20 01:27:08 +08:00
|
|
|
DEQP_VERSION=vulkan-cts-1.3.7.0
|
2023-11-03 01:20:01 +08:00
|
|
|
|
2023-04-13 17:51:29 +08:00
|
|
|
# Patches to VulkanCTS may come from commits in their repo (listed in
|
|
|
|
# cts_commits_to_backport) or patch files stored in our repo (in the patch
|
|
|
|
# directory `$OLDPWD/.gitlab-ci/container/patches/` listed in cts_patch_files).
|
|
|
|
# Both list variables would have comments explaining the reasons behind the
|
|
|
|
# patches.
|
|
|
|
|
2024-01-22 02:10:21 +08:00
|
|
|
# shellcheck disable=SC2034
|
|
|
|
vk_cts_commits_to_backport=(
|
2023-11-07 01:54:11 +08:00
|
|
|
# Take multiview into account for task shader inv. stats
|
|
|
|
22aa3f4c59f6e1d4daebd5a8c9c05bce6cd3b63b
|
|
|
|
|
|
|
|
# Remove illegal mesh shader query tests
|
|
|
|
2a87f7b25dc27188be0f0a003b2d7aef69d9002e
|
2023-12-22 18:52:29 +08:00
|
|
|
|
|
|
|
# Relax fragment shader invocations result verifications
|
|
|
|
0d8bf6a2715f95907e9cf86a86876ff1f26c66fe
|
|
|
|
|
|
|
|
# Fix several issues in dynamic rendering basic tests
|
|
|
|
c5453824b498c981c6ba42017d119f5de02a3e34
|
2023-03-15 02:46:11 +08:00
|
|
|
)
|
2023-02-18 01:09:28 +08:00
|
|
|
|
2024-01-22 02:10:21 +08:00
|
|
|
# shellcheck disable=SC2034
|
|
|
|
vk_cts_patch_files=(
|
|
|
|
# Change zlib URL because the one from zlib.net requires a human-verification
|
|
|
|
# Forward-port of b61f15f09adb6b7c9eefc7f7c44612c0c390abe5 into modern dEQP codebase
|
|
|
|
build-deqp_Change-zlib-URL-because-the-one-from-zlib.net-requir.patch
|
2024-01-29 01:12:06 +08:00
|
|
|
|
|
|
|
# Derivate subgroup fix
|
|
|
|
# https://github.com/KhronosGroup/VK-GL-CTS/pull/442
|
|
|
|
build-deqp_Use-subgroups-helper-in-derivate-tests.patch
|
|
|
|
build-deqp_Add-missing-subgroup-support-checks-for-linear-derivate-tests.patch
|
2024-01-22 02:10:21 +08:00
|
|
|
)
|
|
|
|
|
2024-02-05 23:20:47 +08:00
|
|
|
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
|
|
vk_cts_patch_files+=(
|
|
|
|
build-deqp_Allow-running-on-Android-from-the-command-line.patch
|
|
|
|
build-deqp_Android-prints-to-stdout-instead-of-logcat.patch
|
|
|
|
)
|
|
|
|
fi
|
|
|
|
|
2024-01-22 02:10:21 +08:00
|
|
|
# shellcheck disable=SC2034
|
|
|
|
gl_cts_commits_to_backport=(
|
|
|
|
)
|
|
|
|
|
|
|
|
# shellcheck disable=SC2034
|
|
|
|
gl_cts_patch_files=(
|
2024-01-19 23:32:25 +08:00
|
|
|
# Change zlib URL because the one from zlib.net requires a human-verification
|
|
|
|
# Forward-port of b61f15f09adb6b7c9eefc7f7c44612c0c390abe5 into modern dEQP codebase
|
|
|
|
build-deqp_Change-zlib-URL-because-the-one-from-zlib.net-requir.patch
|
2023-04-13 17:51:29 +08:00
|
|
|
)
|
2023-02-17 22:57:35 +08:00
|
|
|
|
2024-02-05 23:20:47 +08:00
|
|
|
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
|
|
gl_cts_patch_files+=(
|
|
|
|
build-deqp_Allow-running-on-Android-from-the-command-line.patch
|
|
|
|
build-deqp_Android-prints-to-stdout-instead-of-logcat.patch
|
|
|
|
)
|
|
|
|
fi
|
|
|
|
|
2024-01-20 01:27:08 +08:00
|
|
|
|
|
|
|
### Careful editing anything below this line
|
|
|
|
|
|
|
|
|
|
|
|
git config --global user.email "mesa@example.com"
|
|
|
|
git config --global user.name "Mesa CI"
|
|
|
|
git clone \
|
|
|
|
https://github.com/KhronosGroup/VK-GL-CTS.git \
|
|
|
|
-b $DEQP_VERSION \
|
|
|
|
--depth 1 \
|
|
|
|
/VK-GL-CTS
|
|
|
|
pushd /VK-GL-CTS
|
|
|
|
|
|
|
|
mkdir -p /deqp
|
|
|
|
|
2024-01-22 02:10:21 +08:00
|
|
|
# shellcheck disable=SC2153
|
|
|
|
deqp_api=${DEQP_API,,}
|
|
|
|
|
|
|
|
cts_commits_to_backport="${deqp_api}_cts_commits_to_backport[@]"
|
|
|
|
for commit in "${!cts_commits_to_backport}"
|
2024-01-20 01:27:08 +08:00
|
|
|
do
|
|
|
|
PATCH_URL="https://github.com/KhronosGroup/VK-GL-CTS/commit/$commit.patch"
|
2024-01-22 02:10:21 +08:00
|
|
|
echo "Apply patch to ${DEQP_API} CTS from $PATCH_URL"
|
2024-01-20 01:27:08 +08:00
|
|
|
curl -L --retry 4 -f --retry-all-errors --retry-delay 60 $PATCH_URL | \
|
|
|
|
git am -
|
|
|
|
done
|
|
|
|
|
2024-01-22 02:10:21 +08:00
|
|
|
cts_patch_files="${deqp_api}_cts_patch_files[@]"
|
|
|
|
for patch in "${!cts_patch_files}"
|
2023-04-13 17:51:29 +08:00
|
|
|
do
|
2024-01-22 02:10:21 +08:00
|
|
|
echo "Apply patch to ${DEQP_API} CTS from $patch"
|
2023-04-13 17:51:29 +08:00
|
|
|
git am < $OLDPWD/.gitlab-ci/container/patches/$patch
|
|
|
|
done
|
2023-02-17 22:57:35 +08:00
|
|
|
|
2024-01-22 15:27:54 +08:00
|
|
|
{
|
|
|
|
echo "dEQP base version $DEQP_VERSION"
|
|
|
|
echo "The following local patches are applied on top:"
|
|
|
|
git log --reverse --oneline $DEQP_VERSION.. --format=%s | sed 's/^/- /'
|
2024-01-22 02:10:21 +08:00
|
|
|
} > /deqp/version-$deqp_api
|
2023-11-03 01:24:00 +08:00
|
|
|
|
2019-11-18 16:26:00 +08:00
|
|
|
# --insecure is due to SSL cert failures hitting sourceforge for zlib and
|
|
|
|
# libpng (sigh). The archives get their checksums checked anyway, and git
|
|
|
|
# always goes through ssh or https.
|
|
|
|
python3 external/fetch_sources.py --insecure
|
|
|
|
|
2020-05-29 03:50:51 +08:00
|
|
|
# Save the testlog stylesheets:
|
|
|
|
cp doc/testlog-stylesheet/testlog.{css,xsl} /deqp
|
2020-02-20 21:30:36 +08:00
|
|
|
popd
|
|
|
|
|
|
|
|
pushd /deqp
|
2021-04-03 01:31:28 +08:00
|
|
|
|
2024-01-22 15:45:08 +08:00
|
|
|
if [ "${DEQP_API}" = 'GL' ] && [ "${DEQP_TARGET}" != 'android' ]; then
|
2022-11-22 01:31:39 +08:00
|
|
|
# When including EGL/X11 testing, do that build first and save off its
|
|
|
|
# deqp-egl binary.
|
|
|
|
cmake -S /VK-GL-CTS -B . -G Ninja \
|
|
|
|
-DDEQP_TARGET=x11_egl_glx \
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
$EXTRA_CMAKE_ARGS
|
|
|
|
ninja modules/egl/deqp-egl
|
2023-04-12 18:10:19 +08:00
|
|
|
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-x11
|
2022-11-22 01:31:39 +08:00
|
|
|
|
|
|
|
cmake -S /VK-GL-CTS -B . -G Ninja \
|
|
|
|
-DDEQP_TARGET=wayland \
|
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
|
|
$EXTRA_CMAKE_ARGS
|
|
|
|
ninja modules/egl/deqp-egl
|
2023-04-12 18:10:19 +08:00
|
|
|
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-wayland
|
2022-11-22 01:31:39 +08:00
|
|
|
fi
|
2021-04-03 01:31:28 +08:00
|
|
|
|
2020-11-09 23:35:46 +08:00
|
|
|
cmake -S /VK-GL-CTS -B . -G Ninja \
|
2024-01-23 15:51:50 +08:00
|
|
|
-DDEQP_TARGET=${DEQP_TARGET} \
|
2019-11-18 16:26:00 +08:00
|
|
|
-DCMAKE_BUILD_TYPE=Release \
|
2020-11-09 23:35:46 +08:00
|
|
|
$EXTRA_CMAKE_ARGS
|
2024-01-11 05:50:45 +08:00
|
|
|
|
|
|
|
# Make sure `default` doesn't silently stop detecting one of the platforms we care about
|
2024-01-23 15:51:50 +08:00
|
|
|
if [ "${DEQP_TARGET}" = 'default' ]; then
|
2024-01-11 05:50:45 +08:00
|
|
|
grep -q DEQP_SUPPORT_WAYLAND=1 build.ninja
|
|
|
|
grep -q DEQP_SUPPORT_X11=1 build.ninja
|
|
|
|
grep -q DEQP_SUPPORT_XCB=1 build.ninja
|
|
|
|
fi
|
|
|
|
|
2024-01-23 02:21:32 +08:00
|
|
|
deqp_build_targets=()
|
|
|
|
case "${DEQP_API}" in
|
|
|
|
VK)
|
|
|
|
deqp_build_targets+=(deqp-vk)
|
|
|
|
;;
|
|
|
|
GL)
|
|
|
|
deqp_build_targets+=(glcts)
|
|
|
|
deqp_build_targets+=(deqp-gles{2,3,31})
|
|
|
|
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
|
|
deqp_build_targets+=(deqp-egl)
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
if [ "${DEQP_TARGET}" != 'android' ]; then
|
|
|
|
deqp_build_targets+=(testlog-to-xml)
|
|
|
|
deqp_build_targets+=(testlog-to-csv)
|
|
|
|
deqp_build_targets+=(testlog-to-junit)
|
|
|
|
fi
|
|
|
|
|
|
|
|
mold --run ninja "${deqp_build_targets[@]}"
|
2019-11-18 16:26:00 +08:00
|
|
|
|
2023-04-12 18:07:04 +08:00
|
|
|
if [ "${DEQP_TARGET}" = 'android' ]; then
|
|
|
|
mv /deqp/modules/egl/deqp-egl /deqp/modules/egl/deqp-egl-android
|
|
|
|
fi
|
|
|
|
|
2022-11-22 01:31:39 +08:00
|
|
|
if [ "${DEQP_TARGET}" != 'android' ]; then
|
2024-01-22 01:56:27 +08:00
|
|
|
# Copy out the mustpass lists we want.
|
2024-01-22 02:10:21 +08:00
|
|
|
mkdir -p /deqp/mustpass
|
2024-01-22 15:46:05 +08:00
|
|
|
|
|
|
|
if [ "${DEQP_API}" = 'VK' ]; then
|
|
|
|
for mustpass in $(< /VK-GL-CTS/external/vulkancts/mustpass/main/vk-default.txt) ; do
|
|
|
|
cat /VK-GL-CTS/external/vulkancts/mustpass/main/$mustpass \
|
|
|
|
>> /deqp/mustpass/vk-master.txt
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "${DEQP_API}" = 'GL' ]; then
|
|
|
|
cp \
|
|
|
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/*.txt \
|
|
|
|
/deqp/mustpass/.
|
|
|
|
cp \
|
|
|
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/egl/aosp_mustpass/3.2.6.x/egl-master.txt \
|
|
|
|
/deqp/mustpass/.
|
|
|
|
cp \
|
|
|
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gles/khronos_mustpass/3.2.6.x/*-master.txt \
|
|
|
|
/deqp/mustpass/.
|
|
|
|
cp \
|
|
|
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass/4.6.1.x/*-master.txt \
|
|
|
|
/deqp/mustpass/.
|
|
|
|
cp \
|
|
|
|
/deqp/external/openglcts/modules/gl_cts/data/mustpass/gl/khronos_mustpass_single/4.6.1.x/*-single.txt \
|
|
|
|
/deqp/mustpass/.
|
|
|
|
fi
|
2022-11-22 01:31:39 +08:00
|
|
|
|
|
|
|
# Save *some* executor utils, but otherwise strip things down
|
|
|
|
# to reduct deqp build size:
|
|
|
|
mkdir /deqp/executor.save
|
|
|
|
cp /deqp/executor/testlog-to-* /deqp/executor.save
|
|
|
|
rm -rf /deqp/executor
|
|
|
|
mv /deqp/executor.save /deqp/executor
|
|
|
|
fi
|
2020-05-29 03:50:51 +08:00
|
|
|
|
2022-01-08 01:44:43 +08:00
|
|
|
# Remove other mustpass files, since we saved off the ones we wanted to conventient locations above.
|
2020-08-27 07:57:44 +08:00
|
|
|
rm -rf /deqp/external/openglcts/modules/gl_cts/data/mustpass
|
2022-01-08 01:44:43 +08:00
|
|
|
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-master*
|
|
|
|
rm -rf /deqp/external/vulkancts/modules/vulkan/vk-default
|
|
|
|
|
2020-08-27 07:57:44 +08:00
|
|
|
rm -rf /deqp/external/openglcts/modules/cts-runner
|
2020-05-29 03:50:51 +08:00
|
|
|
rm -rf /deqp/modules/internal
|
2019-11-18 16:26:00 +08:00
|
|
|
rm -rf /deqp/execserver
|
|
|
|
rm -rf /deqp/framework
|
2024-01-04 07:22:35 +08:00
|
|
|
find . -depth \( -iname '*cmake*' -o -name '*ninja*' -o -name '*.o' -o -name '*.a' \) -exec rm -rf {} \;
|
2024-01-23 02:21:32 +08:00
|
|
|
if [ "${DEQP_API}" = 'VK' ]; then
|
|
|
|
${STRIP_CMD:-strip} external/vulkancts/modules/vulkan/deqp-vk
|
|
|
|
fi
|
|
|
|
if [ "${DEQP_API}" = 'GL' ]; then
|
|
|
|
${STRIP_CMD:-strip} external/openglcts/modules/glcts
|
|
|
|
${STRIP_CMD:-strip} modules/*/deqp-*
|
|
|
|
fi
|
2022-07-16 22:40:04 +08:00
|
|
|
du -sh ./*
|
2019-11-18 16:26:00 +08:00
|
|
|
rm -rf /VK-GL-CTS
|
2020-02-20 21:30:36 +08:00
|
|
|
popd
|