57 lines
2.2 KiB
Plaintext
57 lines
2.2 KiB
Plaintext
Quick Voodoo/Voodoo2 Crash Course (mostly Alan's notes to save looking
|
|
stuff up in the docs all the time)
|
|
|
|
Voodoo and Voodoo 2 appear as multimedia devices. They may be on a "dual
|
|
function" board in which case we should not 'borrow' the Voodoo as we will
|
|
blank the main video card. That is reported in the PCI config space.
|
|
Voodoo/Voodoo2 hardware may not always be initialized by the host OS because
|
|
it is not video.
|
|
|
|
The voodoo memory is split into two pools. A 1-4Mb pool holds the frame
|
|
buffer, an optional second buffer, zbuffers, and alpha. A second 2-8Mb
|
|
memory area holds all the textures.
|
|
|
|
Texture ram is directly writable but not important for the current 2D
|
|
driver. Video RAM is 16bit depth and tiled. The view of the video memory
|
|
area is "magic", it doesn't contain a mapping of the video RAM into PCI
|
|
space but contains pixel poking functionality.
|
|
|
|
The frame buffer always appears untiled and 1024 pixels wide. For write
|
|
there are some 16 different write modes including 24/32bit. The hardware
|
|
does not support 24/32bit - these are provided for software rendering
|
|
fallback. Read back is always 16bit. Endian conversion is hardware. Byte
|
|
aligned access is not supported, only word aligned. Also watch how you
|
|
access data - you can't access out of frame buffer space and if you get
|
|
the control bits wrong you also get zbuffered, fogged and other fun.
|
|
LFB writes have depth and alpha if you want.
|
|
|
|
The real hardware is RGB565, how it sets stuff up internally is out of
|
|
our hands - which means X memory alloc/pixmap cache is a little
|
|
constrained.
|
|
|
|
[IDEA: Should we put the mouse and framebuffer at different Z values so
|
|
that we don't have to erase it to draw under it - less flicker]
|
|
|
|
Acceleration:
|
|
|
|
All Voodoo
|
|
Fast Fill - Solid 2D rectangle fill
|
|
(Also depth buffer clear for 3D)
|
|
Supports a constant alpha option
|
|
Requires a running 3D engine
|
|
|
|
Voodoo2 and later
|
|
Screen to screen blit
|
|
CPU to screen blit
|
|
Ultra fast fill to some alignments
|
|
Monochrome to colour expansion (cpu to screen only)
|
|
(and they finally made the 2D and 3D state independant
|
|
if someone ever gets drunk enough to do DRI...)
|
|
Colour conversion on blit
|
|
Dither
|
|
Chroma testing (src/dst) and selection of op by colour
|
|
raster ops are the usual 16 suspects
|
|
|
|
Other bits supported
|
|
CLUT Gamma correction
|