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