Source Code Tree
================

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

-  **docs** - Documentation
-  **include** - Public OpenGL header files
-  **src**

   -  **amd** - AMD-specific sources

      -  **addrlib** - common sources for creating images
      -  **common** - common code between RADV, RadeonSI and ACO
      -  **compiler** - ACO shader compiler
      -  **llvm** - common code between RADV and RadeonSI for compiling
         shaders using LLVM
      -  **registers** - register definitions
      -  **vulkan** - RADV Vulkan implementation for AMD Southern Island
         and newer

   -  **compiler** - Common utility sources for different compilers.

      -  **glsl** - the GLSL IR and compiler
      -  **nir** - the NIR IR and compiler
      -  **spirv** - the SPIR-V compiler

   -  **egl** - EGL library sources

      -  **drivers** - EGL drivers
      -  **main** - main EGL library implementation. This is where all
         the EGL API functions are implemented, like eglCreateContext().

   -  **freedreno** - Adreno-specific sources

      -  **fdl** - mipmap layout manager
      -  **vulkan** - Turnip is a Vulkan implementation for
         Qualcomm Adreno

   -  **gbm** - Generic Buffer Manager is a memory allocator for
      device buffers

   -  **intel** - Intel-specific sources

      -  **blorp** - BLit Or Resolve Pass is a blit and HiZ resolve framework
      -  **vulkan** - Anvil is a Vulkan implementation for Intel gen 7
         (Ivy Bridge) and newer

   -  **mapi** - Mesa APIs

      -  **glapi** - 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/.

   -  **mesa** - Main Mesa sources

      -  **main** - The core Mesa code (mainly state management)
      -  **math** - vertex array translation and transformation code
         (not used with Gallium)
      -  **program** - Vertex/fragment shader and GLSL compiler code
      -  **state_tracker** - Translator from Mesa to Gallium. This is
         basically a Mesa device driver that speaks to Gallium.
      -  **vbo** - 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 transform and lighting
         module) for rendering.
      -  **x86** - Assembly code/optimizations for 32-bit x86 systems
         (not used with Gallium)
      -  **x86-64** - Assembly code/optimizations for 64-bit x86 systems
         (not used with Gallium)

   -  **gallium** - Gallium3D source code

      -  **include** - Gallium3D header files which define the Gallium3D
         interfaces
      -  **drivers** - Gallium3D device drivers

         -  **etnaviv** - Driver for Vivante.
         -  **freedreno** - Driver for Qualcomm Adreno.
         -  **i915** - Driver for Intel i915/i945.
         -  **iris** - Driver for Intel gen 8 (Broadwell) and newer.
         -  **lima** - Driver for ARM Mali-400 (Utgard) series.
         -  **llvmpipe** - Software driver using LLVM for runtime code
            generation.
         -  **nouveau** - Driver for NVIDIA GPUs.
         -  **panfrost** - Driver for ARM Mali Txxx (Midgard) and
            Gxx (Bifrost) GPUs.
         -  **r300** - Driver for ATI R300 - R500.
         -  **r600** - Driver for ATI/AMD R600 - Northern Island (Terascale).
         -  **radeonsi** - Driver for AMD Southern Island and newer (GCN, RDNA).
         -  **softpipe** - Software reference driver.
         -  **svga** - Driver for VMware's SVGA virtual GPU.
         -  **tegra** - Driver for NVIDIA Tegra GPUs.
         -  **v3d** - Driver for Broadcom VideoCore 5 and newer.
         -  **vc4** - Driver for Broadcom VideoCore 4.
         -  **virgl** - Driver for Virtio virtual GPU of QEMU.
         -  **zink** - Driver that uses Vulkan for rendering.

      -  **auxiliary** - Gallium support code

         -  **cso_cache** - Constant State Objects Cache. Used to filter
            out redundant state changes between frontends and drivers.
         -  **draw** - 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.
         -  **gallivm** - LLVM module for Gallium. For LLVM-based
            compilation, optimization and code generation for TGSI
            shaders. Incomplete.
         -  **hud** - Heads-Up Display, an overlay showing GPU statistics
         -  **pipebuffer** - utility module for managing buffers
         -  **rtasm** - run-time assembly/machine code generation.
            Currently there's run-time code generation for x86/SSE,
            PowerPC and Cell SPU.
         -  **tessellator**- used by software drivers to implement
            tessellation shaders
         -  **tgsi** - TG Shader Infrastructure. Code for encoding,
            manipulating and interpreting GPU programs.
         -  **translate** - module for translating vertex data from one
            format to another.
         -  **util** - assorted utilities for arithmetic, hashing,
            surface creation, memory management, 2D blitting, simple
            rendering, etc.
         -  **vl** - utility code for video decode/encode
         -  XXX more

      -  **frontends** - These implement various libraries using the
         device drivers

         -  **clover** - OpenCL frontend
         -  **d3d10umd** - D3D10 frontend for Windows only. It's similar to Microsoft WARP, but using LLVMpipe/Softpipe.
         -  **dri** - Meta frontend for DRI drivers, see mesa/state_tracker
         -  **glx** - Meta frontend for GLX
         -  **hgl** - Haiku OpenGL
         -  **lavapipe** - Vulkan frontend, software Vulkan rasterizer using LLVMpipe.
         -  **nine** - D3D9 frontend, see targets/d3dadapter9
         -  **omx** - OpenMAX Bellagio frontend
         -  **osmesa** - Off-screen OpenGL rendering library
         -  **va** - VA-API frontend
         -  **vdpau** - VDPAU frontend
         -  **wgl** - Windows WGL frontend
         -  **xa** - XA frontend

      -  **winsys** - The device drivers are platform-independent, the
         winsys connects them to various platforms. There is usually one winsys
         per device family, and within the winsys directory there can be
         multiple flavors connecting to different platforms.

         -  **drm** - Direct Rendering Manager on Linux
         -  **gdi** - Windows
         -  **xlib** - indirect rendering on X Window System
         -  XXX more

   -  **targets** - These control how the Gallium code is compiled into
      different libraries. Each of these roughly corresponds to one frontend.

         -  **d3dadapter9** - d3dadapter9.so for Wine
         -  **dri** - libgallium_dri.so loaded by libGL.so
         -  XXX more

   -  **glx** - The GLX library code for building libGL.so using DRI
      drivers.
   -  **loader** - Used by libGL.so to find and load the appropriate DRI driver.
   -  **panfrost** - Panfrost-specific sources

         -  **bifrost** - shader compiler for the Bifrost generation GPUs
         -  **lib** - GPU data structures (command stream) support code`
         -  **midgard** - shader compiler for the Midgard generation GPUs
         -  **shared** - shared Mali code between Lima and Panfrost
         -  **util** - shared code between Midgard and Bifrost shader compilers

   -  **util** - Various utility codes
   -  **vulkan** - Common code for Vulkan drivers
