S3 Ekran Kartını Linux ile Daha Hızlı Kullanmak
(Optimization of S3 Video Card in Linux)

İlker FIÇICILAR
ilkerf@geocities.com
Son düzenleme: Ağustos 2002

Linux'ta X Sunucuyu daha hızlı kullanmak mümkün. X, genellikle hangi ekran kartı için olursa olsun en hızlı ayarlarla gelmiyor. Ama sağladığı ayar olanaklarıyla şansımızı deneyerek ekran kartını overclock etmemiz, ya da anakartın sınırlarını sınamamız olası.

Aşağıda kısaca XFree86'nın S3 ekran kartıyla ilgili ayarları anlatılıyor. XFree86'nın 3.3.6 sürümünde S3 için özel bir hızlandırılmış sunucu var. Bir de SVGA sunucusu tam olmasa da S3'ü destekleyen sürücü modülünü içeriyor. XFree86'nın 4.2.0 sürümünün s3virge modülü ise S3'ün çoğu modelini destekliyor.

Ben bu iki X sürümünü, elimdeki S3 Trio 64'ü olabilecek en iyi, en hızlı ayarında kullanabilmek için denedim.

Temelde yapılabilecek ayarlar bu kart için şunlar:

1. S3 grafik işlemcisinin saat frekansını arttırmak.
2. Anakart PCI bridge'ına verileri pci_retry yöntemiyle yollatmak.
3. İşlemci destekliyorsa X'in mtrr ile ekran kartı belleğini doğrudan adreslemesini sağlamak.
4. Hız ile ilgili olmasa da RAMDAC hızını arttırarak, daha yüksek tazeleme frekanslı görüntüler elde ederek göz yorgunluğunu azaltmak.

Önce 3.3.6'daki ayarlar:

Elimdeki X sürümü şöyle:

XFree86 Version 3.3.6 / X Window System
(protocol Version 11, revision 0, vendor release 6300)
Release Date: January 8 2000
Configured drivers:
S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
newmmio, mmio_928, s3_generic
(using VT number 7)

1. aşama için driver kısmına "set_mclk" komutunu ekliyorum:

Section "Device"
VendorName "auto-detected"
Identifier "Primary-Card"
BoardName "auto-detected"

set_mclk 70

EndSection

Bendeki default ayar 59.97MHz idi. 5'er 5'er arttırarak 80 MHz'e kadar denedim. Ama 70Mhz'de istediğim frame-rate'i elde ettiğim için, bilgisayarın donanımın sebep olabileceği bir hatayla karşılaşmaması yönünde karar kullanarak bu hızla yetindim. Ama siz 80MHz'de uzun süre çalıştırır ve bir sorunla karşılaşmazsanız bu hızda kalmayı isteyebilirsiniz.

2. Aşamada pci_retry seçeneğini de "Device" kısmına ekledim. Bu, her anakartta düzgün çalışmayabiliyor. Ve, pci veriyolunu zorlayan bir seçenek:

Section "Device"
VendorName "auto-detected"
Identifier "Primary-Card"
BoardName "auto-detected"
Option "Accel" "on"
Option "pci_burst" "on"
Option "pci_retry" "on"
set_mclk 70
EndSection

Ama denerseniz, ve görüntülerde bir bozulma olmaz düzgün çalışırsa sağladığı hızı kolayca farkedebiliyorsanız. Gözlerine inanmayanlar x11perf komutuyla hız testi yapabilirler:

bash$ x11perf -copypixwin500

x11perf - X11 performance program, version 1.5
The XFree86 Project, Inc server version 40200000 on :0.0
from mepe.2y.net
Sat Aug 17 23:26:18 2002

Sync time adjustment is 0.2931 msecs.

2000 reps @ 2.9640 msec ( 337.0/sec): Copy 500x500 from pixmap to window
2000 reps @ 2.9631 msec ( 337.0/sec): Copy 500x500 from pixmap to window
...

bu sonuçlardan ne kadar hızlandığınızı her aşamada sınayabilirsiniz.

Bu rakamlardan Video Memory Bandwidth'i çıkarmak için ise şu hesabı kullanabilirsiniz (16bitlik derinlik için):

hız=500bit * 500bit * 16bit / 8byte/bit * kare/saniye

Yani kare/saniye yukarıdaki gibi 337.0/sec ise: hız=0.5*kare MB/s =168.5MB/s oluyor

Değişik overclock'larda elde edilen hızı tablolarsak:


MHz     MB/s    %
60      46.25   0
65      52.50   13
70      57.50   24
75      63.00   36
80      67.00   44

Bu sonuçlar 225MHz Pentium MMX'li bir makinada S3Trio64V+ kartıyla, pci_retry off iken alındı.
Görüldüğü gibi 80MHz'e overclock edersek %44'lük bir hızlanma sağlıyoruz.

3. mtrr kullanımı için sizin yapabileceğiniz fazla birşey yok. Kendi kernelinizi kendiniz derlemişseniz, derlerken "mtrr"'yi de seçmeniz yeterli. Eğer işlemciniz destekliyorsa, kernel bunu kullanır. Bu durumu anlamak için /proc/mtrr dosyasını yoklayabilirsiniz:

bash$ cat /proc/mtrr
reg00: base=0xe7800000 (3704MB), size= 4MB: write-combining, count=1

4. Son olarak RAMDAC'ı DACSpeed seçeneği ile overclock edebiliyoruz. Bendeki 135MHz idi. Deneye yanıla daha üst frekensları yavaş yavaş deneebilirsiniz. Denemelerinizi önce "X -probeonly" ile yapmanızda, ve çıktılar normalse startx ile X ekranını sınamanızda yarar var. denemelerden önce "init 3" gibi bir komutla xdm'yi kapatıp console mode çalışmanız daha güvenli olur. Yeni seçeneğin eklendiği "device" kısmı şöyle:

Section "Device"
VendorName "auto-detected"
Identifier "Primary-Card"
BoardName "auto-detected"
Option "Accel" "on"
Option "pci_burst" "on"
Option "pci_retry" "on"
set_mclk 70
DACSpeed 150
EndSection

Son olarak bu 1MB'lık S3 Trio64 ile kullandığım ekran modlarını belirteyim:

Section "Screen"
Driver "Accel"
DefaultColorDepth 16
Device "Primary-Card"
Monitor "Primary-Monitor"
SubSection "Display"
Depth 16
Modes "800x600" "640x480" "400x300"
EndSubSection
EndSection

"400x300"'lük çözünürlük çoğu video filmi izlemek için iyi bir mode. Monitörüm desteklemediğinden "352x288" modunu kullanamadım, sizde çalışabilir:

Section "Monitor"
ModelName "DDC-detection"
VendorName "DDC-detection"
Identifier "Primary-Monitor"

Mode "352x288"
DotClock 15.750
HTimings 352 368 416 432
VTimings 288 290 296 310
Flags "Doublescan"
EndMode

# 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio
ModeLine "400x300" 18 400 416 448 512 300 301 302 312 Doublescan
# 400x300 @ 60 Hz, 37.8 kHz hsync
Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
# 400x300 @ 72 Hz, 48.0 kHz hsync
Modeline "400x300" 25 400 424 488 520 300 319 322 333 Doublescan

EndSection

Deneyeceklere başarılar.

İlker FIÇICILAR
ilkerf@geocities.com
http://ilkerf.tripod.com/teknik/
http://ekitap.kolayweb.com/