大数跨境

博客 | 加速2D Canvas基准测试

博客 | 加速2D Canvas基准测试 Qt软件
2026-05-21
0
导读:本系列博客三部曲的前几部分介绍了Qt Canvas Painter及其新颖的新功能。本篇文章将重点介绍加速2D Canvas性能方面的内容,展示我们如何通过基准测试全面提高性能。






本系列博客三部曲的前几部分介绍了Qt Canvas Painter及其新颖的新功能。本篇文章将重点介绍加速2D Canvas性能方面的内容,展示我们如何通过基准测试全面提高性能。


让我们先来总结一下,然后再看看我们是如何取得这些结果的:


  • 在带有集成GPU或低端独立GPU的PC上,Canvas Painter的性能大约是使用OpenGL后端的QPainter的2

  • 在低端安卓平板设备上,Canvas Painter的性能约为使用OpenGL后端的QPainter的5

  • 在高端安卓平板电脑上,Canvas Painter的性能约为使用OpenGL后端的QPainter的10


在此,我们再次强调以下警告:


Qt Canvas PainterQt 6.11版本中仍处于技术预览阶段。这意味着我们还不能保证APIABI的稳定性。


另外值得注意的是,这些基准测试是使用Qt 6.11.0 RC版本完成的。随着Qt加速2D Canvas功能的不断开发,性能很可能会有所提高。


测试方法

Qt Canvas Painter的主要目标之一是实现高性能,尤其是在带有GPU的移动/嵌入式设备上。为了验证这一点,我们显然需要在实际硬件上对我们的加速型2D Canvas进行适当的基准测试。而且这种基准测试还应包含其他绘制方式,以便进行公平的比较。


为此,我们使用了QCPainterBench应用程序,它具有与Qt Canvas Painter和QPainter完全相同的测试用例。它包含6个单独的测试,可分别启用或禁用:


  1. Ruler用于短线段的独立绘制,以及文本元素的出现或消失的基准测试。

  2. Circles对圆形和带圆帽的弧形进行基准测试。

  3. Bezier lines以带渐变填充的贝塞尔线图为基准测试。

  4. Bars绘制矩形以创建条形图的基准测试。

  5. Icons & Text绘制小尺寸图像和简短静态文本的基准测试。

  6. Flower转换静态路径并为其着色的基准测试。



有了这个应用程序,就可以通过分别启用单个测试用例并比较结果来比较各个绘制特性。但就本博客而言,我们没有时间深入探讨细节,因为我们主要是想对加速后的2D Canvas功能的平均预期性能进行大致估算。因此,我们在运行基准测试时启用了默认的测试配置,即除Flower之外的所有测试。


为了获得全面的结果,我们在以下系统上进行了测试:

  • 联想ThinkPad P16 Gen 2。该系统是笔记本电脑/台式电脑的范例。测试使用Intel UHD Graphics 770的集成GPU和NVIDIA RTX 2000 Ada的独立GPU进行。

  • 联想Tab M10 HD。该系统是中低端嵌入式硬件的范例。芯片组为联发科Helio P22T,搭载PowerVR GE8320 GPU。

  • 三星Galaxy Tab S8。该系统是高端嵌入式硬件的典范。芯片组采用高通SM8450 Snapdragon 8,搭载Adreno 730 GPU。


值得注意的是,QPainter OpenGL的抗锯齿设置为使用4X MSAA。这应该是性能和画质之间的一个很好的平衡点,而且在所有测试系统上都不会导致明显的性能下降。Qt Canvas Painter使用基于顶点的抗锯齿方案。此外,我们使用QSG_NO_VSYNC=1强制启用基于定时器的渲染,因此结果不会受到垂直同步(Vsync)的影响。


下面是一段简短的视频,展示了基准测试应用程序在两款测试平板电脑上的运行情况。



加速型2D Canvas测试结果

测试过程中,渲染计数不断增加(例如1、2、4、8等),然后测量这对平均fps的影响。在开始阶段,渲染性能会受到屏幕更新频率的限制,当渲染次数进一步增加并导致无法按时完成帧渲染时,就会开始出现掉帧。


以下是所有测试系统的基准测试结果。



结论

从上述结果中可以得出很多结论,以下是我认为最有趣的几点:


  • D3D12的速度明显快于D3D11或OpenGL,这一点非常吸引人。与其他两个应用程序接口相比,Direct3D 12是一个现代化的API,因此QRhi可以利用这一底层图形API来提高效率。D3D11的速度慢于OpenGL似乎是个疑点,我们实际上已经跟踪并修复了这个问题,因此在目前的dev分支中,这些后端的性能已经非常接近。


  • 在安卓平板设备上,Vulkan的性能表现有些不同。在Galaxy S8上,Vulkan和OpenGL的性能差不多,而在联想M10上,Vulkan性能比OpenGL低约20%。我们的假设是,这些设备的OpenGL ES驱动程序经过了高度优化,因此更底层的Vulkan API在此测试场景中并不能提高性能。不过,我们将继续使用其他系统进行剖析和测试。


  • 使用QPainter Raster后端时,抗锯齿是一项特别消耗资源的操作。这并不奇怪,因为众所周知,CPU上的抗锯齿操作速度很慢。QPainter软件渲染相比各种硬件加速渲染方案要慢得多,因此对它们进行比较没有太大意义。Canvas Painter基于顶点的抗锯齿虽然质量更高,但对性能的影响可能略大于QPainter 4X MSAA方法。Canvas Painter还可以选择支持MSAA抗锯齿,因此可以将其作为替代选项进行基准测试。


  • Galaxy S8使用Canvas Painter绝对大放异彩。高分辨率屏幕(2560 x 1600)和高速的高通Adreno GPU是QRhi加速Canvas Painter的绝佳组合。在启用8次渲染计数的所有测试中,它都能保持120fps的屏幕刷新率。


总结性能数据,我们可以得出与本文开头相同的结论:


在普通PC上,Qt Canvas Painter的性能约为QPainter(使用OpenGL后端)的2倍;在中低端安卓平板上,约为5;在高端安卓平板上,约为10


我们已尽力为加速型2D Canvas提供具体、真实的基准测试和准确结果。不过,如果能在不同系统上验证并获得更多结果,将非常有价值。因此,我们鼓励大家安装最新的Qt 6.11(预)发布版本,并在自己的开发系统或目标系统上运行QCPainterBench。您可以将测试结果以评论形式提交至此页面、或在Qt论坛上发表评论,或创建CanvasPainter组件的Qt Bug工单。


END


往期推荐

博客 | 2D渲染——Qt Canvas Painter简介

博客 | Qt新增的画布渲染功能

博客 | Qt Quick 3D 中的光照贴图烘焙及其他改进

点击加入Qt Group汽车软件知识库


【声明】内容源于网络
0
0
Qt软件
Qt Group是一家全球软件公司,致力于开发用户喜爱的应用程序和智能设备,深受行业领导者和全球超过 150 万开发人员的信赖。我们帮助客户在整个产品开发生命周期中提高生产力——从 UI 设计和软件开发到质量管理和部署。网址:qt.io
内容 564
粉丝 0
Qt软件 Qt Group是一家全球软件公司,致力于开发用户喜爱的应用程序和智能设备,深受行业领导者和全球超过 150 万开发人员的信赖。我们帮助客户在整个产品开发生命周期中提高生产力——从 UI 设计和软件开发到质量管理和部署。网址:qt.io
总阅读4.0k
粉丝0
内容564