                             TRACE PIPE DRIVER


= About =

This directory contains a Gallium3D trace debugger pipe driver.
It can traces all incoming calls.


= Usage =

== Tracing ==

For tracing then do

 GALLIUM_TRACE=tri.trace 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 such as 
Firefox or Internet Explorer.

For long traces you can use the

  src/gallium/tools/trace/dump.py tri.trace | less -R


== Remote debugging ==

For remote debugging see:

  src/gallium/drivers/rbug/README


= Integrating =

You can integrate the trace pipe driver either inside the state tracker or the 
target. The procedure on both cases is the same. Let's assume you have a 
pipe_screen obtained by the usual means (variable and function names are just
for illustration purposes):

  real_screen = real_screen_create(...);
  
The trace screen is then created by doing

  trace_screen = trace_screen_create(real_screen);

You can then simply use trace_screen instead of real_screen.

You can create as many contexts you wish from trace_screen::context_create they
are automatically wrapped by trace_screen.


--
Jose Fonseca <jfonseca@vmware.com>
Jakob Bornecrantz <jakob@vmware.com>
