linux fb双缓存,framebuffer 双缓冲问题

刚刚接触linux,不太了解,可能会问一些比较低级的问题,请包涵。

我看了网上的一些Framebuffer的资料,有提到通过设置yoffset的值来实现双缓冲的。

百度知道里的一段:

如果你的屏幕为800x600,各参数设定为:

xres = 800

yres = 600

xres_virtual = 800

xres_virtual = 600x2 = 1200

缺省的yoffset = 0;

显示的是(0,0)到(800,600)到可视区

当你设定yoffset = 600时

(0,600)到(800,1200)将显示到可视区,就这样实现双缓冲

但实际使用中遇到问题。使用

fb_vmeminfo.xoffset=0;

fb_vmeminfo.yoffset=600;

if(-1==(ioctl(fdtem,FBIOPAN_DISPLAY,&fb_vmeminfo)))//此处会执行错误

……

返回值总是-1。

FBIOPAN_DISPLAY,FBIOPUT_VSCREENINFO两个宏好像不起作用。

先FBIOGET_VSCREENINFO得到struct fb_var_screeninfo fb_vinfo

修改fb_vinfo的一些成员值后用FBIOPUT_VSCREENINFO设置,但不起作用。

网上看到有人也提了这样的问题,可是没有答复。

望达人指点一下。谢谢

说的不清楚的地方请指出 我补充

|

那你要好好看看你的fb驱动了,我估计你的驱动不支持这两个选项。

报-1也不应该,毕竟抽象层都是实现的。

你说的具体点,把驱动和测试代码联系起来看

|

gdb 跟不到kernel mode。

内核模式要用kgdb。

你这种情况还是printk吧。

估计就是不支持pan_display

|

fb_vmeminfo没什么大问题。

光知道-1的返回值没法判断错误情况,

把Linux内核的errno打印出来吧。

----------------------------------

#include

|

参数无效啊,好像很有可能不支持FBIOPAN_DISPLAY。

能否公开你的硬件平台的一些信息?

|

一点想法:

你的是什么硬件平台,是否支持双缓冲?

|

显示模式是否设定(vga=0xxxx)

比如640*480*256色 vga=0x301

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值