framebuffer

FrameBuffer

文档

https://directfb2.github.io/
https://elinux.org/Porting_DirectFB
http://www.faqs.org/docs/Linux-HOWTO/Framebuffer-HOWTO.html

rgb格式

virtio_gpu 
 A     R   G  B
 透明   红  蓝 绿 
白 255 255 255 255
黑 0   0   0   0
常用格式
RGB888(24位)
R->8bit G->8bit B->8bit
RGB565(16位)
R->5bit G->6bit B->5bit
图形格式与显示驱动不一致需转换后正常。

光标

echo -e "\033[?25h"
echo -e "\033[?25l"

说明

帧缓冲,linux下用户态可通过显存映射直接读写操作帧缓冲写屏幕,他是一块连续的物理内存空间,显示屏上的白板。
单个缓冲区直接写屏时会图像闪烁,可以设多个缓冲区,一个写算法,一个显示,算完后直接复制数据。

文件

include/linux/fb.h
Documentation/fb/api.rst
Documentation/driver-api/frame-buffer.rst

#fb_info ,fb_ops ,fb_var_screeninfo,fb_fix_screeninfo

Framebuffer设备文件

/dev/fb0
/dev/graphics/fb0
# cat /sys/class/graphics/fb0/name                                             
virtio_gpudrmfb
cat /sys/class/graphics/fb0/modes                                            
U:800x480p-0
# cat /sys/class/graphics/fb0/bits_per_pixel                                   
32
# cat /sys/class/graphics/fb0/uevent                                           
MAJOR=29
MINOR=0
DEVNAME=fb0
# ls /sys/class/graphics/fb0/device/drm                                        
card0  controlD64  renderD128
# ls /sys/class/graphics/fb0/device/driver/virtio2                             
device  drm       graphics  power   subsystem  vendor  
driver  features  modalias  status  uevent 

driver

 proc_create("fb", 0, NULL, &fb_proc_fops);
 register_chrdev(FB_MAJOR,"fb",&fb_fops)
 fb_class = class_create(THIS_MODULE, "graphics");


打开FrameBuffer设备

 fbfd = open ("/dev/graphics/fb0", O_RDWR);

映射
ioctrl操作显示屏幕的参

ioctl(fbfd, FBIOGET_FSCREENINFO, &finfo); 
ioctl(fbfd, FBIOGET_VSCREENINFO, &vinfo);
fb_var_screeninfo:可修改示参数,如分辨率和像素比特数
fb_fix_screeninfo:不可修改参数,显示内存的物理地址和长度
fb_ops:底层硬件操作接口集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值