關於Linux系統中調整重新整理率(轉)

gugu99發表於2007-08-10
關於Linux系統中調整重新整理率(轉)[@more@]

  但是X Window 的重新整理率一直是我心中的痛.我不知道用xf86config設定了多少遍,xf86config的選擇我背都背得下來,但是X Window還是有閃爍感.我想X的設定怎麼這麼保守.因此,我喜歡Linux的字元模式.上網只能在MS Windows下面了.前幾天我痛下決心一定要把重新整理率給搞定,開始看有關X的文件.原來我誤會了,XF86的目標就是充分地利用硬體,哪是什麼保守.是我自己不看文件.下面就是我認為最值得看的幾篇文章:

  /usr/X11R6/lib/X11/doc/README.Config

  /usr/X11R6/lib/X11/doc/QuickStart.doc

  /usr/X11R6/lib/X11/doc/VideoMode.doc

  特別是最後那篇文章徹底解決了重新整理率的問題.現在我就談點體會.有什麼不清楚的話,請看原文.

  先介紹一些術語:

  HSF:顯示器的水平掃描頻率,單位是kHz

  VSF:垂直重新整理率,單位是Hz

  顯示卡的"dot-clock",正式名稱是driving clock frequency(DCF),它表示每秒鐘能

  向螢幕發出的象素數,單位是MHz

  RR:重新整理率(refresh rate)

  HR:水平解析度

  VR:垂直解析度

  frame:幀,由於顯示器的掃描槍掃描到螢幕邊緣的時候不可能馬上回來,會有一段調

  整的時間,這時候它仍在

  掃描,但對我們來說是不可見的.因此幀比HRxVR略大些.

  HFL:幀寬,比HR略大些,經驗HFL = 1.25HR

  VFL:幀長,比VR略大些,經驗VFL = 1.05VR

  下面就是很重要的公式:

  RR = DCF/(HFL*VFL)

  HFL = DCF/HSF

  或 HSF = DCF/HFL

  我們的問題就是:在給定解析度和重新整理率的條件下,顯示卡的DCF是多少?水平掃描頻率(HSF)是多少,它是否超出了

  顯示器所能允許的最大水平掃描頻率?

  我們看到,在這裡顯示卡的DCF不是問題,就是最一般的S3 Trio64V+的DCF也有135MHz,瓶頸是顯示器所能允許的最大水平掃描頻率.我們在啟動X的時候會看到許多模式不能用,就是因為經過計算,水平掃描頻率超出了顯示器所能允許的最大水平掃描頻率.

  事情還沒有完:

  在XF86Config檔案裡,有許多這樣的行:

  Mode "800x600" 55.2 800 832 1064 1096 600 602 610 630

  也許寫成這樣看得更清楚些:

  Mode "800x600" 55.2 800 832 1064 1096

  600 602 610 630

  Mode是關鍵詞,引號中的800x600是名稱,可以隨便起. 55.2就是DCF,800和600當然就是解析度了,1096和630是幀寬和幀長(HFL,VFL).中間兩個數是什麼意思呢?原來它們決定了同步脈衝的開始位置和結束位置.

  800 832 1064 1096 這組數可以這樣理解:

  水平解析度是800,掃描槍掃到第800個象素的時候還要繼續往前掃,到第832個象素的時候,發出同步脈衝,該脈衝持續一段時間,到第1064個象素的時候結束.掃描槍掃繼續往前掃,到達幀寬的時候返回到最左邊,掃描下一條線.

  600 602 610 630是垂直方面的,也可以這樣理解.這就是這組神密數字的含義.

  自己從頭生成一組這樣的數字是挺麻煩的,我的做法是修改當前使用的模式,比如我用的是xf86config自動生成的800x600模式,但重新整理率偏低.我就找到XF86Config檔案中對應的行,直接增大DCF的值,再計算一下:水平掃描頻率HSF=DCF/HFL .只要水平掃描頻率不超出顯示器所能允許的最大水平掃描頻率就行.再到X Window中用xvidtune微調一下.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939823/,如需轉載,請註明出處,否則將追究法律責任。

相關文章