OpenGL 和 OpenGL ES 2.0/3.X 一致性测试说明(CTS)

news2024/12/29 9:51:34

本文档介绍如何构建、移植和运行 OpenGL 和 OpenGL ES 2.0/3.X 一致性测试,以及如何验证和提交测试结果。

@[TOC]目录

测试环境要求

一致性测试需要文件系统。文件系统需要支持长文件名(即 > 8.3 名称格式)。一致性测试中的源文件使用大小写混合的文件名。使用该 --verbose 选项时,渲染的图像和测试用例着色器将复制到日志文件中。这可能会导致相当大的日志文件,磁盘上最多有数百兆字节。

每次执行一致性测试时,都会将文本格式的结果日志写入磁盘。您需要将此日志作为一致性提交包的一部分包含在内。

一致性测试可执行文件可能很大。编译器选项和 CPU 指令集可能会导致很大的变化。构建所需的磁盘空间(包括所有临时文件)最多可达 400MB。

构建环境应支持 C++(有例外)和标准模板库 (STL)。

配置和构建测试

CTS 是通过 CMake 构建系统构建的。构建的要求如下:

  • CMake 3.20.0 或更高版本
  • 支持 STL 和异常的 C++ 编译器
  • Unix:Make + GCC / Clang
  • Windows:Visual Studio 或 Windows SDK(免费提供)
  • Android:适用于主机平台的 Android SDK 和 NDK

构建由在 CTS 源根目录中找到的文件 CMakeLists.txt 控制。

如果您使用的平台和编译器工具不受支持,则可以将对该平台和工具的支持添加到生成系统中。如果您这样做,请将您的更改提交回 Khronos,以便包含在以后的官方测试中。

否则,如果选择不使用提供的 Makefile,则必须为所选的开发环境构建等效的构建系统。

Configuration 配置

使用 CMakeLists.txt 构建目标目录 ( ) 中的文件配置构建 targets/ 。它们指定特定于平台的配置,包括包含路径和链接库。

main CMakeLists.txt 包括基于变量的目标 DEQP_TARGET 文件。例如 -DDEQP_TARGET=my_target ,将使用目标描述文件 targets/my_target/my_target.cmake 。

有关目标文件可以设置的变量的说明,请参阅主 CMakeLists.txt 文件。

移植到新平台包括创建新的目标文件或修改现有目标描述。

注意:所有路径(除根源目录外 TCUTIL_PLATFORM_SRCS )均为相关路径。 TCUTIL_PLATFORM_SRCS 是相对于 framework/platform 目录的。

包中提供了以下目标文件:
在这里插入图片描述

示例目标文件 (targets/null/null.cmake):
message("*** Using null context target")

set(DEQP_TARGET_NAME "Null")

set(TCUTIL_PLATFORM_SRCS
	null/tcuNullPlatform.cpp
	null/tcuNullPlatform.hpp
	null/tcuNullRenderContext.cpp
	null/tcuNullRenderContext.hpp
	null/tcuNullContextFactory.cpp
	null/tcuNullContextFactory.hpp
	)
CMake 语法中的常见配置变量及其默认值:
  • Target name 目标名称
set(DEQP_TARGET_NAME "UNKNOWN")
  • 每个 API 的链接库列表。如果未指定库,则默认情况下会在运行时加载 OpenGL ES API 的入口点。EGL 始终需要链接库。OpenGL 始终使用运行时加载。
set(DEQP_GLES2_LIBRARIES   )
set(DEQP_GLES3_LIBRARIES   )
set(DEQP_GLES31_LIBRARIES  )
set(DEQP_GLES32_LIBRARIES  )
set(DEQP_EGL_LIBRARIES     )
set(DEQP_OPENGL_LIBRARIES  )
  • 链接正常工作的 OpenGL (ES) 应用程序所需的通用平台库(例如 Unix/X11 上的 X11 库)
set(DEQP_PLATFORM_LIBRARIES )
  • 需要复制到构建目标目录的库/二进制文件
set(DEQP_PLATFORM_COPY_LIBRARIES )
  • 如果在使用 X11 创建窗口等的 Linux 上运行,请启用此功能。
set(DEQP_USE_X11 OFF)
  • 在测试中嵌入测试文件 在使用此集进行构建之前(如果存在 GTF 模块),请运行以下命令:
cd external/kc-cts/src/GTF_ES/glsl/GTF
perl mergeTestFilesToCSource.pl

在目标 .cmake 文件中添加

set(DEQP_EMBED_TESTS ON)
add_definitions(-DHKEMBEDDEDFILESYSTEM)

Building the Tests 构建测试

要构建框架,首先需要下载 zlib、libpng、glslang、spirv-headers 和 spirv-tools 的源代码。

若要下载源代码,请运行:

python external/fetch_sources.py

对于 OpenGL CTS 版本和 opengl-es-cts-3.2.4.0 之前的 OpenGL ES CTS 版本,请下载 Khronos 机密一致性测试套件:

python external/fetch_kc_cts.py

对于 opengl-es-cts-3.2.4.0 之前的 OpenGL CTS 版本和 OpenGL ES CTS 版本,此套件中包含的测试结果必须包含在一致性提交中。

注意:您需要成为 Khronos 采用者并在 Khronos Gitlab 上拥有有效帐户才能下载 Khronos 机密 CTS。可以在没有 Khronos 机密 CTS 的情况下运行和构建 CTS。对于 OpenGL CTS 版本和 opengl-es-cts-3.2.4.0 之前的 OpenGL ES CTS 版本,如果您计划提交一致性,则必须使用 Khronos 机密 CTS(请参阅创建提交包)。对于 opengl-es-cts-3.2.4.0 及更高版本,OpenGL ES CTS 版本不得将 Khronos 机密 CTS 结果包含在提交包中。

使用 CMake 时,始终建议使用源代码外构建。创建一个您选择的构建目录,并在该目录中使用 Cmake 生成 Makefile 或 IDE 项目。

Linux操作系统

Required tools: 所需工具:

  • 标准构建实用程序(make、gcc 等)
  • 必要的 API 库(OpenGL、GLES、EGL,取决于配置)

构建 ES2 或 ES3.x 一致性测试:

cmake <path to VK-GL-CTS> -DDEQP_TARGET=null -DGLCTS_GTF_TARGET=gles32
cmake --build external/openglcts

构建 OpenGL 一致性测试:

cmake <path to VK-GL-CTS> -DDEQP_TARGET=null -DGLCTS_GTF_TARGET=gl
cmake --build external/openglcts

Khronos 机密 CTS 不支持 API 上下文的运行时选择。如果您打算运行它,那么该 GLCTS_GTF_TARGET 选项是必要的。

CMake 默认选择生成 Makefile。也可以使用其他发电机。有关更多详细信息,请参阅 CMake 帮助。

Porting 移植

一致性测试被设计为相对独立于平台、操作系统和编译器。采用者负责允许测试在他们希望认证为符合标准的平台上运行所需的最终更改。

常见移植更改

移植 dEQP 框架需要实现接口,或者在支持 EGL 的平台上实现 tcu::EglPlatform 接口 glu::Platform 。以下文件中详细介绍了移植层 API:

framework/common/tcuPlatform.hpp
framework/opengl/gluPlatform.hpp
framework/egl/egluPlatform.hpp
framework/platform/tcuMain.cpp

此版本的 dEQP 框架包括适用于 Windows(EGL 和 WGL)、X11(EGL 和 XGL)和 Android 的端口。

基本的可移植性库 framework/delibs 很少需要更改。但是,引入对新编译器或新处理器系列的支持可能需要进行一些更改才能正确检测和参数化环境。

移植通常涉及三种类型的更改:

  1. 对用于生成测试可执行文件的 make 系统的更改。
  2. 使测试可执行文件适应平台上使用的操作系统所需的更改。
  3. 对特定于平台的 GL 和 EGL 头文件的更改。

更改通常应限制在以下目录或其子目录中的构建文件(CMake 或 Python)或源文件(.c、.h、.cpp 和 .h 文件):

  1. framework/platform
  2. targets

如果您发现必须更改其他来源(.c、.cpp、.h 或 .hpp)文件,则需要提交如下所述的弃权。

请注意,一致性测试假定实现支持 EGL。但是,符合 OpenGL 或 OpenGL ES 标准不需要 EGL。

大多数测试需要至少 256x256 像素的分辨率才能正常运行并产生稳定的结果。因此,确保新平台的端口能够支持满足宽度和高度要求的表面非常重要。

运行测试

以下所有命令都需要在 CTS 构建目录下运行。如果需要将二进制文件从生成目录移动,请记住将名为 gl_cts 、 、 gles2 gles3 和 的数据 gles31 目录及其子目录从生成目录复制到相同相对位置的测试目标。

如果已按原样遵循构建说明,则正确的路径为:

cd <builddir>/external/openglcts/modules
一致性运行

可以通过在 Linux/Windows 上运行带有适当选项的 cts-runner 二进制文件或运行 Android 应用程序来启动一致性运行。

OpenGL ES 3.2 的一致性运行:

Debug/cts-runner.exe --type=es32
  [For ES 3.1 use --type=es31; ES 3.0 use --type=es3; for ES 2.0, use --type=es2]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全部免费!6个宝藏级别的AI网站!

专注AIGC领域的专业社区&#xff0c;关注百度文心一言等大语言模型&#xff08;LLM&#xff09;的发展和应用落地&#xff0c;关注LLM的基准评测和市场研究&#xff0c;欢迎关注&#xff01; 前两天给大家介绍了一款AI绘图工具fooocus&#xff0c;帮大家把AI绘画的使用门槛大幅…

MQ - KAFKA 高级篇

kafak是一个分布式流处理平台,提供消息持久化,基于发布-订阅的方式的消息中间件&#xff0c;同时通过消费端配置相同的groupId支持点对点通信。 ##适用场景&#xff1a; 构造实时流数据管道,用于系统或应用之间可靠的消息传输.数据采集及处理,例如连接到一个数据库系统,捕捉表…

12-2 Mybatis-Plus与Spring整合

user-springboot programming 实体类 ## 链接数据源 C3p0&#xff08;原始化&#xff09; 连接池的数据源 引入mysql 自动配置类DataSource会生效 需要你去配置相关的数据库参数 需要用到连接池 数据源的配置类 SpringBoot的测试类 SpringBootTest 原先是RunWith和Conf…

JAVA高级-1

常用API 第一章 API 产品说明书 第二章 Scanner类&#xff08;输入&#xff09; 功能&#xff1a;获取键盘输入 package day7_12.demo01_Scanner;import java.util.Scanner; //1、导包 /* 功能&#xff1a;获取键盘输入引用类型一般使用步骤1、导包&#xff1a;impo…

【高效开发工具系列】gson入门使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

解密Prompt系列20. LLM Agent之再谈RAG的召回多样性优化

几个月前我们就聊过RAG的经典方案解密Prompt系列14. LLM Agent之搜索应用设计。前几天刚看完openAI在DevDay闭门会议上介绍的RAG相关的经验&#xff0c;有些新的感悟&#xff0c;借此机会再梳理下RAG相关的优化方案。推荐直接看原视频&#xff08;外网&#xff09;A Survey of …

善网商城上线洁柔产品 公益人专享爱心价官方正品

近日&#xff0c;中国善网慈善商城&#xff08;以下简称善网商城&#xff09;系统经升级后重新上线。目前善网商城线上销售的中顺洁柔旗下慈善产品已顺利获得中顺洁柔纸业股份有限公司授权&#xff0c;双方就合作事宜达成共识&#xff0c;并于近日签订线上经营授权书。 &#x…

问题:HTTP method names must be tokens

问题&#xff1a;HTTP method names must be tokens 2023-12-04T09:43:16.65408:00 INFO 7808 --- [nio-6600-exec-1] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request headerNote: further occurrences of HTTP request parsing errors will be logg…

easyrecovery2024最新破解版激活密钥

平时很多人都会把自己工作时&#xff0c;或者生活中的数据存储在我们的电脑上&#xff0c;很多时候&#xff0c;由于我们的误操作或者是其它某些问题&#xff0c;很容易就会误删除一些文件数据了&#xff0c;尤其是一些电脑出现故障&#xff0c;总是会导致数据丢失&#xff0c;…

50 代码审计-PHP无框架项目SQL注入挖掘技巧

目录 演示案例:简易SQL注入代码段分析挖掘思路QQ业务图标点亮系统挖掘-数据库监控追踪74CMS人才招聘系统挖掘-2次注入应用功能&#xff08;自带转义)苹果CMS影视建站系统挖掘-数据库监控追踪&#xff08;自带过滤&#xff09; 技巧分析:总结: demo段指的是代码段&#xff0c;先…

C语言从入门到实战——常用内存函数的了解和模拟实现

常用内存函数的了解和实现 前言1. memcpy使用和模拟实现2. memmove使用和模拟实现3. memset函数的使用4. memcmp函数的使用 前言 内存函数&#xff08;memory functions&#xff09;指的是控制计算机内存操作的函数 1. memcpy使用和模拟实现 void * memcpy ( void * destinat…

重生奇迹mu坐骑系统详解

重生奇迹mu最强坐骑排名 1、红色烈焰——炎狼兽。炎狼兽身穿火红色盔甲&#xff0c;远远看去如同一道红色烈焰&#xff0c;非常酷炫&#xff0c;可供多种职业使用&#xff0c;是所有勇士梦寐以求的坐骑。除了可以提高移动速度以外&#xff0c;当年炎狼兽还是勇士们的刷怪利器。…

医院不良事件报告系统源码带鱼骨图分析

医院不良事件上报系统通过 “事前的人员知识培训管理和制度落地促进”、“事中的事件上报和跟进处理”、 以及 “事后的原因分析和工作持续优化”&#xff0c;结合预存上百套已正在使用的模板&#xff0c;帮助医院从对护理事件、药品事件、医疗器械事件、医院感染事件、输血事件…

紫龙游戏解锁Jira与Perforce的游戏开发行业实践

近日&#xff0c;在龙智携手Atlassian与JFrog共同举办的“大规模开发创新&#xff1a;如何提升企业级开发效率与质量”的线下研讨会中&#xff0c;紫龙游戏上海研发中心高级项目管理主管叶凯威为大家带来了精彩演讲&#xff0c; 分享紫龙游戏的项目管理工具与流程&#xff0c;以…

处理和分析人类语言数据-NLTK安装和使用

简介&#xff1a;NLTK&#xff08;Natural Language Toolkit&#xff09;是一个强大的Python库&#xff0c;用于处理和分析人类语言数据&#xff0c;是一个开源的项目&#xff0c;包含&#xff1a;Python模块&#xff0c;数据集和教程&#xff0c;用于NLP的研究和开发&#xff…

微软推出AI助手Copilot的正式版本;ChatGPT:七位研究人员分享他们的观点

&#x1f989; AI新闻 &#x1f680; 微软推出AI助手Copilot的正式版本 摘要&#xff1a;微软宣布其AI助手Copilot正式上线&#xff0c;此前Copilot的预览版已成为很多用户的日常AI伴侣。此次上线后&#xff0c;Copilot将继续提供AI驱动的网络聊天体验&#xff0c;并具备商业…

SAP_ABAP_内表数据重复问题,解决思路

SAP ABAP 顾问&#xff08;开发工程师&#xff09;能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读516次。目标&#xff1a;基于对SAP abap 顾问能力模型的梳理&#xff0c;给一年左右经验的abaper 快速成长为三年经验提供超级燃料&#xff01;https://blog.csdn.net/j…

终端安全管理软件是监控软件吗

有些人在后台问&#xff0c;终端安全管理软件是监控软件吗&#xff1f; 先回答&#xff0c;是监控软件。 因为它具有监控的功能&#xff0c;在很大程度上&#xff0c;是可以用来当做监控软件来用的。 终端安全管理软件是一种集中管理终端设备的软件工具&#xff0c;可以在企业…

Windows下打包C++程序无法执行:无法定位程序输入点于动态链接库

1、问题描述 环境&#xff1a;CLionCMakeMinGW64遇到问题&#xff1a;打包的exe无法运行&#xff0c;提示无法定位程序输入点于动态链接库。 2、解决思路 ​ 通过注释头文件的方式&#xff0c;初步定位问题是因为使用了#include <thread> 多线程库引起的。而且exe文件…

很详细 无人机自主飞行技术的要点与优势

随着无人机自主飞行技术的不断成熟&#xff0c;其在提升巡检效率和减轻工作负担方面正日渐显现为一项强有力的工具。在本文中&#xff0c;我们将共同探讨无人机自主飞行技术的精髓。 一、无人机自主飞行技术的要点 1、 一键式航线规划 为确保无人机在任务中能够安全飞行&…