<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <title>Source Code Tree</title>
  <link rel="stylesheet" type="text/css" href="mesa.css">
</head>
<body>

<div class="header">
  The Mesa 3D Graphics Library
</div>

<iframe src="contents.html"></iframe>
<div class="content">

<h1>Source Code Tree</h1>

<p>
This is a brief summary of Mesa's directory tree and what's contained in
each directory.
</p>


<ul>
<li><b>docs</b> - Documentation
<li><b>include</b> - Public OpenGL header files
<li><b>src</b>
  <ul>
  <li><b>compiler</b> - Common utility sources for different compilers.
    <ul>
    <li><b>glsl</b> - the GLSL IR and compiler
    <li><b>nir</b> - the NIR IR and compiler
    <li><b>spirv</b> - the SPIR-V compiler
    </ul>
  <li><b>egl</b> - EGL library sources
    <ul>
    <li><b>drivers</b> - EGL drivers
    <li><b>main</b> - main EGL library implementation.  This is where all
        the EGL API functions are implemented, like eglCreateContext().
    </ul>
  <li><b>mapi</b> - Mesa APIs
    <li><b>glapi</b> - OpenGL API dispatch layer.  This is where all the
        GL entrypoints like glClear, glBegin, etc. are generated, as well as
        the GL dispatch table.  All GL function calls jump through the
        dispatch table to functions found in main/.
  <li><b>mesa</b> - Main Mesa sources
    <ul>
    <li><b>main</b> - The core Mesa code (mainly state management)
    <li><b>drivers</b> - Mesa drivers (not used with Gallium)
        <ul>
	<li><b>common</b> - code which may be shared by all drivers
        <li><b>dri</b> - Direct Rendering Infrastructure drivers
           <ul>
	   <li><b>common</b> - code shared by all DRI drivers
	   <li><b>i915</b> - driver for Intel i915/i945
	   <li><b>i965</b> - driver for Intel i965
	   <li><b>radeon</b> - driver for ATI R100
	   <li><b>r200</b> - driver for ATI R200
	   <li>XXX more
           </ul>
        <li><b>x11</b> - Xlib-based software driver
        <li><b>osmesa</b> - off-screen software driver
        <li>XXX more
        </ul>
    <li><b>math</b> - vertex array translation and transformation code
        (not used with Gallium)
    <li><b>program</b> - Vertex/fragment shader and GLSL compiler code
    <li><b>sparc</b> - Assembly code/optimizations for SPARC systems
        (not used with Gallium)
    <li><b>state_tracker</b> - State tracker / driver for Gallium.  This
        is basically a Mesa device driver that speaks to Gallium.  This
        directory may be moved to src/mesa/drivers/gallium at some point.
    <li><b>swrast</b> - Software rasterization module.  For drawing points,
        lines, triangles, bitmaps, images, etc. in software.
        (not used with Gallium)
    <li><b>swrast_setup</b> - Software primitive setup.  Does things like
        polygon culling, glPolygonMode, polygon offset, etc.
        (not used with Gallium)
    <li><b>tnl</b> - Software vertex Transformation 'n Lighting.
        (not used with Gallium)
    <li><b>tnl_dd</b> - TNL code for device drivers.
        (not used with Gallium)
    <li><b>vbo</b> - Vertex Buffer Object code.  All drawing with
        glBegin/glEnd, glDrawArrays, display lists, etc. goes through this
        module.  The results is a well-defined set of vertex arrays which
        are passed to the device driver (or tnl module) for rendering.
    <li><b>x86</b> - Assembly code/optimizations for 32-bit x86 systems
        (not used with Gallium)
    <li><b>x86-64</b> - Assembly code/optimizations for 64-bit x86 systems
        (not used with Gallium)
    </ul>
  <li><b>gallium</b> - Gallium3D source code
    <ul>
    <li><b>include</b> - Gallium3D header files which define the Gallium3D
        interfaces
    <li><b>drivers</b> - Gallium3D device drivers
      <ul>
      <li><b>i915</b> - Driver for Intel i915/i945.
      <li><b>llvmpipe</b> - Software driver using LLVM for runtime code generation.
      <li><b>nouveau</b> - Driver for NVIDIA GPUs.
      <li><b>radeon</b> - Shared module for the r600 and radeonsi drivers.
      <li><b>radeonsi</b> - Driver for AMD Southern Island.
      <li><b>r300</b> - Driver for ATI R300 - R500.
      <li><b>r600</b> - Driver for ATI/AMD R600 - Northern Island.
      <li><b>softpipe</b> - Software reference driver.
      <li><b>svga</b> - Driver for VMware's SVGA virtual GPU.
      <li><b>trace</b> - Driver for tracing Gallium calls.
      <li>XXX more
      </ul>
    <li><b>auxiliary</b> - Gallium support code
      <ul>
      <li><b>draw</b> - Software vertex processing and primitive assembly
          module.  This includes vertex program execution, clipping, culling
          and optional stages for drawing wide lines, stippled lines,
          polygon stippling, two-sided lighting, etc.
          Intended for use by drivers for hardware that does not have
          vertex shaders.
          Geometry shaders will also be implemented in this module.
      <li><b>cso_cache</b> - Constant State Objects Cache.  Used to filter out
          redundant state changes between state trackers and drivers.
      <li><b>gallivm</b> - LLVM module for Gallium.  For LLVM-based
           compilation, optimization and code generation for TGSI shaders.
           Incomplete.
      <li><b>pipebuffer</b> - utility module for managing buffers
      <li><b>rbug</b> - Gallium remote debug utility
      <li><b>rtasm</b> - run-time assembly/machine code generation.
          Currently there's run-time code generation for x86/SSE, PowerPC
          and Cell SPU.
      <li><b>tgsi</b> - TG Shader Infrastructure.  Code for encoding,
          manipulating and interpreting GPU programs.
      <li><b>translate</b> - module for translating vertex data from one format
          to another.
      <li><b>util</b> - assorted utilities for arithmetic, hashing, surface
          creation, memory management, 2D blitting, simple rendering, etc.
      <li>XXX more
      </ul>
    <li><b>state_trackers</b> -
       <ul>
       <li><b>clover</b> - OpenCL state tracker
       <li><b>dri</b> - Meta state tracker for DRI drivers
       <li><b>glx</b> - Meta state tracker for GLX
       <li><b>wgl</b> - Windows WGL state tracker
       <li><b>xa</b> - XA state tracker
       <li><b>xvmc</b> - XvMC state tracker
       <li><b>vdpau</b> - VDPAU state tracker
       <li><b>va</b> - VA-API state tracker
       <li><b>omx_bellagio</b> - OpenMAX Bellagio state tracker
       </ul>
    <li><b>winsys</b> -
       <ul>
       <li><b>drm</b> -
       <li><b>gdi</b> -
       <li><b>xlib</b> -
       </ul>
    </ul>
  </ul>
  <ul>
  <li><b>glx</b> - The GLX library code for building libGL using DRI drivers.
  </ul>
<li><b>lib</b> - hardlinks to most binaries as produced by the build system.
        These (shortcuts) are used for development purposes in conjunction with
        LD_LIBRARY_PATH and/or LIBGL_DRIVERS_PATH.
</ul>

</div>
</body>
</html>
