没有合适的资源?快使用搜索试试~ 我知道了~
Android Frambuffer Sufaceflinger 分析
需积分: 24 7 下载量 99 浏览量
2011-11-29
22:28:32
上传
评论
收藏 1.15MB PPT 举报
温馨提示
试读
21页
Android Frambuffer Sufaceflinger 结合代码进行分析,还有许多流程图。
资源详情
资源评论
资源推荐
1. 什么是 Framebuffer
2. Framebuffer 如何与 LCD 驱动关联
3. Framebuffer 如何与 Surfaceflinger 关联
4. SurfaceFlinger 如何把显示数据投递到
LCD 上
5. 什么是 SurfaceFlinger
6. Surfaceflinger 如何与 GUI 关联
什么是 Framebuffer
因为 Linux 是工作在保护模式下,所以用户态进程
是无法象
DOS 那样使用显卡 BIOS 里提供的中断调用来实
现直接写屏,故 Linux 抽象出 FrameBuffer 这个设
备来供用户态进程实现直接写屏。
操作 framebuffer 的主要步骤如下:
1 、打开一个可用的 FrameBuffer 设备 ;
2 、通过 mmap 把显卡的物理内存空间映射到用户
空间 ;
3 、更改内存空间里的像素数据并显示 ;
4 、退出时关闭 framebuffer 设备
Framebuffer 如何与 LCD 驱动关联
setup.c@\kernel\arch\
arm\kernel
ttc_dkb_init()
Ttc_dkb.c@\kernel\arch\
arm\mach-mmp
pxa910_add_fb()
pxa910_add_fb_ovly()
Pxa910fb.c@\kernel\drivers\
video
Fbmem.c@\kernel\drivers\
video
register_framebuffer()
register_framebuffer()
Pxa910fb.c@\kernel\drivers\
video
pxa910fb_probe()
pxa910fb_probe()
start_kernel()@kernel\init\main.c
setup_arch()
arch_initcall()
dma_alloc_writecombine()
dma_alloc_writecombine()
1.内核空间 Framebuffer 大小的计算:
1280*720*4 = 3.5M *2 = 7M ( base+ovly )
2. 用户空间 Framebuffer 大小的计算:
info->fix.line_length = var->xres_virtual * var->bits_per_pixel / 8 = 320 *2=640
info.yres_virtual = info.yres * NUM_BUFFERS = 480*2=960;
size_t fbSize = roundUpToPageSize(finfo.line_length * info.yres_virtual)=
640*960=600K;
如何计算 Framebuffer 大小
剩余20页未读,继续阅读
chenshb2018
- 粉丝: 0
- 资源: 37
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0