一种国产计算机平台下Qt画图性能的优化方法技术领域
本发明主要涉及图形图像技术领域,特指一种针对国产平台在开启硬件图形
加速后,提高Qt画图性能的方法。
背景技术
由斯诺登等事件的不断爆发,计算机的自主可控迫在眉睫,但其国产计算机
仍处起步阶段,与主流水平存在一定差距,尤其是在图形处理方面,其性能明显
无法满足如今对多媒体图像处理的需求。而随着计算机技术的不断发展,多媒体
技术还在不断的进步,图形图像处理开发工具也不断更新,人们对图形处理的性
能要求越来越高。
目前,常用的图形开发工具有XWindow上的Qt,Motif,Openwin,GTK等
图形界面库以及Windows平台上的MFC,OWL,VCL,ATL等等。而Qt则
因其特殊的优点在众多开发工具中脱颖而出。
Qt是一个跨平台的C++图形用户界面库,由挪威TrollTech公司出品,目前
包括Qt、基于FrameBuffer的QtopiaCore、快速开发工具QtDesigner和国际化
工具QtLinguist等部分。Qt支持所有的UNIX系统,当然也包括Linux系统,
还支持WinNT/Win2k、Windows95/98平台。基本上Qt同X-Window上的Motif、
Openwin、GTK等图形界面库和Windows平台上的MFC、OWL、VCL、ATL是
同类型的。不过Qt还具有下列一些优点。
(1)优良的跨平台特性。
Qt支持下列操作系统:MicrosoftWindows95/98、MicrosoftWindowsNT、
Linux、Solaris、SunOS、HP-UX、DigitalUNIX(OSF/1、Tru64)、Irix、FreeBSD、
BSD/OS、SCO、AIX、OS390和QNX等。
(2)面向对象。
Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户
开发来说是非常方便的。Qt提供了一种称为信号和槽(signals/slots)的安全类
型来替代回调函数(callback),这使得各个元件之间的协同工作变得十分简单。
(3)丰富的API。
Qt包括多达250个以上的C++类,还提供基于模板的collections、
serialization、file、I/Odevice、directorymanagement和date/time类。甚至还包括
正则表达式的处理功能。
(4)支持2D/3D图形渲染,支持OpenGL。
(5)大量的开发文档。
(6)XML支持。
为充分提高CPU的利用率,Qt支持GPU(图形处理器)硬件图像加速。在
国产计算机中标麒麟操作系统下加载Qt软件,其画图性能在某些方面也有明显
提高尤其是在开启GPU硬件加速后,其画线性能提高10~20倍。但美中不足的
是,当开启GPU硬件加速后,虽然画线的性能有几十倍提升,但其画点和画字
符的性能却明显下降,没有充分利用GPU硬件加速的功能。
发明内容
本发明所解决的技术问题是,针对Qt在国产平台下开启GPU硬件图像加速
后,画线性能提高,但其画点、画字符性能降低的问题,提供一种国产计算机平
台下Qt画图性能的优化方法,通过修改调用底层Xlib画图方式,优化Qt中画
点、画字符的实现方法,来提高对GPU硬件图像加速的利用率,进一步提高国
产计算机平台下Qt的画图性能。
本发明的技术方案为:
一种国产计算机平台下Qt画图性能的优化方法,在国产中标麒麟操作系统
平台下,通过编译加载Qt绘图系统,开启GPU硬件图形加速功能;
所述Qt绘图系统,针对画点性能下降问题,优化方法为:在判断已启用硬
件图形加速功能时,更新环境状态参数;激发QT层硬件加速画点引擎;调用
Xlib画线函数XDrawLine()或画点函数XDrawpoint();通过Xlib画线函数
XDrawLine()或画点函数XDrawpoint()实现画点,充分利用GPU加速。优化后其
Qt的画点性能提高50~60倍。
所述Qt绘图系统,针对画字符性能下降问题,优化方法为:在判断已启用
硬件图形加速功能时,激发QT层硬件加速画字符引擎;调用Xlib画字符函数
XDrawString16();通过Xlib画字符函数XDrawString16()实现画字符,提高了GPU
硬件加速的利用率,优化后其画字符性能提高3~5倍。
与原有Qt画图技术相比,本发明的有益效果在于:
本发明针对国产中标麒麟操作系统,开启GPU硬件图形加速后,Qt软件画
线性能大幅提高约10~20倍,但其画点、画字符性能并未提高,反而比开启GPU
加速前还下降很多的问题,通过更改调用Xlib画图方式,优化Qt画点、画字符
方法,更好的利用GPU硬件图形加速。
1、本发明中优化了Qt画点功能,在国产平台下开启硬件加速后,优化后性
能相比优化前提高50~60倍,大大提高其画点性能;
2、本发明中优化了Qt画字符功能,在国产平台下开启硬件加速后,优化后
性能相比优化前提高3~5倍,进一步提高国产计算机的图形处理性能。
附图说明
图1是优化前Qt画点实现流程;
图2是本发明优化后Qt画点实现流程;
图3是优化前Qt画字符实现流程;
图4是本发明优化后Qt画字符实现流程。
具体实施方式
以下将结合附图和具体实施对本发明做进一步详细说明。
本发明公开了一种国产计算机平台下Qt画图性能的优化方法,在国产中标
麒麟操作系统上通过编译加载Qt软件。为提高Qt的画图性能,开启GPU硬件
图形加速。其中硬件加速(Hardwareacceleration)就是利用硬件模块来替代软件
算法以充分利用硬件所固有的快速特性,硬件加速通常比软件算法的效率要高。
然而在Qt中测试画图性能,其画线性能大幅提高10~20倍,但其画点、画字符
性能反而明显下降,其中画点性能下降百倍左右,并未充分利用GPU的加速功
能。而在Qt中画点、画字符都是通过表层的画图类QPainter的属性层层调用到
最底层的Xlib函数库中的画点、画字符函数;Xlib是一个用c语言编写的X
WindowSystem协议的客户端库,它包含有与X服务器进行通信的函数,编程
者可以在不了解X底层协议的情况下直接使用它进行编程;在Xlib中对于画点、
画字符又有多种实现方式,为优化Qt的画图性能提供了机会。如图1~图4所示,
本发明的优化方法具体如下:
1、优化Qt画点性能
如图1和图2所示,在未启用GPU硬件加速时,Qt画点实现流程不变。在
开启GPU硬件图形加速后,优化前Qt中画点函数是调用XDrawPoints()函数;
针对存在的画点性能下降问题,本发明优化后的方案更改Qt画点路径,调用其
他Xlib接口函数,用Xlib中的画线函数XDrawLine()或画点函数XDrawpoint()
来替代原来QT中画点函数XDrawPoints(),用画线或画点方式实现QT中的画点。
优化前、后Qt画点性能测试的仿真结果如表1所示,表中共包含6次测试数据,
后三列分别表示开启GPU硬件加速后,QT优化前使用XDrawPoints()函数画点、
以及优化后分别使用XDrawPoint()函数和XDrawLine()函数画点的性能测试数
据,相应的测试数据表示平均每毫秒所画点图像的帧数。结果表明,本发明优化
后的Qt画点方式性能提高了50~60倍,充分利了用GPU加速。
表1QT画点优化前后仿真结果对比(F/ms)
2、优化Qt画字符性能
如图3和图4所示,在未启用GPU硬件加速时,Qt画字符实现流程不变。
在开启GPU硬件图形加速后,优化前Qt中画字符函数是调用
XRenderCompositeText32()函数;针对上述画字符性能下降问题,本发明优化后
的方案更改Qt画字符路径,更改Xlib接口函数,用画字符函数XDrawString16()
替代原Qt画字符的接口函数XRenderCompositeText32(),如图4所示。优化前、
后Qt画点性能测试的仿真结果如表2所示,表中共包含6次测试数据,后两列
分别表示开启GPU硬件加速后,QT优化前使用XRenderCompositeText32()画字
符、以及优化后使用XDrawString16()画字符的性能测试数据,相应的测试数据
表示平均每毫秒所画字符图像的帧数。结果显示,本发明优化后的Qt画字符方
式性能提高3~5倍,可以提高GPU加速的利用率,进一步提高Qt画图性能。
表2QT画字符优化前后仿真结果对比(F/ms)