1848b8605Smrg<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2848b8605Smrg<html lang="en"> 3848b8605Smrg<head> 4848b8605Smrg <meta http-equiv="content-type" content="text/html; charset=utf-8"> 5848b8605Smrg <title>Mesa Source Tree</title> 6848b8605Smrg <link rel="stylesheet" type="text/css" href="mesa.css"> 7848b8605Smrg</head> 8848b8605Smrg<body> 9848b8605Smrg 10848b8605Smrg<div class="header"> 11848b8605Smrg <h1>The Mesa 3D Graphics Library</h1> 12848b8605Smrg</div> 13848b8605Smrg 14848b8605Smrg<iframe src="contents.html"></iframe> 15848b8605Smrg<div class="content"> 16848b8605Smrg 17848b8605Smrg<h1>Mesa source code tree overview</h1> 18848b8605Smrg 19848b8605Smrg<p> 20848b8605SmrgThis is a brief summary of Mesa's directory tree and what's contained in 21848b8605Smrgeach directory. 22848b8605Smrg</p> 23848b8605Smrg 24848b8605Smrg 25848b8605Smrg<ul> 26848b8605Smrg<li><b>docs</b> - Documentation 27848b8605Smrg<li><b>include</b> - Public OpenGL header files 28848b8605Smrg<li><b>src</b> 29848b8605Smrg <ul> 30b8e80941Smrg <li><b>compiler</b> - Common utility sources for different compilers. 31b8e80941Smrg <ul> 32b8e80941Smrg <li><b>glsl</b> - the GLSL IR and compiler 33b8e80941Smrg <li><b>nir</b> - the NIR IR and compiler 34b8e80941Smrg <li><b>spirv</b> - the SPIR-V compiler 35b8e80941Smrg </ul> 36848b8605Smrg <li><b>egl</b> - EGL library sources 37848b8605Smrg <ul> 38848b8605Smrg <li><b>drivers</b> - EGL drivers 39848b8605Smrg <li><b>main</b> - main EGL library implementation. This is where all 40848b8605Smrg the EGL API functions are implemented, like eglCreateContext(). 41848b8605Smrg </ul> 42848b8605Smrg <li><b>mapi</b> - Mesa APIs 43848b8605Smrg <li><b>glapi</b> - OpenGL API dispatch layer. This is where all the 44848b8605Smrg GL entrypoints like glClear, glBegin, etc. are generated, as well as 45848b8605Smrg the GL dispatch table. All GL function calls jump through the 46848b8605Smrg dispatch table to functions found in main/. 47848b8605Smrg <li><b>mesa</b> - Main Mesa sources 48848b8605Smrg <ul> 49848b8605Smrg <li><b>main</b> - The core Mesa code (mainly state management) 50848b8605Smrg <li><b>drivers</b> - Mesa drivers (not used with Gallium) 51848b8605Smrg <ul> 52848b8605Smrg <li><b>common</b> - code which may be shared by all drivers 53848b8605Smrg <li><b>dri</b> - Direct Rendering Infrastructure drivers 54848b8605Smrg <ul> 55848b8605Smrg <li><b>common</b> - code shared by all DRI drivers 56848b8605Smrg <li><b>i915</b> - driver for Intel i915/i945 57848b8605Smrg <li><b>i965</b> - driver for Intel i965 58848b8605Smrg <li><b>radeon</b> - driver for ATI R100 59848b8605Smrg <li><b>r200</b> - driver for ATI R200 60848b8605Smrg <li>XXX more 61848b8605Smrg </ul> 62848b8605Smrg <li><b>x11</b> - Xlib-based software driver 63848b8605Smrg <li><b>osmesa</b> - off-screen software driver 64848b8605Smrg <li>XXX more 65848b8605Smrg </ul> 66848b8605Smrg <li><b>math</b> - vertex array translation and transformation code 67848b8605Smrg (not used with Gallium) 68848b8605Smrg <li><b>program</b> - Vertex/fragment shader and GLSL compiler code 69848b8605Smrg <li><b>sparc</b> - Assembly code/optimizations for SPARC systems 70848b8605Smrg (not used with Gallium) 71848b8605Smrg <li><b>state_tracker</b> - State tracker / driver for Gallium. This 72848b8605Smrg is basically a Mesa device driver that speaks to Gallium. This 73848b8605Smrg directory may be moved to src/mesa/drivers/gallium at some point. 74848b8605Smrg <li><b>swrast</b> - Software rasterization module. For drawing points, 75848b8605Smrg lines, triangles, bitmaps, images, etc. in software. 76848b8605Smrg (not used with Gallium) 77848b8605Smrg <li><b>swrast_setup</b> - Software primitive setup. Does things like 78848b8605Smrg polygon culling, glPolygonMode, polygon offset, etc. 79848b8605Smrg (not used with Gallium) 80848b8605Smrg <li><b>tnl</b> - Software vertex Transformation 'n Lighting. 81848b8605Smrg (not used with Gallium) 82848b8605Smrg <li><b>tnl_dd</b> - TNL code for device drivers. 83848b8605Smrg (not used with Gallium) 84848b8605Smrg <li><b>vbo</b> - Vertex Buffer Object code. All drawing with 85848b8605Smrg glBegin/glEnd, glDrawArrays, display lists, etc. goes through this 86848b8605Smrg module. The results is a well-defined set of vertex arrays which 87848b8605Smrg are passed to the device driver (or tnl module) for rendering. 88848b8605Smrg <li><b>x86</b> - Assembly code/optimizations for 32-bit x86 systems 89848b8605Smrg (not used with Gallium) 90848b8605Smrg <li><b>x86-64</b> - Assembly code/optimizations for 64-bit x86 systems 91848b8605Smrg (not used with Gallium) 92848b8605Smrg </ul> 93848b8605Smrg <li><b>gallium</b> - Gallium3D source code 94848b8605Smrg <ul> 95848b8605Smrg <li><b>include</b> - Gallium3D header files which define the Gallium3D 96848b8605Smrg interfaces 97848b8605Smrg <li><b>drivers</b> - Gallium3D device drivers 98848b8605Smrg <ul> 99848b8605Smrg <li><b>i915</b> - Driver for Intel i915/i945. 100848b8605Smrg <li><b>llvmpipe</b> - Software driver using LLVM for runtime code generation. 101b8e80941Smrg <li><b>nouveau</b> - Driver for NVIDIA GPUs. 102b8e80941Smrg <li><b>radeon</b> - Shared module for the r600 and radeonsi drivers. 103848b8605Smrg <li><b>radeonsi</b> - Driver for AMD Southern Island. 104848b8605Smrg <li><b>r300</b> - Driver for ATI R300 - R500. 105848b8605Smrg <li><b>r600</b> - Driver for ATI/AMD R600 - Northern Island. 106848b8605Smrg <li><b>softpipe</b> - Software reference driver. 107848b8605Smrg <li><b>svga</b> - Driver for VMware's SVGA virtual GPU. 108848b8605Smrg <li><b>trace</b> - Driver for tracing Gallium calls. 109848b8605Smrg <li>XXX more 110848b8605Smrg </ul> 111848b8605Smrg <li><b>auxiliary</b> - Gallium support code 112848b8605Smrg <ul> 113848b8605Smrg <li><b>draw</b> - Software vertex processing and primitive assembly 114848b8605Smrg module. This includes vertex program execution, clipping, culling 115848b8605Smrg and optional stages for drawing wide lines, stippled lines, 116848b8605Smrg polygon stippling, two-sided lighting, etc. 117848b8605Smrg Intended for use by drivers for hardware that does not have 118848b8605Smrg vertex shaders. 119848b8605Smrg Geometry shaders will also be implemented in this module. 120848b8605Smrg <li><b>cso_cache</b> - Constant State Objects Cache. Used to filter out 121848b8605Smrg redundant state changes between state trackers and drivers. 122848b8605Smrg <li><b>gallivm</b> - LLVM module for Gallium. For LLVM-based 123848b8605Smrg compilation, optimization and code generation for TGSI shaders. 124848b8605Smrg Incomplete. 125848b8605Smrg <li><b>pipebuffer</b> - utility module for managing buffers 126848b8605Smrg <li><b>rbug</b> - Gallium remote debug utility 127848b8605Smrg <li><b>rtasm</b> - run-time assembly/machine code generation. 128848b8605Smrg Currently there's run-time code generation for x86/SSE, PowerPC 129848b8605Smrg and Cell SPU. 130848b8605Smrg <li><b>tgsi</b> - TG Shader Infrastructure. Code for encoding, 131848b8605Smrg manipulating and interpreting GPU programs. 132848b8605Smrg <li><b>translate</b> - module for translating vertex data from one format 133848b8605Smrg to another. 134848b8605Smrg <li><b>util</b> - assorted utilities for arithmetic, hashing, surface 135848b8605Smrg creation, memory management, 2D blitting, simple rendering, etc. 136b8e80941Smrg <li>XXX more 137848b8605Smrg </ul> 138848b8605Smrg <li><b>state_trackers</b> - 139848b8605Smrg <ul> 140848b8605Smrg <li><b>clover</b> - OpenCL state tracker 141848b8605Smrg <li><b>dri</b> - Meta state tracker for DRI drivers 142848b8605Smrg <li><b>glx</b> - Meta state tracker for GLX 143b8e80941Smrg <li><b>wgl</b> - Windows WGL state tracker 144b8e80941Smrg <li><b>xa</b> - XA state tracker 145848b8605Smrg <li><b>xvmc</b> - XvMC state tracker 146b8e80941Smrg <li><b>vdpau</b> - VDPAU state tracker 147b8e80941Smrg <li><b>va</b> - VA-API state tracker 148b8e80941Smrg <li><b>omx_bellagio</b> - OpenMAX Bellagio state tracker 149848b8605Smrg </ul> 150848b8605Smrg <li><b>winsys</b> - 151848b8605Smrg <ul> 152848b8605Smrg <li><b>drm</b> - 153848b8605Smrg <li><b>gdi</b> - 154848b8605Smrg <li><b>xlib</b> - 155848b8605Smrg </ul> 156848b8605Smrg </ul> 157848b8605Smrg </ul> 158848b8605Smrg <ul> 159b8e80941Smrg <li><b>glx</b> - The GLX library code for building libGL using DRI drivers. 160848b8605Smrg </ul> 161b8e80941Smrg<li><b>lib</b> - hardlinks to most binaries as produced by the build system. 162b8e80941Smrg These (shortcuts) are used for development purposes in conjunction with 163b8e80941Smrg LD_LIBRARY_PATH and/or LIBGL_DRIVERS_PATH. 164848b8605Smrg</ul> 165848b8605Smrg 166848b8605Smrg</div> 167848b8605Smrg</body> 168848b8605Smrg</html> 169