This is the rendering engine, memory controller etc. found in [SGI](http://www.sgi.com/)'s [[O2]] workstations. NetBSD has hardware accelerated drivers for both the kernel ( [[crmfb]] ) and [[Xorg]] ( [[xf86-video-crime]] ).<br>
Video memory is allocated from main memory in chunks of 64KB which, depending on pixel size, result in 128x128, 256x128 or 512x128 tiles. Output is handled by either [[GBE]] for the VGA port or [[mace]] and the AV module for composite video or s-video ( we don't support TV output yet ).<br>
The drawing engine has two parts - the main Rendering Engine which supports all kinds of fancy operations including alpha blending, z-buffering and whatnot, and the Memory Transfer Engine which only supports simple fills and copies but does them really, really fast ( at memory bandwidth speed according to the docs we have ).<br>
Both engines share a set of TLBs:
* Three TLBs map tiled buffers with up to 16x16 tiles. Entries are the upper 16 bit of each tile's physical address so tiles have to be 64KB-aligned.
* Two TLBs map linear buffers with 4KB-aligned pages, up to 128KB each.
* There are other TLBs for texture buffers, stencil buffers etc. but for now we don't really know how to use them.
All TLBs can only be written with 64bit-aligned writes, unaligned writes are ignored, writes smaller than 64bit result in the upper bits being written as zeroes. Reads can be any size with natural alignment.<br>
Partial writes to at least a few other registers work though.
CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb