楼上说得没错,fb就是约定好的一块内存,cpu写入这块内存的数据是直接被当作像素数据拿去输出到显示屏的。
通常这块内存是在gpu中,映射到cpu的某个进程中(比如安卓的SurfaceFlinger服务所在的system进程),使得这个进程可以直接写入像素数据。fb中可以存放一屏或者多屏的像素数据。
fb主要是提供一种额外的显示途径,也就是你自己能完成全部的渲染计算,然后直接把渲染得到的像素数据复制到fb中输出到显示屏。
你也可以不自己渲染,而是调用GPU,在GPU内部进行渲染,然后输出到显示屏。
一些参考:
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析
https://www.kancloud.cn/alex_wsc/androids/473754
Linux的fb内核驱动与AMD gpu打交道的代码
https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/amdgpu/amdgpu_fb.c
自己读写linux/android的fb设备完成显示的例子
https://stackoverflow.com/questions/22909849/writing-to-framebuffer-directly-on-android
【 在 wjhtingerx 的大作中提到: 】
: 那意思是直接操作GPU就行,不用管fb?那为啥android还要用到fb做显示呢?
:
--
FROM 125.35.121.*