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