
GPU
文章平均质量分 58
颇锐克
Graphics, GPU, device driver,Android Framwork
展开
-
[Android]: 2D硬件加速Copybit模块
在AndroidDonut1.6版本中,我们需要在16bpp(bits perpixel)和24bpp的screen处理一些2D硬件加速功能:处理情况:Copy,Rotate,Global Alpha Blending,Pixel Alpha Blending,Source & Dest Format.以下部分转载于:http://xxw8393.blo转载 2017-05-01 14:20:11 · 1535 阅读 · 0 评论 -
分析Android帧缓冲区状态监控过程
SurfaceFlinger服务在启动的时候,会创建一个线程来监控由内核发出的帧缓冲区硬件事件。每当帧缓冲区要进入睡眠状态时,内核就会发出一个睡眠事件,这时候SurfaceFlinger服务就会执行一个释放屏幕的操作;而当帧缓冲区从睡眠状态唤醒时,内核就会发出一个唤醒事件,这时候SurfaceFlinger服务就会执行一个获取屏幕的操作。status_t SurfaceFlinger::rea转载 2017-05-26 16:55:13 · 1018 阅读 · 0 评论 -
Android平台之获取照相机预览数据帧及精确时间截
在android平台上要获取预览数据帧是一件极其容易的事儿,但要获取每帧数据对应的时间截并不那么容易,因为网络上关于这方面的资料比较少。之所以要获取时间截,是因为某些情况下需要加入精确时间轴才能解决问题,如果自己给获取到的时间截打上时间截,则必定引入很多误差,文档主要以理论为主,我想作为一名合格的程序员,有了一个想法,则一定会有办法去编码实现的。因为项目需要,查找了大量的资料,发现网络上关于获转载 2017-05-27 14:39:46 · 3245 阅读 · 2 评论 -
opengles 开发l流程
[plain] view plain copy { 1:获取 Display 2:初始化 egl 3:选择 Config 4:创建 Surface 5:创建上下文对象 6:查看 Display Surface Context 是否创建成功 7:绘制 8:销转载 2017-04-27 22:26:13 · 486 阅读 · 0 评论 -
Android hardware accelator
Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存。 开启或关闭硬件加速: 由于硬件加速自身并非完美无缺,所以Android提供选项来打开或者关闭硬件加速,默认是关闭。可以在4个级别上打开或者关闭硬件加速: Application级别: Act转载 2017-05-30 20:49:54 · 346 阅读 · 0 评论 -
DMA在framebuffer中的函数使用方法
内核的dma一般在平台初始化的时候已经分配好了。但是对于一些有内部dma的硬件ip,比如usb ip、video加速ip,他们可能由ip厂商封装好的,没办法绑定到cpu端,这时候在内核使用dma就要注意了,因为dma只认识物理地址哦。当然,办法还是有的,look:以下来自:http://blog.youkuaiyun.com/zjujoe/archive/2009/05/15/4189612.aspx转载 2017-06-06 09:56:17 · 1392 阅读 · 0 评论 -
Android Choreographer 源码分析
Android系统从4.1(API 16)开始加入Choreographer这个类来控制同步处理输入(Input)、动画(Animation)、绘制(Draw)三个UI操作。其实UI显示的时候每一帧要完成的事情只有这三种。如下图是官网的相关说明:ChoreographerChoreographer接收显示系统的时间脉冲(垂直同步信号-VSync信号),在下一个frame渲染转载 2017-06-06 09:58:06 · 634 阅读 · 0 评论 -
深入浅出 - Android系统移植与平台开发(九)- Android系统system_server及Home启动
3.3 Zygote守护进程与system_server进程Android的运行环境和Java运行环境有着本质的区别,在Android系统中每个应用程序都是一独立的进程,当一个进程死掉时,不会影响其它进程的运行,这能极大的保证Android系统的稳定。 Zygote守护进程的启动是Android运行环境启动的开始阶段, Zygote进程通过Linux系统特有的Fork机制分裂克隆出完全相同转载 2017-06-06 10:00:07 · 519 阅读 · 0 评论 -
Android的硬件加速
Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑,但是会多消耗一些内存。 开启或关闭硬件加速: 由于硬件加速自身并非完美无缺,所以Android提供选项来打开或者关闭硬件加速,默认是关闭。可以在4个级别上打开或者关闭硬件加速: Application级别: Act转载 2017-06-06 10:01:14 · 341 阅读 · 0 评论 -
android Graphiics data output
上篇博客分析到SurfaceFlinger收到了VSync信号后,调用了handleMessageRefresh函数,这篇博客主要就是分析这个函数,我们先看看它的代码:?123456789101112131415161718192021222324252627转载 2017-05-26 16:52:53 · 371 阅读 · 0 评论 -
android Vsync workflow
我们先看收到VSync事件是如何处理的,再看底层是怎样向上层通知VSync事件。1.SurfaceFlinger如何处理Vsync事件在SurfaceFlinger定义了一个消息队列的成员变量:mutableMessageQueue mEventQueue;MessageQueue是一个消息处理类,专门处理如下三种消息:INVALIDATE, REFRESH, TRANSACT转载 2017-05-26 16:49:03 · 987 阅读 · 0 评论 -
使用GLSurfaceView预览Camera 基础拍照demo
GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而且在预览Camera上有其独到之处。独到之处在哪?当使用Surfaceview无能为力、痛不欲生时就只有使用GLSurfaceView了,它能够真正做到让Camera的数据和显示分离,所以搞明白了这个,像Camera只开预览不显示这都是小菜,妥妥的。Android4.0的自带Camera源码是用SurfaceView转载 2017-05-26 14:10:29 · 1922 阅读 · 0 评论 -
android 平台上使用opencl 调用gpu 进行加速
其实去年就已经把Android上OpenCL的demo做出来了,但是由于种种原因一直没有开源–嗯现在就不吝啬了~奉献给大家~后面在Android上还实现了很多种并行化的算法,比如SHA-1、HDR、K-means、NL-means、SRAD等等,会在近期整理好之后开源的。原文发表在了异构开发技术社区整理成教程是队友做的,十分感谢~原博文地址队友的博客项目gith转载 2017-04-06 19:39:09 · 6359 阅读 · 0 评论 -
GPU深度发掘(一)::GPGPU数学基础教程
介绍准备条件硬件设备要求软件设备要求两者选择初始化OpenGLGLUTOpenGL 扩展OpenGL 离屏渲染GPGPU 概念1: 数组 = 纹理在CPU上建立数组在 GPU上生成浮点纹理数组索引与纹理坐标一一对应使用纹理作渲染对像把数据从CPU数组传输到GPU的纹理把数据从GPU的纹理传输到CPU数组一个简单的示例GPGPU 概念 2: 内核 = 着色器转载 2017-04-17 14:05:29 · 965 阅读 · 0 评论 -
使用fbo离屏渲染绘制图片
【原文:http://m.blog.youkuaiyun.com/blog/zhouschina/8985593】[cpp] view plain copy #include #include #include #include #pragma comment(lib, "glew32.lib") GLuint imageFBO; GLuint im转载 2017-04-15 09:12:52 · 3540 阅读 · 0 评论 -
Android OpenGL ES 离屏渲染(offscreen render)
通常在Android上使用OpenGL ES,都是希望把渲染后的结果显示在屏幕上,例如图片处理、模型显示等。这种情况下,只需要使用Android API中提供的GLSurfaceView类和Renderer类,在这两个类提供的初始化、回调函数中设置/编写相应的代码即可。不过,如果不希望把渲染结果显示在屏幕上,也就是所说的离屏渲染(offscreen render),这两个类就帮不上忙了。在此介绍一转载 2017-04-20 16:39:59 · 2716 阅读 · 0 评论 -
EGL workflow
基本概念EGL是OpenGL ES与本地Window系统之间的桥梁。EGL创建渲染上下文(Rendering Context)和Surface,Rendering Context是OpenGL ES的状态机,Surface是OpenGL ES绘图的“画布”DisplayDisplay是OpenGL ES应用运行平台的物理显示器的抽象Rendering ContextOpenGL转载 2017-04-15 10:12:29 · 688 阅读 · 0 评论 -
SurfaceFlinger principl
基于Android 6.0源码, 分析SurfaceFlinger原理frameworks/native/services/surfaceflinger/ - main_surfaceflinger.cpp - SurfaceFlinger.cpp - DispSync.cpp - MessageQueue.cpp - DisplayHardware/HWComposer.转载 2017-05-24 16:16:10 · 721 阅读 · 0 评论 -
Android中的GraphicBuffer同步机制-Fence
http://blog.youkuaiyun.com/jinzhuojun/article/details/39698317Fence是一种同步机制,在Android里主要用于图形系统中GraphicBuffer的同步。那它和已有同步机制相比有什么特点呢?它主要被用来处理跨硬件的情况,尤其是CPU,GPU和HWC之间的同步,另外它还可以用于多个时间点之间的同步。GPU编程和纯CPU编程一个很大的不转载 2017-05-26 09:46:44 · 541 阅读 · 0 评论 -
Android应用程序UI硬件加速渲染的预加载资源地图集服务(Asset Atlas Service)分析
我们知道,Android系统在启动的时候,会对一些系统资源进行预加载。这样不仅使得应用程序在需要时可以快速地访问这些资源,还使得这些资源能够在不同应用程序之间进行共享。在硬件加速渲染环境中,这些预加载资源还有进一步优化的空间。Android系统提供了一个地图集服务,负责将预加载资源合成为一个纹理上传到GPU去,并且能够在所有的应用程序之间进行共享。本文就详细分析这个预加载资源地图集服务的实现原理。转载 2017-05-26 10:14:45 · 1364 阅读 · 0 评论 -
View Layers
View layers 在所有版本的Android中,views都有画到离屏缓冲的能力,这包括使用view的绘制cache,或使用Canvas.saveLayer().离屏缓冲,或者说层,有很多用处.你可以使用它们来为复杂的view动画或使用组合效果时提高性能.例如,你可以使用Canvas.saveLayer()实现淡出效果,这个方法会临时的把一个view画到一个layer中然后使用一个透明转载 2017-06-06 10:02:23 · 269 阅读 · 0 评论 -
Android 中使用OpenGL ES进行2D开发(纹理Texture使用)
OpenGL纹理是一种位图,可以把它粘贴到OpenGL物体的表面上。比如可以获取一张邮票的图像粘贴到正方形中,使正方形看起来像一张邮票。要使邮票保持合适的方向,以便图像井然有序地排列,则必须获得形状的每个顶点并在正方形上标记出来,以便邮票和正方形的形状保持一致。在OpenGL中引入了纹理坐标。OpenGL 假设纹理图始终为1x1的正方形,其原点位于(0.0)处,右下角为(1,1)。如下图。转载 2017-06-06 10:04:06 · 2956 阅读 · 0 评论 -
Android图形显示系统——上层显示2:硬件加速实现
Android的界面绘制的硬件加速采取上下整合的一套流程实现一、代码结构(一)JavaHardwareRenderer->ThreadedRenderer:组织硬件加速渲染的类,下发创建显示列表和回放的指令。 GLES20RecordngCanvas GLES20Canvas HardWareCanvas:与Canvas平级的UI渲染引擎支持,但这个Canvas只能存储命令到显转载 2017-07-08 09:59:03 · 818 阅读 · 0 评论 -
YUV转RGB(NV21-ARGB)的Neon优化代码
说明此代码仅限于 NV21 格式转 ARGB 格式。 NV21 格式中,Y 单独存储,UV分量交错存储。 使用如下公式: R = Y + 1.402*(V-128); G = Y - 0.34414*(U-128) - 0.71414*(V-128); B = Y + 1.772*(U-128); 浮点乘法用 6位精度处理(即a*b = ((a >6)代码转载 2017-07-10 10:07:01 · 2036 阅读 · 0 评论 -
3D Graphics with OpenGL Basic Theory
3D graphics study meterial http://www.ntu.edu.sg/home/ehchua/programming/opengl/CG_BasicsTheory.html1. Computer Graphics HardwareGPU (Graphics Processing Unit)Modern day computer has de转载 2017-12-19 16:12:16 · 1274 阅读 · 0 评论 -
Screen and UI Performance
Chapter 4. Screen and UI PerformanceThe user interface of your app is likely influenced by designers, developers, usability studies, and testing—just about anyone is happy to add input/feedback to转载 2018-01-05 10:46:55 · 773 阅读 · 0 评论 -
gpu 概论
GPU通用计算调研报告摘要:NVIDIA公司在1999年发布GeForce256时首先提出GPU(图形处理器)的概念,随后大量复杂的应用需求促使整个产业蓬勃发展至今。GPU在这十多年的演变过程中,我们看到GPU从最初帮助CPU分担几何吞吐量,到Shader(着色器)单元初具规模,然后出现Shader单元可编程性,到今天GPU通用计算领域蓬勃发展这一清晰轨迹。本报告首先根据搜集到的资料记转载 2016-02-26 14:18:24 · 10887 阅读 · 0 评论 -
CPU与GPU 带宽
原文链接:http://blog.cudachess.org/2009/07/cpu-vs-cuda-gpu-memory-bandwidth/导读:最近打算学习CUDA,但在与一个同学聊天时她提到GPU并不适用于某些类型的计算,瓶颈在于I/O上。可我看了下GPU的参数,内存带宽(Memory Bandwidth)很高,怎么会这样呢?下面这篇文章可以回答这个问题。转载 2018-01-30 19:07:01 · 6125 阅读 · 0 评论 -
Mali develop center
https://developer.arm.com/products/software-development-tools/graphics-development-tools/mali-graphics-debuggerhttps://developer.arm.com/products/software/mali-drivers/utgard-kernelAndroid resourcehtt...原创 2017-04-19 19:25:29 · 935 阅读 · 0 评论 -
图像输出过程总结
上篇博客分析到SurfaceFlinger收到了VSync信号后,调用了handleMessageRefresh函数,这篇博客主要就是分析这个函数,我们先看看它的代码:[cpp] view plain copy void SurfaceFlinger::handleMessageRefresh() { ATRACE_CALL(); stati转载 2017-06-15 11:18:58 · 1825 阅读 · 0 评论 -
linux 设备ioctrl
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/ 用户程序所作的只是通过命令码告诉驱动程序它想做什么,转载 2017-06-13 16:48:24 · 787 阅读 · 0 评论 -
gltexture map to the object
OpenGL学习:第六课(将不同纹理映射到不同面上)OpenGL可以把纹理映射到指定的图形的表面上。简单一点的,就是给平面映射纹理,比如一个四边形,一个长方体的6个面,都可以指定位图作为纹理映射到各个面上。关于将一个位图作为纹理映射到某个或者多个面上,可以学习Jeff Molofee的OpenGL系列教程。对于指定的多个纹理,要根据自己的需要映射到不同的面上,需要对位图创建一个数组转载 2017-06-13 14:31:11 · 744 阅读 · 0 评论 -
transact和onTransact的区别
谈transact 和onTransact需要先聊聊iBinderIBinder是什么呢?首先要明白,Android的远程调用(就是跨进程调用)就是通过IBinder实现的,下面是对android开发文档的翻译。IBinder是远程对象的基本接口,是为高性能而设计的轻量级远程调用机制的核心部分。但它不仅用于远程调用,也用于进程内调用。这个接口定义了与远程对象交互的协议。不要直接转载 2017-06-06 10:07:24 · 508 阅读 · 0 评论 -
Android 4.4 Graphic系统详解(2) VSYNC的生成
VSYNC 的概念VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但是基于历史转载 2017-06-06 10:09:39 · 534 阅读 · 0 评论 -
android binder 机制 (ServiceManager)
Binder机制作为一种IPC通信机制,在Android系统中扮演了非常重要的角色,因此我也花了一些时间来研究它,按照我的理解,下面我将从4个方面来讲一下Binder,如有不对的地方,还希望大家多多指教。下面的例子都将以MediaServer来讲。一、ServiceManagerServiceManager在Binder系统中相当与DNS,Server会先在这里注册,然后Client会在这转载 2017-06-06 10:17:02 · 295 阅读 · 0 评论 -
android6.0源码分析之Camera API2.0下的Preview(预览)流程分析
本文将基于android6.0的源码,对Camera API2.0下Camera的preview的流程进行分析。在文章android6.0源码分析之Camera API2.0下的初始化流程分析中,已经对Camera2内置应用的Open即初始化流程进行了详细的分析,而在open过程中,定义了一个PreviewCallback,当时并未详细分析,即Open过程中,会自动开启预览过程,即会调用OneCa转载 2017-06-06 10:19:17 · 541 阅读 · 0 评论 -
AndroidO binder aligen
https://android-review.googlesource.com/#/c/349091/1/include/uapi/linux/android/binder.hbinder_fd_array_object starts with a 4-byte header,followed by a few fields that are 8 bytes whenANDROID_BINDE转载 2017-06-06 19:09:45 · 375 阅读 · 0 评论 -
Android图形缓冲区映射过程源码分析
android图形缓冲区分配过程源码分析中介绍了图形buffer的分配过程,图形buffer可以从系统帧缓冲区分配也可以从内存中分配,分配一个图形buffer后还需要将该图形缓冲区映射到分配该buffer的进程地址空间来,在Android系统中,图形buffer的管理由SurfaceFlinger服务来负责,在Android SurfaceFlinger服务启动过程源码分析中我们了解到Surf转载 2017-06-06 20:48:23 · 615 阅读 · 0 评论 -
disable hwui---hardware render
adb shell setprop debug.disable.hwacc 11 概述Android从3.0(API Level 11)开始,在绘制View的时候支持硬件加速,充分利用GPU的特性,使得绘制更加平滑。实质上就是Android3.0以前,几乎所有的图形绘制都是由Skia完成,Skia是一个向量绘图库,使用CPU来进行运算;所以从Android3.0 开始,Google转载 2017-06-04 15:02:42 · 3296 阅读 · 0 评论 -
HWUI debug method
1.frameworks/base/libs/hwui$ vim ./Properties.h +141/** * Controls whether or not HWUI will use the EGL_EXT_buffer_age extension * to do partial invalidates. Setting this to "false" will fall原创 2017-06-05 09:37:38 · 1541 阅读 · 0 评论