新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > Linux教程 > 正文:关于Linux操作系统下显示模式刷新率的问题

关于Linux操作系统下显示模式刷新率的问题

新客网 XKER.COM 2007-07-04 来源:赛迪网 skid 收藏本文

经常在bbs上看到有新手问到刷新率怎么改法,其实很简单.

在XFree86下,需要一个modeline的概念,虽然通过配置 HorizSync ,和VertRefresh能让XFree86自动把刷新搞定,可是还是不可能细细调整,比如我显示器在800x600下可以上到108Hz可是,XFree86的自动配置却只有85Hz.

于是,你需要在给你的XF86Config-4文件的Monitor Section加上一条象

ModeLine "800x600@102" 73.61 800 832 1104 1136 600 610 620 631

的ModeLine参数,来告诉X你显示器有这么一个模式.具体的数字,每台现实器都不一样b,不过大多显示器只给了Horizontal Sync Rate 和Refresh Rate(中文好象是行频和场频)两个参数,自己换算的话麻烦死,还好有这样一个页面 http://xtiming.sourceforge.net/cgi-bin/xtiming.pl,你把你所要的设置填好(dotclock不知道的可以不填),可以帮你作好换算.注意别太贪心,会烧掉你的Monitor的

OK,X下的Refresh解决了,到FrameBuffer了,我只说说vesa模式的其他的也差不多.FrameBuffer和X用的参数又不一样了(真麻烦)不过还在(Linux Kernel Code Path)/Docmentation/fb/framebuffer.txt有个转化的公式,不下面的数值算出来.

pixclock left_margin right_margin hsync_len upper_margin lower_margin

vsync_len

然后,用那些数字去改(Linux Kernel Code Path)/drivers/video/vesafb.c

先是又这样一个struct:

static struct fb_var_screeninfo vesafb_defined __initdata = {

.activate = FB_ACTIVATE_NOW,

.height = -1,

.width = -1,

.right_margin = 32,

.upper_margin = 16,

.lower_margin = 4,

.vsync_len = 4,

.vmode = FB_VMODE_NONINTERLACED,

};

然后是:

vesafb_defined.pixclock = 10000000 / vesafb_defined.xres * 1000 / vesafb_defined.yres;

vesafb_defined.left_margin = (vesafb_defined.xres / 8) & 0xf8;

vesafb_defined.hsync_len = (vesafb_defined.xres / 8) & 0xf8;

的几行.

对应的相应的变量把他们改了(建议原来的注释掉),当然要在编译一下kernel. Reboot,haha,all ok now.

(责任编辑:凌云通)

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐