trace: Explain how to integrate with a state tracker or winsys.
authorJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 18 Aug 2008 11:42:08 +0000 (12:42 +0100)
committerJosé Fonseca <jrfonseca@tungstengraphics.com>
Mon, 18 Aug 2008 19:47:41 +0000 (20:47 +0100)
src/gallium/drivers/trace/README

index 7e98ec24546058022965c725115c5d59e39a9e06..e7a2f12b022f34ed0a5693943de91306c8c33928 100644 (file)
@@ -1,9 +1,20 @@
+                             TRACE PIPE DRIVER
+
+
+= About =
+
 This directory contains a Gallium3D pipe driver which traces all incoming calls.
 
+
+= Build Instructions =
+
 To build, invoke scons on the top dir as
  
  scons statetrackers=mesa drivers=softpipe,i915simple,trace winsys=xlib
 
+
+= Usage =
+
 To use do
 
  ln -s libGL.so build/linux-x86-debug/gallium/winsys/xlib/libGL.so.1
@@ -11,15 +22,43 @@ To use do
 
 ensure the right libGL.so is being picked by doing
 
- ldd `which glxinfo` 
+ ldd progs/trivial/tri 
 
 and then try running
 
- GALLIUM_TRACE=tri.trace ./progs/trivial/tri
+ GALLIUM_TRACE=tri.trace progs/trivial/tri
 
 which should create a tri.trace file, which is an XML file. You can view copying 
-trace.xsl to the same directory, and opening with a XSLT capable browser like 
+trace.xsl to the same directory, and opening with a XSLT capable browser such as 
 Firefox or Internet Explorer.
 
+
+= Integrating =
+
+You can integrate the trace pipe driver either inside the state tracker or the 
+winsys. The procedure on both cases is the same. Let's assume you have a 
+pipe_screen and a pipe_context pair obtained by the usual means (variable and 
+function names are just for illustration purposes):
+
+  real_screen = real_screen_create(...);
+  
+  real_context = real_context_create(...);
+  
+The trace screen and pipe_context is then created by doing
+
+  trace_screen = trace_screen_create(real_screen);
+  
+  trace_context = trace_context_create(trace_screen, real_context);
+  
+You can then simply use trace_screen and trace_context instead of real_screen
+and real_context.
+
+Do not call trace_winsys_create. Simply pass trace_screen->winsys or 
+trace_context->winsys in places you would pass winsys.
+
+You can create as many contexts you wish. Just ensure that you don't mistake 
+trace_screen with real_screen when creating them.
+
+
 --
 Jose Fonseca <jrfonseca@tungstengraphics.com>