前段时间,把市面上手机GPU OpenCL支持情况做了一个总结。总结如下:
目前,手机 GPU 市面有四个公司产品:Qualcomm, Imagination Technologies,ARM, Vivante,分别对应的产品如下: (所有表格均是按照产品上市时间先后排列)
表1 Qualcomm GPU
产品型号 | OpenCL支持 |
Adreno 200系列 | 不支持 |
Adreno 300 系列 | √(OpenCL 1.1) |
Adreno 400 系列 | √(OpenCL 1.1) |
对于高通平台的手机,OpenCL的库在/system/vendor/lib/libOpenCL.so中。
表2 Imagination Technologies GPU
产品型号 | OpenCL支持 |
PowerVR Series 5 | 不支持 |
PowerVR Series 5XT | √(OpenCL 1.1) SGX543, SGX544, SGX554 |
PowerVR Series 6 | √(OpenCL 1.2) |
PowerVR Series 6XE | √(OpenCL 1.2) |
PowerVR Series 6XT | √(OpenCL 1.2) |
对于PowerVR GPU的手机,OpenCL的库在/system/vendor/lib/libPVROCL.so
表3 ARM GPU
产品型号 | OpenCL支持 |
ARM Mali400MP | 不支持 |
ARM Mali450MP | 不支持 |
ARM Mali Series 600 | √(Full Profile OpenCL1.1) |
ARM Mali Series 700 | √(Full Profile OpenCL1.1) |
ARM Mali支持OpenCL的GPU手机,现在市面上还是比较少的(下半年开始,随着新手机的上市,6系列GPU的上市,这一状况会改变的),据我目前查到的情况,刚上市的华为荣耀6是mali T628。没有试用过,不知道系统是否自带OpenCL的库。不过自己也尝试下载自带的OpenCL SDK编译出了OpenCL的库(请移步这里)。
至于Vivante GPU,官网上号称是都支持OpenCL的,市面上采用它的GPU手机太少了,目前我只知道华为的K3V2芯片,不过在华为P6测试的结果系统没有自带OpenCL库。自己也没去折腾Vivante GPU的SDK,所以具体情况不是很清楚。
ps:在我的手机上对高斯滤波对比过RendScript与 OpenCL,采用同样的策略,RenderScript比OpenCL慢了很多。从性能来说,放弃了RendScript的方案