File:  [NetBSD Developer Wiki] / wikisrc / users / macallan / crime.mdwn
Revision 1.3: download - view: text, annotated - select for diffs
Wed Oct 21 23:22:01 2009 UTC (10 years, 7 months ago) by wiki
Branches: MAIN
CVS tags: HEAD
web commit by macallan

    1: ##CRIME
    2: 
    3: 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>
    4: 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>
    5: 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>
    6: Both engines share a set of TLBs:
    7: 
    8: * 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.
    9: * Two TLBs map linear buffers with 4KB-aligned pages, up to 128KB each.
   10: * There are other TLBs for texture buffers, stencil buffers etc. but for now we don't really know how to use them.
   11: 
   12: 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>
   13: Partial writes to at least a few other registers work though.

CVSweb for NetBSD wikisrc <wikimaster@NetBSD.org> software: FreeBSD-CVSweb