CN114708370A - 一种Linux平台图形渲染方式的检测方法 - Google Patents

一种Linux平台图形渲染方式的检测方法 Download PDF

Info

Publication number
CN114708370A
CN114708370A CN202210316807.0A CN202210316807A CN114708370A CN 114708370 A CN114708370 A CN 114708370A CN 202210316807 A CN202210316807 A CN 202210316807A CN 114708370 A CN114708370 A CN 114708370A
Authority
CN
China
Prior art keywords
gpu
cpu
mesa
value
sampling
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
CN202210316807.0A
Other languages
English (en)
Other versions
CN114708370B (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 CN202210316807.0A priority Critical patent/CN114708370B/zh
Publication of CN114708370A publication Critical patent/CN114708370A/zh
Application granted granted Critical
Publication of CN114708370B publication Critical patent/CN114708370B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Linux平台图形渲染方式的检测方法,通过获取Linux平台当前已安装Mesa的版本及配置信息,获取相同版本的Mesa作为对比版本,安装对比版本并以设置启动软渲染引擎的方式运行该对比版本,采用测试工具对已安装Mesa和对比版本Mesa的运行进行测试,并监测测试时的GPU和CPU性能,通过对GPU和CPU性能的对比分析确定Linux平台的图形渲染方式,能够避免现有绕过检测手段对检测结果准确性的干扰,从而有效提高Linux平台图形渲染方式检测的准确性。

Description

一种Linux平台图形渲染方式的检测方法
技术领域
本发明属于计算机图像处理技术领域,具体涉及一种Linux平台图形渲染方式的检测方法。
背景技术
Linux平台从Gnome3桌面管理器开始向了以三维图形渲染为基础的桌面图形环境。目前现有技术中Linux图形渲染方式主要包括以下两种,即采用专门的图形处理器(Graphic Processing Unit,GPU)渲染三维图形的方式和采用CPU的向量部件渲染三维图形的方式,也就是通常所说的硬渲染(Hardware Rendering)和软渲染(SoftwareRendering)。
其中,采用GPU渲染三维图形的方式中,GPU又称显示核心、视觉处理器、显示芯片,GPU是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器,采用GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。GPU的生产商主要有NVIDIA和ATI。
采用CPU的向量部件渲染三维图形的方式,是指采用CPU中配置的与GPU类似的向量运算单元完成三维图形的渲染。在进行三维图形渲染时,用于三维运算的向量运算指令是CPU运行的进程的一部分。三维绘制在执行时,该绘制所在的进程必须在执行态。用于加速的向量指令的代码被放置在不同函数,根据调用来跳转。
根据两种Linux图形渲染方式的原理可见,采用GPU渲染三维图形的方式由于采用了专门的处理器完成渲染功能因此具有更高的处理性能,而采用CPU的向量部件渲染三维图形的方式是采用现有CPU完成渲染功能因此图形处理性能相对较弱,两类图形渲染方式的售价也存在较大的差别,因此,如何判断Linux平台采用的图形渲染方式非常必要。
现有技术中判断Linux平台图形渲染方式的方法主要是采用软件工作进行测试,如采用工具glxinfo测试。glxinfo是一款常用的终端命令行工具,能够获得显卡对OpenGL的支持信息、图形渲染方式及系统当前使用的显卡信息,例如当执行“glxinfo | greprenderer”命令时如果返回llvmpipe则说明Linux图形渲染方式为采用CPU的向量部件渲染三维图形的方式。但是,采用上述方法测试Linux平台采用的图形渲染方式时通过修改被测系统中的特定属性就能改变测试结果得到错误的结论,例如,通过修改renderer name的方式绕过上述检测方法如将llvmpipe改为AMD显卡renderer的名字即可达到绕过检测的目的。综上所述,现有Linux平台图形渲染方式的检测方法仍存在测试结果准确性不高等问题。
发明内容
有鉴于此,本发明提供了一种Linux平台图形渲染方式的检测方法,能够相对准确的判断Linux平台实际所采用的图像渲染方式。
本发明提供的一种Linux平台图形渲染方式的检测方法,包括以下步骤:
以Linux平台已安装的Mesa作为待测Mesa,获取待测Mesa的版本号和编译选项,根据版本号获取对应的Mesa源代码;在当前Linux平台中,采用待测Mesa的编译选项、设置启动软渲染引擎,编译Mesa源代码得到Mesa对比版;
选定GPU测试程序,确定测试指标,Linux平台启动所述Mesa对比版后多次运行GPU测试程序得到测试指标的结果为对比指标结果; Linux平台启动待测Mesa后多次运行GPU测试程序得到测试参数的取值为现有指标结果;计算所述对比指标结果与现有指标结果的相似度,若相似度小于或等于阈值则Linux平台的图形渲染方式为软渲染,否则Linux平台的图形渲染方式为硬渲染。
进一步地,所述GPU测试程序为常用测试程序时,测试过程包括以下步骤:
S2.1、Linux平台启动所述Mesa对比版后多次运行GPU测试程序后,得到Linux平台显示帧率的平均值为对比帧率;Linux平台启动待测Mesa后多次运行GPU测试程序,得到Linux平台显示帧率的平均值为现有帧率;
S2.2、计算所述对比帧率与现有帧率的差值,若差值小于或等于设定的差值阈值,则Linux平台的图形渲染方式为软渲染,否则Linux平台的图形渲染方式为硬渲染。
进一步地,所述差值阈值为现有帧率的5%。
进一步地,所述差值阈值的确定过程为:
若能够获取所述待测Mesa的编译选项,则采用不同的编译选项的组合编译所述Mesa源代码得到多个Mesa对比版本,分别启动所有Mesa对比版本,分别运行GPU测试程序得到不同Mesa对比版本所对应的对比帧率,分别计算对比帧率与现有帧率的差值,选取其中的最大差值作为差值阈值;
若无法获取所述待测Mesa的编译选项,则采用常用编译选项的多种编译选项组合编译所述Mesa源代码得到多个Mesa对比版本,分别启动所有Mesa对比版本,分别运行GPU测试程序得到不同Mesa对比版本所对应的对比帧率,选取其中的最大值与最小值,以最大值与最小值的差值作为差值阈值。
进一步地,所述GPU测试程序为在执行占用GPU渲染管线和CPU资源操作的同时,监测GPU测试程序所在进程的CPU利用率和GPU运行负载,通过对比CPU利用率和GPU运行负载进行测试,测试过程包括:
S5.1、启动Mesa对比版多次运行GPU测试程序,采样GPU渲染管线负载和CPU利用率计算得到采样结果的均值,再进行均值采样得到GPU渲染管线负载和CPU利用率的均值采样值,得到以时间为横坐标GPU渲染管线负载为纵坐标的GPU对比曲线,及以时间为横坐标CPU利用率的均值采样值为纵坐标的CPU对比曲线;
S5.2、启动待测Mesa多次运行GPU测试程序,采样GPU渲染管线负载和CPU利用率计算得到采样结果的均值,再进行均值采样得到GPU渲染管线负载和CPU利用率的均值采样值,得到以时间为横坐标GPU渲染管线负载为纵坐标的GPU现有曲线,及以时间为横坐标CPU利用率的均值采样值为纵坐标的CPU现有曲线;
S5.3、分析确定GPU对比曲线与GPU现有曲线的相似性,及CPU对比曲线与CPU现有曲线的相似性,若相似性均小于或等于设定的相似性阈值,则Linux平台的图形渲染方式为软渲染,否则Linux平台的图形渲染方式为硬渲染。
进一步地,所述采样的采样间隔采用以下方式设定:
S6.1、设定采样间隔的初始值;
S6.2、启动测试程序;
S6.3、按照采样间隔采样,经过设定时间长度的采样后得到时间-GPU渲染管线负载曲线及时间-CPU利用率曲线;
S6.4、若仅存在一条时间-GPU渲染管线负载曲线或时间-CPU利用率曲线,则切换Linux平台中Mesa所采用的渲染引擎,执行S6.2;否则执行S6.5;
S6.5、分别计算两次运行得到时间-GPU渲染管线负载曲线及时间-CPU利用率曲线的相似性比值,若相似性比值大于或等于设定的测试阈值,则记录当前采样间隔为前次采样间隔,执行S6.7;若相似性比值小于设定的测试阈值,则执行S6.6;
S6.6、若采样间隔不为0,则记录当前采样间隔为前次采样间隔,并令采样间隔减少为当前值的90%并取整后作为新的采样间隔,执行S6.2;若采样间隔为0,则执行S6.1;
S6.7、将前次采样间隔作为最终输出的采样间隔。
进一步地,所述分析确定GPU对比曲线与GPU现有曲线的相似性,及CPU对比曲线与CPU现有曲线的相似性,具体方式为:
采用以下公式计算每个采样点数据的GPU偏差值∆gpu和CPU偏差值∆cpu
gpu=|Agpu-Bgpu|/( (Agpu+Bgpu)/2) * 100%,∆cpu=|Acpu-Bcpu|/( (Acpu+Bcpu)/2) *100%;其中,Agpu为GPU对比曲线,Bgpu为GPU现有曲线,Acpu为CPU对比曲线,Bcpu为CPU现有曲线;
若所有采样点的∆gpu和∆cpu数据中满足大于或等于偏差值阈值条件的采样点数量大于数量阈值,则认为Agpu与Bgpu、Acpu与Bcpu不相似;
否则,分别计算Agpu与Bgpu上相邻采样点连线的斜率,如果得到的Agpu与Bgpu的所有斜率均正负符号相同,则认为两条曲线相似,否则认为不相似,同理,分别计算Acpu与Bcpu上相邻采样点连线的斜率,如果得到的Acpu与Bcpu的所有斜率均正负符号相同,则认为两条曲线相似,否则认为不相似。
进一步地,所述偏差值阈值设定为5%、数量阈值设定为采样点数量的10%。
有益效果:
本发明通过获取Linux平台当前已安装Mesa的版本及配置信息,获取相同版本的Mesa作为对比版本,安装对比版本并以设置启动软渲染引擎的方式运行该对比版本,采用测试工具对已安装Mesa和对比版本Mesa的运行进行测试,并监测测试时的GPU和CPU性能,通过对GPU和CPU性能的对比分析确定Linux平台的图形渲染方式,能够避免现有绕过检测手段对检测结果准确性的干扰,从而有效提高Linux平台图形渲染方式检测的准确性。
附图说明
图1为本发明提供的一种Linux平台图形渲染方式的检测方法的流程图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
现有技术中在Linux平台上采用glxinfo测试图形渲染方式的过程为:首先安装glxinfo所在的安装包,然后运行glxinfo并分析输出结果获取renderer对应的内容,若renderer对应的内容包含llvm pipe或swrast则说明被测试的Linux平台采用的渲染方式为软渲染,否则采用的是硬渲染。然而,采用这种方法测试时,只要篡改OpenGL库中glGetString函数的返回值或者修改glxinfo工具就可以改变测试结果误导用户,因此,极大降低了这类测试方法的准确性。
本发明提供了一种Linux平台图形渲染方式的检测方法,流程如图1所示,具体包括以下步骤:
步骤1、以Linux平台已安装的Mesa作为待测Mesa,获取待测Mesa的版本号和编译选项,根据版本号下载对应的Mesa源代码;在当前Linux平台中,采用待测Mesa的编译选项、设置启动软渲染引擎,编译已下载的Mesa源代码得到Mesa对比版,并将Mesa对比版作为测试过程中与待测Mesa进行对比测试的比较版本。
其中,Mesa的软渲染引擎包括llvm pipe和swrast等。
步骤2、选定GPU测试程序,根据GPU测试程序确定测试指标,设置Linux平台的环境变量使Linux平台启动采用步骤1编译得到的Mesa对比版,多次运行GPU测试程序得到测试指标的结果,将这些取值作为对比指标结果;设置Linux平台的环境变量使Linux平台启动待测Mesa后,多次运行GPU测试程序,得到测试参数的取值,将这些取值作为现有指标结果;分析得到对比指标结果与现有指标结果的相似度,若相似度小于或等于设定的阈值则Linux平台采用的图形渲染方式为软渲染,否则Linux平台采用的图形渲染方式为硬渲染。
其中,GPU测试程序可为现有技术中常用的测试程序,例如,Glmark2,Glmark2 是开源软件,是用于测试OpenGL 2.0 和 ES 2.0的基准测试程序,一般用来对GPU进行基准测试。Glmark2提供了一系列丰富的测试用例,涉及图形单元性能的多个方面,如缓冲、建筑、照明、纹理等,一般每次测试进行10秒且单独计算帧速率。
当GPU测试程序为现有技术中常用的测试程序时,测试过程包括以下步骤:
S2.1、设置Linux平台的环境变量使Linux平台采用步骤1编译得到的Mesa对比版,多次运行GPU测试程序,得到Linux平台显示帧率的平均值,命名为对比帧率;设置Linux平台的环境变量使Linux平台采用待测Mesa,多次运行GPU测试程序,得到Linux平台显示帧率的平均值,命名为现有帧率。
S2.2、计算对比帧率与现有帧率的差值,若差值小于或等于设定的差值阈值,则说明Linux平台采用的图形渲染方式为软渲染;否则,则说明Linux平台采用的图形渲染方式为硬渲染。
一般情况下,差值阈值设定为现有帧率的5%。
为了进一步提高测试的准确性,本发明根据能否获取Linux平台中待测Mesa的编译选项,采用以下方式确定差值阈值:
当能够获取Linux平台中待测Mesa的编译选项时,采用不同的编译选项的组合编译下载的Mesa源代码得到多个Mesa对比版本,修改Linux平台的环境变量遍历启动所有Mesa对比版本,在不同的Mesa对比版本上多次运行GPU测试程序分别得到不同Mesa对比版本所对应的对比帧率,分别计算对比帧率与现有帧率的差值,选取其中的最大差值作为差值阈值;
当无法获取Linux平台中待测Mesa的编译选项时,则根据常用编译选项设定多种编译选项组合,采用不同的编译选项组合编译下载的Mesa源代码得到多个Mesa对比版本,修改Linux平台的环境变量遍历启动所有Mesa对比版本,在不同的Mesa对比版本上多次运行GPU测试程序分别得到不同Mesa对比版本所对应的对比帧率,选取其中的最大值与最小值,以最大值与最小值的差值作为差值阈值。
为了进一步提高测试的准确率,本发明设计了特殊的GPU测试程序,通过执行占用GPU渲染管线和CPU资源操作的同时监视GPU测试程序所在进程的CPU和GPU运行负载,将CPU和GPU运行负载作为对比指标结果,具体测试过程包括以下步骤:
S3.1、设置Linux平台的环境变量使Linux平台采用步骤1编译得到的Mesa对比版,多次运行GPU测试程序,在每次运行中对GPU渲染管线负载和CPU利用率进行采样并计算得到均值,再进行均值采样得到GPU渲染管线负载和CPU利用率的均值采样值,分别得到以时间为横坐标GPU渲染管线负载为纵坐标及以时间为横坐标CPU利用率的均值采样值为纵坐标的两条曲线,以这两条曲线作为对比参数曲线,即:GPU对比曲线和CPU对比曲线;设置Linux平台的环境变量使Linux平台采用待测Mesa,多次运行GPU测试程序,在每次运行中对GPU渲染管线负载和CPU利用率进行采样后计算得到均值,再进行均值采样得到GPU渲染管线负载和CPU利用率的均值采样值,分别得到以时间为横坐标GPU渲染管线负载及以时间为横坐标CPU利用率的均值采样值为纵坐标的两条曲线,以这两条曲线作为现有参数曲线,即:GPU现有曲线和CPU现有曲线。
S3.2、分析确定GPU对比曲线与GPU现有曲线的相似性,及CPU对比曲线与CPU现有曲线的相似性,若相似性均小于或等于设定的相似性阈值,则说明Linux平台采用的图形渲染方式为软渲染;否则,则说明Linux平台采用的图形渲染方式为硬渲染。
本发明中,在分析GPU对比曲线与GPU现有曲线、CPU对比曲线与CPU现有曲线的相似性时,计算对比的两条曲线在确定区间长度上的采样点差值的和与确定区间长度值的比值,将该比值作为相似性比值,那么相似性比值越小则说明两条曲线的相似度越高。
对于GPU测试程序的测试精度而言,在测试中对GPU渲染管线负载和CPU利用率的采样间隔越小则测试结果的精度越高,然而由于采样操作本身会对CPU利用率产生影响,由此可能会导致CPU利用率的短暂下降,因此,为了进一步地平衡测试过程的效率与精度,规避测试过程中的操作对测试结果的影响,本发明采用以下方式计算GPU渲染管线负载和CPU利用率的采样间隔:
S4.1、设定采样间隔的初始值,例如,初始值为5ms;
S4.2、启动测试程序;
S4.3、采用Linux 系统中的高精度定时器(High Resolution Timer,HRTimer)按照采样间隔进行采样,经过设定时间长度的采样后得到“时间-GPU渲染管线负载曲线”或“时间-CPU利用率曲线”;
S4.4、若仅存在一个“时间-GPU渲染管线负载曲线”或“时间-CPU利用率曲线”,则切换Linux平台中Mesa采用的渲染引擎,执行S4.2;否则执行S4.5;
S4.5、分别计算两次运行得到“时间-GPU渲染管线负载曲线”及“时间-CPU利用率曲线”的相似性比值,若相似性比值大于或等于设定的测试阈值,则执行S4.8;若相似性比值小于设定的测试阈值,则执行S4.7;
S4.6、记录当前采样间隔为前次采样间隔;
S4.7、若采样间隔不为0,则记录当前采样间隔为前次采样间隔,并令采样间隔减少为当前值的90%并取整后作为新的采样间隔,执行S4.2;若采样间隔为0,则执行S4.1。
S4.8、将前次采样间隔作为最终输出的采样间隔。
采用本发明提出的采样间隔计算方法,分别计算得到Linux平台启动待测Mesa时的采样间隔和Linux平台启动Mesa对比版时的采样间隔,选取其中的最大值作为最终选用的采样间隔。
此外,本发明还可采用以下步骤分析GPU对比曲线(Agpu)与GPU现有曲线(Bgpu)、CPU对比曲线(Acpu)与CPU现有曲线(Bcpu)的相似性,具体步骤如下:
暂停停止所有不影响系统正常运行的服务和进程后,对GPU利用率和CPU利用率进行采样,获取GPU利用率和CPU利用率的采样数据;
对每个采样点的数据计算GPU偏差值∆gpu和CPU偏差值∆cpu,如下所示,∆gpu=|Agpu-Bgpu|/( (Agpu+Bgpu)/2) * 100%,∆cpu=|Acpu-Bcpu|/( (Acpu+Bcpu)/2) * 100%;
若所有采样点的∆gpu和∆cpu数据中满足大于或等于偏差值阈值条件的采样点数量大于数量阈值,则认为GPU对比曲线(Agpu)与GPU现有曲线(Bgpu)、CPU对比曲线(Acpu)与CPU现有曲线(Bcpu)不相似;否则,则分别计算GPU对比曲线(Agpu)与GPU现有曲线(Bgpu)上相邻采样点连线的斜率,如果得到的Agpu与Bgpu的所有斜率均正负符号相同,则认为两条曲线相似,否则认为不相似,同理,分别计算CPU对比曲线(Acpu)与CPU现有曲线(Bcpu)上相邻采样点连线的斜率,如果得到的Acpu与Bcpu的所有斜率均正负符号相同,则认为两条曲线相似,否则认为不相似。
其中,根据经验可将偏差值阈值设定为5%、数量阈值设定为采样点数量的10%。
上述占用GPU渲染管线的测试包括以下方式:
从帧缓存中读取数据,读取遮蔽查询、转换反馈查询以及其他依赖于渲染操作的查询对象的结果的操作,相关API包括glReadPixels等。
深度测试,用于实现场景中位于前面的物体或物体的位于前面的部分能够遮挡位于后面的物体或物体的位于后面的部分,以防止场景中的物体出现显示不全、闪烁等问题。深度测试通过比较像素的深度值与深度缓冲区中的内容,如果深度值大于或等于深度缓冲区中值,则丢弃这部分;否则利用这个像素对应的深度值和颜色值,分别更新深度缓冲区和颜色缓冲区。深度测试相关的API包括glDepthMask、glDepthFunc等。
模板测试,是以场景中某个物体为模板进行绘制,该模板是屏幕空间中的二维模板,基于该模版绘制出来的效果也是二维的。模版测试通过比较片段指定的参考值与模板缓冲中的模板值,如果比较结果达到预设值,则通过模板测试,然后用该参考值更新模板缓冲中的模板值;如果为达到预设值,则说明未通过测试,不再更新模板缓冲中的模板值。模板测试相关的API包括:glStencilMask、glStencilFunc及glStencilOp等。
纹理操作,用于添加物体细节使图形看起来更真实,相关API包括glGenTextures、glBindTexture、 glGenerateMipmap、glActiveTexture等。
占用CPU资源的操作包括以下方式:
返回错误信息操作,相关API包括glGetError等;获取函数返回所选参数值的操作,相关API包括glGetIntegerv等;获取统一变量的位置的返回值的操作,相关API包括glGetUniformLocation等。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种Linux平台图形渲染方式的检测方法,其特征在于,包括以下步骤:
以Linux平台已安装的Mesa作为待测Mesa,获取待测Mesa的版本号和编译选项,根据版本号获取对应的Mesa源代码;在当前Linux平台中,采用待测Mesa的编译选项、设置启动软渲染引擎,编译Mesa源代码得到Mesa对比版;
选定GPU测试程序,确定测试指标,Linux平台启动所述Mesa对比版后多次运行GPU测试程序得到测试指标的结果为对比指标结果; Linux平台启动待测Mesa后多次运行GPU测试程序得到测试参数的取值为现有指标结果;计算所述对比指标结果与现有指标结果的相似度,若相似度小于或等于阈值则Linux平台的图形渲染方式为软渲染,否则Linux平台的图形渲染方式为硬渲染。
2.根据权利要求1所述的检测方法,其特征在于,所述GPU测试程序为常用测试程序时,测试过程包括以下步骤:
S2.1、Linux平台启动所述Mesa对比版后多次运行GPU测试程序后,得到Linux平台显示帧率的平均值为对比帧率;Linux平台启动待测Mesa后多次运行GPU测试程序,得到Linux平台显示帧率的平均值为现有帧率;
S2.2、计算所述对比帧率与现有帧率的差值,若差值小于或等于设定的差值阈值,则Linux平台的图形渲染方式为软渲染,否则Linux平台的图形渲染方式为硬渲染。
3.根据权利要求2所述的检测方法,其特征在于,所述差值阈值为现有帧率的5%。
4.根据权利要求2所述的检测方法,其特征在于,所述差值阈值的确定过程为:
若能够获取所述待测Mesa的编译选项,则采用不同的编译选项的组合编译所述Mesa源代码得到多个Mesa对比版本,分别启动所有Mesa对比版本,分别运行GPU测试程序得到不同Mesa对比版本所对应的对比帧率,分别计算对比帧率与现有帧率的差值,选取其中的最大差值作为差值阈值;
若无法获取所述待测Mesa的编译选项,则采用常用编译选项的多种编译选项组合编译所述Mesa源代码得到多个Mesa对比版本,分别启动所有Mesa对比版本,分别运行GPU测试程序得到不同Mesa对比版本所对应的对比帧率,选取其中的最大值与最小值,以最大值与最小值的差值作为差值阈值。
5.根据权利要求1所述的检测方法,其特征在于,所述GPU测试程序为在执行占用GPU渲染管线和CPU资源操作的同时,监测GPU测试程序所在进程的CPU利用率和GPU运行负载,通过对比CPU利用率和GPU运行负载进行测试,测试过程包括:
S5.1、启动Mesa对比版多次运行GPU测试程序,采样GPU渲染管线负载和CPU利用率计算得到采样结果的均值,再进行均值采样得到GPU渲染管线负载和CPU利用率的均值采样值,得到以时间为横坐标GPU渲染管线负载为纵坐标的GPU对比曲线,及以时间为横坐标CPU利用率的均值采样值为纵坐标的CPU对比曲线;
S5.2、启动待测Mesa多次运行GPU测试程序,采样GPU渲染管线负载和CPU利用率计算得到采样结果的均值,再进行均值采样得到GPU渲染管线负载和CPU利用率的均值采样值,得到以时间为横坐标GPU渲染管线负载为纵坐标的GPU现有曲线,及以时间为横坐标CPU利用率的均值采样值为纵坐标的CPU现有曲线;
S5.3、分析确定GPU对比曲线与GPU现有曲线的相似性,及CPU对比曲线与CPU现有曲线的相似性,若相似性均小于或等于设定的相似性阈值,则Linux平台的图形渲染方式为软渲染,否则Linux平台的图形渲染方式为硬渲染。
6.根据权利要求5所述的检测方法,其特征在于,所述采样的采样间隔采用以下方式设定:
S6.1、设定采样间隔的初始值;
S6.2、启动测试程序;
S6.3、按照采样间隔采样,经过设定时间长度的采样后得到时间-GPU渲染管线负载曲线及时间-CPU利用率曲线;
S6.4、若仅存在一条时间-GPU渲染管线负载曲线或时间-CPU利用率曲线,则切换Linux平台中Mesa所采用的渲染引擎,执行S6.2;否则执行S6.5;
S6.5、分别计算两次运行得到时间-GPU渲染管线负载曲线及时间-CPU利用率曲线的相似性比值,若相似性比值大于或等于设定的测试阈值,则记录当前采样间隔为前次采样间隔,执行S6.7;若相似性比值小于设定的测试阈值,则执行S6.6;
S6.6、若采样间隔不为0,则记录当前采样间隔为前次采样间隔,并令采样间隔减少为当前值的90%并取整后作为新的采样间隔,执行S6.2;若采样间隔为0,则执行S6.1;
S6.7、将前次采样间隔作为最终输出的采样间隔。
7.根据权利要求5所述的检测方法,其特征在于,所述分析确定GPU对比曲线与GPU现有曲线的相似性,及CPU对比曲线与CPU现有曲线的相似性,具体方式为:
采用以下公式计算每个采样点数据的GPU偏差值∆gpu和CPU偏差值∆cpu
gpu=|Agpu-Bgpu|/( (Agpu+Bgpu)/2) * 100%,∆cpu=|Acpu-Bcpu|/( (Acpu+Bcpu)/2) *100%;其中,Agpu为GPU对比曲线,Bgpu为GPU现有曲线,Acpu为CPU对比曲线,Bcpu为CPU现有曲线;
若所有采样点的∆gpu和∆cpu数据中满足大于或等于偏差值阈值条件的采样点数量大于数量阈值,则认为Agpu与Bgpu、Acpu与Bcpu不相似;
否则,分别计算Agpu与Bgpu上相邻采样点连线的斜率,如果得到的Agpu与Bgpu的所有斜率均正负符号相同,则认为两条曲线相似,否则认为不相似,同理,分别计算Acpu与Bcpu上相邻采样点连线的斜率,如果得到的Acpu与Bcpu的所有斜率均正负符号相同,则认为两条曲线相似,否则认为不相似。
8.根据权利要求7所述的检测方法,其特征在于,所述偏差值阈值设定为5%、数量阈值设定为采样点数量的10%。
CN202210316807.0A 2022-03-29 2022-03-29 一种Linux平台图形渲染方式的检测方法 Active CN114708370B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210316807.0A CN114708370B (zh) 2022-03-29 2022-03-29 一种Linux平台图形渲染方式的检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210316807.0A CN114708370B (zh) 2022-03-29 2022-03-29 一种Linux平台图形渲染方式的检测方法

Publications (2)

Publication Number Publication Date
CN114708370A true CN114708370A (zh) 2022-07-05
CN114708370B CN114708370B (zh) 2022-10-14

Family

ID=82171266

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210316807.0A Active CN114708370B (zh) 2022-03-29 2022-03-29 一种Linux平台图形渲染方式的检测方法

Country Status (1)

Country Link
CN (1) CN114708370B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357520A (zh) * 2022-10-24 2022-11-18 北京麟卓信息科技有限公司 一种基于cpu的图形渲染方式的检测方法
CN115409687A (zh) * 2022-10-31 2022-11-29 北京麟卓信息科技有限公司 一种基于显示缓冲区合成的渲染差异检测方法
CN115660940A (zh) * 2022-11-11 2023-01-31 北京麟卓信息科技有限公司 一种基于垂直消隐模拟的图形应用帧率同步方法
CN116450208A (zh) * 2023-06-20 2023-07-18 北京麟卓信息科技有限公司 一种基于指令流分析的图形混合加速模式的验证方法
CN117076226A (zh) * 2023-10-16 2023-11-17 北京麟卓信息科技有限公司 一种基于图像纹理差异的图形系统渲染正确性验证方法
CN117170953A (zh) * 2023-11-02 2023-12-05 北京麟卓信息科技有限公司 一种基于多路视频编码的渲染差异比对方法
CN117743195A (zh) * 2024-02-20 2024-03-22 北京麟卓信息科技有限公司 基于渲染时间差异度量的图形接口层次化实现验证方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180158169A1 (en) * 2014-06-19 2018-06-07 Vmware, Inc. Host-Based GPU Resource Scheduling
CN110443876A (zh) * 2019-07-31 2019-11-12 新华三大数据技术有限公司 3d图像渲染方法及装置
CN111729293A (zh) * 2020-08-28 2020-10-02 腾讯科技(深圳)有限公司 一种数据处理方法、装置及存储介质
CN113379588A (zh) * 2021-06-10 2021-09-10 西安万像电子科技有限公司 容器应用的渲染系统
CN113467958A (zh) * 2021-09-02 2021-10-01 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180158169A1 (en) * 2014-06-19 2018-06-07 Vmware, Inc. Host-Based GPU Resource Scheduling
CN110443876A (zh) * 2019-07-31 2019-11-12 新华三大数据技术有限公司 3d图像渲染方法及装置
CN111729293A (zh) * 2020-08-28 2020-10-02 腾讯科技(深圳)有限公司 一种数据处理方法、装置及存储介质
CN113379588A (zh) * 2021-06-10 2021-09-10 西安万像电子科技有限公司 容器应用的渲染系统
CN113467958A (zh) * 2021-09-02 2021-10-01 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备以及可读存储介质

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115357520A (zh) * 2022-10-24 2022-11-18 北京麟卓信息科技有限公司 一种基于cpu的图形渲染方式的检测方法
CN115357520B (zh) * 2022-10-24 2022-12-16 北京麟卓信息科技有限公司 一种基于cpu的图形渲染方式的检测方法
CN115409687A (zh) * 2022-10-31 2022-11-29 北京麟卓信息科技有限公司 一种基于显示缓冲区合成的渲染差异检测方法
CN115660940A (zh) * 2022-11-11 2023-01-31 北京麟卓信息科技有限公司 一种基于垂直消隐模拟的图形应用帧率同步方法
CN115660940B (zh) * 2022-11-11 2023-04-28 北京麟卓信息科技有限公司 一种基于垂直消隐模拟的图形应用帧率同步方法
CN116450208B (zh) * 2023-06-20 2023-09-19 北京麟卓信息科技有限公司 一种基于指令流分析的图形混合加速模式的验证方法
CN116450208A (zh) * 2023-06-20 2023-07-18 北京麟卓信息科技有限公司 一种基于指令流分析的图形混合加速模式的验证方法
CN117076226A (zh) * 2023-10-16 2023-11-17 北京麟卓信息科技有限公司 一种基于图像纹理差异的图形系统渲染正确性验证方法
CN117076226B (zh) * 2023-10-16 2023-12-29 北京麟卓信息科技有限公司 一种基于图像纹理差异的图形系统渲染正确性验证方法
CN117170953A (zh) * 2023-11-02 2023-12-05 北京麟卓信息科技有限公司 一种基于多路视频编码的渲染差异比对方法
CN117170953B (zh) * 2023-11-02 2024-01-12 北京麟卓信息科技有限公司 一种基于多路视频编码的渲染差异比对方法
CN117743195A (zh) * 2024-02-20 2024-03-22 北京麟卓信息科技有限公司 基于渲染时间差异度量的图形接口层次化实现验证方法
CN117743195B (zh) * 2024-02-20 2024-04-26 北京麟卓信息科技有限公司 基于渲染时间差异度量的图形接口层次化实现验证方法

Also Published As

Publication number Publication date
CN114708370B (zh) 2022-10-14

Similar Documents

Publication Publication Date Title
CN114708370B (zh) 一种Linux平台图形渲染方式的检测方法
WO2020156264A1 (zh) 渲染方法及装置
US8305381B2 (en) Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US6952206B1 (en) Graphics application program interface system and method for accelerating graphics processing
US20160027142A1 (en) Application-transparent resolution control by way of command stream interception
US20130275874A1 (en) Graphics Command Management Tool and Methods for Analyzing Performance for Command Changed Before Application Modification
US20170358132A1 (en) System And Method For Tessellation In An Improved Graphics Pipeline
US11455705B2 (en) Asynchronous space warp for remotely rendered VR
CN109471805B (zh) 资源测试方法及装置、存储介质、电子设备
CN105204988A (zh) 电子设备游戏性能的测试方法及系统
CN111240977A (zh) 游戏场景的性能测试方法、装置、设备及存储介质
CN111179150A (zh) 一种基于绘制指令流的着色器自动简化方法和系统
US8436856B1 (en) Systems and methods for mixing the execution order of shading language code
CN110334027B (zh) 游戏画面测试方法和装置
TW201137752A (en) Relational modeling for performance analysis of multi-core processors using virtual tasks
US20200380700A1 (en) Methods and apparatus for detecting motion estimation
US20200379864A1 (en) Graphics Processing Unit Performance Analysis Tool
CN114387241A (zh) 动画效果检测方法、装置、电子设备和存储介质
CN116457830A (zh) 基于区域不连续性的运动估计
KR20180015564A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
CN102141908A (zh) 一种可通用的图形、图像、视觉开发库
Wong A comparison of graphics performance of tile based and traditional rendering architectures
CN115660940B (zh) 一种基于垂直消隐模拟的图形应用帧率同步方法
KR102634506B1 (ko) Gpu 하드웨어 기반 심도 버퍼 방향 추적
CN111611032A (zh) 一种用户界面绘制层级、过度绘制的检测方法及装置

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