android surfaceflinger总结

客户端的surface/buffer在surfaceflinger中对应layer, layer的buffer叫graphic buffer, 来自于gralloc. 通过SurfaceTexture::createImage调用eglCreateImageKHR封装成EGLImageKHR, 并通过glEGLImageTargetTexture2DOES attach到egl的texture。所有这些层都最后通过egl的draw, 画到每个display对应的framebuffer中。这些framebuffer也是在gralloc中生成。 通过DisplayDevice调用eglCreateWindowSurface封装成egl的framebuffer.

 

这些buffer,尽量通过hwc(overlay)合成(type: hw overlay),不支持的或者超过的, 就用opengl es。 opengl es也可能是有hw gpu的支持的。 最后再通过hw overlay合成输出。在omap4的代码里面, 大于1.1版本的hwc将overlay的最后一个设为专门的framebuffertaget, 这样, 每次post的时候不用调用gralloc的fb dev的post,直接将framebuffer设给framebuffertarget就行了。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值