Article View: pl.comp.programming
Article #347Re: Page flipping
From: Cezary Lagod
Date: Thu, 22 Feb 1996 00:00
Date: Thu, 22 Feb 1996 00:00
69 lines
4589 bytes
4589 bytes
Szymon Araczewski (sza...@alf.mat.uni.torun.pl) wrote:
: Witam,
: Mam taki maly problem przy obsludze karty graficznej - konkretnie przy
: pageflippingu. Wyglada na to, ze po przelaczeniu widocznego obszaru pamieci
: funkcja VESY obszar ten pojawia sie na ekranie z pewnym opoznieniem (w jakis
: czas po powrocie z przerwania). Moj program zdazy juz cos nadpisac na tej
: stronie ktora teoretycznie ma byc juz niewidoczna, co powoduje flickering...
: W jaki sposob moge rozpoznac, czy dokonala sie juz zamiana widocznego
: obszaru ? W tej chwili czekam po prostu na odswiezanie pionowe, ale to zre
: kupe czasu. Delay o scisle okreslony czas nie zawsze dziala - na niektorych
: kartach potrzeba go mniej, na niektorych wiecej. Da sie cos zrobic ?
Co do tego problemu to da sie to rozwiazac w sposob naprawde bardzo prosty.
Po prostu musisz tuz przed koncem wyswietlania strony przelaczac sie na
nastepna strone. Wiem, wiem, ze to jest czasochlonne. Ale jak troche sie
pomeczysz to mozesz zrobic to w nastepujacy sposob :
1. Jako pierwsza rzecz musisz zaprogramowac PIC tak by wywolywal przerwania
jak najrzadziej i policzyc ile trwa jedno wyswietlenie ekranu ( da sie to
odczytac z portow i po zainstalowaniu specjalnej procedurki na przerwaniu
zegara )
2. Majac z grubsza ile przerwan mogloby sie wywolac podczas jednego
wyswietlania, zmniejszasz to o czas wywolania pageflip z VESY( oczywiscie to
tez musisz sobie zmierzyc runtime ).
3. Nastepnie podczepiasz pod przerwanie zegara taka procedure ktora bedzie
wywolywala przelaczanie stron co ten czas ( liczony w wywolaniach przerwan
), tylko sobie nie ustawiaj np. wywolywania przerwania co kazda mozliwa
wywolanie, bo ci sie i tak taka procedura nie wyrobi zanim sie drugie
przerwanie wywola !
4. Po kazdym vertical retrace programujesz PIC tak by inicjowal twoja
procedurke. Twoja procedurka po odpowiednim wywolaniu staruje przelaczanie
stron , czeka na vertical retrace, i znow sie sama inicjuje ( oczywiscie w
PIC ).
5. Mozna jeszcze na biezaco zliczac ile trwalo czekanie na ten vertical
retrace w twojej procedurze i odpowiednio dostosowywac sie do wyswietlania,
dzieki czemu mozna przelaczac tryby, a i tak sie nie bedzie sypac.
6. Jezeli mimo tego opisu nie zrozumiales , to pamietam, ze swego czasu
Tomek Pytel ( Tran ) w swoim demosie ( i tu niestety nie pamietam jakim )
uzywal tego chwytu ! Co prawda ja tez go uzywalem, ale to bylo w protected
mode i bylo to w asemblerze ( a konkretnie ta czesc byla jako wstawki w
kodzie wewnetrznym procesora ), bo byl problem , zeby kompilowac kod dla
trybu real w segmencie kodu protected mode. Zrodlo tego demosa o ile
pamietam przewracalo sie gdzies w ftp.luth.se/pub/msdos/demo/code/.... , ale
niestety nie pamietam jak to sie nazywalo. Moze ktos sie wgryzal, to bedzie
pamietal ( ale o ile wiem, to niewielu jest takich oszolomow, jak ja, ktorym
chce sie analizowac i wykorzystywac zrodla innych dobrych programistow, nie
mowiac o tym, ze protected mode + asm + kod maszynowy to dla wielu juz za
wiele , zeby jeszcze rownowczesnie sie starac cos mieszac z hardwarem svga,
tudziez v86 )
Mam nadzieje, ze chociaz troche nakreslilem sposob rozwiazania! Jezeli
nie, to trudno ( nie wszystko da sie wytlumaczyc w kilkudziesieciu
linijkach tekstu :)
Jezeli nie znajdziesz tego zrodla demosa, to moze pogrzebie w swoich
archiwach i moze cos sie tam znajde, ale z gory mowie, ze to nie powinno
byc nic trudnego ( o ile tylko przeczytasz sobie o programowaniu PIC i o
portach VGA to powinno wystarczyc do napisania takiego czegos ). Jak nie
znajdziesz nic, to daj znac to moze cos Ci podesle ( o ile to jeszcze mam,
a mam nadzieje ze tak ;)
Trzymaj sie, moze i bedzie wiecej programistow ktorzy na slowo asembler,
protected mode i programowanie portami karty graficznej nie beda krecic
glowa , bo w koncu systemy operacyjne tez ktos musi pisac :)
--
Cezary Lagod C4, FTiMS, Warsaw University of Technology
cin...@alpha.im.pw.edu.pl or cin...@deuter.im.pw.edu.pl
//////////// Always remeber you're unique, just like everyone else.
Technical Details
Message-ID:
<4gghrp$51q@bilbo.nask.org.pl>Path:
mbox-mo1.pugleaf.net!unknown!not-for-mailReferences:
<4gaifd$15j@Waldemar.mat.uni.torun.pl>Show Full Headers
Complete Article Headers
From: ciniek@I_should_put_my_domain_in_etc_NNTP_INEWS_DOMAIN (Cezary Lagod) Subject: Re: Page flipping Date: 1996/02/22 Message-ID: <4gghrp$51q@bilbo.nask.org.pl> X-Deja-AN: 140617503 references: <4gaifd$15j@Waldemar.mat.uni.torun.pl> organization: Warsaw University of Technology reply-to: cin...@alpha.im.pw.edu.pl newsgroups: pl.comp.programming MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit