对于ARM Mali GPU,目前是支持OpenCL1.1,所以我们可以利用OpenCL来加速我们的计算。

一直以来,对于Mali GPU的OpenCL编程,一直没有环境来测试。好不容易弄到一个华为Mate7,却因为华为没有提供OpenCL driver(小道消息,华为下半年开始将会有OpenCL Drivert提供,拭目以待吧)。目前测试过的手机有魅族MX4 pro T628是带有OpenCL Driver,这个还得多亏三星的猎户座芯片。对于安卓手机如果手机是Mali GPU(如果是T6xx以下GPU,请无视,因为不支持OpenCL,例如华为P7使用的是Mali-450),如果您不确定是否有驱动(BTW:关于驱动问题询问过ARM的工作人员,需要找芯片提供商,而不是ARM),可以去豌豆荚下载OpenCL Info的小软件,该软件基本囊括了目前移动平台所有GPU的检测。

扯了一堆的废话,当前我的平台是瑞芯的RK3288。对于Mali GPU,OpenCL Driver驱动对应系统"/system/vendor/lib/egl/libGLES_mali.so" 。

对于常规的例子,请移步这里,这是我写的一个关于高通平台下的OpenCL例子,修改一下便可使用。而为了软件兼容不同厂家的GPU,在NDK Native code中dlopen加载OpenCL库。

 void *getCLHandle(){
void *res = NULL;
res = dlopen("/system/vendor/lib/libOpenCL.so",RTLD_LAZY); /*Adreno GPU */
if(res==NULL){
res = dlopen("/system/vendor/lib/libPVROCL.so",RTLD_LAZY); /*PowerVR GPU*/
}
if(res==NULL){
res = dlopen("/system/vendor/lib/egl/libGLES_mali.so",RTLD_LAZY); /*mali GPU*/
}
if(res==NULL){
printf("No OpenCL library in your Phone ");
}
return res;
}

如上是我的实现方式。

做了一个小的测试软件,直接在编译成可执行程序,adb push到手机端运行。

LOCAL_PATH := $(call my-dir)  

include $(CLEAR_VARS)  

LOCAL_MODULE    := opencl
LOCAL_SRC_FILES := OpenCL_phone.c opera_Init.c test.c
LOCAL_C_INCLUDES := include
include $(BUILD_EXECUTABLE)

如上是我例子的Android.mk文件。OpenCL_phone.c是dlopen OpenCL库的一些处理。opera_Init.c是对OpenCL选择平台,设备,创建上下文等之类的操作,test.c是主函数。

转自:http://blog.csdn.net/wcj0626/article/details/44930221

安卓平台下ARM Mali OpenCL编程-GPU信息检测(转)的更多相关文章

  1. 安卓平台ARM Mali OpenCL例子-灰度转换(转)

    手头一块RK3288的板子,在板子上测试了一张1080p的彩色图灰度转换的OpenCL例子.OpenCL没有任何优化.例子请移步这里. 该例子是编译成安卓平台下的可执行程序. 进入jni文件夹,进行如 ...

  2. NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别

    NET平台下的Excel编程|C#操作Excel|Application和ApplicationClass的联系和区别 1. Interop含义Interop是互操作的含义.Microsoft.Off ...

  3. Android平台下OpenCV移植与使用---基于C/C++

    在<Android Studio增加NDK代码编译支持--Mac环境>和<Mac平台下Opencv开发环境搭建>两篇文章中,介绍了如何使用NDK环境和Opencv环境搭建与测试 ...

  4. [转]Windows平台下Makefile学习笔记

    Windows平台下Makefile学习笔记(一) 作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译 ...

  5. windows平台下VLC2.0.5编译

    windows平台下VLC2.0.5编译说明 时隔一年多,又要搞流媒体了,不过这次是要做流媒体服务器. 暂时决定使用vlc+ffmpeg+live555,虽然听有些前辈说这个组合的性能较差,只能作为学 ...

  6. .Net平台下的B/S开发框架

    一.前言 本文主要是对.Net平台下的几种B/S开发框架进行比较.只对比前端展现和界面业务逻辑的部分,对于后台的数据层.业务层.持久层等则不作讨论,因为这些部分是完全可以共用的.  主要从如下几个维度 ...

  7. [转帖]Android平台下OpenGL初步

    原文请看 Android平台下OpenGL初步 本文只关注于如何一步步实现在Android平台下运用OpenGl. 1.GLSurfaceView GLSurfaceView是Android应用程序中 ...

  8. 不同平台下int类型、指针类型的数据大小

    不同平台下int类型.指针类型的数据大小 对于int类型数据和指针类型数据的大小,是非常基础的问题. 在一个具体的平台上,确定他们最好的办法就是使用sizeof(type)对其进行判断,返回当前数据类 ...

  9. 【VS开发】Windows平台下Makefile学习笔记

    作者:朱金灿 来源:http://blog.csdn.net/clever101 决心学习Makefile,一方面是为了解决编译开源代码时需要跨编译平台的问题(发现一些开源代码已经在使用VS2010开 ...

随机推荐

  1. c语言把mysql数据库语句和变量封装为一个语句

    我有一个语句 sql = "insert into talbe_name  values(name,age)"  其中name和age两个变量根据外面的输入来确定,有两种方法 1: ...

  2. Octopress + GitHub Page 搭建个人博客

    Tips:博客已搬家,新地址:http://wanxudong.top 首先说明两个关键术语: Octopress Octopress是基于 Jekyll 的博客框架.他们的关系就像 jQuery 与 ...

  3. Ubuntu14.04和Tiny6410挂载NFS服务!

    我是以root身份登录Ubuntu的: 在Ubuntu上执行   #apt-get install nfs-kernel-server    //安装NFS服务 在Ubuntu上执行   #mkdir ...

  4. 复制到剪切板js代码(转)

    <script type="text/javascript" language="javascript"> //复制到剪切板js代码 functio ...

  5. ios/object-c中的UIColor一些比较偏的颜色展示/示例

    UIColor blackColor]; [UIColor darkGrayColor]; [UIColor lightGrayColor]; [UIColor grayColor]; [UIColo ...

  6. fdopen()和fileno()函数

    转:http://book.2cto.com/201212/11763.html 文件描述字函数是流函数的初等函数,每一个流都与一个描述字相连.给定一个打开的文件描述字,可以用fdopen()函数为它 ...

  7. python 实现Hadoop的partitioner和二次排序

    我们知道,一个典型的Map-Reduce过程包 括:Input->Map->Partition->Reduce->Output. Partition负责把Map任务输出的中间结 ...

  8. Jacob的使用出错总结

    转自:http://blog.163.com/wm_at163/blog/static/13217349020114166447941/ Jacob的使用方法: 1.在工程中导入 jacob.jar ...

  9. 关于textiled的设置透明度的问题

    如果textfield的背景色设置的是黑色的话, 然后设置它的透明度为0.3, 就会显示出半透明的效果, 这时如果用键盘输入时, 会显示不出来输入的字体. 因为: textfield的字体默认也是黑色 ...

  10. [翻译] JFDepthView 给view提供3D景深

    JFDepthView 给view提供3D景深 https://github.com/atljeremy/JFDepthView This is an iOS project for presenti ...