# Source Code Organization

## This section summarizes the the Chromium directory tree.

Doxygen generated source trees (if generated) may found by traversing the links.

- cr/app_faker

  The source to the crappfaker program.

- cr/crutapi

  XXX

- cr/crutclientapi

  XXX

- cr/crutproxy

  XXX

- cr/crutserver

  XXX

- cr/config

  Platform-specific configuration files for the build system.

- cr/cr.mk

  The build system itself.

- cr/doc

  This documentation.

- cr/dlm

  The display list manager.

- cr/glapi_parser

  Code for parsing the OpenGL header to extract the full API supported by Chromium. New functions to be supported are added to cr/glapi_parser/system_header/CR_GL.h. This parser isn't very robust (that's an understatement), so be careful to format new functions exactly like the existing ones.

- cr/include

  Header files for use by all Chromium components.

- cr/include/state

  Header files for the state tracker.

- cr/mothership/client

  The mothership client access library.

- cr/mothership/configs

  A number of sample configuration files.

- cr/mothership/prshd

  The "poor man's" RSH Daemon. Don't run this, ever.

- cr/mothership/reset

  The resetms program for resetting the mothership between runs.

- cr/mothership/quit

  The quitms program for quitting the mothership.

- cr/mothership/server

  The code for the mothership itself.

- cr/mothership/tools

  The code for the graphical configuration tool.

- cr/opengl_stub

  The OpenGL faker library. Also contains stub_common.py, which is used by many modules.

- cr/packer

  The packer. This directory generates a number of useful files, include the structures for tracking "current" state (which, for performance reasons, is partially done by the packer).

- cr/progs

  Demonstration and test programs. Not all of them listed here.

- - arbfraglight
  - bboxtest
  - dlisttest
  - packertest
  - packperf
  - psubmit
  - psubmit_crut
  - threadtest
  - tiletest

- cr/scripts

  Matthew Eldridge's Perl-based fast C/C++ dependency generator. Python version by Christopher Waters.

- cr/crserverlib

  Cr server (aka Network Node) code, built as a library

- cr/crserver

  The Cr server program (uses crserverlib).

- cr/state_tracker

  The state tracking library. There's a lot of code in here, and some of it is pretty hairy.

- cr/spu_loader

  The SPU loader, and also functions for manipulating the SPU dispatch tables.

- cr/spu

  The spu directory is where all the SPUs are found (not all of them are listed here).

- - cr/spu/binaryswap

    The binary swap SPU.

  - cr/spu/error

    The Error SPU, the implicit parent of all other SPU's.

  - cr/spu/expando

    The Expando SPU. This SPU records display lists when they're build, then replays (expands) them when they're called.

  - cr/spu/nop

    The NOP (do nothing) SPU.

  - cr/spu/feedback

    The Feedback & Selection SPU.

  - cr/spu/motionblur

    The Motion blur SPU.

  - cr/spu/options

    The spuoptions program.

  - cr/spu/pack

    The Pack SPU for sending unanalyzed streams of OpenGL over a network.

  - cr/spu/passthrough

    The Passthrough SPU, mainly a starting point for new filter-SPU's

  - cr/spu/perf

    The Performance Monitoring SPU.

  - cr/spu/print

    The Print SPU.

  - cr/spu/render

    The Render SPU.

  - cr/spu/readback

    The Readback SPU.

  - cr/spu/template

    The starting point for new SPU's.

  - cr/spu/tester

    A simple program that loads a SPU explicitly and uses it to draw.

  - cr/spu/tilesort

    The TileSort SPU for driving tiled displays.

  - cr/spu/wet

    The Wet SPU.

- cr/unpacker

  The unpacking library.

- cr/util

  All the utitlity functions, and some other miscellany that didn't fit anywhere else.