FreeBE/cirrus54/notes.txt

59 lines
2.1 KiB
Plaintext

______ ____ ______ _____ ______
| ____| | _ \| ____| / / _ \| ____|
| |__ _ __ ___ ___| |_) | |__ / / |_| | |__
| __| '__/ _ \/ _ \ _ <| __| / /| _ | __|
| | | | | __/ __/ |_) | |____ / / | | | | |
|_| |_| \___|\___|____/|______/_/ |_| |_|_|
Cirrus 54x driver implementation notes.
Pattern fills may be improved quite a lot for cards which supports starting
on different place of pattern than upper left corner (now I always assume
accelerator can't do that so whenever upper left corner changes I change the
pattern). I also don't understand the notation of raster operations cirrus
supports and so SetMix isn't probably implemented properly.
Because of lack of precise specification of right input data to functions, some
of them may be implemented wrong.
Optimization with -O3 helps a bit, also port accesses are on RING 3 quite slow
so checking is the content of registers changed helped quite a bit. I expect
there might be quite a lot of problem with newer cirruses now, definitely
should work with 5426,5428,7541 and 7543.
***Note: Now also tested with a 5446 (rev A) and modified to work
(Keir Fraser, email: kaf24@cam.ac.uk)
I have had some problems with the memory-mapped IO, specifically when the
registers are mapped to low memory (0xb8000). If you are having problems
getting the driver to work, you can disable MMIO by uncommenting the
DISABLE_MMIO line at the top of driver.c. You should also contact me at
the email address given above to look for a more permanent solution!
Supported functions:
WaitTillIdle()
SetMix()
Set8x8MonoPattern()
Set8x8ColorPattern()
Use8x8ColorPattern()
DrawScan()
DrawPattScan()
DrawColorPattScan()
DrawRect()
DrawPattRect()
DrawColorPattRect()
BitBlt()
SrcTransBlt()
SetCursor
SetCursorPos
SetCursorColor
ShowCursor
SrcTransBltSys()
BitBltSys()
PutMonoImage()
Author: Michal Mertl (Czech Republic)
Email: mime@eunet.cz