CN108089862B - 一种OpenGL ES 3D应用的裁剪与合成方法 - Google Patents
一种OpenGL ES 3D应用的裁剪与合成方法 Download PDFInfo
- Publication number
- CN108089862B CN108089862B CN201711348157.3A CN201711348157A CN108089862B CN 108089862 B CN108089862 B CN 108089862B CN 201711348157 A CN201711348157 A CN 201711348157A CN 108089862 B CN108089862 B CN 108089862B
- Authority
- CN
- China
- Prior art keywords
- frame
- api
- opengl
- state
- trace file
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种OpenGL ES 3D应用的裁剪与合成方法。首先,本发明针对包含3D场景渲染API的Trace文件,获取3D场景渲染过程中每一帧与性能相关的参数,提取参数降维后形成的向量作为3D场景中帧的特征;接着,根据帧特征的相似性,对帧分类并提取其中具有代表性的关键帧;最后,通过追踪3D场景渲染过程中OpenGL ES的状态变化,寻找出关键帧所依赖的状态恢复API,再拼接各关键帧合成可被播放的缩减Trace文件。
Description
技术领域
本发明提供一种基于Trace的OpenGL ES 3D应用的裁剪与合成方法,属于嵌入式GPU 3D图形测试领域。
背景技术
随着高端的3D游戏在手机、平板等移动终端上大量出现,GPU需要通过仿真不同的3D测试负载而获得满足高端图形图像显示需求的架构。同时,仿真是十分耗时的一项工作,为提高仿真的效率最为普遍的做法是缩减测试应用。
目前嵌入式3D应用多数使用OpenGL ES API编写,应用程序执行过程中产生的OpenGL ES API调用包含了渲染3D场景所有的信息,由于嵌入式应用的闭源性,现无法通过减少源码中的渲染内容来缩减应用。
发明内容
本发明针对现有技术中存在的问题,提出了一种基于Trace的OpenGL ES 3D应用的裁剪与合成方法,基于Trace,裁剪应用的OpenGL ES API并合成缩减后的Trace文件。通过OpenGL ES API播放的方式复现原有3D应用对GPU的渲染性能以及压力,提高嵌入式GPU3D图形性能测试的效率。
为解决上述技术问题,本发明提供了基于Trace的OpenGL ES 3D应用的裁剪与合成方法,其特征在于:包括以下步骤:
S1、获取3D应用OpenGL ES API原始Trace文件;
S2、获取3D场景渲染过程中每一帧性能相关参数,将该性能相关参数降维后形成帧的特征向量;
S3、根据每帧的特征向量,将3D场景渲染的所有帧分类,并筛选出每类的关键帧;
S4、通过跟踪OpenGL ES状态机的状态变化过程,提取每一关键帧的状态恢复API,将关键帧合成可播放的缩减Trace文件。
进一步的,性能相关参数包括GPU渲染的各个流水线以及专用硬件单元上的参数计数器和/或微架构无关参数。
进一步的,性能相关参数的获取依赖于Trace文件在硬件平台上按帧为单位的播放,且在每一帧渲染结束后加入相应的延时函数,使性能相关参数与帧之间对应,性能监测器在每帧播放时间内多次采样得到性能相关参数。
进一步的,步骤S3中关键帧为在特征空间内距离每类中心点最近的帧。
进一步的,步骤S4具体包括以下步骤:
S4-1:通过分析原始Trace文件的文本信息,模拟OpenGL ES API顺序执行过程实现跟踪OpenGL ES状态机的状态变化,通过模拟的执行过程,分析每一条API对当前控制型状态、以及资源型状态的影响,模拟从原始Trace文件的第一条OpenGL ES API开始直到关键帧为止,记录这一过程中屡次设置各种控制型状态的API以及按资源ID记录这一过程中生成的所有资源状态设置API;
S4-2:从记录中抽取设置各种控制型状态的最后一条API,按照关键帧使用资源ID的顺序抽取出关键帧需要的资源状态恢复API,完成关键帧的控制以及资源状态恢复API的分析;
S4-3:对关键帧进行重复,使各类关键帧数之比与原始3D应用各类总帧数比例一致,在明确各关键帧所需重复次数以及其相应的状态恢复API后,通过读取原始Trace文件,将相应的关键帧及其状态恢复API按照顺序依次写入新的Trace文件,形成缩减版的Trace文件。
有益效果:本发明与现有技术相比,本发明具有以下优点:本发明合成的可被播放的缩减Trace文件在渲染性能表现以及缓存压力上和原始3D应用具有较高的相似度。因此,且本发明可用于没有OpenGL ES 3D应用源码的情形下生成缩减版的3D应用测试例,极大提升嵌入式GPU开发过程中3D图形测试的效率,并且在裁剪与合成缩减版OpenGL ES 3D应用的过程中,基于帧特征对OpenGL ES 3D应用进行性能压力的分类,这对理解现有嵌入式GPU对任何一种3D应用的性能瓶颈,并针对性地改进嵌入式GPU的设计有极大帮助。
附图说明
图1为本发明的流程图;
图2为五个实例缩减Trace的播放性能与原应用的性能在不同GPU频率下的对比;
图3为五个实例缩减Trace的播放缓存命中率与原应用的缓存命中率对比。
具体实施方式
以下结合附图和实施例对本发明做进一步说明。
本发明具体流程如图1所示,现详细解释这些步骤:
步骤1.获取Trace:本实施例利用第三方Trace捕获器Apitrace获取3D应用运行时的Trace文件。
步骤2.生成帧特征:
S2-1:挑选性能相关且微架构无关参数:
性能相关参数的挑选原则如下:
A:性能参数应该包含GPU渲染的各个流水线以及专用硬件单元上的参数计数器。
B:优先使用微架构无关参数,微架构无关参数是属于应用的特征,与程序,指令集,编译器相关,但是与具体处理器实现无关,微架构无关参数是能够在跨平台的运行中准确维持的应用特征,但本方法不仅限于微架构无关参数。
本实施例采用的硬件平台Mali T628GPU,从GPU提供的性能计数器中挑选涉及计算流水线、存取流水线、纹理流水线、贴图单元以及片段处理前端这五个硬件单元的十二个微架构无关参数,分别是:计算指令的数目、存取指令数目、纹理指令数目、图元丢弃数目、图元载入数目、四光栅化数目、Tile渲染数目、前面图元数量、背面图元数量、剪裁图元数、剔除图元数目以及三角形的数目,这十二个参数反应3D应用渲染内容对GPU各个硬件单元的工作压力。
S2-2:参数获取:
使用Trace播放器播放获取到Trace文件,同时通过DS-5streamline性能监测器获取GPU运行3D应用的性能相关参数。由于DS-5streamline按单位时间间隔实时获取Trace中性能相关参数,无法将性能参数对应到每一帧,为了将每帧的渲染有效地区分开,故在播放Trace文件时,在每一帧结束后加入相应的延时函数,避免渲染不同帧的性能参数的统计出现交叠,实现参数与帧之间的对应。同时,DS-5streamline在每帧播放时间内多次采样性能相关参数,因此,在一帧时间内计数器值求和即可以获得对应参数。这十二个计数器的求和值组成的一个十二维的向量。
S2-3:标准化降维生成特征向量:
如果使用这十二维向量来描述一帧的特征存在以下两个问题:不同的计数器数值差距过大和不同的计数器数值之间存在相关性。为了能够更好、更公平的衡量出不同帧的特征,对这十二维度的向量进行标准化和降维:
标准化公式为:
其中,x为每个维度的数值,μ与σ分别对应该维度的平均值以及标准差,z为标准化后该维度的新值。
由于不同的性能参数之间存在较大的相关性,所以将由性能相关参数组成的多维度向量进行降维,生成低维度的向量。降维后的向量保留原有高维度向量所体现的关键的性能相关信息,因此降维后的向量即为各帧的特征向量。
我们采用主成分分析法(PCA)对标准化后的十二维向量降维。选取对整体方差贡献超过85%的特征向量作为主成分,降维之后得到由主成分构成的特征空间,将原每帧十二维的性能相关向量投影到特征空间之后,即得到每一帧在特征空间中的向量表示。此时,每帧可表示为特征空间中的一个点。具体如图1所示。
步骤3.确定关键帧:
S3-1:分类:
本实施例中使用K-means聚类算法在特征空间中对所有帧进行分类。我们采用gap-statistic的方法确定最优的聚类数目,并接着利用树状聚类算法得出该聚类数目下初始的聚类中心坐标,这样使聚类算法更加稳定地收敛。
S3-2:选择关键帧:
本实施例中选取关键帧所采用的原则为:利用欧式距离衡量一个类内所有帧在特征空间中离聚类中心的距离。距离中心最近的那个帧将被筛选为关键帧,这些关键帧能够代表3D应用的平均渲染压力。
4.合成缩减Trace文件:
本实施例针对OpenGL ES的3D应用。Trace文件记录了3D应用渲染过程中的OpenGLES API所有调用过程。我们将OpenGL ES看作状态机,它包含两种状态:一种是控制型状态,这种状态描述:功能单元是否启用,资源格式的控制,初始值的取值,以及资源的绑定;另一种是资源状态:这种状态描述渲染所需要的资源情况,例如:着色器,纹理,缓冲以及帧缓冲。
对于控制型状态,设置这种状态的API一经调用,被设置的控制型状态将维持直到下一个API被调用,因此,当前的控制型状态取决于至今为止最后引起该状态变化的API。OpenGL ES中有多个控制型状态,故而分别记录下最后引起各个该类型状态变化的API即可恢复每一个控制型状态。
对于资源型状态,每个资源都有唯一的ID,每条资源状态的设置API只影响该资源。故而,对于资源型状态,需要按资源ID进行分类跟踪,维护所有ID的资源状态。具体方法是:当一条资源型状态设置API出现时,判断当前OpenGL ES状态上绑定的该类资源ID,将该API归类为该ID下的状态设置API。关键帧之前的API中包含着所有与关键帧的状态恢复API有关的信息。
以上控制或者资源状态描述每帧渲染工作负载,所需硬件资源,以及调用顺序。只有关键帧需要的控制状态以及资源状态恢复到与原来渲染一致的时候,关键帧才能被正确渲染。具体的合成过程分如下三个步骤进行:
S4-1:跟踪OpenGL ES状态机的状态变化是通过分析原始Trace文件的文本信息,模拟OpenGL ES API顺序执行过程实现的。通过模拟的执行过程,分析每一条API对当前控制型状态、以及资源型状态的影响。模拟从原始Trace文件的第一条OpenGL ESAPI开始直到关键帧为止,记录这一过程中屡次设置各种控制型状态的API以及按资源ID记录这一过程中生成的所有资源状态设置API。这些设置API的记录既包含了关键帧所需要的控制以及资源状态恢复API,也包含了与当前关键帧无关的控制以及资源状态设置API。
S4-2:为了精确还原出当前关键帧需要的控制状态,仅从记录中抽取设置各种控制型状态的最后一条API。为了精确还原出当前关键帧需要的资源状态,对关键帧中资源的使用情况进行分析,得到关键帧使用到的资源的ID。从记录中按照关键帧使用资源ID的顺序抽取出关键帧需要的资源状态恢复API。自此,完成关键帧的控制以及资源状态恢复API的分析。
S4-3:由于,每个关键帧代表的类对整体应用的贡献程度不一样,故而不同关键帧的对整体贡献的权重不同。定义权重为每一关键帧的重复播放次数。若在特征空间中,各类关键帧的权重之比等于每类总帧数之比,保证了由关键帧合成的缩减后Trace文件在渲染性能表现以及缓存压力上和原始3D应用具有较高的相似度。相应关键帧的重复次数计算公式如下:
Ri=[Wi*α] (2)
这里Ri表示第i个关键帧的重复次数,Wi表示第i个类的总帧数,α是缩减因子,本实施例中5个实例的α取值均为0.05,通常α可取值在0.05~0.1之间。这5个实例如图2、3所示。
在明确各关键帧数目Ri以及相应的状态恢复API后,通过读取原始Trace文件,将相应的关键帧及其状态恢复API按照顺序依次写入新的Trace文件,形成缩减版的Trace文件。该缩减后Trace文件可被Trace播放器播放。
最终,合成缩减的Trace文件并且在Trace播放器中运行,同时收集运行产生的FPS以及缓存命中率。图2展示了5个实例合成缩减的Trace文件在变频实验中,FPS与原始应用具有99.94%以上的相关性。图3展示了5个实例合成的缩减Trace文件在缓存命中率上与原始应用的误差小于7.73%。
综上所述,本发明针对OpenGL ES 3D应用提出基于Trace的裁剪与合成方法。本发明可以实现对3D应用中关键帧的提取,有助于GPU 3D图形测试集的生成、缩减,有助于分析嵌入式GPU对3D图形测试集的性能瓶颈,以及嵌入式GPU的架构设计。
Claims (4)
1.OpenGL ES 3D应用的裁剪与合成方法,其特征在于:包括以下步骤:
S1、获取3D应用OpenGL ES API原始Trace文件;
S2、获取3D场景渲染过程中每一帧性能相关参数,将该性能相关参数降维后形成帧的特征向量;
S3、根据每帧的特征向量,将3D场景渲染的所有帧分类,并筛选出每类的关键帧;
S4、通过跟踪OpenGL ES状态机的状态变化过程,提取每一关键帧的状态恢复API,将关键帧合成可播放的缩减Trace文件;
所述步骤S4具体包括以下步骤:
S4-1:通过分析原始Trace文件的文本信息,模拟OpenGL ES API顺序执行过程实现跟踪OpenGL ES状态机的状态变化,通过模拟的执行过程,分析每一条API对当前控制型状态、以及资源型状态的影响,模拟从原始Trace文件的第一条OpenGL ES API开始直到关键帧为止,记录这一过程中屡次设置各种控制型状态的API以及按资源ID记录这一过程中生成的所有资源状态设置API;
S4-2:从记录中抽取设置各种控制型状态的最后一条API,按照关键帧使用资源ID的顺序抽取出关键帧需要的资源状态恢复API,完成关键帧的控制以及资源状态恢复API的分析;
S4-3:对关键帧进行重复,使各类关键帧数之比与原始3D应用各类总帧数比例一致,在明确各关键帧所需重复次数以及其相应的状态恢复API后,通过读取原始Trace文件,将相应的关键帧及其状态恢复API按照顺序依次写入新的Trace文件,形成缩减版的Trace文件。
2.根据权利要求1所述的OpenGL ES 3D应用的裁剪与合成方法,其特征在于:所述性能相关参数包括GPU渲染的各个流水线以及专用硬件单元上的参数计数器和/或微架构无关参数。
3.根据权利要求2所述的OpenGL ES 3D应用的裁剪与合成方法,其特征在于:所述性能相关参数的获取依赖于Trace文件在硬件平台上按帧为单位的播放,且在每一帧渲染结束后加入相应的延时函数,使性能相关参数与帧之间对应,性能监测器在每帧播放时间内多次采样得到性能相关参数。
4.根据权利要求1所述的OpenGL ES 3D应用的裁剪与合成方法,其特征在于:所述步骤S3中关键帧为在特征空间内距离每类中心点最近的帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711348157.3A CN108089862B (zh) | 2017-12-15 | 2017-12-15 | 一种OpenGL ES 3D应用的裁剪与合成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711348157.3A CN108089862B (zh) | 2017-12-15 | 2017-12-15 | 一种OpenGL ES 3D应用的裁剪与合成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108089862A CN108089862A (zh) | 2018-05-29 |
CN108089862B true CN108089862B (zh) | 2021-03-19 |
Family
ID=62176662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711348157.3A Active CN108089862B (zh) | 2017-12-15 | 2017-12-15 | 一种OpenGL ES 3D应用的裁剪与合成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108089862B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110866965A (zh) * | 2019-11-14 | 2020-03-06 | 珠海金山网络游戏科技有限公司 | 一种三维模型的贴图绘制方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102449665A (zh) * | 2009-06-02 | 2012-05-09 | 高通股份有限公司 | 显示经渲染的图形元素的性能度量的视觉表示 |
US8938723B1 (en) * | 2009-08-03 | 2015-01-20 | Parallels IP Holdings GmbH | Use of GPU for support and acceleration of virtual machines and virtual environments |
-
2017
- 2017-12-15 CN CN201711348157.3A patent/CN108089862B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102449665A (zh) * | 2009-06-02 | 2012-05-09 | 高通股份有限公司 | 显示经渲染的图形元素的性能度量的视觉表示 |
US8938723B1 (en) * | 2009-08-03 | 2015-01-20 | Parallels IP Holdings GmbH | Use of GPU for support and acceleration of virtual machines and virtual environments |
Non-Patent Citations (2)
Title |
---|
3D Workload Subsetting for GPU architecture Pathfinding;Vinod Mohan George;《2015 IEEE International Symposium on Workload Characterization》;20151004;第130-139页 * |
Android中用OpenGL ES Tracer分析绘制过程;ariesjzj;《http://blog.csdn.net/jinzhuojun/article/details/8901835》;20130509;第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108089862A (zh) | 2018-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2126838B1 (en) | Graphics command management tool and methods for analyzing performance for command changes before application modification | |
US20090125854A1 (en) | Automated generation of theoretical performance analysis based upon workload and design configuration | |
US20120081377A1 (en) | Graphics System which Measures CPU and GPU Performance | |
US20120167061A1 (en) | Identifying factorable code | |
TW201108152A (en) | Displaying a visual representation of performance metrics for rendered graphics elements | |
US8271252B2 (en) | Automatic verification of device models | |
US9934122B2 (en) | Extracting rich performance analysis from simple time measurements | |
CN108021509B (zh) | 基于程序行为网络聚合的测试用例动态排序方法 | |
CN108415826A (zh) | 应用的测试方法、终端设备及计算机可读存储介质 | |
CN108986012B (zh) | 着色器剖析器 | |
CN114860586A (zh) | 一种基于动态插桩的二进制多执行体软件插桩方法 | |
CN108089862B (zh) | 一种OpenGL ES 3D应用的裁剪与合成方法 | |
Lee et al. | Towards scalable performance analysis and visualization through data reduction | |
US20240321289A1 (en) | Method and apparatus for extracting feature representation, device, medium, and program product | |
US8963932B1 (en) | Method and apparatus for visualizing component workloads in a unified shader GPU architecture | |
Geimer et al. | Recent developments in the scalasca toolset | |
CN116861433A (zh) | 基于No GIL并行的以太坊智能合约交易缺陷检测方法及装置 | |
CN110109811A (zh) | 一种面向gpu计算性能问题的溯源方法 | |
CN112100075B (zh) | 一种用户界面回放方法、装置、设备及存储介质 | |
CN114416520A (zh) | 一种面向Windows程序图形界面绕过的模糊测试方法及装置 | |
JP4918868B2 (ja) | 入力値選定プログラム、入力値選定方法および入力値選定装置 | |
WO2016126527A1 (en) | Generating computer programs for use with computers having processors with dedicated memory | |
CN111614721B (zh) | 一种多维区块链网、多维区块链网的生成方法、装置 | |
CN116030040B (zh) | 一种数据处理方法、装置、设备及介质 | |
Ortiz et al. | MEGsim: A Novel Methodology for Efficient Simulation of Graphics Workloads in GPUs |
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 |