CN117743195A - 基于渲染时间差异度量的图形接口层次化实现验证方法 - Google Patents

基于渲染时间差异度量的图形接口层次化实现验证方法 Download PDF

Info

Publication number
CN117743195A
CN117743195A CN202410189008.0A CN202410189008A CN117743195A CN 117743195 A CN117743195 A CN 117743195A CN 202410189008 A CN202410189008 A CN 202410189008A CN 117743195 A CN117743195 A CN 117743195A
Authority
CN
China
Prior art keywords
texture
test
opengl
format
conversion time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202410189008.0A
Other languages
English (en)
Other versions
CN117743195B (zh
Inventor
温研
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Linzhuo Information Technology Co Ltd
Original Assignee
Beijing Linzhuo Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Linzhuo Information Technology Co Ltd filed Critical Beijing Linzhuo Information Technology Co Ltd
Priority to CN202410189008.0A priority Critical patent/CN117743195B/zh
Publication of CN117743195A publication Critical patent/CN117743195A/zh
Application granted granted Critical
Publication of CN117743195B publication Critical patent/CN117743195B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了基于渲染时间差异度量的图形接口层次化实现验证方法,通过在基准GPU上为其支持的所有OpenGL纹理格式构建与之对应的测试纹理,对测试纹理进行多次修改后将其格式从OpenGL格式转换为Vulkan接口所支持的纹理格式得到OpenGL纹理格式的纹理格式转换时间集,根据待测GPU支持的OpenGL纹理格式基于纹理格式转换时间集得到待测GPU标准曲线,再以相同方式获取待测GPU的纹理格式测试转换时间集进而得到待测GPU测试曲线,通过比较待测GPU标准曲线与待测GPU测试曲线的相似性确定待测GPU图形驱动中OpenGL接口的实现方式,实现了OpenGL接口实现方式以软件形式的精确判定。

Description

基于渲染时间差异度量的图形接口层次化实现验证方法
技术领域
本发明属于计算机软件开发技术领域,具体涉及基于渲染时间差异度量的图形接口层次化实现验证方法。
背景技术
目前大多数的图形应用都是基于OpenGL开发的,因此采用直接支持OpenGL的GPU运行此类图形应用是最高效的方法。随着技术的发展出现了Vulkan图形API。OpenGL和Vulkan是两种不同的图形API,提供的纹理格式也不完全相同,与OpenGL相比Vulkan的控制能力更广泛、支持的新式格式更多。具体来说,OpenGL的纹理格式(Texture Format)被定义为内部格式(Internal Format),其确定了图像数据在GPU内存中存储的布局及精度。OpenGL的纹理格式包括纹理类型、颜色组件及支持的数据类型,其中,纹理类型包括1D、2D、3D、Cube Map等,颜色组件包括RGB、RGBA、Luminance Alpha等,数据类型包括UnsignedByte、Float等。Vulkan使用VkFormat枚举类型指定具体的纹理格式,各纹理格式均具有包括通道位数和类型等信息的规范说明,此外,Vulkan还支持sRGB格式及更细粒度的纹理压缩格式,如ASTC、ETC2、BC等。总体来说,Vulkan提供了更加丰富和精细的纹理格式选择,并使开发者有更大的控制自由去优化图像的存储和访问。
然而,现有情况是多数GPU实际仅提供对Vulkan接口的支持,尤其是基于移动GPUIP实现的GPU通常不能直接支持OpenGL,一般采用基于Vulkan接口的方式实现OpenGL属于层次化的实现,但其往往对外宣称直接支持OpenGL,采用这种方式实现的OpenGL有可能导致部分图形应用无法使用,因此验证OpenGL的实际实现方式是非常必要的,目前对于此类问题还没有更准确高效的解决办法。
发明内容
有鉴于此,本发明提供了基于渲染时间差异度量的图形接口层次化实现验证方法,实现了对GPU图形驱动中OpenGL接口实现方式的准确判断。
本发明提供的基于渲染时间差异度量的图形接口层次化实现验证方法,包括以下步骤:
步骤1、选定基准GPU,将其支持的OpenGL纹理格式记为基准OpenGL纹理格式集,为基准OpenGL纹理格式集中的每个OpenGL纹理格式创建测试纹理,再通过改变测试纹理得到每个OpenGL纹理格式的M个测试纹理,记录将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的转换时间为该测试纹理的标准转换时间,M个测试纹理与其对应的标准转换时间集合记为每个OpenGL纹理格式的纹理格式转换时间集;
步骤2、获取待测GPU所支持的OpenGL纹理格式记为待测OpenGL纹理格式集,将待测OpenGL纹理格式集与基准OpenGL纹理格式集的交集记为目标OpenGL纹理格式集;
步骤3、获取目标OpenGL纹理格式集中每个OpenGL纹理格式的纹理格式转换时间集,并按照标准转换时间由小到大的顺序对纹理格式转换时间集排序,再以所有标准转换时间减去最小标准转换时间的值形成增长曲线记为待测GPU标准曲线;
步骤4、在待测GPU上,遍历目标OpenGL纹理格式集中的每个OpenGL纹理格式,并按照标准转换时间由小到大的顺序从各OpenGL纹理格式对应的纹理格式转换时间集中读取测试纹理,再采用与步骤1相同的方式改变测试纹理得到OpenGL纹理格式的M个测试纹理,记录测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的转换时间为测试转换时间,得到每个OpenGL纹理格式的M个测试纹理与其对应的测试转换时间集合记为OpenGL纹理格式的纹理格式测试转换时间集;
步骤5、获取目标OpenGL纹理格式集中每个OpenGL纹理格式的纹理格式测试转换时间集,并按照测试转换时间由小到大的顺序对纹理格式测试转换时间集进行排序,再以所有测试转换时间减去最小测试转换时间的值形成增长曲线记为待测GPU测试曲线;
步骤6、若待测GPU测试曲线与待测GPU标准曲线的曲线变化趋势的折线相近,则判定待测GPU的图形驱动为基于Vulkan接口实现的OpenGL接口;否则判定待测GPU的图形驱动为直接实现了OpenGL接口。
进一步地,所述步骤1中所述通过改变测试纹理得到每个OpenGL纹理格式的M个测试纹理的方式为:
步骤2.1、获取基准GPU支持的压缩纹理可设置的mipmap值记为可用mipmap值,构建当前OpenGL纹理格式的纹理作为测试纹理,令执行次数m的取值为0;
步骤2.2、若测试纹理为压缩纹理,则获取测试纹理的当前mipmap值,在当前mipmap值小于可用mipmap值的最大值时将当前mipmap值设置为新取值,反之结束当前纹理修改流程;若测试纹理为非压缩纹理,在测试纹理为整数纹理时交换间隔m个像素点的两个像素点的RGBA取值,在测试纹理为浮点纹理时将每隔m个像素点的像素点的RGBA取值设置为原RGBA取值与m的商;
步骤2.3、令m自加1;若m不大于M则执行步骤2.2,否则结束当前纹理修改流程。
进一步地,所述步骤1中所述记录将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的转换时间为该测试纹理的标准转换时间的方式为:
使用Vulkan接口将测试纹理转换为Vulkan接口所支持的纹理格式,执行N次该转换过程记录总的执行时间记为总转换时间,根据N次的总转换时间计算得到当前OpenGL纹理格式的当前测试纹理的平均转换时间记为其标准转换时间。
进一步地,所述执行N次该转换过程记录总的执行时间记为总转换时间的过程中,N的取值不小于1000或总的执行时间不小于10秒。
进一步地,所述步骤1中所述将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的过程,包括:
步骤5.1、使用Vulkan接口创建用于写入和读取纹理的VkImage图像对象记为第一图像对象;
步骤5.2、为第一图像对象分配内存,再将内存与第一图像对象绑定;
步骤5.3、将测试纹理的数据复制到第一图像对象中;
步骤5.4、设置第一图像对象中数据的图像布局;
步骤5.5、创建用于访问第一图像对象及其子资源的 Vulkan纹理视图VkImageView。
进一步地,所述基准GPU为:AMD或NVIDIA生产的GPU。
进一步地,所述步骤6中所述待测GPU测试曲线与待测GPU标准曲线的曲线变化趋势的折线相近的判断方式为:基于Hausdorff距离的方式。
有益效果
本发明通过在基准GPU上为其支持的所有OpenGL纹理格式构建与之对应的测试纹理,对测试纹理进行多次修改后将其格式从OpenGL格式转换为Vulkan接口所支持的纹理格式得到OpenGL纹理格式的纹理格式转换时间集,根据待测GPU支持的OpenGL纹理格式基于纹理格式转换时间集得到待测GPU标准曲线,再以相同方式获取待测GPU的纹理格式测试转换时间集进而得到待测GPU测试曲线,通过比较待测GPU标准曲线与待测GPU测试曲线的相似性确定待测GPU图形驱动中OpenGL接口的实现方式,实现了OpenGL接口实现方式以软件形式的精确判定。
具体实施方式
下面列举实施例,对本发明进行详细描述。
本发明提供了基于渲染时间差异度量的图形接口层次化实现验证方法,其核心思想是:通过在基准GPU上为其支持的所有OpenGL纹理格式构建与之对应的测试纹理,对测试纹理进行多次修改后将其格式从OpenGL格式转换为Vulkan接口所支持的纹理格式得到OpenGL纹理格式的纹理格式转换时间集,根据待测GPU支持的OpenGL纹理格式基于纹理格式转换时间集得到待测GPU标准曲线,再以相同方式获取待测GPU的纹理格式测试转换时间集进而得到待测GPU测试曲线,通过比较待测GPU标准曲线与待测GPU测试曲线的相似性确定待测GPU图形驱动中OpenGL接口的实现方式。
本发明提供的基于渲染时间差异度量的图形接口层次化实现验证方法,具体包括以下步骤:
步骤1、选定基准GPU,获取其支持的压缩纹理可设置的mipmap值记为可用mipmap值,将其支持的OpenGL纹理格式记为基准OpenGL纹理格式集,遍历基准OpenGL纹理格式集中的每个OpenGL纹理格式创建测试纹理,再通过改变测试纹理得到每个OpenGL纹理格式的M个测试纹理,将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式,记录转换时间为该测试纹理的标准转换时间,从而得到每个OpenGL纹理格式的M个测试纹理与其对应的标准转换时间集合记为每个OpenGL纹理格式的纹理格式转换时间集。
为了进一步提高标准转换时间的精确度,本发明中遍历基准OpenGL纹理格式集中的每个OpenGL纹理格式创建测试纹理并得到标准转换时间的过程,还包括以下步骤:
步骤1.1、构建当前纹理格式的纹理作为测试纹理,令执行次数m的取值为0,m的最大值为M。
步骤1.2、若测试纹理为压缩纹理,则获取测试纹理的当前mipmap值,在当前mipmap值小于可用mipmap值的最大值时将当前mipmap值设置为新取值以实现对测试纹理的修改,该新取值是指mipmap从未使用过值,在当前mipmap值不小于可用mipmap值的最大值时结束当前流程执行步骤2;若测试纹理为非压缩纹理,在测试纹理为整数纹理时交换间隔m个像素点的两个像素点的RGBA取值,在测试纹理为浮点纹理时将每隔m个像素点的像素点的RGBA取值设置为原RGBA取值与m的商。
其中,整数纹理为RGBA取值为整数的纹理,浮点纹理为RGBA取值为浮点数或半浮点数的纹理。
Mipmap是OpenGL提供的纹理技术,它能够提高渲染的性能以及提升场景的视觉质量。为了加快渲染速度、减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为Mipmap。Mipmap有多少个层级是由glTexImage1D、glTexImage2D载入纹理的第二个参数level决定的,层级从0开始,1、2、3这样递增。
步骤1.3、使用Vulkan接口将测试纹理转换为Vulkan接口所支持的纹理格式,执行N次该转换过程记录总的执行时间记为总转换时间,根据N次的总转换时间计算得到当前OpenGL纹理格式的第m个测试纹理的平均转换时间记为其标准转换时间。
为了进一步提高转换时间统计的准确性,N的取值为不小于1000或总转换时间不小于10秒。
其中,使用Vulkan接口将测试纹理转换为Vulkan接口所支持的纹理格式的过程,包括:
步骤1.3.1、通过定义图像的大小、格式、层级数量、采样数及使用方式等属性,使用Vulkan接口创建用于写入和读取纹理的VkImage图像对象记为第一图像对象。
步骤1.3.2、为第一图像对象分配内存,再将内存与第一图像对象绑定。
与OpenGL不同,Vulkan接口要求显式地为图像分配和绑定内存。具体来说,调用vkAllocateMemory为第一图像对象分配内存,再调用vkBindImageMemory将内存绑定到VkImage上。
步骤1.3.3、将测试纹理的数据复制到第一图像对象中。
具体来说,调用glGetTexImage获取OpenGL纹理的数据,然后使用Vulkan的staging buffer作为中间媒介,先将数据从CPU复制到GPU的staging buffer中,再调用vkCmdCopyBufferToImage命令把数据从staging buffer复制到第一图像对象中。
步骤1.3.4、设置第一图像对象中数据的图像布局。
Vulkan使用不同的图像布局来表示不同的访问和使用方式,具体来说,使用图像内存屏障vkCmdPipelineBarrier将图像布局从VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL转换到VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,以便着色器读取数据。
步骤1.3.5、创建用于访问第一图像对象及其子资源的 Vulkan纹理视图VkImageView。
Vulkan纹理视图VkImageView,用于描述如何访问VkImage及其子资源,包括图像的视图类型、格式,及mipmap、阵列层的范围等信息。
步骤1.4、令m自加1;若m不大于M则执行步骤1.2,否则结束当前流程执行步骤2。
此外,为了保证稳定性本发明优先选用AMD或NVIDIA生产的GPU作为基准GPU。
步骤2、获取待测GPU所支持的OpenGL纹理格式记为待测OpenGL纹理格式集,将待测OpenGL纹理格式集与基准OpenGL纹理格式集的交集记为目标OpenGL纹理格式集。
步骤3、获取目标OpenGL纹理格式集中每个OpenGL纹理格式的纹理格式转换时间集,并按照标准转换时间由小到大的顺序对纹理格式转换时间集进行排序,再以所有标准转换时间减去最小标准转换时间的值形成增长曲线记为待测GPU标准曲线。
步骤4、在待测GPU上,遍历目标OpenGL纹理格式集中的每个OpenGL纹理格式,并按照标准转换时间由小到大的顺序从各OpenGL纹理格式对应的纹理格式转换时间集中读取测试纹理,再采用与步骤1相同的方式改变测试纹理得到OpenGL纹理格式的M个测试纹理,将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式,记录转换时间为测试转换时间,得到每个OpenGL纹理格式的M个测试纹理与其对应的测试转换时间集合记为OpenGL纹理格式的纹理格式测试转换时间集。
步骤5、获取目标OpenGL纹理格式集中每个OpenGL纹理格式的纹理格式测试转换时间集,并按照测试转换时间由小到大的顺序对纹理格式测试转换时间集进行排序,再以所有测试转换时间减去最小测试转换时间的值形成增长曲线记为待测GPU测试曲线。
步骤6、若待测GPU测试曲线与待测GPU标准曲线的曲线变化趋势的折线相近,则判定待测GPU的图形驱动为基于Vulkan接口实现的OpenGL接口;否则判定待测GPU的图形驱动为直接实现了OpenGL接口。
现有技术中,常用的折线相似性的判定方法包括:
Hausdorff距离(Hausdorff Distance)为衡量两个点集之间相似程度的方法,两条折线间的Hausdorff距离为两个折线上点到另一条折线的最短距离中的最大值;
弗雷歇距离通常用于衡量两条曲线的相似度,即通过计算两条折线间的最短距离进行判断;
动态时间规整(Dynamic Time Warping, DTW)为衡量两个序列相似性的算法,通过非线性地调整时间序列的时间轴来测量两个时间序列之间的相似性,更适合分析时间序列长度不同或者速率上有差异的情况;
最小二乘法(Least Squares)适用于当折线以参数形式表示时通过最小化两条曲线之间的误差平方和确定最佳匹配;
形状上下文(Shape Context)为用于形状识别任务的描述符,通过计算折线上每个点周围的局部形状特征来构建代表该点的形状上下文的直方图,并比较两条折线上相应点的形状上下文以确定折线的相似性;
Procrustes分析(Procrustes Analysis)通过旋转、缩放和平移变换来比较两组点集合的形状,并找到最佳匹配;
编辑距离(Edit Distance)将折线视为点的序列,再通过计算将一条折线转换成另一条折线所需的最少编辑操作次数来衡量折线的相似性,编辑操作包括点的插入、删除和替换。
考虑到纹理格式的个数总体不多,本发明最优选择Hausdorff距离的方法来判断相似性。
实施例
本实施例以OpenGL 4.6为例采用本发明提供的基于渲染时间差异度量的图形接口层次化实现验证方法实现了对GPU图形驱动中OpenGL接口的实现方式,具体包括以下步骤:
S1、在基准GPU上,调用glGetInternalformativ查询其支持的OpenGL纹理格式,将该查询到的集合记为supportedTextureFormats,针对其支持的每个OpenGL纹理格式,执行以下步骤:
OpenGL 4.6支持的纹理格式一般包括:
非压缩的纹理格式:
- GL_RED:单通道纹理,仅包含红色分量。
- GL_RG:双通道纹理,包含红色和绿色分量。
- GL_RGB:三通道纹理,包含红色、绿色、蓝色分量。
- GL_RGBA:四通道纹理,包含红色、绿色、蓝色、Alpha(透明度)分量。
压缩的纹理格式:
- S3TC/DXTn:S3 Texture Compression,例如DXT1, DXT3, DXT5等,为DirectX提供的纹理压缩算法。
- PVRTC:PowerVR Texture Compression,适用于PowerVR GPU,如PVRTC 4bpp,PVRTC 2bpp等。
- ETC:Ericsson Texture Compression,例如ETC1, ETC2等,为OpenGL ES提供的纹理压缩算法。
深度和模板纹理格式:
- GL_DEPTH_COMPONENT:深度纹理格式,用于深度缓冲。
- GL_STENCIL_INDEX:模板纹理格式,用于模板缓冲。
浮点和半浮点纹理格式:
- GL_R16F, GL_R32F:单通道16位或32位浮点。
- GL_RG16F, GL_RG32F:双通道16位或32位浮点。
- GL_RGB16F, GL_RGB32F:三通道16位或32位浮点。
- GL_RGBA16F, GL_RGBA32F:四通道16位或32位浮点。
整数纹理格式:
- GL_R8I, GL_R8UI:带符号或无符号的8位整数红色通道。
- GL_RG8I, GL_RG8UI:带符号或无符号的8位整数红色和绿色通道。
- GL_RGB8I, GL_RGB8UI:带符号或无符号的8位整数RGB通道。
- GL_RGBA8I, GL_RGBA8UI:带符号或无符号的8位整数RGBA通道。
sRGB纹理格式:
- GL_SRGB:非线性空间的RGB纹理格式。
- GL_SRGB8_ALPHA8:非线性空间的RGBA纹理格式。
S1.1、构建一个当前格式(记当前格式为currentTextureFormat)的纹理(记为originalTexture),并保存到磁盘上。
S1.2、对于当前纹理,执行以下步骤M次,做M次修改并统计每次修改后的纹理的平均转换时间(至少大于100次,以提升转换时间统计的准确性):
S1.2.1、记当前次数为count。
S1.2.2、构建修改算法用于在内存中实现纹理的修改,将该修改算法记为TextureChangeAlgorithm,本实施例中设定TextureChangeAlgorithm在内存执行有利于规避从磁盘加载纹理引入的I/O时间对时间统计的影响,修改算法执行过程包括:
对于压缩纹理格式,修改mipmap值,如果可用mipmap值>=count,则结束此循环;
对于非压缩纹理格式中的整数纹理,每隔count个像素点,交换两个像素点的RGBA值;对于非压缩纹理格式中的浮点纹理,每隔count个像素点,取该像素点的RGBA值,将该像素点的RGBA值除以count的结果作为该像素点新的RGBA值。
S1.2.3、利用Vulkan API转换当前纹理为Vulkan的纹理格式,执行以下转换步骤N次,记录平均转换时间,具体步骤如下:
创建Vulkan图像:在Vulkan中,先创建一个VkImage图像对象来存储纹理,该操作需要定义图像的大小、格式、层级数量、采样数、使用方式等属性;
配置图像内存:调用vkAllocateMemory来分配内存,然后通过vkBindImageMemory将内存绑定到VkImage;
数据传输:将OpenGL的纹理数据复制到Vulkan的图像对象中,通过glGetTexImage获取OpenGL纹理的数据,再使用Vulkan的staging buffer作为中间媒介,先将数据从CPU复制到GPU的staging buffer中,再通过vkCmdCopyBufferToImage命令把数据从stagingbuffer复制到VkImage图像对象中;
设置图像布局:Vulkan使用不同的图像布局来表示不同的访问和使用方式,在上传数据后,使用图像内存屏障vkCmdPipelineBarrier将图像布局从VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL转换到VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,用于着色器读取数据;
创建Vulkan纹理视图VkImageView:创建一个VkImageView,用于描述如何访问VkImage及其子资源,包括图像的视图类型、格式,以及mipmap、阵列层的范围等信息。
S2、在待测GPU上,调用glGetInternalformativ查询其支持的OpenGL纹理格式,求此集合与supportedTextureFormats的交集,记为targetSupportedTextureFormats。
S3、对targetSupportedTextureFormats中每个纹理格式的M个纹理的平均转换时间进行排序,时间越短越靠前,最后每个时间减去最短时间,就得到一个增长曲线。这里每个纹理格式都创建了M个不同的纹理,这些纹理的大小是相同的。
S4、在待测GPU上,针对targetSupportedTextureFormats中的每个纹理格式,按照S3中形成的排序,依次取出每个纹理格式记为currentTexture,执行以下步骤:
加载之前保存的currentTexture格式的纹理;
对于currentTexture纹理,执行以下步骤M次:
记当前次数为count;
在内存中按TextureChangeAlgorithm算法修改此纹理;
利用OpenGL API渲染此纹理,并渲染N次,记录平均渲染时间。
S5、对于每个纹理格式的M个纹理的平均渲染时间进行排序,时间越短越靠前,最后每个时间减去最短渲染时间,就得到一个增长曲线,如果该曲线与S3得到的曲线变化趋势的折线相近,则可判定当前待测GPU的OpenGL驱动是基于Vulkan接口实现的。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.基于渲染时间差异度量的图形接口层次化实现验证方法,其特征在于,包括以下步骤:
步骤1、选定基准GPU,将其支持的OpenGL纹理格式记为基准OpenGL纹理格式集,为基准OpenGL纹理格式集中的每个OpenGL纹理格式创建测试纹理,再通过改变测试纹理得到每个OpenGL纹理格式的M个测试纹理,记录将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的转换时间为该测试纹理的标准转换时间,M个测试纹理与其对应的标准转换时间集合记为每个OpenGL纹理格式的纹理格式转换时间集;
步骤2、获取待测GPU所支持的OpenGL纹理格式记为待测OpenGL纹理格式集,将待测OpenGL纹理格式集与基准OpenGL纹理格式集的交集记为目标OpenGL纹理格式集;
步骤3、获取目标OpenGL纹理格式集中每个OpenGL纹理格式的纹理格式转换时间集,并按照标准转换时间由小到大的顺序对纹理格式转换时间集排序,再以所有标准转换时间减去最小标准转换时间的值形成增长曲线记为待测GPU标准曲线;
步骤4、在待测GPU上,遍历目标OpenGL纹理格式集中的每个OpenGL纹理格式,并按照标准转换时间由小到大的顺序从各OpenGL纹理格式对应的纹理格式转换时间集中读取测试纹理,再采用与步骤1相同的方式改变测试纹理得到OpenGL纹理格式的M个测试纹理,记录测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的转换时间为测试转换时间,得到每个OpenGL纹理格式的M个测试纹理与其对应的测试转换时间集合记为OpenGL纹理格式的纹理格式测试转换时间集;
步骤5、获取目标OpenGL纹理格式集中每个OpenGL纹理格式的纹理格式测试转换时间集,并按照测试转换时间由小到大的顺序对纹理格式测试转换时间集进行排序,再以所有测试转换时间减去最小测试转换时间的值形成增长曲线记为待测GPU测试曲线;
步骤6、若待测GPU测试曲线与待测GPU标准曲线的曲线变化趋势的折线相近,则判定待测GPU的图形驱动为基于Vulkan接口实现的OpenGL接口;否则判定待测GPU的图形驱动为直接实现了OpenGL接口。
2.根据权利要求1所述的图形接口层次化实现验证方法,其特征在于,所述步骤1中所述通过改变测试纹理得到每个OpenGL纹理格式的M个测试纹理的方式为:
步骤2.1、获取基准GPU支持的压缩纹理可设置的mipmap值记为可用mipmap值,构建当前OpenGL纹理格式的纹理作为测试纹理,令执行次数m的取值为0;
步骤2.2、若测试纹理为压缩纹理,则获取测试纹理的当前mipmap值,在当前mipmap值小于可用mipmap值的最大值时将当前mipmap值设置为新取值,反之结束当前纹理修改流程;若测试纹理为非压缩纹理,在测试纹理为整数纹理时交换间隔m个像素点的两个像素点的RGBA取值,在测试纹理为浮点纹理时将每隔m个像素点的像素点的RGBA取值设置为原RGBA取值与m的商;
步骤2.3、令m自加1;若m不大于M则执行步骤2.2,否则结束当前纹理修改流程。
3.根据权利要求1所述的图形接口层次化实现验证方法,其特征在于,所述步骤1中所述记录将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的转换时间为该测试纹理的标准转换时间的方式为:
使用Vulkan接口将测试纹理转换为Vulkan接口所支持的纹理格式,执行N次该转换过程记录总的执行时间记为总转换时间,根据N次的总转换时间计算得到当前OpenGL纹理格式的当前测试纹理的平均转换时间记为其标准转换时间。
4.根据权利要求3所述的图形接口层次化实现验证方法,其特征在于,所述执行N次该转换过程记录总的执行时间记为总转换时间的过程中,N的取值不小于1000或总的执行时间不小于10秒。
5.根据权利要求1所述的图形接口层次化实现验证方法,其特征在于,所述步骤1中所述将测试纹理从OpenGL格式转换为Vulkan接口所支持的纹理格式的过程,包括:
步骤5.1、使用Vulkan接口创建用于写入和读取纹理的VkImage图像对象记为第一图像对象;
步骤5.2、为第一图像对象分配内存,再将内存与第一图像对象绑定;
步骤5.3、将测试纹理的数据复制到第一图像对象中;
步骤5.4、设置第一图像对象中数据的图像布局;
步骤5.5、创建用于访问第一图像对象及其子资源的 Vulkan纹理视图VkImageView。
6.根据权利要求1所述的图形接口层次化实现验证方法,其特征在于,所述基准GPU为:AMD或NVIDIA生产的GPU。
7.根据权利要求1所述的图形接口层次化实现验证方法,其特征在于,所述步骤6中所述待测GPU测试曲线与待测GPU标准曲线的曲线变化趋势的折线相近的判断方式为:基于Hausdorff距离的方式。
CN202410189008.0A 2024-02-20 2024-02-20 基于渲染时间差异度量的图形接口层次化实现验证方法 Active CN117743195B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410189008.0A CN117743195B (zh) 2024-02-20 2024-02-20 基于渲染时间差异度量的图形接口层次化实现验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410189008.0A CN117743195B (zh) 2024-02-20 2024-02-20 基于渲染时间差异度量的图形接口层次化实现验证方法

Publications (2)

Publication Number Publication Date
CN117743195A true CN117743195A (zh) 2024-03-22
CN117743195B CN117743195B (zh) 2024-04-26

Family

ID=90254911

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410189008.0A Active CN117743195B (zh) 2024-02-20 2024-02-20 基于渲染时间差异度量的图形接口层次化实现验证方法

Country Status (1)

Country Link
CN (1) CN117743195B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170116702A1 (en) * 2015-10-21 2017-04-27 Stephen Viggers Systems and methods for using an opengl api with a vulkan graphics driver
CN111739073A (zh) * 2020-06-24 2020-10-02 刘秀萍 高效快速的手持装置的影像配准优化方法
CN114708370A (zh) * 2022-03-29 2022-07-05 北京麟卓信息科技有限公司 一种Linux平台图形渲染方式的检测方法
CN115409687A (zh) * 2022-10-31 2022-11-29 北京麟卓信息科技有限公司 一种基于显示缓冲区合成的渲染差异检测方法
CN115880127A (zh) * 2021-09-29 2023-03-31 华为技术有限公司 一种渲染格式选择方法及其相关设备
CN116721196A (zh) * 2023-06-26 2023-09-08 北京麟卓信息科技有限公司 一种压缩纹理的动态转换方法
CN116909824A (zh) * 2023-09-04 2023-10-20 北京麟卓信息科技有限公司 一种基于gpu状态跟踪的图形标准符合性测试方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170116702A1 (en) * 2015-10-21 2017-04-27 Stephen Viggers Systems and methods for using an opengl api with a vulkan graphics driver
CN111739073A (zh) * 2020-06-24 2020-10-02 刘秀萍 高效快速的手持装置的影像配准优化方法
CN115880127A (zh) * 2021-09-29 2023-03-31 华为技术有限公司 一种渲染格式选择方法及其相关设备
CN114708370A (zh) * 2022-03-29 2022-07-05 北京麟卓信息科技有限公司 一种Linux平台图形渲染方式的检测方法
CN115409687A (zh) * 2022-10-31 2022-11-29 北京麟卓信息科技有限公司 一种基于显示缓冲区合成的渲染差异检测方法
CN116721196A (zh) * 2023-06-26 2023-09-08 北京麟卓信息科技有限公司 一种压缩纹理的动态转换方法
CN116909824A (zh) * 2023-09-04 2023-10-20 北京麟卓信息科技有限公司 一种基于gpu状态跟踪的图形标准符合性测试方法

Also Published As

Publication number Publication date
CN117743195B (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
US7710430B2 (en) Methods, systems, and data structures for generating a rasterizer
US8659589B2 (en) Leveraging graphics processors to optimize rendering 2-D objects
JP4769984B2 (ja) タイルベース・グラフィック・レンダリング
US8189009B1 (en) Indexed access to texture buffer objects using a graphics library
CN100507832C (zh) 在图形系统内提供中间目标的系统和方法
TWI375213B (en) Graphics procesing system and graphics processing method
US7098922B1 (en) Multiple data buffers for processing graphics data
TWI297469B (en) Mechanism for reducing z buffer traffic in three dimensional graphics processing
EP3580726B1 (en) Buffer index format and compression
US11521342B2 (en) Residency map descriptors
US6411303B1 (en) Method of efficiently recording a number of texture images in memory
US6756989B1 (en) Method, system, and computer program product for filtering a texture applied to a surface of a computer generated object
US6577320B1 (en) Method and apparatus for processing multiple types of pixel component representations including processes of premultiplication, postmultiplication, and colorkeying/chromakeying
CN109710227B (zh) 一种纹理图集调度的方法
US9007389B1 (en) Texture map component optimization
CN117743195B (zh) 基于渲染时间差异度量的图形接口层次化实现验证方法
CN111989715A (zh) 用于与硬件实例化兼容的gpu的压缩可见性状态
US10269168B2 (en) Graphics processing systems
EP4379647A1 (en) Render format selection method and device related thereto
US20130229419A1 (en) Efficient Writing of Pixels to Tiled Planar Pixel Arrays
US6515661B1 (en) Anti-aliasing buffer
CN117724987B (zh) 一种基于纹理转换跟踪的OpenGL层次化实现验证方法
US20080122844A1 (en) Method, medium, and system rendering 3 dimensional graphics data considering fog effect
MXPA95004904A (en) Method for producing image data, image data processing device and regis medium

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant