Hlavní navigace

SVGAlib: jemnější nastavení

Jakub Matys 20. 8. 2004

Dnešní článek se bude zabývat funkcemi, které nám umožní další "jemnějsí" nastavení, potřebná k práci s svgalib.

 void vga_disabledriverreport(void);

Knihovna svgalib tiskne jméno detekovaného hardwaru, grafický mód a další informace na výstup. Tyto zprávy by mohly rušit „atmosféru“ programu, proto je můžete touto funkcí zakázat.

 int vga_claimvideomemory(int m);

Tato funkce nastaví množství videopaměti v bytech, která má být uložena, když program dočasně přejde do textového módu. Funkce je využitelná, pokud používáte více než jednu obrazovku (screen) videopaměti. Vrací nenulovou hodnotu, pokud není požadované množství paměti k dispozici.

 void vga_safety_fork(void (*shutdown_routine));

V případě havárie programu se může stát, že nebude správně obnoven textový mód. Chcete-li tomuto problému zamezit, zavolejte funkci jako první vga_ funkci (funkce sama spustí grafický režim). Jedinou nevýhodou funkce je, že aby pracovala korektně, musí zvýšit iopl level na 3.

 void vga_setchipsetandfeatures(int chipset, int par1, int par2); 

Nastaví čipset a nepoviné parametry (jako přesný typ čipsetu a množství instalované video paměti). Funkce pracuje podobně jako vga_setchipset().

void vga_setdisplaystat(int a);

Nastaví počáteční adresu paměti pro aktuální obrazovku na a. Adresa je hodnota offsetu pixelů od počátku videopaměti (jiný případ jsou highcolor a truecolor módy, jejichž jednotka je 1 byte.). Funkce může být použito pro page-flipping a virtual desktop scrolling. Funkce však nepracuje s 16barevnými módy.

void vga_setlogicalwidth(int l);

Nastaví šířku řádky scanline na l bytů. Předávaná hodnota musí být násobkem 8.

int vga_setlinearaddressing(void);

Přepne do lineárního adresovacího módu. Funkce vrací velikost mapovaného framebufferu, pokud dopadla úspěšně, jinak –1.

void vga_setmodeX(void);

Pokusí se nastavit uspořádání paměti jako u X. Používá se pro módy s 256 barvami, které používají více než 256 KB paměti (např. 320×200×256 nebo 640×400×256). Obvyklejší módy, 320×240×256 atd., jsou defaultně Mode X-like (tj. paměť je již uspořádána a nemusíte na tuto funkci ani pomyslet).

Paměťové uspořádání „X-like“ znamená, že paměť je organizována do čtyř stránek a že nejvyšší pixely 0, 1, 2, 3 jsou uloženy jako první do stránek 0, 1, 2, 3. Pixely 4, 5, 6, 7 jsou uloženy až na druhém místě ve stránkách 0, 1, 2, 3.

Jiné módy mají pixely 0, 1, 2, 3 uloženy ve stránce 0 a používají další stránky pouze v případě, kdy je první přeplněna. Mnoho SVGA módů pracuje tímto způsobem.

int vga_screenoff(void);
int vga_screenon(void);

Funkce zapínají nebo vypínají generování videosignálu. Na některých grafických deskách SVGA je paměťový přístup rychlejší, pokud není signál generován. Ne všechny desky umožňují vypnutí signálu. VŽDY je vrácena návratová hodnota 0.

int vga_getmousetype(void);

Vrací typ myši nakonfigurovaný v /etc/vga/libvga­.conf. Vrácenou hodnotu vymaskujte s hodnotou MOUSE_TYPE_MASK, získáte tak typ myši, který je nastaven v konfiguračním souboru. Všechny důležité proměnné a konstanty jsou uloženy v hlavičkovém souboru<vgamou­se.h>.

int vga_getcurrentchipset(void);

Funkce zjistí aktuálně nastavený čipset (ať je nastaven implicitně při inicializaci knihovny, nebo explicitně programátorem).

int vga_getmonitortype(void);

Někdy je také důležité vědět, kolik toho ještě monitor unese. Tato funkce vrací typ monitoru nastavený v souboru /etc/vga/libvga­.config. Funkce může vrátit jednu z následujících hodnot:

  • MON640_60 – standardní VGA – 640×480 na 60Hz
  • MON800_56 – zastaralé SVGA – 800×600 na 56Hz
  • MON1024_43I – low-end SVGA – 1024×768 na 43Hz
  • MON800_60 – SVGA – 800×600 na 60Hz
  • MON1024_60 – SVGA non-interlaced – 1024×768 na 60Hz
  • MON1024_70 – SVGA high frequency – 1024×768 na 70Hz
  • MON1024_72 – 1024×768 na 72Hz a vyšších frekvencích

To by bylo pro dnešek vše. Příště se podíváme na další zajímavou funkci, která nám umožní „pokročilé“ nastavení grafického subsystému.

Našli jste v článku chybu?

3. 9. 2004 9:45

alik (neregistrovaný)

na notebooku acer TM350TE
Linux alik-nb 2.6.7-gentoo-r11 #1 Wed Jul 28 11:29:11 CEST 2004 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux
consola 1024x768 trident framebuffer
svgalib 1.9.19 , mody s 1024x768 mi funguju - skusal som to so zgv v console a tiez neake dema ku svgalib.
jedine vom musel vo /etc/vga/libvga.conf
doplnit velkos mapate na karte

chipset TRIDENT 0 8192

inak to neslo ...










29. 8. 2004 11:46

S1>< (neregistrovaný)

leda takove, ze na gentoo s 2.6.7 se mi to take nepovedlo :)

Vitalia.cz: Jak vybrat ořechy do cukroví a kde mají levné

Jak vybrat ořechy do cukroví a kde mají levné

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Podnikatel.cz: Na poslední chvíli šokuje výjimkami v EET

Na poslední chvíli šokuje výjimkami v EET

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu