OpenGL 测试套件(CTS and Piglit)

本文介绍了CTS(ConformanceTestSuite)和Piglit两个用于测试OpenGL和相关API实现的工具。CTS是由Khronos开发的一致性测试集合,包含了Vulkan、OpenCL、OpenGL等的测试,而Piglit则是一个用于提升开源OpenGL驱动程序质量的自动化测试集合。文章详细阐述了如何获取、编译和运行这两个测试工具,以及如何查看和解析测试结果。
摘要由CSDN通过智能技术生成

1 CTS

OpenGL and OpenGL ES 2.0/3.X CTS (Conformance Test Suite,一致性测试集合)是Khronos开发的一套测试集合,可用于开放标准Vulkan、OpenCL、OpenGL、OpenGLES等的测试,也是验证API的实现是否支持的官方标准。

1.1 获取源码

git clone https://github.com/KhronosGroup/VK-GL-CTS.git

下载的CTS需要下载第三方软件,可以通过运行脚本获取:

python external/fetch_sources.py

1.2 编译

mkdir -p build ; cd build
cmake ../ -DDEQP_TARGET=x11_glx -DGLCTS_GTF_TARGET=gl
cmake --build .

1.3 运行

编译好的程序在external/openglcts/modules路径下,运行如下

./cts-runner --type=gl45     # 其中参数--type指定需要运行的OpenGL 版本

运行时间较长,等运行结束。

调试的时候需要运行单个case,可以使用glcts单独运行case或者caselist。

使用如下:

./glcts.exe --deqp-case=KHR-GLES3.shaders.loops

1.4 查看结果

CTS执行完成之后会生成详细的Log文件,文件主要包含如下:

  • ctx-run-summary.xml:包含运行config的详细信息,以及运行的命令行参数

  • configs.qpa:是xml文件格式,记录整体CTS运行情况

  • config-xxx-.*.qpa:为每个具体config下测试用例的详细信息

2 Piglit

Piglit是用来测试OpenGL实现的自动化测试集合。它的目标是通过为开发人员提供执行回归测试的简单方法来帮助提高开源OpenGL驱动程序的质量。它包含Glean测试,一些从Mesa改编的测试以及一些针对某些bug的特定回归测试。

官方git仓库位于:git://anongit.freedesktop.org/git/piglit

2.1 获取源码

git clone https://gitlab.freedesktop.org/mesa/piglit.git

2.2 编译

piglit运行的脚本在piglit项目top路径下,所以cmake需要在top路径下运行

cmake . make-j8

2.3 运行

运行测试使用如下命令:

./piglit run sanity results/sanity

其中sanity是指定运行的测试集,results/sanity指定结果存放路径。

piglit中有如下的测试集:

OpenGL 测试集

  • sanity.py:包含最少的OpenGL健全性测试。这些测试必须通过,否则其他测试将不会生成可靠的结果。

  • all.py:包含所有OpenGL测试。

  • quick.py:运行所有测试,但大大减少了它们的运行时间

  • gpu.py:从quick.py进一步减少了一组测试,该测试仅针对硬件功能运行测试,而不针对软件堆栈运行测试

  • llvmpipe.py:减少了gpu.py的一组测试,删除了使用llvmpipe有问题的测试

  • cpu.py:此配置文件运行不会影响gpu的测试,换句话说,quick.py中所有不是gpu.py运行的测试

  • glslparser.py:仅运行all.py中的glslparser测试

  • shader.py:仅运行all.py中着色器测试

  • no_error.py :测试列表的修改版本以khr_no_error变体形式运行

OpenCL 测试集

  • cl.py:包含所有OpenCL测试。

  • quick_cl.py:这将运行cl.py中的所有测试以及opencv和oclconform中的测试。

Vulkan 测试集

  • vulkan.py:包含所有Vulkan测试。

2.4 查看结果

查看上面测试生成的结果使用如下命令:

./piglit summary html summary/sanity results/sanity

将会在summary/sanity/目录下生成一个结果的html文件:

firefox summary/sanity/index.html

测试结果会包含的状态如下:

  • pass: 表示测试成功完成

  • warn: 测试成功完成,但是发生了意外情况。可以查看详细信息以获取更多信息

  • fail: 表示测试失败

  • crash: 表示测试用例的二进制退出码为非0

  • skip: 表示测试跳过

  • timeout: 表示测试超时并被强制杀死

3 参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马师傅哈哈哈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值