XFree86-XInside.pl.txt

(15 KB) Pobierz
  XFree-to-Xinside
  Autor: Marco Melgazzi, marco@techie.com
  v1.2, Maj 1997
  Wersja polska: Bartosz Maruszewski
  B.Maruszewski@zsmeie.torun.pl
  v1.0, 13 Września 1997


  Jak zamienić format opisu trybów video XFree86 na XInside/XiGraphics.
  Dokument ten został napisany w standardzie ISO-8859-2. Jego oryginalna
  wersja znajduje się pod adresem ftp.icm.edu.pl
  <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/>.

  1.  Wprowadzenie.


  Wiosną 1996 widziałem wiele listów w grupie comp.os.linux.x z
  pytaniami o to jak przenieść tryby video z XFree86 do jednego z jego
  komercyjnych odpowiedników: XInside (teraz nazwanym XiGraphics, jednak
  w tym dokumencie używam starszej nazwy ponieważ będę się odwoływał
  głównie do tamtej wersji).

  Zanim powstała nowa wersja tego programu grzebałem trochę w tej
  starszej i ciągle mam tę przerobioną wersję gdzieś na moim dysku:
  ponieważ lubię rozwiązywać problemy postanowiłem spróbować i po kilku
  godzinach grzebania i obliczania powstał w miarę sensowny artykuł,
  który natychmiast wysłałem.

  Dyskusje na temat zamiany nagle zniknęły a ja otrzymałem 1 (jeden)
  list z podziękowaniami za artykuł, więc ponieważ może ktoś
  potrzebowałby tych informacji w przyszłości postanowiłem przekształcić
  ten artykuł w mini-HOWTO.

  Pozwól mi jednak najpierw coś powiedzieć: NIE pracuję dla XInside i
  miałem dostęp tylko do wersji 1.2 dla Linux-a. Wiem, że w dzisiejszych
  czasach (Maj 97) AccelX osiągnął już wersję 3.1, ale myślę, że zawarte
  tutaj informacje, jeśli nie dosłownie, to i tak się przydadzą.

  Ponieważ to HOWTO zostało napisane z pomocą dość starej wersji
  XInside, może się tak stać, że część zawartych tutaj informacji będzie
  niepełna: jak później przeczytasz, dzięki narodzinom XFree 3.2, nie
  kupiłem tego komercyjnego serwera. Tak więc jeśli zauważysz jakieś
  niepoprawne informacje w tym dokumencie proszę wyślij mi list.

  Jednak zauważ, że manipulowanie częstotliwościami monitora może być
  cokolwiek niebezpieczne i dlatego nie daję absolutnie żadnych
  gwarancji. Jeśli będzie u ciebie działać, to dobrze, jeśli wysadzisz
  swój komputer, to nie wiń mnie za to.

  Jak może zauważyłeś po moim nazwisku moim narodowym językiem nie jest
  angielski, więc przypuszczalnie zanjdziesz jakieś błędy tu i tam.
  Przepraszam za nie z góry i proszę nie zawalajcie mojej skrzynki
  listowej wiadomościami związanymi z tymi błędami. Dzięki!


  2.  Czy potrzebuję tego?


  Sądze, że taktyka Xinside polegająca na nie dołączaniu narzędzia (jak
  xvidtune) do obróbki trybów video czy do przeniesienia tych z XFree do
  wersji rozwojowej (i o ile wiem komercyjnej) jest niezrozumałe.
  Spędziłem nad tym jakieś 3 godziny (wskazówka: porównałem pozycję
  dotyczącą VESy 1024x768@70Hz w tych dwóch formatach (i jestem już
  prawie elektronikiem ;-)) podczas gdy programista Xinside mógłby
  napisać artykuł porównawczy...

  Nie ściągałem żadnej wersji rozwojowej od 1.3 i naprawdę mam nadzieję,
  że to naprawili. Jeśli tak, to ten dokument jest już bezużyeczny, ale
  jeśli go przeczytasz, to dowiesz się trochę więcej o tym jak to
  działa.


  3.  No to start.


  Załóżmy, że masz jakiś tryb w XFree86 i chcesz z niego zrobić wersję
  dla Xinside z tymi samymi warunkami: postępuj zgodnie z opisanymi
  poniżej krokami, a powinno ci się udać. Użyjemy moich domyślnych
  trybów video jako przykładów z życia wziętych i wyjaśnię co musisz
  zrobić, żeby je zamienić.

  Pozycja w XFree86 wygląda tak:


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



  Każdy z numerów A-D i 1-4 ma swoje znaczenie: jeśli chcesz, możesz ich
  poszukać w "The Hitchhiker's Guide to X386/XFree86 Video Timing"
  (/usr/lib/X11/doc/VideoModes.doc), ale nie musisz znać teorii, żeby je
  zamienić...

  Moje tryby w /usr/lib/X11/XF86Config to:


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



  W Xinside, musisz dodać pozycję w pliku Xtimings, który powinien się
  znajdować w etc/ (od teraz zakładam, że jesteś w głównym katalogu
  Xaccel, którym powinien być /usr/X11/lib/X11/AcceleratedX).



























  !    Gdzieś w tym pliku, umieść nazwy które chcesz

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

  !
  !    Te cztery są oczywiste
  !
      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

  !   Oczywiste

      ScanType          = NONINTERLACED;

  !
  !   Umieść tutaj opcje +/-hsync +/-vsync z XFree86
  !
      HorSyncPolarity   = POSITIVE;
      VerSyncPolarity   = POSITIVE;

  !   Nie powinno się zmieniać

      CharacterWidth    = 8;             // pixels

  !   Tutaj jest DOT_CLK

      PixelClock        = 105.000;       // MHz
  !
  !
  !   Sekcja częstotliwości poziomych: [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;

   !
   !  Sekcja częstotliwości pionowych: [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
   ! Koniec!



  Teraz tak nowo stworzone tryby musisz umieścić w plikach pokazanych
  poniżej w odpowiednich miejscach.


  4.  Ustawianie.


  W wyjątkach pokazanych poniżej znak -> pokazuje co było zmieniane: nie
  wpisuj go do pliku!

  Pozycja Monitor (moja to monitors/mfreq/mfreq64.vda)


      [ESTABLISHED_TIMINGS]
          "640x480 @ 60Hz",
          "640x480 @ 72Hz",
          "640x480 @ 75Hz",
          "800x600 @ 56Hz",
          "800x600 @ 60Hz",
          "800x600 @ 72Hz",
          "800x600 @ 75Hz",
          "1024x768 Interlaced",
          "1024x768 @ 60Hz",
          "1024x768 @ 70Hz",
          "1024x768 @ 75Hz",
      "1152x900 Interlaced",
          "1152x900 @ 60Hz",
          "1152x900 @ 67Hz",
  ->      "1168x876 @ 72Hz",
          "1280x1024 Interlaced",
          "1280x1024 @ 60Hz",
      "1600x1200 Interlaced";



  Plik informacyjny na temat karty (mój to boards/s3/764-2.xqa,
  Zastanawiam się czemu mają prawie wszystkie karty Hercules, a mojej
  nie: Terminator 64/Dram)
























  [VISUAL]
      BitsPerPixel   = 8;
      MemoryModel    = Packed;
      ColorModel     = Indexed;
      BitsRGB        = 6;
      NumberOfColors = 256;

      [RESOLUTIONS]
      640x480,
      800x600,
      1024x768,
  ->  1168x876,
      1152x900,
      1280x1024

      [DESKTOPS]
      640x480,
      800x600,
      1024x768,
      1152x900,
  ->  1168x876,
      1280x1024,
      1600x1200



  Jeśli częstotliwości zegara (dot clock) jest odpowiednio niski (NIE w
  tym przypadku dla mojej karty) możesz nawet tę pozycję umieścić w
  sekcji 16bpp i 32bpp.

  Plik /etc/Xaccel.ini będzie wyglądał tak:


  --------------------------------------------------------------
      Board   = "s3/764-2.xqa";
      Monitor = "mfreq/mfreq64.vda";
      Depth   = 8;
  ->  Desktop = 1168x876;

      [RESOLUTIONS]
  ->      1168x876,
          1024x768;



  Właściwa pozycja odnośnie trybów w etc/Xtimings




















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

      HorPixel          = 1168;          // pixels
      VerPixel          = 876;           // lines
      PixelWidthRatio   = 4;
      PixelHeightRatio  = 3;
      HorFrequency      = 64.024;        // kHz
      VerFrequency      = 71.138;        // Hz
      ScanType          = NONINTERLACED;
      HorSyncPolarity   = POSITIVE;
      VerSyncPolarity   = POSITIVE;
      CharacterWidth    = 8;             // pixels
      PixelClock        = 105.000;       // MHz
      HorTotalTime      = 15.619;        // (usec) =  205 chars
      HorAddrTime       = 11.124;        // (usec) =  146 chars
      HorBlankStart     = 11.124;        // (usec) =  146 chars
      HorBlankTime      =  4.495;        // (usec) =   59 chars
      HorSyncStart      = 11.962;        // (usec) =  157 chars
      HorSyncTime       =  2.743;        // (usec) =   36 chars
      VerTotalTime      = 14.057;        // (msec) =  900 lines
      VerAddrTime       = 13.682;        // (msec) =  876 lines
      VerBlankStart     = 13.682;        // (msec) =  876 lines
      VerBlankTime      =  0.375;        // (msec) =   24 lines
      VerSyncStart      = 13.698;        // (msec) =  877 lines
      VerSyncTime       =  0.219;        // (msec) =   14 lines



  Możesz sprawdzić czy wszystko sie udało uruchamiając program vgaset
  bez parametrów podczas gdy uruchomiony jest serwer Xinside: na ekranie
  będzie pokazana linia na podobieństwo XFree86 i, jeśli wszytko jest
  dobrze, linia ta będzie taka sama jak ta, od której zacząłeś (za
  wyjat...
Zgłoś jeśli naruszono regulamin