Vyvojova deska pro ARM
Petr Kubáč
petrkubac@802.cz
Pátek Červen 20 23:10:56 CEST 2008
Nazdar Jiri
Nevim jestli panove vedi co pisou, protoze soucasne grafiky kdy kazdy pixel
je jeden cely (nebo dokonce vice byte) se obsluhuje dramaticky jinak nez
stare grafiky ve stylu CGA/EGA/VGA karet ktere mely 1-4 bity na pixel.
(nebereme li to ze dneska uz stejne veskerou manipulaci s VideoRAM dela GPU)
VGA hardware se tvari jako 1-4 bitove roviny nad sebou. Procesor vidi jen
jednu bitovou rovinu jako pole bitu - jeden pixel jeden bit. Ktera bitova
rovina to je se nsstavuje v MASK registru takze pixel se zapisuje tak, ze si
nastavis si barvu pixelu do mask registru a pak nastavis ten jediny bit ve
videoram - VGA hardvare nastavi tento bit ve vsech rovinach ktere maji
jednicku v MASK registru. Takze z hlediska zachazeni s Videoram je 16
barevne vga uplne identicke s tvym jednobitovym 640x400 (az na absenci MASK
registru)
Pro radikalnni urychleni BitBlt se v techto systemech kupodivu pouziva
jednoducha finta - oblast odkud i oblast kam se prenasi je zarovnana na cely
byte a i velikost (delka radku je delitelna 8 (cely pocet bytu) - pak se pri
BITBLT nemusi delat bitove posuny - jestli nekdo mate stare WIN3.1 nastavte
si 16 barevne rozliseni a zahybejte oknem - skoro nikdo si toho bez
upozorneni nevsimne ze okno skace v 8pixelovem rastru). Navic aby byl BitBlt
efektivnejsi prenaseji se s transferem jedineho bitu pres zachytne registry
vsechny bitove roviny, takze presun jednoho byte je vlastne presun 4 bytu.
Ve tvem pripade nevim jestli sis tuhle operaci tema dvema videoramkami
paralelne nezkomplikoval.
ale zarovnavani posouvanych oblasti na cely byte je velka uspora
Jinak bych snad nekde vyhrabal vlastni VGA kninovnu pro 1-16 barev do
rozliseni 800x600 psanou v X86 assembleru - kde je to pekne videt.
Zdravi Petr Kubac
----- Original Message -----
From: "Jiri Bezstarosti" <jiri@bezstarosti.cz>
To: "HW-news" <hw-list@list.hw.cz>
Sent: Thursday, June 19, 2008 7:28 PM
Subject: Re: Vyvojova deska pro ARM
> Jasne, ale trosku mi to koliduje s nejjednodussim resenim. V tom totiz v
> jednu chvili uvolnim sbernici k videoram a zapisu obsah zachytnych
> registru (adresa i data jdou mimo CPLD), pak ji zase prevezmu CPLD a ctu
> 8 bodu a to stale dokola. Takze vzdycky 3 faze oscilatoru ctu pro
> zobrazeni, 1 fazi mam uvolnovani sbernice, 3 faze zapisuji a 1 faze zase
> pro uvolneni sbernice. Tim vzdycky behem cteni nactu 8 bodu a pokryju
> tim potrebu tech 8 fazi pro zobrazeni.
>
> Jenze pokud posunu zobrazeni, musim posunout i kam zapisuji, abych mel
> stale horni levy roh zobrazeni na zacatku adresniho prostoru videoram.
> To je pomerne vyrazne zesloziteni. Kdyz ale uvazim, ze bych chtel
> vykreslovat nejaka okenka, posuvem cele obrazovky si stejne moc
> nepomuzu. Takze je to dobre akorat pro ciste textovy rezim pres celou
> obrazovku a nebo pro grafiku ve stylu "raketka/auticko leti/jede nad/po
> krajine a ta se posouva pod nim".
>
> Myslim, ze posuv cele obrazovky ozelim.
>
> --
> Jiri Bezstarosti
>
> Jan Waclawek napsal(a):
>
>>No, musis mat najprv register na ten posuv, no a potom ho bud adderom
>>pricitas tesne pred vystupom na adresy videoRAM, alebo len ho pouzijes ako
>>restart hodnotu citaca adresy pre obnovovanie (ktory musi byt vhodne
>>zacykleny, samozrejme).
>>
>>Tieto dve moznosti sa potom lisia v software, druhemu sa meni adresa
>>"prveho riadku", prvemu nie...
>>
>>wek
>>
>>
>
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list@list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list