嵌入式CTS测试

1.概述

        CTS是一套开源测试套件,可以实现对OpenGL、ES、OpenCL、Vulkan的兼容性测试。OpenGL ES CTS的测试集,其测试用例涵盖了各种OpenGL ES 的功能和特性。这些功能包括着色器编译和链接、图元绘制、纹理操作、帧缓冲操作、深度测试、模板测试以及其他一些图形渲染相关的功能。通过执行这些测试用例,可以验证OpenGL ES实现在各种情况下的正确性和一致性。

2.套件安装

        从OpenGL ES官方网站上下载最新的CTS测试套件源码。网址为

GitHub - KhronosGroup/VK-GL-CTS: Khronos Vulkan, OpenGL, and OpenGL ES Conformance Tests

嵌入式CTS测试_第1张图片

        源码目录如上图。还需要下载依赖的外部库源码和测试case,依赖zlib, libpng, glslang, spirv-headers, spirv-tools,renderdoc。

        在external目录下执行python fetch_sources.py。可能下载失败,需要科学上网。

3.套件内容

·  data:测试数据,提供测试图片和测试shader参数;

·  execserver:测试服务程序,主要为android和ios平台测试框架提供;

·  executor:测试基础程序,测试框架的基础实现,可视作自定义测试框架基础。

·  external:依赖的外部库源码和测试case

·  framework:测试框架,包括测试套装和case的实现框架,wrapper。

·  modules:测试目标模块的case

·  scrpits:针对不同平台的编译脚本

·  targets:编译脚本目录

4.测试套件适配

       添加自定义的目标文件:targets/*/*.cmake。

        根据需要配置这个文件。*文件名即为目标文件。

5.套件编译

        使用cmake构建,需要安装cmake: sudo apt install cmake。

        注意这里的cmake版本最好在3.20以上。

        cmake 编译有两个选项:

  • -DDEQP_TARGET:构建目标,如android,default,iOS,null,osx,raspi,curfaceless,vulkan_headless,wayland,x11_egl,x11_egl_glx,x11_glx
  • -DCLSTS_GTF_TARGET:测试对象,如gles2,gles3,gles31,gles32和gl

        这里使用自定义的构建目标*,在targets/*/*.cmake文件中定义构建参数。

        在cts目录下执行编译步骤如下:

1、cmake ./ -DDEQP_TARGET=* -DGLCTS_GTF_TARGET=gles32

2、cmake --build external/openglcts

          编译根据CMakeList.txt执行。其内部过程如下:

1、编译external里的第三方库,如glslang,spirv-tools,amber等;

2、编译framework里的delibs,如debase,depool等,相当于自己实现的基础库函数以避免对不同平台的依赖;

3、编译execserver和executor,测试框架的基础库

4、编译全部framework,modules,framework主要是针对不同的平台开发的平台适配内容,即为实现接口测试而需要的基础适配代码;modules是针对不同版本gl库开发的接口测试用例;

5、最后编译external/openglcts,生成测试对应的可执行文件 cts-runner 和 glcts 。

​​​​​​​6.测试流程

        cts支持的测试有:

ES: es2, es3, es31, es32; 

GL: gl30, gl31, gl32, gl33, gl40, gl41, gl42, gl43, gl44, gl45, gl46。

        测试程序生成在external/openglcts/modules目录下。包含glcts(用例级测试)

和cts-runner(套装级测试)二个测试程序。

        这里的测试使用的是opengl es。

        测试指令参考如下:

1、./glcts --deqp-case=dEQP-GLES2.info.*

2、./cts-runner --type=es32 --logdir=./

        --logdir=./表示在当前目录生成log文件。

        如果是使用用例测试glcts,使用./glcts -h查看支持的参数。

​​​​​​​7.测试结果

        测试结果默认输出在external/openglcts/modules目录下。文件如下图所示。

嵌入式CTS测试_第2张图片

        log.txt中时运行的log信息记录。

        cts-run-summary.xml是qpa的汇总文件,包含每一个testcase的结果路径,每个testcase的结果存在相应的qpa文件中。

8.测试结果分析

        套件中还提供了一些工具来辅助分析结果。

        在scripts/log/目录下提供了以下python工具:

嵌入式CTS测试_第3张图片

  • bottleneck_repot.py 生成运行报告
  • log_to_csv.py 将.qpa文件转换为csv格式文件
  • log_to_xls 将.qpa文件转换为xls格式文件
  • log_to_xml 将.qpa文件转换为xml格式文件

参考资料:

VK-GL-CTS 初步了解 - 简书 (jianshu.com)

VK-GL-CTS(一)环境配置 - 简书 (jianshu.com)

VK-GL-CTS(二) - 简书 (jianshu.com)

你可能感兴趣的:(嵌入式)