Taktujeme monitor pod Windows 2000

Kdo si ještě vzpomíná na můj více než rok a půl starý článek na téma změny obnovovací frekvence a popřípadě i maximálního rozlišení pod Windows 9x, toho jistě bude zajímat, jak se podobná věc dá "vytvořit" i ve Windows 2000. Jako součást návodu je i řešení známého problému změny obnovovací frekvence při přepnutí do jiného rozlišení.

Tento článek je určen pouze zkušeným čtenářům. Zde uvedené informace mohou vést až ke zničení hardware. Všechny případné změny provádíte na vlastní riziko!

Registr Windows 2000 - vše dvojitě

Narozdíl od registrů Windows 9X je ve Windows 2000 vše, co se týká hardware, zdvojeno.

Všechno nastavení je uloženo v klíči HKEY_LOCAL_MACHINE\HARDWARE\SYSTEM. Zde se nacházejí položky ControlSet001, ControlSet002 a konečně také CurrentControlSet. Tyto tři struktury jsou mezi sebou těsně spojené. Mám-li být konkrétní, tak CurrentControlSet je zrcadlením ControlSet001, tj. obsahy obou jsou jedny a tytéž informace. Jestliže něco změníte v ControlSet001, pak se to automaticky mění i v CurrentControlSet. Položka ControlSet002 patrně slouží pro zálohu dat, protože její obsah se automaticky mění při ukončení operačního systému podle údajů z CurrentControlSet. V praxi tak změna v ControlSet001 a následný restart znamená změnu ve všech třech položkách.

Pro změnu příslušných údajů si tedy vystačíme s položkou ControlSet001.

Údaje monitoru

Základní technické specifikace monitoru se nacházejí v položce Control\Class

 

Struktura je stejná jako v případě Windows 9x.

Hodnota v položce 0000 (popř. 0001 atd. - záleží na počtu vašich monitorů) udává podporu DPMS (režimy snížené spotřeby), název monitoru, jeho profil barev, cestu k údajům v INF souboru, maximální rozlišení a konečně název výrobce. Jestliže potřebujete rozlišení vyšší, pak zde je nutné provést první změnu (ve formátu šířka,výška).

Druhá změna je nutná v poslední složce této větve - její název je určen podle aktuálního maximálního rozlišení (na obrázku výše je to 2048x1536). Jestliže chcete vyšší, je nutné ji přejmenovat. Ve stejné záložce se skrývá hodnota minimální a maximální horizontální frekvence v kHz (zde 30-130), dále pak hodnota minimální a maximální obnovovací frekvence v Hz (zde 50-200) a polarita horizontální a vertikálního signálu (zde v obou případech kladná).

Pro další informace ohledně nastavování těchto parametrů se podívejte do původního článku.

Problém nedostačujících obnovovacích frekvencí

Tentokrát článek nevzniknul kvůli potřebě vyšších rozlišení, ale protože můj nový monitor nebyla grafická karta s čipem GeForce 3 schopná obsloužit vhodnými obnovovacími frekvencemi, ačkoliv má 350MHz RAMDAC, který na to stačí. O co jde? GeForce 3 mi nabízelo v rozlišení 640x480 pouze 120Hz, přestože monitor zvládá 200Hz. Stejný problém byl snad v každém rozlišení. V 1600x1200 grafika odmítala při 32bit barvách 100Hz a ve vyšších rozlišeních se poslušně držela standardu 60Hz, což je téměř nepoužitelné. Přitom monitor a i samotné GeForce 3 toto podle specifikace zvládá bez problémů!

Bohužel musím konstatovat, že největší bolestí čipů NVIDIA se - kromě kvality zobrazení... obraz je totiž ve vyšších rozlišeních mírně zamlžený -  v poslední době stávají ovladače. Jak jsem již říkal, GeForce 3 je vybaveno 350MHz RAMDAC (Random Access Memory Digital Analog Convertor) převodníkem. Ten převádí 2D obraz z framebufferu do podoby výstupního signálu pro monitor. Protože ovladače z mně neznámého důvodu ani zdaleka nevyužívají celkový potenciál vysoké frekvence tohoto převodníku, některé high-end monitory tak mohou být ochuzeny o zajímavé obnovovací frekvence.

Ačkoliv moje dnes již vykopávkové Voodoo Banshee pro PCI má 250MHz RAMDAC, umožňuje mi (a to při subjektivně vyšší kvalitě obrazu!) téměř stejné frekvence jako GeForce 3 s ovladači Detonator XP 23.11. Banshee je schopné maxima 1920x1440x32bit při 60Hz a např. v 1600x1200x32bit dává stejnou frekvenci jako GeForce 3 - 85Hz. Podle specifikací by ale GeForce 3 mělo být schopné zobrazit až 2048x1536 při 75Hz.

Řešení - registry (opět)

Po dlouhém hledání a zkoumání registrů jsem našel řešení tohoto problému. Předem zdůrazňuji, že zde popsaný způsob platí pouze pro karty s čipem NVIDIA, fungování na ostatních kartách nemůžu zaručit. Dále nemůžu zaručit, že toto platí pro všechny verze ovladačů. V tomto případě jsem testoval na Detonatorech 23.11.

Otevřete si strukturu ControlSet001\Serives\nv. Zde se nachází několik podsložek, z nichž čtyři jsou pojmenované Device0 až Device3.

Všechny tyto Device jsou si velmi podobné, dokonce Device1 až 3 jsou naprosto stejné. Ve všech naleznete toto nastavení:

O co že jde? Toto jsou povolené obnovovací frekvence pro jednotlivé čipy NVIDIA podle jejich kódového označení.

CRUSH11

nForce 420, nForce 220

NV0A

Ali Alladin TNT2

NV10

GeForce 256

NV10DDR

GeForce DDR

NV10GL

Quadro

NV11

GeForce 2 MX

NV11DDR

GeForce 2MX + DDR

NV11GL

Quadro MXR/EX

NV15

GeForce 2

NV15BR

GeForce 2 Ultra

NV15DDR

GeForce 2 Ti

NV15GL

Quadro 2 Pro

NV20_1

GeForce3 Ti200

NV20_2

GeForce3 Ti500

NV20_3

Quadro DCC

NV20

GeForce3

NV4

Riva TNT

NV5

Riva TNT2, Riva TNT2 Pro

NV5M64

Riva TNT2 M64

NV5ULTRA

Riva TNT2 Ultra

NVVANTA

Riva TNT2 Vanta

 

U každého čipu je zapsáno, jaká rozlišení při jaké barevné hloubce podporuje a zároveň jaké obnovovací frekvence při tom podporuje. Každý blok začíná barevnou hloubkou v bitech a dále pokračuje přes rozlišení (šířka, výška v pixelech), po kterém následují obnovovací frekvence zakončené nulou.


Způsob editování hodnot není příliš přátelský

Stačí tedy příslušné frekvence upravit, popř. si některé přidat podle uvážení.

Zde jsem k rozlišení 640x480x8bit přidal obnovovací frekvence 140, 170 a 200Hz.

Protože nevím, k čemu jsou ovladačům v registrech několikanásobné zápisy těch samých informací, zda se náhodou jednotlivé Device0 až 3 navzájem nějak neovlivňují (a navíc stejné položky jsou i v ControlSet001\Control\Class), je nejjistější si všechny položky nechat v registrech vyhledat a pak jí přepsat jednou změněnou hodnotou.

Po restartu již bude vše fungovat, jak bylo zamýšleno.

NVIDIA Refresh Rate Fix - jak to funguje?

Velice nepříjemným problém Windows 2000 je přepínání mezi rozlišeními. Jestliže si např. v 640x480 nastavíte 100Hz a pak se přepnete do 1024x768, kde váš monitor zvládá pouze 75Hz, systém korektně nastaví 75Hz. Jestliže se ale pak přepnete zpět do 640x480, již nebudete mít 100, ale pouze 75Hz. Problém tedy spočívá v tom, že Windows vždy nastavují identickou, popř. nejbližší nižší obnovovací frekvenci. Protože z principu jsou v nižších rozlišeních přístupné vyšší obnovovací frekvence než ve vyšších, vede toto k velmi nepříjemným problémům. Jestliže např. zapomenete zaškrtnou zablokování pro váš hardware nezvladatelných kombinací rozlišení a obnovovací frekvence a náhodou se do takového rozlišení přepnete, bude vás čekat černá obrazovka (moderní monitory) nebo nesprávně zobrazený obraz (staré monitory). V nejhorším případě si tímto můžeme monitor zničit. A naopak, jestliže tuto blokaci máte zapnutou, pak musíte při každé změně rozlišení manuálně měnit obnovovací frekvenci. Nechápu, na co Microsoft myslel, protože ve Windows 9x tento problém není.

NVidia Refresh Rate Fix

Pro karty s čipem NVIDIA existuje program NVidia Refresh Rate Fix, který tento problém umí vyřešit. Jak to dělá? Velmi jednoduše - ze záložky Device0 odstraní všechny frekvence kromě vámi zvolené!

Zde jsem změnil (přidal) obnovovací frekvence ke všem čipům NV20. Pak jsem si v programu nastavil nejvyšší obnovovací frekvence. Protože klasická GeForce 3 využívá položku NV20_Modes, program odstranil všechny obnovovací frekvence kromě nastavených. Když se operační systém přepne třeba do rozlišení 640x480, najde zde pouze hodnotu 200Hz. Protože nemá na výběr (ostatní frekvence jakoby nejsou podporovány), zvolí právě tuto hodnotu.

Eagle

Diskuze (36) Další článek: Microsoft uchovává seznam přehraných titulů

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,