现在framebuffer驱动中会申请双buffer,上层是如何使用这两个buffer,底层又是怎么处理两个buffer的?
上层传数据到framebuffer时,会先放到其中一个buffer中,等再有数据传输下来时会切换到另外一个buffer,将其放满。相当于fb的基地址,加上一个偏移量在两个buffer之间切换。底层通过将要显示的buffer的地址写入到DMA中,DMA就会自动将一个buffer的数据搬运到屏的RAM中。
计算lcm的buffer?
buffer有三部分
a)Framebuffer:width*height*(32/8)*2
b)DPI buffer:
size=dsiTmpBufBpp×buffer_num×width×height
其中dsiTmpBufBpp=2(RGB565) or 3(RGB666/888)
buffer_num = params->dsi.internediat_buffer_num (defulat=2)
width = params->width
height = params->height
c)Assert Layer buffer:width*height*(16/8)+4096
针对DBI接口的屏,framebuffer 如何刷数据到LCD上? TE 信号的作用是什么?如何往LCD 写一帧黑屏?
上层将显示数据填充到framebuffer 中,调用mtkfb_ioctl:MTKFB_TRI