嵌入式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

        源码目录如上图。还需要下载依赖的外部库源码和测试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目录下。文件如下图所示。

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

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

8.测试结果分析

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

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

  • 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/131448.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

直播间自动发言机器人的运行分享,与开发需要到的技术分析

先来看实操成果,↑↑需要的同学可看我名字↖↖↖↖↖,或评论888无偿分享 一、引言 随着人工智能技术的不断发展,自动发言机器人已经成为了当今社交媒体领域的重要组成部分。它们能够自动化地发布内容、回复用户评论和消息,大大提高…

【Linux】--进程信号

信号 1.信号入门 程序员设计进程的时候,早就已经设计了对信号的识别能力!!!!进程在没有收到信号的时候,其实它早就已经知道一个信号该怎么处理了!因为信号可能随时会产生,所有在信…

类与对象(2)

✨前言✨ 📘 博客主页:to Keep博客主页 🙆欢迎关注,👍点赞,📝留言评论 ⏳首发时间:2023年11月11日 📨 博主码云地址:博主码云地址 📕参考书籍&…

牛客、赛码网OJ调试(全)

现在无论开发还是测试,面试的时候都需要考察代码能力。 从测试的职业发展来看,现在市场上对于纯功能测试的需求很少,招聘方均要求面试者一方面具备测试基础能力,也要求有点代码能力。 对于测试来说,除了测试开发&#…

程序员的那些坏习惯!来看看你有几个?

一、前言 写了20多年代码,我见过不下于4位数的程序员,我觉得程序员的能力水平可以分为4个阶段:线性级、逻辑级、架构级和工程级。 同样的在这些人当中,我也发现了8个程序员最常见的陋习,基本上可以覆盖90%的人&#…

自动驾驶算法(十):多项式轨迹与Minimun Snap闭式求解原理及代码讲解

目录 1 多项式轨迹与Minimun Snap闭式求解原理 2 代码解析 1 多项式轨迹与Minimun Snap闭式求解原理 我们上次说的Minimun Snap,其实我们就在求一个二次函数的最优解: 也就是优化函数在约束下的最小值。 但这是一个渐进最优解而不是解析最优解&#xf…

云栖大会丨桑文锋:打造云原生数字化客户经营引擎

近日,2023 云栖大会在杭州举办。今年云栖大会回归了 2015 的主题:「计算,为了无法计算的价值」。神策数据创始人 & CEO 桑文锋受邀出席「生态产品与伙伴赋能」技术主题,并以「打造云原生数字化客户经营引擎」为主题进行演讲。…

【Java】I/O流—转换流、序列化流的初学者指南及RandomAccessFile类

🌺个人主页:Dawn黎明开始 🎀系列专栏:Java ⭐每日一句:我不在意你曾堕落,我只在意你是否会崛起 📢欢迎大家:关注🔍点赞👍评论📝收藏⭐️ 文章目录…

OpenCV-Python小应用(八):判断是否有深色线条

OpenCV-Python小应用(八):判断是否有深色线条 前言前提条件相关介绍实验环境判断是否有深色线条思路一:通过图像梯度直方图判断思路二:通过图像灰度值变化判断 参考 前言 由于本人水平有限,难免出现错漏&am…

LoRAShear:微软在LLM修剪和知识恢复方面的最新研究

LoRAShear是微软为优化语言模型模型(llm)和保存知识而开发的一种新方法。它可以进行结构性修剪,减少计算需求并提高效率。 LHSPG技术( Lora Half-Space Projected Gradient)支持渐进式结构化剪枝和动态知识恢复。可以通过依赖图分析和稀疏度…

rabbitmq延迟队列发送与取消

安装延迟插件 根据rabbitmq的版本下载插件版本 # 延迟队列插件下载地址 https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases# 将本地下载好的插件复制到docker里 # docker cp rabbitmq_delayed_message_exchange-3.9.0.ez 容器名:/plugins docker cp r…

3.0 熟悉IDAPro静态反汇编器

IDA Pro 是一种功能强大且灵活的反汇编工具,可以在许多领域中发挥作用,例如漏洞研究、逆向工程、安全审计和软件开发等,被许多安全专家和软件开发者用于逆向工程和分析二进制代码。它支持大量的二进制文件格式和CPU架构,并提供了强…

spring命名空间注入和XML自动装配、引入外部配置文件

Spring p命名空间注入util命名空间注入基于XML的自动装配根据名称自动装配 Spring引入外部属性配置文件 p命名空间注入 作用:简化配置。 使用p命名空间注入的前提条件包括两个: ● 第一:在XML头部信息中添加p命名空间的配置信息&#xff1a…

error C2143的原因及解决办法

error C2143的原因及解决办法 在C编程中,经常会遇到各种错误。其中之一就是error C2143。本文将讨论error C2143的原因,并给出相应的解决办法。 error C2143通常是由于语法错误引起的。具体而言,C2143错误表示编译器无法识别代码中的某个符…

鲲鹏920的架构分析

*本文信息主要来源于书籍《鲲鹏处理器架构与编程》以及论文《Kunpeng 920: The First 7-nm Chiplet-Based 64-Core ARM SoC for Cloud Services》 * 笔者已然写了一篇上述论文的分析博客,但尚觉论文内容对chiplet架构描述不够清晰,因此查阅《鲲鹏处理器…

ECharts修改tooltip样式

tooltip不支持rich&#xff0c;formatter返回的是html片段&#xff0c;可以在这个返回的片段里面增加类名。以达到更改tooltip文字格式的效果。所以&#xff0c;直接写html的样式就可以 静态数据 formatter: (params) > {console.log(params, params)return <h2 style&q…

C++多态特性

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…

Redis之主从复制

文章目录 一、什么是Redis主从复制&#xff1f;1.作用2.配置主从复制的原因3.环境配置 二、一主二从三、复制原理四、链路总结 一、什么是Redis主从复制&#xff1f; 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(ma…

HTML点击链接强制触发下载

常见网页中会有很多点击链接即下载的内容&#xff0c;以下示范一下如何实现 <a href"文件地址" download"下载的文件名字&#xff08;不包括后缀&#xff09;">强制下载</a> 下面举个例子&#xff1a; <a href"./image/test.jpg"…

Azure 机器学习 - 如何使用模板创建安全工作区

目录 先决条件了解模板配置模板连接到工作区疑难解答错误&#xff1a;Windows 计算机名的长度不能超过 15 个字符&#xff0c;并且不能全为数字或包含以下字符 本教程介绍如何使用 [Microsoft Bicep]和 [Hashicorp Terraform]模板创建以下 Azure 资源&#xff1a; Azure 虚拟网…