1848b8605Smrg/** \mainpage
2848b8605Smrg
3848b8605Smrg  \section about About
4848b8605Smrg
5848b8605Smrg  Gallium3D is <a href="http://www.tungstengraphics.com/">Tungsten Graphics</a>'
6848b8605Smrg  new architecture for building 3D graphics drivers. Initially
7848b8605Smrg  supporting Mesa and Linux graphics drivers, Gallium3D is designed to allow
8848b8605Smrg  portability to all major operating systems and graphics interfaces.
9848b8605Smrg
10848b8605Smrg  Compared to existing Linux graphics drivers, Gallium3D will:
11848b8605Smrg
12848b8605Smrg  - Make drivers smaller and simpler.
13848b8605Smrg    Current DRI drivers are rather complicated. They're large, contain
14848b8605Smrg    duplicated code and are burdened with implementing many concepts tightly
15848b8605Smrg    tied to the OpenGL 1.x/2.x API. 
16848b8605Smrg
17848b8605Smrg  - Model modern graphics hardware.
18848b8605Smrg    The new driver architecture is an abstraction of modern graphics hardware,
19848b8605Smrg    rather than an OpenGL->hardware translator. The new driver interface will
20848b8605Smrg    assume the presence of programmable vertex/fragment shaders and flexible
21848b8605Smrg    memory objects. 
22848b8605Smrg
23848b8605Smrg  - Support multiple graphics APIs.
24848b8605Smrg    The OpenGL 3.0 API will be very different from OpenGL 1.x/2.x. We'd like a
25848b8605Smrg    driver model that is API-neutral so that it's not tied to a specific
26848b8605Smrg    graphics API.
27848b8605Smrg
28848b8605Smrg  \section contents Contents
29848b8605Smrg
30848b8605Smrg  - \ref overview
31848b8605Smrg
32848b8605Smrg  - \ref statetracker
33848b8605Smrg  
34848b8605Smrg  - Pipe drivers:
35848b8605Smrg    - \ref softpipe
36848b8605Smrg    - \ref i915g
37848b8605Smrg
38848b8605Smrg  - Winsys drivers:
39848b8605Smrg    - X11 winsys driver (xm_winsys.c)
40848b8605Smrg    - Intel DRI winsys driver (intel_context.h, intel_winsys_pipe.c)
41848b8605Smrg  
42848b8605Smrg  - Ancillary Modules:
43848b8605Smrg    - \ref draw
44848b8605Smrg    - \ref tgsi
45848b8605Smrg      - LLVM TGSI backend (gallivm.h)
46848b8605Smrg
47848b8605Smrg  - \ref callgraph
48848b8605Smrg
49848b8605Smrg  \section external External documentation
50848b8605Smrg
51848b8605Smrg  - <a href="http://www.tungstengraphics.com/gallium3D.htm">Gallium3D's Architectural Overview</a>
52848b8605Smrg  - <a href="http://www.tungstengraphics.com/wiki/index.php/Gallium3D">Technical Overview</a>
53848b8605Smrg  - <a href="http://www.tungstengraphics.com/wiki/files/gallium3d-xds2007.pdf">Gallium3D talk from XDS 2007</a>
54848b8605Smrg
55848b8605Smrg*/
56848b8605Smrg
57848b8605Smrg/** \page overview Overview
58848b8605Smrg
59848b8605Smrg  The public interface of a Gallium3D driver is described by the p_context.h
60848b8605Smrg  header file. The pipe_context structure is an abstract base class with
61848b8605Smrg  methods for:
62848b8605Smrg
63848b8605Smrg  - Setting rendering state (texture sampler state, vertex array info, drawing surfaces, etc.) 
64848b8605Smrg
65848b8605Smrg  - Setting shader state, using the TGSI binary shader representation. 
66848b8605Smrg
67848b8605Smrg  - Vertex array and indexed vertex array drawing. 
68848b8605Smrg
69848b8605Smrg  - Region (memory) management for textures, renderbuffers, vertex buffers, etc. 
70848b8605Smrg
71848b8605Smrg  - Hardware queries (number of texture units, max texture size, etc). 
72848b8605Smrg
73848b8605Smrg  The p_state.h header defines all the state objects (such as polygon
74848b8605Smrg  rasterization options, blend modes, etc) and resources (drawing surfaces,
75848b8605Smrg  textures, memory buffers). The pipe interface uses "constant state" objects.
76848b8605Smrg  That is, state objects are created once and are immutable. State objects are
77848b8605Smrg  put into effect by binding them. This allows Gallium3D drivers to create
78848b8605Smrg  corresponding hardware state objects which can be quickly handled.
79848b8605Smrg
80848b8605Smrg  The p_defines.h header defines numerous constants and tokens (blend modes,
81848b8605Smrg  texture wrap modes, surface formats, etc.
82848b8605Smrg
83848b8605Smrg  The p_winsys.h header defines the window system and OS facilities which
84848b8605Smrg  Gallium3D drivers rely upon. For example, memory allocation is typically a
85848b8605Smrg  service the OS provides while window size/position information is provided by
86848b8605Smrg  the window system. Pipe drivers use the winsys interface to handle these
87848b8605Smrg  things.
88848b8605Smrg
89848b8605Smrg  By abstracting OS and window system services, pipe drivers are portable to
90848b8605Smrg  other platforms (e.g. embedded devices).
91848b8605Smrg*/
92848b8605Smrg
93848b8605Smrg/** \page statetracker The State Tracker
94848b8605Smrg
95848b8605Smrg  The state tracker is the piece which interfaces core Mesa to the Gallium3D
96848b8605Smrg  interface. It's responsible for translating Mesa state (blend modes, texture
97848b8605Smrg  state, etc) and drawing commands (like glDrawArrays and glDrawPixels) into
98848b8605Smrg  pipe objects and operations.
99848b8605Smrg
100848b8605Smrg  Traditional fixed-function OpenGL components (such as lighting and texture
101848b8605Smrg  combining) are implemented with shaders. OpenGL commands such as glDrawPixels
102848b8605Smrg  are translated into textured quadrilateral rendering. Basically, any
103848b8605Smrg  rendering operation that isn't directly supported by modern graphics hardware
104848b8605Smrg  is translated into a hardware-friendly form.
105848b8605Smrg
106848b8605Smrg  Future state trackers will be created for OpenGL 3.0 and OpenGL-ES 2.x.
107848b8605Smrg*/
108848b8605Smrg
109848b8605Smrg/** \page softpipe Softpipe Driver
110848b8605Smrg
111848b8605Smrg  The softpipe driver is a software implementation of the Gallium3D interface.
112848b8605Smrg  It will be used as a reference implementation and as a fallback driver when a
113848b8605Smrg  hardware driver isn't available. The softpipe driver will make extensive use
114848b8605Smrg  of run-time code generation to efficiently execute vertex, fragment and
115848b8605Smrg  rasterization operations.
116848b8605Smrg  
117848b8605Smrg  \sa sp_winsys.h
118848b8605Smrg*/
119848b8605Smrg
120848b8605Smrg/** \page i915g i915 Driver
121848b8605Smrg
122848b8605Smrg  The i915 Gallium3D Driver is an initial hardware driver implementation within
123848b8605Smrg  the Gallium3D driver architecture. We expect that once complete this driver
124848b8605Smrg  will have equivalent functionality and performance to the current Mesa
125848b8605Smrg  i915tex driver, but from a much smaller codebase.
126848b8605Smrg
127848b8605Smrg  \sa i915_context.h
128848b8605Smrg  \sa i915_winsys.h
129848b8605Smrg*/
130848b8605Smrg
131848b8605Smrg/** \page draw Draw Module
132848b8605Smrg  The Draw module provides point/line/polygon rendering services such as
133848b8605Smrg  vertex transformation, polygon culling and clipping. It will be used by
134848b8605Smrg  drivers for hardware which lacks vertex transformation (such as the
135848b8605Smrg  i915/i945). It may also be instantiated and used directly by the state
136848b8605Smrg  tracker to implement some API functionality that doesn't map well to hardware
137848b8605Smrg  capabilities.
138848b8605Smrg
139848b8605Smrg  The interface of this module corresponds closely to the subset of the Gallium
140848b8605Smrg  Driver Interface which is relevent to these steps in the pipeline. Specifically
141848b8605Smrg  there are calls for:
142848b8605Smrg
143848b8605Smrg  - Vertex shader constant state objects
144848b8605Smrg  - Vertex buffer binding
145848b8605Smrg  - Vertex element layout (vertex fetch) constant state objects
146848b8605Smrg  - DrawArrays and DrawElements
147848b8605Smrg  - Rasterizer constant state objects. 
148848b8605Smrg
149848b8605Smrg  The Draw module is effectively the part of \ref softpipe which is concerned with
150848b8605Smrg  vertex processing, split off into a separate module so that it can be reused
151848b8605Smrg  by drivers for rasterization-only hardware. As such it is also instantiated
152848b8605Smrg  by the \ref i915g driver.
153848b8605Smrg
154848b8605Smrg  Additionally, there are cases in the Mesa OpenGL state_tracker where it is
155848b8605Smrg  required to obtain transformed vertices and yet it is anticipated that using
156848b8605Smrg  hardware transformation even if available would reduce performance, usually
157848b8605Smrg  because the setup costs or latency are prohibitive. For this reason the Mesa
158848b8605Smrg  state_tracker also instantiates a copy of this module. 
159848b8605Smrg
160848b8605Smrg  \sa draw_context.h
161848b8605Smrg*/
162848b8605Smrg
163848b8605Smrg/** \page tgsi TGSI
164848b8605Smrg
165848b8605Smrg  The TGSI module provides a universal representation of shaders and
166848b8605Smrg  CPU-based execution of shaders. All Mesa vertex/fragment programs and shaders
167848b8605Smrg  are translated into the TGSI representation before being passed to the
168848b8605Smrg  driver. In turn, the driver will convert the TGSI instructions into
169848b8605Smrg  GPU-specific instructions. For hardware that lacks vertex or fragment shader
170848b8605Smrg  support, the TGSI's executor can be used. The TGSI executor includes support
171848b8605Smrg  for SSE code generation. Support for other processors (such as Cell) will be
172848b8605Smrg  added in the future. 
173848b8605Smrg
174848b8605Smrg  \sa tgsi_parse.h
175848b8605Smrg  \sa <a href="http://www.tungstengraphics.com/wiki/files/tgsi.pdf">TGSI specification</a>
176848b8605Smrg*/
177848b8605Smrg
178848b8605Smrg/** \page callgraph Glxgears callgraph example
179848b8605Smrg
180848b8605Smrg  Below is a call graph of the glxgears application together with the Gallium3D's softpipe reference driver.
181848b8605Smrg  
182848b8605Smrg  \htmlonly
183848b8605Smrg  The functions in the graph below are clickable.
184848b8605Smrg  \endhtmlonly
185848b8605Smrg
186848b8605Smrg  \dot
187848b8605Smrgdigraph {
188848b8605Smrg	graph [fontname=Arial, fontsize=10];
189848b8605Smrg	node [fontcolor=white, fontname=Arial, style=filled, fontsize=10, shape=box];
190848b8605Smrg	edge [fontname=Arial, fontsize=10];
191848b8605Smrg	1 [color="#ff0000", URL="\ref main", label="main\n100.00% (0.68%)\n0"];
192848b8605Smrg	1 -> 2 [color="#fe0400", fontcolor="#fe0400", label="99.32%\n1433"];
193848b8605Smrg	2 [color="#fe0400", URL="\ref do_draw", label="do_draw\n99.32% (0.00%)\n1433"];
194848b8605Smrg	2 -> 4 [color="#fa1201", fontcolor="#fa1201", label="96.67%\n4298"];
195848b8605Smrg	2 -> 39 [color="#0d4f76", fontcolor="#0d4f76", label="2.45%\n1433"];
196848b8605Smrg	3 [color="#fa1201", URL="\ref execute_list", label="execute_list\n96.67% (0.00%)\n4299"];
197848b8605Smrg	3 -> 5 [color="#f91301", fontcolor="#f91301", label="96.38%\n17196"];
198848b8605Smrg	4 [color="#fa1201", URL="\ref _mesa_CallList", label="_mesa_CallList\n96.67% (0.00%)\n4299"];
199848b8605Smrg	4 -> 3 [color="#fa1201", fontcolor="#fa1201", label="96.67%\n4299"];
200848b8605Smrg	5 [color="#f91301", URL="\ref vbo_save_playback_vertex_list", label="vbo_save_playback_vertex_list\n96.38% (0.10%)\n17196"];
201848b8605Smrg	5 -> 6 [color="#f91501", fontcolor="#f91501", label="96.09%\n17196"];
202848b8605Smrg	6 [color="#f91501", URL="\ref st_draw_vbo", label="st_draw_vbo\n96.09% (0.00%)\n17196"];
203848b8605Smrg	6 -> 10 [color="#ec3f03", fontcolor="#ec3f03", label="87.48%\n30093"];
204848b8605Smrg	6 -> 33 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
205848b8605Smrg	6 -> 34 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
206848b8605Smrg	6 -> 47 [color="#0d3a74", fontcolor="#0d3a74", label="1.17%\n17196"];
207848b8605Smrg	7 [color="#f71d01", URL="\ref draw_do_flush", label="draw_do_flush\n94.52% (0.20%)\n101744"];
208848b8605Smrg	7 -> 13 [color="#e74e04", fontcolor="#e74e04", label="84.25%\n1146400"];
209848b8605Smrg	7 -> 8 [color="#0d7d6c", fontcolor="#0d7d6c", label="8.32%\n114640"];
210848b8605Smrg	7 -> 46 [color="#0d4175", fontcolor="#0d4175", label="1.57%\n97444"];
211848b8605Smrg	8 [color="#f32702", URL="\ref clip_tri", label="clip_tri\n92.37% (0.49%)\n1261040"];
212848b8605Smrg	8 -> 9 [color="#f32a02", fontcolor="#f32a02", label="91.88%\n1261040"];
213848b8605Smrg	9 [color="#f32a02", URL="\ref cull_tri", label="cull_tri\n91.88% (0.20%)\n1261040"];
214848b8605Smrg	9 -> 15 [color="#e35d04", fontcolor="#e35d04", label="81.12%\n560810"];
215848b8605Smrg	9 -> 12 [color="#0d805e", fontcolor="#0d805e", label="10.57%\n560810"];
216848b8605Smrg	10 [color="#ec3f03", URL="\ref softpipe_draw_arrays", label="softpipe_draw_arrays\n87.48% (0.00%)\n30093"];
217848b8605Smrg	10 -> 11 [color="#ec3f03", fontcolor="#ec3f03", label="87.48%\n30093"];
218848b8605Smrg	11 [color="#ec3f03", URL="\ref softpipe_draw_elements", label="softpipe_draw_elements\n87.48% (0.10%)\n30093"];
219848b8605Smrg	11 -> 17 [color="#cf9507", fontcolor="#cf9507", label="67.61%\n30093"];
220848b8605Smrg	11 -> 27 [color="#0d844f", fontcolor="#0d844f", label="13.01%\n120372"];
221848b8605Smrg	11 -> 36 [color="#0d5a77", fontcolor="#0d5a77", label="3.33%\n30093"];
222848b8605Smrg	11 -> 23 [color="#0d5977", fontcolor="#0d5977", label="3.23%\n30093"];
223848b8605Smrg	12 [color="#ea4703", URL="\ref flush_spans", label="flush_spans\n85.91% (4.60%)\n4586176"];
224848b8605Smrg	12 -> 14 [color="#e35c04", fontcolor="#e35c04", label="81.31%\n15910811"];
225848b8605Smrg	13 [color="#e74e04", URL="\ref flatshade_tri", label="flatshade_tri\n84.25% (0.29%)\n1146400"];
226848b8605Smrg	13 -> 8 [color="#e75004", fontcolor="#e75004", label="83.95%\n1146400"];
227848b8605Smrg	14 [color="#e35c04", URL="\ref shade_quad", label="shade_quad\n81.31% (7.73%)\n15910811"];
228848b8605Smrg	14 -> 21 [color="#c0bb09", fontcolor="#c0bb09", label="57.24%\n13903725"];
229848b8605Smrg	14 -> 26 [color="#0c883c", fontcolor="#0c883c", label="16.24%\n15910811"];
230848b8605Smrg	15 [color="#e35d04", URL="\ref setup_tri", label="setup_tri\n81.12% (1.47%)\n560810"];
231848b8605Smrg	15 -> 16 [color="#e06505", fontcolor="#e06505", label="79.26%\n1121620"];
232848b8605Smrg	16 [color="#e06505", URL="\ref subtriangle", label="subtriangle\n79.26% (3.91%)\n1121620"];
233848b8605Smrg	16 -> 12 [color="#da7606", fontcolor="#da7606", label="75.34%\n4025366"];
234848b8605Smrg	17 [color="#cf9507", URL="\ref draw_arrays", label="draw_arrays\n67.61% (0.00%)\n30093"];
235848b8605Smrg	17 -> 19 [color="#cf9607", fontcolor="#cf9607", label="67.42%\n630520"];
236848b8605Smrg	18 [color="#cf9607", URL="\ref do_ef_triangle", label="do_ef_triangle\n67.42% (0.49%)\n1261040"];
237848b8605Smrg	18 -> 20 [color="#ce9807", fontcolor="#ce9807", label="66.83%\n1261040"];
238848b8605Smrg	19 [color="#cf9607", URL="\ref do_quad", label="do_quad\n67.42% (0.00%)\n630520"];
239848b8605Smrg	19 -> 18 [color="#cf9607", fontcolor="#cf9607", label="67.42%\n1261040"];
240848b8605Smrg	20 [color="#ce9807", URL="\ref get_queued_prim", label="get_queued_prim\n66.83% (0.10%)\n1261040"];
241848b8605Smrg	20 -> 7 [color="#cd9907", fontcolor="#cd9907", label="66.54%\n71650"];
242848b8605Smrg	21 [color="#c0bb09", URL="\ref depth_test_quad", label="depth_test_quad\n57.24% (1.08%)\n13903725"];
243848b8605Smrg	21 -> 22 [color="#40a00b", fontcolor="#40a00b", label="34.54%\n13074127"];
244848b8605Smrg	21 -> 24 [color="#0c8f1e", fontcolor="#0c8f1e", label="21.62%\n13903725"];
245848b8605Smrg	22 [color="#40a00b", URL="\ref output_quad", label="output_quad\n34.54% (3.91%)\n13074127"];
246848b8605Smrg	22 -> 25 [color="#0c8c2b", fontcolor="#0c8c2b", label="19.28%\n13074127"];
247848b8605Smrg	22 -> 28 [color="#0d8159", fontcolor="#0d8159", label="11.35%\n7223435"];
248848b8605Smrg	23 [color="#1c970c", URL="\ref draw_flush", label="draw_flush\n27.98% (0.00%)\n257944"];
249848b8605Smrg	23 -> 7 [color="#1c970c", fontcolor="#1c970c", label="27.98%\n30093"];
250848b8605Smrg	24 [color="#0c8f1e", URL="\ref sp_depth_test_quad", label="sp_depth_test_quad\n21.62% (16.14%)\n13903725"];
251848b8605Smrg	24 -> 37 [color="#0d5977", fontcolor="#0d5977", label="3.23%\n13903725"];
252848b8605Smrg	24 -> 44 [color="#0d4c76", fontcolor="#0d4c76", label="2.25%\n13903725"];
253848b8605Smrg	25 [color="#0c8c2b", URL="\ref write_quad_f_swz", label="write_quad_f_swz\n19.28% (16.14%)\n13074127"];
254848b8605Smrg	25 -> 38 [color="#0d5877", fontcolor="#0d5877", label="3.13%\n26148254"];
255848b8605Smrg	26 [color="#0c883a", URL="\ref tgsi_exec_machine_init", label="tgsi_exec_machine_init\n16.73% (10.27%)\n16326381"];
256848b8605Smrg	26 -> 30 [color="#0d6178", fontcolor="#0d6178", label="3.91%\n16326381"];
257848b8605Smrg	26 -> 45 [color="#0d4475", fontcolor="#0d4475", label="1.76%\n16326381"];
258848b8605Smrg	26 -> 52 [color="#0d3174", fontcolor="#0d3174", label="0.78%\n16326381"];
259848b8605Smrg	27 [color="#0d844f", URL="\ref draw_set_mapped_vertex_buffer", label="draw_set_mapped_vertex_buffer\n13.01% (0.00%)\n120372"];
260848b8605Smrg	27 -> 23 [color="#0d844f", fontcolor="#0d844f", label="13.01%\n120372"];
261848b8605Smrg	28 [color="#0d8159", URL="\ref read_quad_f_swz", label="read_quad_f_swz\n11.35% (5.87%)\n7223435"];
262848b8605Smrg	28 -> 29 [color="#0d737a", fontcolor="#0d737a", label="5.48%\n14446870"];
263848b8605Smrg	29 [color="#0d737a", URL="\ref get_row_rgba", label="get_row_rgba\n5.48% (5.48%)\n14446870"];
264848b8605Smrg	30 [color="#0d6178", URL="\ref tgsi_parse_init", label="tgsi_parse_init\n3.91% (3.52%)\n16326383"];
265848b8605Smrg	31 [color="#0d5f78", URL="\ref draw_set_vertex_buffer", label="draw_set_vertex_buffer\n3.72% (0.00%)\n34392"];
266848b8605Smrg	31 -> 23 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
267848b8605Smrg	32 [color="#0d5f78", URL="\ref draw_set_vertex_element", label="draw_set_vertex_element\n3.72% (0.00%)\n34392"];
268848b8605Smrg	32 -> 23 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
269848b8605Smrg	33 [color="#0d5f78", URL="\ref softpipe_set_vertex_buffer", label="softpipe_set_vertex_buffer\n3.72% (0.00%)\n34392"];
270848b8605Smrg	33 -> 31 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
271848b8605Smrg	34 [color="#0d5f78", URL="\ref softpipe_set_vertex_element", label="softpipe_set_vertex_element\n3.72% (0.00%)\n34392"];
272848b8605Smrg	34 -> 32 [color="#0d5f78", fontcolor="#0d5f78", label="3.72%\n34392"];
273848b8605Smrg	35 [color="#0d5d77", URL="\ref __i686.get_pc_thunk.bx", label="__i686.get_pc_thunk.bx\n3.52% (3.52%)\n0"];
274848b8605Smrg	36 [color="#0d5a77", URL="\ref draw_set_mapped_constant_buffer", label="draw_set_mapped_constant_buffer\n3.33% (0.10%)\n30093"];
275848b8605Smrg	36 -> 23 [color="#0d5977", fontcolor="#0d5977", label="3.23%\n30093"];
276848b8605Smrg	37 [color="#0d5977", URL="\ref s8z24_read_quad_z", label="s8z24_read_quad_z\n3.23% (3.23%)\n13903725"];
277848b8605Smrg	38 [color="#0d5877", URL="\ref put_row_8R8G8B_ximage", label="put_row_8R8G8B_ximage\n3.13% (3.13%)\n26148254"];
278848b8605Smrg	39 [color="#0d4f76", URL="\ref _mesa_Clear", label="_mesa_Clear\n2.45% (0.00%)\n1433"];
279848b8605Smrg	39 -> 40 [color="#0d4f76", fontcolor="#0d4f76", label="2.45%\n1433"];
280848b8605Smrg	40 [color="#0d4f76", URL="\ref st_clear", label="st_clear\n2.45% (0.00%)\n1433"];
281848b8605Smrg	40 -> 41 [color="#0d4d76", fontcolor="#0d4d76", label="2.35%\n2866"];
282848b8605Smrg	41 [color="#0d4d76", URL="\ref xmesa_clear", label="xmesa_clear\n2.35% (0.00%)\n2866"];
283848b8605Smrg	41 -> 42 [color="#0d4c76", fontcolor="#0d4c76", label="2.25%\n1433"];
284848b8605Smrg	42 [color="#0d4c76", URL="\ref softpipe_clear", label="softpipe_clear\n2.25% (0.00%)\n1433"];
285848b8605Smrg	42 -> 43 [color="#0d4c76", fontcolor="#0d4c76", label="2.25%\n1433"];
286848b8605Smrg	43 [color="#0d4c76", URL="\ref sp_region_fill", label="sp_region_fill\n2.25% (2.25%)\n1433"];
287848b8605Smrg	44 [color="#0d4c76", URL="\ref s8z24_write_quad_z", label="s8z24_write_quad_z\n2.25% (2.25%)\n13903725"];
288848b8605Smrg	45 [color="#0d4475", URL="\ref tgsi_parse_free", label="tgsi_parse_free\n1.76% (0.78%)\n16326383"];
289848b8605Smrg	45 -> 49 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n16326383"];
290848b8605Smrg	46 [color="#0d4175", URL="\ref draw_vertex_shader_queue_flush", label="draw_vertex_shader_queue_flush\n1.57% (0.49%)\n97444"];
291848b8605Smrg	46 -> 53 [color="#0d2f74", fontcolor="#0d2f74", label="0.68%\n415570"];
292848b8605Smrg	46 -> 26 [color="#0d2973", fontcolor="#0d2973", label="0.49%\n415570"];
293848b8605Smrg	47 [color="#0d3b74", URL="\ref st_validate_state", label="st_validate_state\n1.27% (0.00%)\n18629"];
294848b8605Smrg	47 -> 48 [color="#0d3874", fontcolor="#0d3874", label="1.08%\n8599"];
295848b8605Smrg	48 [color="#0d3874", URL="\ref update_raster_state", label="update_raster_state\n1.08% (0.10%)\n8599"];
296848b8605Smrg	48 -> 51 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n8599"];
297848b8605Smrg	49 [color="#0d3674", URL="\ref tgsi_full_token_free", label="tgsi_full_token_free\n0.98% (0.98%)\n16326412"];
298848b8605Smrg	50 [color="#0d3674", URL="\ref draw_set_rasterizer_state", label="draw_set_rasterizer_state\n0.98% (0.00%)\n8599"];
299848b8605Smrg	50 -> 23 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n8599"];
300848b8605Smrg	51 [color="#0d3674", URL="\ref softpipe_bind_rasterizer_state", label="softpipe_bind_rasterizer_state\n0.98% (0.00%)\n8599"];
301848b8605Smrg	51 -> 50 [color="#0d3674", fontcolor="#0d3674", label="0.98%\n8599"];
302848b8605Smrg	52 [color="#0d3174", URL="\ref tgsi_align_128bit", label="tgsi_align_128bit\n0.78% (0.78%)\n16326381"];
303848b8605Smrg	53 [color="#0d2f74", URL="\ref draw_vertex_fetch", label="draw_vertex_fetch\n0.68% (0.68%)\n415570"];
304848b8605Smrg}
305848b8605Smrg
306848b8605Smrg  \enddot
307848b8605Smrg
308848b8605Smrg  The graph above was generated by the <a href="http://code.google.com/p/jrfonseca/wiki/Gprof2Dot">gprof2dot.py script</a>.
309848b8605Smrg*/
310