docs: add some missing stuff to sourcetree.rst
authorMiklós Máté <mtmkls@gmail.com>
Wed, 8 Jul 2020 22:39:15 +0000 (00:39 +0200)
committerMarge Bot <eric+marge@anholt.net>
Thu, 9 Jul 2020 09:18:14 +0000 (09:18 +0000)
I alphabetised some lists, but did not attempt to fix the inconsistent
formatting.

v2: added more info
v3: rework for the new format

Signed-off-by: Miklós Máté <mtmkls@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5367>

docs/sourcetree.rst

index 5da2f4bfe1f75340c76589914a10503484e01648..dd6fe43785c2a3c0fe4794698256cbce6051a845 100644 (file)
@@ -31,11 +31,28 @@ each directory.
       -  **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/.
+
+      -  **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)
@@ -47,13 +64,14 @@ each directory.
             -  **common** - code shared by all DRI drivers
             -  **i915** - driver for Intel i915/i945
             -  **i965** - driver for Intel i965
+            -  **nouveau** - driver for nVidia nv04/nv10/nv20
             -  **radeon** - driver for ATI R100
             -  **r200** - driver for ATI R200
-            -  XXX more
+            -  **swrast** - software rasterizer driver that uses the
+               swrast module
 
          -  **x11** - Xlib-based software driver
          -  **osmesa** - off-screen software driver
-         -  XXX more
 
       -  **math** - vertex array translation and transformation code
          (not used with Gallium)
@@ -90,22 +108,34 @@ each directory.
          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.
          -  **radeon** - Shared module for the r600 and radeonsi
             drivers.
-         -  **radeonsi** - Driver for AMD Southern Island.
          -  **r300** - Driver for ATI R300 - R500.
-         -  **r600** - Driver for ATI/AMD R600 - Northern Island.
+         -  **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.
-         -  **trace** - Driver for tracing Gallium calls.
-         -  XXX more
+         -  **swr** - Software driver with massively parellel vertex processing.
+         -  **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
@@ -113,16 +143,17 @@ each directory.
             for use by drivers for hardware that does not have vertex
             shaders. Geometry shaders will also be implemented in this
             module.
-         -  **cso_cache** - Constant State Objects Cache. Used to filter
-            out redundant state changes between frontends and drivers.
          -  **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
          -  **rbug** - Gallium remote debug utility
          -  **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
@@ -130,29 +161,51 @@ each directory.
          -  **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** -
+      -  **frontends** - These implement various libraries using the
+         device drivers
 
          -  **clover** - OpenCL frontend
-         -  **dri** - Meta frontend for DRI drivers
+         -  **dri** - Meta frontend for DRI drivers, see mesa/state_tracker
          -  **glx** - Meta frontend for GLX
+         -  **hgl** - Haiku OpenGL
+         -  **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
          -  **xvmc** - XvMC frontend
-         -  **vdpau** - VDPAU frontend
-         -  **va** - VA-API frontend
-         -  **omx_bellagio** - OpenMAX Bellagio frontend
 
-      -  **winsys** -
+      -  **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** -
-         -  **gdi** -
-         -  **xlib** -
+         -  **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.
 
-   -  **glx** - The GLX library code for building libGL using DRI
+         -  **d3dadapter9** - d3dadapter9.so for Wine
+         -  **dri** - libgallium_dri.so loaded by libGL.so
+         -  **graw** - raw gallium interface without a frontend
+         -  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
+         -  **midgard** - shader compiler for the Midgard generation GPUs
+         -  **pandecode** - command stream debugger
 
--  **lib** - 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.
+   -  **util** - Various utility codes
+   -  **vulkan** - Common code for Vulkan drivers