#graphics #driver #baseline #results #conformance #deqp

bin+lib deqp-runner

一个用于并行化 VK-GL-CTS/dEQP 的包装程序,在 CPU 上运行并报告与基准比较的结果

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

Download history 57/week @ 2024-04-25 73/week @ 2024-05-02 54/week @ 2024-05-09 46/week @ 2024-05-16 67/week @ 2024-05-23 191/week @ 2024-05-30 77/week @ 2024-06-06 99/week @ 2024-06-13 124/week @ 2024-06-20 75/week @ 2024-06-27 81/week @ 2024-07-04 30/week @ 2024-07-11 11/week @ 2024-07-18 235/week @ 2024-07-25 41/week @ 2024-08-01 12/week @ 2024-08-08

每月300次下载

MIT 许可证

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

存在一些已知问题

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许可协议许可(LICENSEhttp://opensource.org/licenses/MIT

依赖关系

~14–26MB
~378K SLoC