- 主题:GPU和Framebuffer设备到底是个什么关系?
到底哪个是最终把图像数据输出到显示设备呢?
--
FROM 124.202.185.*
意思是GPU把图像数据运算后,最终还是要放到Framebuffer里去?是在哪里写的?
【 在 granis 的大作中提到: 】
: Framebuffer就是最终显示出来的显存空间。
: GPU是指整个显卡。图形的输出是遵循经典的管线通道,GPU对这些通道(几何,光栅两个阶段)进行了可编程。
:
--
FROM 124.202.185.*
那意思是直接操作GPU就行,不用管fb?那为啥android还要用到fb做显示呢?
【 在 xiaoju 的大作中提到: 】
: fb本身就在显卡上面,只是被映射到了cpu地址空间以方便操作
:
--
FROM 124.202.185.*
你这个比喻没看懂,直接回答我的问题不好吗?
【 在 xiaoju 的大作中提到: 】
: 你如果把点阵当内存操作,那么这个内存就叫fb
:
--
FROM 124.202.185.*
算了,看来你也不懂
【 在 xiaoju 的大作中提到: 】
: 这不是比喻
:
--
FROM 124.202.185.*
你说的这些我都懂,那些资料我也都看过,但是还是有些不透彻。
比如就拿Android来举例:
1. Gralloc用来分配现存映射到cpu进程中?那为啥最后不直接用GPU输出做显示了,而还要由CPU写道fb中做显示?
2. GPU可以分配很多Surface出来供绘画,难道自己不能做图层合并吗,还需要Flinger在外面合并?
【 在 z16166 的大作中提到: 】
: 楼上说得没错,fb就是约定好的一块内存,cpu写入这块内存的数据是直接被当作像素数据拿去输出到显示屏的。
: 通常这块内存是在gpu中,映射到cpu的某个进程中(比如安卓的SurfaceFlinger服务所在的system进程),使得这个进程可以直接写入像素数据。fb中可以存放一屏或者多屏的像素数据。
: fb主要是提供一种额外的显示途径,也就是你自己能完成全部的渲染计算,然后直接把渲染得到的像素数据复制到fb中输出到显示屏。
: ...................
--
FROM 124.202.185.*
没彻底搞懂,不开心啊
【 在 xiaoju 的大作中提到: 】
: 你开心最重要
:
--
FROM 222.131.247.*
就是说,android里面实际根本没有用到fb这个设备?
【 在 foliver 的大作中提到: 】
: fb是给lcd用的,可以简单的认为fb就是lcd,fb中元素和lcd的像素一一对应。是最终图像内容。
: fb位于内核空间,用户态程序无法访问,必须映射到本地用户空间才能使用,这就是gralloc的功能之一。
: flinger只是逻辑模块, 所有支持用gpu的layer都由gpu完成合成,那些不能用gpu的则由hwc去合成。完成合成后送到fb。
: ...................
--
FROM 222.131.247.*
你刚才不是说合成都是gpu或专门硬件做,flinger只是逻辑设备吗?为啥还要用fb?
【 在 foliver 的大作中提到: 】
: flinger用
--
FROM 222.131.247.*
最终显示的图像数据是不是flinger拷到fb里去的?
【 在 foliver 的大作中提到: 】
: flinger调用硬件设备的fb,而硬件设备的fb又是flinger调用gralloc搞定的。
--
FROM 222.131.247.*