41 个版本 (19 个破坏性)
0.20.0 | 2024年6月26日 |
---|---|
0.18.0 | 2023年10月23日 |
0.16.1 | 2022年12月12日 |
0.16.0 | 2022年11月8日 |
0.2.0 | 2020年11月30日 |
#1 在 #results
每月300次下载
305KB
7.5K SLoC
deqp-runner
这是一个工具,用于在系统 CPU 上并行化 VK-GL-CTS 或 dEQP 运行,收集结果并将其与设备的基准进行比较。它适用于寻求快速生成 dEQP 结果的驱动程序开发人员和 CI 系统(这不是生成 VK/GL 符合性结果的有效方法)。
安装
apt-get install cargo
cargo install deqp-runner
运行
示例运行
deqp-runner run \
--deqp ~/src/VK-GL-CTS-build/modules/gles2/deqp-gles2 \
--caselist ~/src/VK-GL-CTS/external/openglcts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles2-master.txt \
--output new-run \
--baseline last-run/failures.csv \
--testlog-to-xml ~/src/VK-GL-CTS-build/executor/testlog-to-xml \
-- \
--deqp-surface-width=256 --deqp-surface-height=256 \
--deqp-surface-type=pbuffer \
--deqp-gl-config-name=rgba8888d24s8ms0 \
--deqp-visibility=hidden
在测试运行和结果收集过程中,您将获得摘要输出,失败的测试将记录到 stderr 中,并记录关联的 caselists 所在的位置(以及它们旁边的完整 QPA 文件)。失败的测试还将提取到 testname.xml 中,可以将其与 VK-GL-CTS 的 testlog-stylesheet 结合使用,通过简单的 http 服务器(例如 cargo install simple-http-server; simple-http-server outputdir/)进行可视化。
意外失败的测试将自动重新运行以检测有问题的测试,这些测试将被视为管道的成功(这在 CI 中很有用,可以防止罕见的未分类的 flake 影响其他开发人员)。此外,您还可以传递一个 --flakes 参数,列出已知的有问题的测试的正则表达式列表,以减少 CI 管道中假失败的可能性。
Deqp Suite 支持
VK-GL-CTS 配备了多个 dEQP 二进制文件(deqp-gles2、deqp-gles3、deqp-egl、deqp-vk、glcts),基本 "run" 语法只支持运行单个二进制文件。套件子命令允许您指定一个 toml 文件,其中包含与 run 命令相同的参数作为键,例如以下软pipe 驱动程序配置的一部分的片段。
[[deqp]]
deqp = "~/src/VK-GL-CTS-build/modules/gles2/deqp-gles2"
caselists = ["~/src/VK-GL-CTS-build/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles2-master.txt"]
baseline = "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-fails.txt"
skips = ["~/src/mesa/.gitlab-ci/deqp-all-skips.txt", "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-skips.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 = "~/src/VK-GL-CTS-build/modules/gles3/deqp-gles3"
caselists = ["~/src/VK-GL-CTS-build/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles3-master.txt"]
baseline = "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-fails.txt"
skips = ["~/src/mesa/.gitlab-ci/deqp-all-skips.txt", "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-skips.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 = "~/src/VK-GL-CTS-build/modules/gles2/deqp-gles2"
caselists = ["~/src/VK-GL-CTS-build/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles2-master.txt"]
baseline = "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-fails.txt"
skips = ["~/src/mesa/.gitlab-ci/deqp-all-skips.txt", "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-skips.txt"]
deqp_args = [
"--deqp-surface-width=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-visibility=hidden"
]
# You can set environment vars as part of a deqp run.
[deqp.env]
NIR_VALIDATE = "1"
# Specifying a prefix lets you include multiple invocations of deqp tests with debug
# flags that might produce different results. The prefix is used for comparing
# to the baseline and for matching skips and flakes.
prefix = "validation-"
deqp = "~/src/VK-GL-CTS-build/modules/gles2/deqp-gles2"
caselists = ["~/src/VK-GL-CTS-build/external/openglcts/modules/gl_cts/data/mustpass/gles/aosp_mustpass/3.2.6.x/gles2-master.txt"]
baseline = "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-fails.txt"
skips = ["~/src/mesa/.gitlab-ci/deqp-all-skips.txt", "~/src/mesa/src/gallium/drivers/softpipe/ci/deqp-softpipe-skips.txt"]
deqp_args = [
"--deqp-surface-width=256", "--deqp-surface-height=256",
"--deqp-surface-type=pbuffer", "--deqp-gl-config-name=rgba8888d24s8ms0", "--deqp-visibility=hidden"
]
# You can run piglit as part of your test suite, too.
[[piglit]]
piglit_folder = "/home/anholt/src/piglit"
profile = "quick"
baseline = "/home/anholt/src/mesa/src/gallium/drivers/softpipe/ci/softpipe-fails.txt"
skips = ["/home/anholt/src/mesa/.gitlab-ci/all-skips.txt", "/home/anholt/src/mesa/src/gallium/drivers/softpipe/ci/softpipe-skips.txt"]
process_isolation = true
[piglit.env]
PIGLIT_PLATFORM = "gbm"
# And even fluster
[[fluster]]
fluster = "/opt/fluster/fluster.py"
decoders = ["GStreamer-VP8-VAAPI-Gst1.0", "GStreamer-VP9-VAAPI-Gst1.0"]
baseline = "/home/anholt/src/mesa/src/amd/ci/radeonsi-raven-vp9-fluster-fails.txt"
skips = ["/home/anholt/src/mesa/.gitlab-ci/all-skips.txt", "/home/anholt/src/mesa/src/amd/ci/radeonsi-raven-vp8-fluster-skips.txt"]
测试日志转换为XML的命令行指定,分数可以在命令行(用于运行器之间的分片)和deqp定义(仅运行测试套件的某些分数)中指定。
igt-gpu-tools支持
deqp-runner现在包含运行IGT测试的实验性支持。一个示例运行可能如下所示
igt-runner run \
--output new-run \
--igt-folder ~/src/igt/build/tests \
--caselist caselist.txt \
--baseline last-run/failures.csv \
--skips igt-skips.txt
skqp支持
deqp-runner现在包含运行skqp测试的实验性支持。一个示例运行可能如下所示
skqp-runner run \
--output new-run \
--skqp ~/src/skia/out/amd64-Debug/skqp \
--skqp-assets ~/src/skia/platform_tools/android/apps/skqp/src/main/assets/ \
--skqp-backends gl,gles \
--baseline last-run/failures.csv \
--skips skips.txt
与其他测试套件类似,在测试运行和结果收集过程中,您将获得汇总输出,失败的测试将记录到stderr,并附有关联的caselists的引用(以及skqp生成的输出文件夹,其中包含旁边的html结果)。
Piglit支持
deqp-runner现在包含运行piglit测试的实验性支持。一个示例运行可能如下所示
piglit-runner run \
--output new-run \
--piglit-folder ~/src/piglit \
--profile quick \
--baseline last-run/failures.csv \
--skips piglit-soft-skips.txt \
--process-isolation
存在一些已知问题
- 没有跟踪piglit子测试结果(包括no_isolation中的shader_tests)
- 没有基于启用扩展的快速跳过
gtest支持
deqp-runner现在包含运行gtest测试的实验性支持。一个示例运行可能如下所示
gtest-runner run \
--output new-run \
--bin test-binary \
--baseline last-run/failures.csv
存在一些已知问题
- gtest在处理我们创建的长的gtest_filter参数时很慢。(https://github.com/google/googletest/issues/3614)
fluster支持
fluster-runner现在包含运行fluster测试的实验性支持。一个示例运行可能如下所示
fluster-runner run \
--output new-run \
--fluster fluster-binary \
--decoders FFmpeg-H.264
--baseline last-run/failures.csv
请注意,解码器名称是区分大小写的。
为您的嵌入式设备进行交叉编译
将以下内容添加到~/.cargo/config
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
然后设置新的工具链和构建
rustup target add aarch64-unknown-linux-gnu
cargo build --release --target aarch64-unknown-linux-gnu deqp-runner
scp target/aarch64-unknown-linux-gnu/release/deqp-runner device:bin/
许可协议
根据MIT许可协议许可(LICENSE 或 http://opensource.org/licenses/MIT)
依赖关系
~14–26MB
~378K SLoC