HI,大家好:
我实现了这样一个算法,算法会循环读取视频的每一帧,然后将得到的帧放到GPU上处理(使用openCL)。为了测试性能,对这个算法采用了两种实现方法:
1.串行:读取一帧,放到gpu处理,处理完后得到结果,然后进行下一帧的处理;
2.并行:主线程读取一帧,然后将该帧放到子线程处理(该子线程使用gpu处理),并从子线程中获取上一帧的结果,然后读取下一帧;
在高通Qualcomm Snapdragon 801 (adreno 330)以及mt6752(mali t760)的机子上进行了测试,测试结果是高通第二种实现方式明显快于第一种,而在mt6752 上却是相反的结果,两个机子的CPU性能是差不多的。理论上讲,不论哪个机子,第二种都会优于第一种,但在mali T760 上测试结果却不一样。请各位大神帮忙分析下啊,小弟实在没办法了。
关于你的上一个问题。
高通视频解码器解码送的buffer是由显示模块来申请的。
申请的是uncache的buffer,读取uncache的buffer会耗费差不多30-50ms的样子。
这个地方也会影响你的Performance。
Mali的视频解码器申请的buffer没了解过。