适配层java接口_Linux Framebuffer适配层释疑

Linux Framebuffer对应的源文件在linux/drivers/video/目录下。在这个目录下还有与各种显卡驱动相关的源文件。

Linux FrameBuffer适配层有以下两个文件非常重要的文件。

1. linux/include/linux/fb.h ,包含了几个非常重要的数据结构

fb_var_screeninfo

描述了对应的framebuffer当前的配置状况,应用程序可以通过ioctl直接对fb_var_screeninfo中的某些参数进行调整,例如xres、yres、height、width等等。

fb_fix_screeninfo

描述了对应的framebuffer当前的特性,这些特性不能通过ioctl直接修改,只能通过修改fb_var_screeninfo中的某些参数间接调整fb_fix_screeninfo中描述的特性,其中经常关注的特性包括:smem_start、smem_len、line_length,从事QT开发的工程师尤其要注意line_length的值,否则UI界面会出现"诡异"的花屏。

fb_cmap

描述设备无关的颜色映射信息,和调色板的配置相关,若使用DirectFB图形引擎,尤其要考究这个结构的使用,可以通过FBIOGETCMAP 和 FBIOPUTCMAP 对应的ioctl操作设定或获取颜色映射信息。

fb_info

当前显示设备的综合属性,其成员中有上述三个结构体的实例。

fb_ops

通过该结构体,应用程序可以使用ioctl()系统调用来操作显示设备。

2. linux/drivers/video/fbmem.c

fbmem.c 处于Framebuffer设备驱动技术的中心位置.它为上层应用程序提供系统调用也为下一层的特定硬件驱动提供接口;那些底层硬件驱动需要用到这儿的接口来向系统内核注册它们自己. fbmem.c 为所有支持FrameBuffer的设备驱动提供了通用的接口,避免重复工作.

fbmem.c 中有一个很关键的全局变量:

struct fb_info *registered_fb[FB_MAX]  //存放所有入驻的fb_info实例的地址,FB_MAX最大为32.

fbmem.c 实现了如下函数完成framebuffer的装卸.

register_framebuffer(struct fb_info *fb_info); unregister_framebuffer(struct fb_info *fb_info);

底层framebuffer驱动通常在xxxfb_probe(...)中,通过上述函数将一个fb_info实例注册到Linux系统中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值