当前位置: 首页 > 文档资料 > 嵌入式笔记 >

Gpu 知识点

优质
小牛编辑
206浏览
2023-12-01

硬件抽象层

Hardware Abstraction Layer (HAL)

Alpha Blending

是按照“Alpha”混合向量的值来混合源像素和目标像素的一种图像处理技术。

android SurfaceFlinger

SurfaceFlinger服务负责绘制Android应用程序的UI

android专有驱动

驱动说明
Android Ashmem匿名共享内存; 为用户空间程序提供分配内存的机制
Android Logger轻量级的LOG(日志)驱动
Android Binder基于 OpenBinder 框架的一个驱动
Android Power Management电源管理模块
Low Memory Killer低内存管理器
Android PMEM物理内存驱动
USB GadgetUSB 驱动(基于 gaeget 框架)
Ram Console用于调试写入日志信息的设备
Time Device定时控制设备
Android Alarm硬件时钟

android 上的设备驱动

驱动说明
Framebuff显示驱动
surfaceflinger显示驱动
gralloc显示驱动
Event输入设备驱动
ALSA音频驱动
OSS音频驱动
v412摄像头视频驱动
MTD驱动
蓝牙驱动
WLANwifi驱动

android 图形名词

名词说明
OpenGL开放图形库(open graphics library)用于生成2D 3D图像
OpenGL ES(OpenGL for Embedded Systems)是OpenGL三维图形API的子集,针对手机、PDA和游戏主机等嵌入式设备而设计
OpenVG(Open Vector Graphics)2D矢量图形处理标准函式库
OpenCL(Open Computing Language)开放运算语言
DirectFB(Direct Frame Buffer),提供硬体图形加速库
GDI(Graphics Device Interface),图形设备接口,负责系统与绘图程序之间的信息交换
DirectDrawDirectX中的关于视频输入输出的基本部分,使用DirectDraw可以方便地编制出高效的视频处理程序,只要用户的硬件支持DirectDraw,就能保证你的代码可以处理它们。
SkiaAndroid中的2D图形库
libaglAndroid中通过软件方法实现的一套OpenGL动态库
libhgl为区别libagl,自定义的一种叫法。特指GPU厂商提供的硬件实现的OpenGL
render特指使用OpenGL动态库进行3D渲染
copybitAndroid使用2D引擎来加速图形操作(主要是Surface之间的composition操作)的一种技术,对应着一个或几个动态库。
pmemAndroid特有驱动,从linux内核中reserve物理连续内存,可以为2d、3d引擎、vpu等设备分配物理连续内存。

使用GPU硬件加速需要做的工作

  • Linux内核方面:
    • 添加GPU驱动支持,以模块方式编译GPU驱动,Android启动时加载内核模块。
    • 添加PMEM支持,预留内存供GPU使用
  • Android方面:
    • 添加copybit HAL
    • 修改gralloc gralloc负责显存等的分配,以及对framebuffer操作
    • 修改libagl
    • 修改surfaceflinger

      framebuffer

      framebuffer字符设备

设备位于/dev/graphics/fb*,主设备号为29 相关代码:

include/linux/fb.h
driver/video/fbmem.c
fbmem.c    # 提供用户接口
xxxfb.c    # 提供硬件操作接口

用户操作: |函数|说明| |-|-| |ioctl()|获取/设置信息| |mmap()|映射内存|