一种基于垂直消隐模拟的图形应用帧率同步方法技术

技术编号:36503320 阅读:13 留言:0更新日期:2023-02-01 15:26
本发明专利技术公开了一种基于垂直消隐模拟的图形应用帧率同步方法,通过修改Linux内核提供的DRM驱动支撑库以控制垂直消隐机制,实现了对应用刷新率即帧率的控制,进而实现了不同GPU执行同一图形应用测试程序时所采用的帧率保持一致,而无需用户执行修改操作,进一步降低了用户操作的复杂度,提升了控制的精确度。提升了控制的精确度。

【技术实现步骤摘要】
一种基于垂直消隐模拟的图形应用帧率同步方法


[0001]本专利技术属于计算机图像处理
,具体涉及一种基于垂直消隐模拟的图形应用帧率同步方法。

技术介绍

[0002]目前主要的图形渲染方式之一是采用专门的图形处理器(Graphic Processing Unit,GPU)渲染三维图形的方式。GPU又称显示核心、视觉处理器、显示芯片,GPU是一种专门在个人电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微处理器,采用GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作,尤其是在3D图形处理时GPU所采用的核心技术有硬件T&L(几何转换和光照处理)、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等,而硬件T&L技术可以说是GPU的标志。GPU的生产商主要有NVIDIA、ATI和AMD。
[0003]GPU一般是通过标准API接口,如OpenGL、OpenGL ES、Vulkan、Direct X等,提供图形渲染能力,这些接口通常被称为图形接口,图形应用通过调用这些图形接口最终实现图形绘制。每种图形接口都存在多个不同的版本,如OpenGL的最新版本是4.6,OpenGL ES的最新版本是3.2。对于采用DRM(Direct Rendering Manager)驱动架构的GPU来说,GPU的DRM驱动包括GPU厂商实现的DRM驱动和Linux内核提供的DRM驱动支撑库两部分,其中,DRM驱动支撑库是Linux内核提供的各种共性支撑函数。
[0004]在对GPU进行测试时常用的测试方式是根据同一图形应用测试程序在不同GPU上渲染结果的差异来对比分析GPU的性能,对于这类测试首先需要解决的问题就是如何确保被测的GPU均采用相同的帧率(FPS)。现有GPU测试中往往是采用设置操作系统和显示器的相关参数保证帧率的一致性,然而这种方式为用户增加了操作复杂度,精度也相对较低。

技术实现思路

[0005]有鉴于此,本专利技术提供了一种基于垂直消隐模拟的图形应用帧率同步方法,能够实现不同GPU执行同一图形应用测试程序时所采用的帧率保持一致。
[0006]本专利技术提供的一种基于垂直消隐模拟的图形应用帧率同步方法,包括以下步骤:步骤1、关闭计算平台上所有图形应用程序,禁用窗口管理器的图形加速功能;建立中断列表,中断列表用于记录首次vblank中断的发生时间及后续vblank中断与首次vblank中断的时间间隔,令中断列表为空;确定当前使用的GPU;步骤2、令图形应用测试程序采用当前GPU对应的UMD驱动程序路径,启动vblank中断;执行图形应用测试程序,捕获vblank中断记录中断时间为当前时间,若中断列表为空则以当前时间作为首次中断时间保存到中断列表中,否则以当前时间与首次中断时间的差值作为时间间隔保存到中断列表中,图形应用测试程序执行完毕后保存中断列表;步骤3、若图形应用测试程序在所有GPU上均已执行完毕,则执行步骤4;否则更换GPU执行步骤2;
步骤4、选取步骤2得到的中断列表中所含记录数量最少的中断列表作为标准垂直消隐事件队列,确定执行图形应用测试程序所需采用的GPU;步骤5、令图形应用测试程序使用当前采用的GPU对应的UMD驱动程序路径,禁止使用vblank中断;执行图形应用测试程序,记录启动时间,当执行时间与启动时间的时间间隔与标准垂直消隐事件队列中的时间间隔相等时,构造vblank中断数据结构,并将vblank中断数据结构添加到内核的vblank事件队列中,直到图形应用测试程序执行完毕;步骤6、若图形应用测试程序在所有GPU上均已执行完毕,则结束本流程;否则更换GPU执行步骤5。
[0007]进一步地,所述步骤1中所述建立中断列表的方式为调用Linux内核DRM驱动支撑库中的函数获取GPU内核驱动的类型为drm_crtc_funcs数据结构,为drm_crtc_funcs分配中断列表vblank_interrupt_list。
[0008]进一步地,所述步骤2中所述启动vblank中断的方式为调用Linux内核DRM驱动支撑库中的函数enable_vblank启动vblank中断。
[0009]进一步地,所述步骤5中所述禁止使用vblank中断的方式为调用Linux内核DRM驱动支撑库中的disable_vblank函数禁止使用vblank中断。
[0010]进一步地,所述步骤2中所述当前时间的获取方式为采用内核提供的高精度定时器记录程序执行的时间。
[0011]有益效果:本专利技术通过修改Linux内核提供的DRM驱动支撑库以控制垂直消隐机制,实现了对应用刷新率即帧率的控制,进而实现了不同GPU执行同一图形应用测试程序时所采用的帧率保持一致,而无需用户执行修改操作,进一步降低了用户操作的复杂度,提升了控制的精确度。
具体实施方式
[0012]下面列举实施例,对本专利技术进行详细描述。
[0013]图形应用的渲染帧率不仅与GPU性能相关,还与操作系统图形驱动的相关配置有关,因此在不同GPU上运行相同图形应用时采用的渲染帧率往往也是不同的。GPU厂商通常不提供DRM驱动的源代码,因此本专利技术的核心思想是:通过修改Linux内核提供的DRM驱动支撑库控制垂直消隐机制实现对应用刷新率即帧率的控制。其中,垂直消隐即vblank(Vertical Blank),该机制用于在图形图像渲染过程中实现页面翻转和垂直消隐的同步操作。DRM core提供了大量的垂直消隐管理的辅助函数,主要包括伪中断过滤、vblank计数统计、翻转及重置等函数。
[0014]本专利技术提供了一种基于垂直消隐模拟的图形应用帧率同步方法,具体包括以下步骤:步骤1、在计算平台上关闭所有图形应用程序,禁用窗口管理器的图形加速功能,以确保计算平台上仅有图形应用测试程序使用GPU驱动的图形加速功能;调用Linux内核DRM驱动支撑库中的函数建立中断列表,中断列表用于记录首次中断的发生时间及后续中断与首次中断的时间间隔,再将中断列表初始化为空;确定当前使用的GPU。
[0015]步骤2、令图形应用测试程序优先搜索当前GPU对应的UMD驱动程序路径,调用
Linux内核DRM驱动支撑库中的函数启动vblank中断;执行图形应用测试程序,执行过程中捕获vblank中断记录中断时间为当前时间,若中断列表为空则以当前时间作为首次中断时间保存到中断列表中,否则以当前时间与首次中断时间的差值作为时间间隔保存到中断列表中,图形应用测试程序执行完毕后保存中断列表。
[0016]其中,UMD驱动程序为用户态显卡驱动程序(UMD, User

Mode Driver)。为了保证记录时间的精度,在程序执行过程中采用内核提供的高精度定时器记录程序执行的时间。
[0017]步骤3、若图形应用测试程序在所有GPU上均已执行完毕,则执行步骤4;否则更换GPU执行步骤2。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于垂直消隐模拟的图形应用帧率同步方法,其特征在于,包括以下步骤:步骤1、关闭计算平台上所有图形应用程序,禁用窗口管理器的图形加速功能;建立中断列表,中断列表用于记录首次vblank中断的发生时间及后续vblank中断与首次vblank中断的时间间隔,令中断列表为空;确定当前使用的GPU;步骤2、令图形应用测试程序采用当前GPU对应的UMD驱动程序路径,启动vblank中断;执行图形应用测试程序,捕获vblank中断记录中断时间为当前时间,若中断列表为空则以当前时间作为首次中断时间保存到中断列表中,否则以当前时间与首次中断时间的差值作为时间间隔保存到中断列表中,图形应用测试程序执行完毕后保存中断列表;步骤3、若图形应用测试程序在所有GPU上均已执行完毕,则执行步骤4;否则更换GPU执行步骤2;步骤4、选取步骤2得到的中断列表中所含记录数量最少的中断列表作为标准垂直消隐事件队列,确定执行图形应用测试程序所需采用的GPU;步骤5、令图形应用测试程序使用当前采用的GPU对应的UMD驱动程序路径,禁止使用vblank中断;执行图形应用测试程序,记录启动时间,当执行时间与启动时间的时间间隔与标准垂直消隐事件队列中的时间间隔相等时,构造...

【专利技术属性】
技术研发人员:温研
申请(专利权)人:北京麟卓信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1