次のページ 前のページ 目次へ

3. やってみよう!

既にあれこれいじり回した XFree86 モードがあり、それを Xinside にそのまま 移したいという状況であるとします。その場合、以下の手順を踏めば、それを 実現することが出来ます。ここでは私のデフォルトのビデオモードを実例として、 そのモードの変換方法を解説します。

XFree86 のエントリは次のようになっています。

Modeline "blahblah" DOTCLK  A B C D  a b c d

A から D および a から d にはそれぞれ個別の意味があります。詳しくは、 「The Hitchhiker's Guide to X386/XFree86 Video Timinig」 (/usr/lib/X11/doc/VideoModes.doc) を見て欲しいのですが、 基礎理論を知らなくても変換自体は問題なく行うことが出来ます。

私の /usr/lib/X11/XF86Config のモードラインは次のようなものです。

Modeline "1168x876" 105  1168 1256 1544 1640  876 877 891 900
                     |     |    |    |    |    |   |   |   |
                  DOT_CLK  A    B    C    D    a   b   c   d

Xinside では、エントリを Xtimings ファイルに追加して、そのファイルを etc/ に置く必要があります (ここからは、/usr/X11/lib/X11/AcceleratedX と いった Xaccel のトップディレクトリを起点にして話を進めます)。

!    Somewhere in the file, put here the name you want

[PREADJUSTED_TIMING]
    PreadjustedTimingName = "1168x876 @ 72Hz";

!
!    These four are obvious
!
    HorPixel          = 1168;         // pixels
    VerPixel          = 876;          // lines
    PixelWidthRatio   = 4;
    PixelHeightRatio  = 3;

!
!   hsync: DOT_CLK / D * 1000 [KHz]
!
!   hsync = 105 / 1640 * 1000 = 64.024 KHz
!
!   vsync: ( 1 / (( D / DOT_CLK ) * d) ) * 1,000,000 [Hz]
!
!   vsync: ( 1 / (( 1640 / 105 ) * 900) ) * 1,000,000
!           ( 1 / 14057.1428571 ) * 1,000,000 = 71.138 Hz
!

    HorFrequency      = 64.180;        // kHz
    VerFrequency      = 71.138;        // Hz

!   Obvious

    ScanType          = NONINTERLACED;

!
!   Put here the +/-hsync +/-vsync XFree86 options
!
    HorSyncPolarity   = POSITIVE;
    VerSyncPolarity   = POSITIVE;

!   Shouldn't change

    CharacterWidth    = 8;             // pixels

!   DOT_CLK here

    PixelClock        = 105.000;       // MHz
!
!
!   horizontal timings section: [usec]
!
    HorTotalTime  = D / DOT_CLK                  = 15.619;
    HorAddrTime   = A / DOT_CLK                  = 11.124;
    HorBlankStart = A / DOT_CLK                  = 11.124;
    HorBlankTime  = HorTotalTime - HorBlankStart =  4.495;
    HorSyncStart  = B / DOT_CLK                  = 11.962;
    HorSyncTime   = C / DOT_CLK - HorSyncStart   =  2.743;

 !
 !  vertical timings section:    [msec]
 !

    VerTotalTime  = ( HorTotalTime * d ) / 1000  = 14.057;
    VerAddrTime   = ( HorTotalTime * a ) / 1000  = 13.682;
    VerBlankStart = ( HorTotalTime * a ) / 1000  = 13.682;
    VerBlankTime  = VerTotalTime - VerBlankStart =  0.375;
    VerSyncStart  = ( HorTotalTime * b ) / 1000  = 13.698;
    VerSyncTime   = ( HorTotalTime * ( c - b ) ) / 1000
                                                 = 0.219

 ! Finished !

。。。。


次のページ 前のページ 目次へ