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

本文档介绍如何构建、移植和运行 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_SRCSnull/tcuNullPlatform.cppnull/tcuNullPlatform.hppnull/tcuNullRenderContext.cppnull/tcuNullRenderContext.hppnull/tcuNullContextFactory.cppnull/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.rhkb.cn/news/209555.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试题:MySQL为什么选择B+树作为索引结构

文章目录 前言二、平衡二叉树(AVL)&#xff1a;旋转耗时三、红黑树&#xff1a;树太高四、B树&#xff1a;为磁盘而生五、B树六、感受B树的威力七、总结 前言 在MySQL中&#xff0c;无论是Innodb还是MyIsam&#xff0c;都使用了B树作索引结构(这里不考虑hash等其他索引)。本文…

Redis命令详解

文章目录 Key&#xff08;键&#xff09; DEL EXISTS EXPIRE EXPIREAT PEXPIRE PEXPIREAT PERSIST KEYS TTL PTTL RENAME RENAMENX TYPE SCAN HSCAN SSCAN ZSCAN DUMP String&#xff08;字符串&#xff09; SET GET INCR DECR MSET MGET APPEND SETNX STRLEN INCRBY DECRBY IN…

opencv知识库:cv2.add()函数和“+”号运算符

需求场景 现有一灰度图像&#xff0c;需求是为该图像增加亮度。 原始灰度图像 预期目标图像 解决方案 不建议的方案——“”运算符 假设我们需要为原始灰度图像的亮度整体提升88&#xff0c;那么利用“”运算符的源码如下&#xff1a; import cv2img_path r"D:\pych…

Django二转Day03 04

0 cbv执行流程&#xff0c;self问题 path(index/, Myview.as_view()),Myview.as_view() 实例化后返回 变成return Myview.dispatch(request, *args, **kwargs)但是视图函数Myview中没有 dispatch 方法 所以去 父类View中寻找return View.dispatch(request, *args, **kwargs)调用…

jmeter接口自动化部署jenkins教程

首先&#xff0c;保证本地安装并部署了jenkins&#xff0c;jmeter&#xff0c;xslproc 我搭建的自动化测试框架是jmeterjenkinsxslproc ---注意&#xff1a;原理是&#xff0c;jmeter自生成的报告jtl文件&#xff0c;通过xslproc工具&#xff0c;再结合jmeter自带的模板修改&…

9.Spring 整合 Redis

引入依赖&#xff1a;spring-boot-starter-data-redis配置 Redis&#xff1a;配置数据库参数、编写配置类&#xff0c;构造 RedisTemplate访问 Redis&#xff1a; redisTemplate.opsForValue() redisTemplate.opsForHash() redisTemplate.opsForList() redisTemplate.opsForSe…

el-table 删除某行数据时 删除语句包含行号/序号

el-table可展示每行数据的序号列&#xff0c;在点击删除按钮的时候&#xff0c;会获取到该行所有的数据值&#xff0c;但是要想删除时提示到具体的序号&#xff0c;如&#xff1a;“是否确认删除序号为1的数据项&#xff1f;”&#xff0c;我是这样写的&#xff1a; /** 删除按…

C++ Easyx 让圆球跟随鼠标移动

目录 下载Easyx 检验 绘制窗口 画圆 响应事件的处理 清除原先绘图 渲染缓冲区 逻辑 代码托管 下载Easyx 在Easyx官网下载大暑版: 检验 写如下代码: 编译运行&#xff0c;如果控制台出现2023字样&#xff0c;代表配置成功: 绘制窗口 进入Eaxy官方网站&#xff0c;点…

【Flink进阶】-- Flink kubernetes operator 快速入门与实战

1、课程目录 2、课程链接 https://edu.csdn.net/course/detail/38831

代码随想录第二十三天(一刷C语言)|组合总数组合总数II分割回文串

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、组合总数 思路&#xff1a;参考carl文档 定义两个全局变量&#xff0c;二维数组result存放结果集&#xff0c;数组path存放符合条件的结果。&#xff08;这两个变量可以作为函数参数传入…

【电机控制】PMSM无感foc控制(五)相电流检测及重构 — 单电阻采样

0. 前言 相电流采样再FOC控制中是一个关键的环节&#xff0c;鉴于成本和易用性&#xff0c;目前应用较多的相电流采样方式是分流电阻采样&#xff0c;包括单电阻、双电阻以及三电阻采样法。 本章节先讲解单电阻采样相电流的检测及重构技术&#xff0c;在下一章讲解双电阻和三电…

使用postman请求x5接口

x5接口简介 1.接口样例 {"header"{"appid":"bpmnew_fanwei","sign":"C033162E86E4CADE80C7EB44D68A5AD2","sign_type":"md5","url":"https://oa.mioffice.cn/api/bpm/xm/app/show/tod…

预约按摩小程序有哪些功能特点?

随着科技的飞速发展&#xff0c;我们的生活方式发生了翻天覆地的变化。现在&#xff0c;只需动动手指&#xff0c;就能解决许多生活中的问题。同城预约上门按摩小程序&#xff0c;就是这样一个方便、快捷的解决方案。 在忙碌的生活中&#xff0c;身心疲惫的人们急需一种快速有效…

代码签名证书的作用

代码签名证书也是一种数字证书&#xff0c;它主要用于证明软件的来源和完整性。通过使用这种证书&#xff0c;开发者可以在发布软件时对其代码进行数字签名&#xff0c;以确保用户下载的是未经篡改的原始版本。 代码签名证书通过数字签名技术&#xff0c;为软件添加了一个数字签…

蓝桥杯每日一题2023.12.4

题目描述 竞赛中心 - 蓝桥云课 (lanqiao.cn) 题目分析 本题使用树型DP&#xff0c;蓝桥杯官网出现了一个点的错误&#xff0c;但实际答案是正确的 状态表示&#xff1a;f[u]&#xff1a;在以u为根的子树中包含u的所有联通块的权值的最大值 假设s1&#xff0c;s2,…sk 是u的…

动能资讯 | 智能音箱—万物物联新纽带

音箱市场在过去几年经历了显着的增长&#xff0c;这主要得益于数字音乐的普及和技术创新的推动。随着语音助手技术的发展&#xff0c;智能音箱如Amazon Echo、Google Home、Apple HomePod等逐渐成为市场中的热点。这些音箱不仅提供音频播放功能&#xff0c;还整合了语音识别和智…

【PyTorch】softmax回归

文章目录 1. 模型与代码实现1.1. 模型1.2. 代码实现 2. Q&A 1. 模型与代码实现 1.1. 模型 背景 在分类问题中&#xff0c;模型的输出层是全连接层&#xff0c;每个类别对应一个输出。我们希望模型的输出 y ^ j \hat{y}_j y^​j​可以视为属于类 j j j的概率&#xff0c;然…

关于你对 Zookeeper 的理解

看看普通人和高手是如何回答这个问题的&#xff1f; 普通人 Zookeeper 是一种开放源码的分布式应用程序协调服务 是一个分布式的小文件存储系统 一般对开发者屏蔽分布式应用开发过过程种的底层细节 用来解决分布式集群中应用系统的一致性问题 高手 对于 Zookeeper 的理解…

win10使用copilot(尝试中)

一、 Microsoft account | Sign In or Create Your Account Today – Microsoft 一路next全部点好【1】 二、 查看当前win10的版本&#xff0c;cmd输入命令winver 三、 修改区域为美国 四、更新和安全 Reference 【1】完美&#xff5c;在 Win10 强行开启 Win11 的独有功能…

IDEA2023找不到 Allow parallel run

我的idea版本&#xff1a;2023.1.4 第一步&#xff1a;点击Edit Configrations 第二步&#xff1a;点击Modify options 第三步&#xff1a;勾选Allow multiple instances 最后点击Apply应用一下 ok,问题解决&#xff01;