请看《关于linux的通用显示框架和android显示框架(必读的总结).docx》
一定要明白各个部分之间的关系,哪些部分为了Rendering渲染,哪些部分为了送显。
android或其他显示架构中,应用向类似android的surfaceflinger申请buffer,然后使用gpu在各自的buffer中渲染(画)相应的图,然后类似android的surfaceflinger会把所有的显示的buffer做图层的merge处理(利用hardware composer),合并到framebuffer中,framebuffer本身申请的内存能存两个屏幕的数据量还大的内存,所以采样交替送显的方式进行eglSwapBuffers交换(即fb_pan_display指定切换到另外framebuffer的另一部分地址),即framebuffer的A部分用于merge处理,framebuffer的B部分用于送显显示,下一个节拍(例如vsync节拍)时,进行切换,framebuffer的A部分送显,framebuffer的B部分用于merge。送显的内容除了framebuffer外,还有overlay的内容,硬件会把他们进行合并,再送到显示屏幕。
新的DRM架构
对于新的DRM架构,单独的FB driver已经没有了,而是被集合到了drm驱动里面。
即DRM framebuffer和以前的framebuffer driver的framebuffer是两个不同的内存。
见Drm_fb_helper.c (drivers\gpu\drm): 对register_framebuffer(info)的调用。
LCD Display Signals and Timing
The basic signals needed are:
VSYNC (Vertical Sync)
Used to reset LCD row pointer to top of display
HSYNC (Horizontal Sync)
Used to reset LCD column pointer to edge of display
D0 –Dxx (1 or more data lines)
Data lines to send display data
CLK (LCD clock)
Used to control the refresh rate
Other signals (optional)
LCD Power, Backlight power, touch screen
lcd panel的接口分类
1)RGB并行信号2)MIPI接口—使用DCS指令集,DSI命令设置
3)LVDS
4)HDMI
5)其他
后续文章,将陆续介绍RGB、LVDS、MIPI屏接口的一些注意事项。
详细请看我的免费的linux各种驱动开发课程如下:
https://edu.51cto.com/course/17138.html
另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。