driconf: drop now unused translation facility
[mesa.git] / docs / sourcetree.rst
1 Source Code Tree
2 ================
3
4 This is a brief summary of Mesa's directory tree and what's contained in
5 each directory.
6
7 - **docs** - Documentation
8 - **include** - Public OpenGL header files
9 - **src**
10
11 - **amd** - AMD-specific sources
12
13 - **addrlib** - common sources for creating images
14 - **common** - common code between RADV, radeonsi and ACO
15 - **compiler** - ACO shader compiler
16 - **llvm** - common code between RADV and radeonsi for compiling
17 shaders using LLVM
18 - **registers** - register definitions
19 - **vulkan** - RADV Vulkan implementation for AMD Southern Island
20 and newer
21
22 - **compiler** - Common utility sources for different compilers.
23
24 - **glsl** - the GLSL IR and compiler
25 - **nir** - the NIR IR and compiler
26 - **spirv** - the SPIR-V compiler
27
28 - **egl** - EGL library sources
29
30 - **drivers** - EGL drivers
31 - **main** - main EGL library implementation. This is where all
32 the EGL API functions are implemented, like eglCreateContext().
33
34 - **mapi** - Mesa APIs
35 - **glapi** - OpenGL API dispatch layer. This is where all the GL
36 entrypoints like glClear, glBegin, etc. are generated, as well as
37 the GL dispatch table. All GL function calls jump through the
38 dispatch table to functions found in main/.
39 - **mesa** - Main Mesa sources
40
41 - **main** - The core Mesa code (mainly state management)
42 - **drivers** - Mesa drivers (not used with Gallium)
43
44 - **common** - code which may be shared by all drivers
45 - **dri** - Direct Rendering Infrastructure drivers
46
47 - **common** - code shared by all DRI drivers
48 - **i915** - driver for Intel i915/i945
49 - **i965** - driver for Intel i965
50 - **radeon** - driver for ATI R100
51 - **r200** - driver for ATI R200
52 - XXX more
53
54 - **x11** - Xlib-based software driver
55 - **osmesa** - off-screen software driver
56 - XXX more
57
58 - **math** - vertex array translation and transformation code
59 (not used with Gallium)
60 - **program** - Vertex/fragment shader and GLSL compiler code
61 - **sparc** - Assembly code/optimizations for SPARC systems (not
62 used with Gallium)
63 - **state_tracker** - Translator from Mesa to Gallium. This is
64 basically a Mesa device driver that speaks to Gallium. This
65 directory may be moved to src/mesa/drivers/gallium at some
66 point.
67 - **swrast** - Software rasterization module. For drawing points,
68 lines, triangles, bitmaps, images, etc. in software. (not used
69 with Gallium)
70 - **swrast_setup** - Software primitive setup. Does things like
71 polygon culling, glPolygonMode, polygon offset, etc. (not used
72 with Gallium)
73 - **tnl** - Software vertex Transformation 'n Lighting. (not used
74 with Gallium)
75 - **tnl_dd** - TNL code for device drivers. (not used with
76 Gallium)
77 - **vbo** - Vertex Buffer Object code. All drawing with
78 glBegin/glEnd, glDrawArrays, display lists, etc. goes through
79 this module. The results is a well-defined set of vertex arrays
80 which are passed to the device driver (or tnl module) for
81 rendering.
82 - **x86** - Assembly code/optimizations for 32-bit x86 systems
83 (not used with Gallium)
84 - **x86-64** - Assembly code/optimizations for 64-bit x86 systems
85 (not used with Gallium)
86
87 - **gallium** - Gallium3D source code
88
89 - **include** - Gallium3D header files which define the Gallium3D
90 interfaces
91 - **drivers** - Gallium3D device drivers
92
93 - **i915** - Driver for Intel i915/i945.
94 - **llvmpipe** - Software driver using LLVM for runtime code
95 generation.
96 - **nouveau** - Driver for NVIDIA GPUs.
97 - **radeon** - Shared module for the r600 and radeonsi
98 drivers.
99 - **radeonsi** - Driver for AMD Southern Island.
100 - **r300** - Driver for ATI R300 - R500.
101 - **r600** - Driver for ATI/AMD R600 - Northern Island.
102 - **softpipe** - Software reference driver.
103 - **svga** - Driver for VMware's SVGA virtual GPU.
104 - **trace** - Driver for tracing Gallium calls.
105 - XXX more
106
107 - **auxiliary** - Gallium support code
108
109 - **draw** - Software vertex processing and primitive assembly
110 module. This includes vertex program execution, clipping,
111 culling and optional stages for drawing wide lines, stippled
112 lines, polygon stippling, two-sided lighting, etc. Intended
113 for use by drivers for hardware that does not have vertex
114 shaders. Geometry shaders will also be implemented in this
115 module.
116 - **cso_cache** - Constant State Objects Cache. Used to filter
117 out redundant state changes between frontends and drivers.
118 - **gallivm** - LLVM module for Gallium. For LLVM-based
119 compilation, optimization and code generation for TGSI
120 shaders. Incomplete.
121 - **pipebuffer** - utility module for managing buffers
122 - **rbug** - Gallium remote debug utility
123 - **rtasm** - run-time assembly/machine code generation.
124 Currently there's run-time code generation for x86/SSE,
125 PowerPC and Cell SPU.
126 - **tgsi** - TG Shader Infrastructure. Code for encoding,
127 manipulating and interpreting GPU programs.
128 - **translate** - module for translating vertex data from one
129 format to another.
130 - **util** - assorted utilities for arithmetic, hashing,
131 surface creation, memory management, 2D blitting, simple
132 rendering, etc.
133 - XXX more
134
135 - **frontends** -
136
137 - **clover** - OpenCL frontend
138 - **dri** - Meta frontend for DRI drivers
139 - **glx** - Meta frontend for GLX
140 - **wgl** - Windows WGL frontend
141 - **xa** - XA frontend
142 - **xvmc** - XvMC frontend
143 - **vdpau** - VDPAU frontend
144 - **va** - VA-API frontend
145 - **omx_bellagio** - OpenMAX Bellagio frontend
146
147 - **winsys** -
148
149 - **drm** -
150 - **gdi** -
151 - **xlib** -
152
153 - **glx** - The GLX library code for building libGL using DRI
154 drivers.
155
156 - **lib** - hardlinks to most binaries as produced by the build system.
157 These (shortcuts) are used for development purposes in conjunction
158 with LD_LIBRARY_PATH and/or LIBGL_DRIVERS_PATH.