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 | - **freedreno** - Adreno-specific sources
|
---|
35 |
|
---|
36 | - **fdl** - mipmap layout manager
|
---|
37 | - **vulkan** - Turnip is a Vulkan implementation for
|
---|
38 | Qualcomm Adreno
|
---|
39 |
|
---|
40 | - **gbm** - Generic Buffer Manager is a memory allocator for
|
---|
41 | device buffers
|
---|
42 |
|
---|
43 | - **intel** - Intel-specific sources
|
---|
44 |
|
---|
45 | - **blorp** - BLit Or Resolve Pass is a blit and HiZ resolve framework
|
---|
46 | - **vulkan** - Anvil is a Vulkan implementation for Intel gen 7
|
---|
47 | (Ivy Bridge) and newer
|
---|
48 |
|
---|
49 | - **mapi** - Mesa APIs
|
---|
50 |
|
---|
51 | - **glapi** - OpenGL API dispatch layer. This is where all the GL
|
---|
52 | entrypoints like glClear, glBegin, etc. are generated, as well as
|
---|
53 | the GL dispatch table. All GL function calls jump through the
|
---|
54 | dispatch table to functions found in main/.
|
---|
55 |
|
---|
56 | - **mesa** - Main Mesa sources
|
---|
57 |
|
---|
58 | - **main** - The core Mesa code (mainly state management)
|
---|
59 | - **drivers** - Mesa drivers (not used with Gallium)
|
---|
60 |
|
---|
61 | - **common** - code which may be shared by all drivers
|
---|
62 | - **dri** - Direct Rendering Infrastructure drivers
|
---|
63 |
|
---|
64 | - **common** - code shared by all DRI drivers
|
---|
65 | - **i915** - driver for Intel i915/i945
|
---|
66 | - **i965** - driver for Intel i965
|
---|
67 | - **nouveau** - driver for nVidia nv04/nv10/nv20
|
---|
68 | - **radeon** - driver for ATI R100
|
---|
69 | - **r200** - driver for ATI R200
|
---|
70 | - **swrast** - software rasterizer driver that uses the
|
---|
71 | swrast module
|
---|
72 |
|
---|
73 | - **x11** - Xlib-based software driver
|
---|
74 | - **osmesa** - off-screen software driver
|
---|
75 |
|
---|
76 | - **math** - vertex array translation and transformation code
|
---|
77 | (not used with Gallium)
|
---|
78 | - **program** - Vertex/fragment shader and GLSL compiler code
|
---|
79 | - **sparc** - Assembly code/optimizations for SPARC systems (not
|
---|
80 | used with Gallium)
|
---|
81 | - **state_tracker** - Translator from Mesa to Gallium. This is
|
---|
82 | basically a Mesa device driver that speaks to Gallium. This
|
---|
83 | directory may be moved to src/mesa/drivers/gallium at some
|
---|
84 | point.
|
---|
85 | - **swrast** - Software rasterization module. For drawing points,
|
---|
86 | lines, triangles, bitmaps, images, etc. in software. (not used
|
---|
87 | with Gallium)
|
---|
88 | - **swrast_setup** - Software primitive setup. Does things like
|
---|
89 | polygon culling, glPolygonMode, polygon offset, etc. (not used
|
---|
90 | with Gallium)
|
---|
91 | - **tnl** - Software vertex Transformation 'n Lighting. (not used
|
---|
92 | with Gallium)
|
---|
93 | - **tnl_dd** - TNL code for device drivers. (not used with
|
---|
94 | Gallium)
|
---|
95 | - **vbo** - Vertex Buffer Object code. All drawing with
|
---|
96 | glBegin/glEnd, glDrawArrays, display lists, etc. goes through
|
---|
97 | this module. The results is a well-defined set of vertex arrays
|
---|
98 | which are passed to the device driver (or tnl module) for
|
---|
99 | rendering.
|
---|
100 | - **x86** - Assembly code/optimizations for 32-bit x86 systems
|
---|
101 | (not used with Gallium)
|
---|
102 | - **x86-64** - Assembly code/optimizations for 64-bit x86 systems
|
---|
103 | (not used with Gallium)
|
---|
104 |
|
---|
105 | - **gallium** - Gallium3D source code
|
---|
106 |
|
---|
107 | - **include** - Gallium3D header files which define the Gallium3D
|
---|
108 | interfaces
|
---|
109 | - **drivers** - Gallium3D device drivers
|
---|
110 |
|
---|
111 | - **etnaviv** - Driver for Vivante.
|
---|
112 | - **freedreno** - Driver for Qualcomm Adreno.
|
---|
113 | - **i915** - Driver for Intel i915/i945.
|
---|
114 | - **iris** - Driver for Intel gen 8 (Broadwell) and newer.
|
---|
115 | - **lima** - Driver for ARM Mali-400 (Utgard) series.
|
---|
116 | - **llvmpipe** - Software driver using LLVM for runtime code
|
---|
117 | generation.
|
---|
118 | - **nouveau** - Driver for NVIDIA GPUs.
|
---|
119 | - **panfrost** - Driver for ARM Mali Txxx (Midgard) and
|
---|
120 | Gxx (Bifrost) GPUs.
|
---|
121 | - **radeon** - Shared module for the r600 and radeonsi
|
---|
122 | drivers.
|
---|
123 | - **r300** - Driver for ATI R300 - R500.
|
---|
124 | - **r600** - Driver for ATI/AMD R600 - Northern Island (Terascale).
|
---|
125 | - **radeonsi** - Driver for AMD Southern Island and newer (GCN, RDNA).
|
---|
126 | - **softpipe** - Software reference driver.
|
---|
127 | - **svga** - Driver for VMware's SVGA virtual GPU.
|
---|
128 | - **swr** - Software driver with massively parellel vertex processing.
|
---|
129 | - **tegra** - Driver for NVIDIA Tegra GPUs.
|
---|
130 | - **v3d** - Driver for Broadcom VideoCore 5 and newer.
|
---|
131 | - **vc4** - Driver for Broadcom VideoCore 4.
|
---|
132 | - **virgl** - Driver for Virtio virtual GPU of QEMU.
|
---|
133 | - **zink** - Driver that uses Vulkan for rendering.
|
---|
134 |
|
---|
135 | - **auxiliary** - Gallium support code
|
---|
136 |
|
---|
137 | - **cso_cache** - Constant State Objects Cache. Used to filter
|
---|
138 | out redundant state changes between frontends and drivers.
|
---|
139 | - **draw** - Software vertex processing and primitive assembly
|
---|
140 | module. This includes vertex program execution, clipping,
|
---|
141 | culling and optional stages for drawing wide lines, stippled
|
---|
142 | lines, polygon stippling, two-sided lighting, etc. Intended
|
---|
143 | for use by drivers for hardware that does not have vertex
|
---|
144 | shaders. Geometry shaders will also be implemented in this
|
---|
145 | module.
|
---|
146 | - **gallivm** - LLVM module for Gallium. For LLVM-based
|
---|
147 | compilation, optimization and code generation for TGSI
|
---|
148 | shaders. Incomplete.
|
---|
149 | - **hud** - Heads-Up Display, an overlay showing GPU statistics
|
---|
150 | - **pipebuffer** - utility module for managing buffers
|
---|
151 | - **rbug** - Gallium remote debug utility
|
---|
152 | - **rtasm** - run-time assembly/machine code generation.
|
---|
153 | Currently there's run-time code generation for x86/SSE,
|
---|
154 | PowerPC and Cell SPU.
|
---|
155 | - **tessellator**- used by software drivers to implement
|
---|
156 | tessellation shaders
|
---|
157 | - **tgsi** - TG Shader Infrastructure. Code for encoding,
|
---|
158 | manipulating and interpreting GPU programs.
|
---|
159 | - **translate** - module for translating vertex data from one
|
---|
160 | format to another.
|
---|
161 | - **util** - assorted utilities for arithmetic, hashing,
|
---|
162 | surface creation, memory management, 2D blitting, simple
|
---|
163 | rendering, etc.
|
---|
164 | - **vl** - utility code for video decode/encode
|
---|
165 | - XXX more
|
---|
166 |
|
---|
167 | - **frontends** - These implement various libraries using the
|
---|
168 | device drivers
|
---|
169 |
|
---|
170 | - **clover** - OpenCL frontend
|
---|
171 | - **dri** - Meta frontend for DRI drivers, see mesa/state_tracker
|
---|
172 | - **glx** - Meta frontend for GLX
|
---|
173 | - **hgl** - Haiku OpenGL
|
---|
174 | - **nine** - D3D9 frontend, see targets/d3dadapter9
|
---|
175 | - **omx** - OpenMAX Bellagio frontend
|
---|
176 | - **osmesa** - Off-screen OpenGL rendering library
|
---|
177 | - **va** - VA-API frontend
|
---|
178 | - **vdpau** - VDPAU frontend
|
---|
179 | - **wgl** - Windows WGL frontend
|
---|
180 | - **xa** - XA frontend
|
---|
181 | - **xvmc** - XvMC frontend
|
---|
182 |
|
---|
183 | - **winsys** - The device drivers are platform-independent, the
|
---|
184 | winsys connects them to various platforms. There is usually one winsys
|
---|
185 | per device family, and within the winsys directory there can be
|
---|
186 | multiple flavors connecting to different platforms.
|
---|
187 |
|
---|
188 | - **drm** - Direct Rendering Manager on Linux
|
---|
189 | - **gdi** - Windows
|
---|
190 | - **xlib** - indirect rendering on X Window System
|
---|
191 | - XXX more
|
---|
192 |
|
---|
193 | - **targets** - These control how the Gallium code is compiled into
|
---|
194 | different libraries. Each of these roughly corresponds to one frontend.
|
---|
195 |
|
---|
196 | - **d3dadapter9** - d3dadapter9.so for Wine
|
---|
197 | - **dri** - libgallium_dri.so loaded by libGL.so
|
---|
198 | - **graw** - raw Gallium interface without a frontend
|
---|
199 | - XXX more
|
---|
200 |
|
---|
201 | - **glx** - The GLX library code for building libGL.so using DRI
|
---|
202 | drivers.
|
---|
203 | - **loader** - Used by libGL.so to find and load the appropriate DRI driver.
|
---|
204 | - **panfrost** - Panfrost-specific sources
|
---|
205 |
|
---|
206 | - **bifrost** - shader compiler for the Bifrost generation GPUs
|
---|
207 | - **lib** - GPU data structures (command stream) support code`
|
---|
208 | - **midgard** - shader compiler for the Midgard generation GPUs
|
---|
209 | - **shared** - shared Mali code between Lima and Panfrost
|
---|
210 | - **util** - shared code between Midgard and Bifrost shader compilers
|
---|
211 |
|
---|
212 | - **util** - Various utility codes
|
---|
213 | - **vulkan** - Common code for Vulkan drivers
|
---|