X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Ftrace%2FREADME;h=cacd2e17498d16c7aa3a2d59e821210aa959242a;hb=ebff93ac19a5da3aedf6a4c16b2eb166447f70a1;hp=f0e1cd596d3f887a0be4b6e8579b591275ebf1f5;hpb=e97681c7f551a2a2a6bd5eff0f4192a870c816c0;p=mesa.git diff --git a/src/gallium/drivers/trace/README b/src/gallium/drivers/trace/README index f0e1cd596d3..cacd2e17498 100644 --- a/src/gallium/drivers/trace/README +++ b/src/gallium/drivers/trace/README @@ -3,62 +3,53 @@ = About = -This directory contains a Gallium3D pipe driver which traces all incoming calls. +This directory contains a Gallium3D trace debugger pipe driver. +It can traces all incoming calls. -= Build Instructions = += Usage = -To build, invoke scons on the top dir as - - scons statetrackers=mesa drivers=softpipe,i965simple,trace winsys=xlib +== Tracing == +For tracing then do -= Usage = + GALLIUM_TRACE=tri.trace trivial/tri -To use do +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. - ln -s libGL.so build/linux-x86-debug/gallium/winsys/xlib/libGL.so.1 - export LD_LIBRARY_PATH=$PWD/build/linux-x86-debug/gallium/winsys/xlib +For long traces you can use the -ensure the right libGL.so is being picked by doing + src/gallium/tools/trace/dump.py tri.trace | less -R - ldd progs/trivial/tri -and then try running +== Remote debugging == - GALLIUM_TRACE=tri.trace progs/trivial/tri +For remote debugging see: -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. + src/gallium/drivers/rbug/README = 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): +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(...); - real_context = real_context_create(...); - -The trace screen and pipe_context is then created by doing +The trace screen 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 then simply use trace_screen instead of real_screen. -You can create as many contexts you wish. Just ensure that you don't mistake -trace_screen with real_screen when creating them. +You can create as many contexts you wish from trace_screen::context_create they +are automatically wrapped by trace_screen. -- -Jose Fonseca +Jose Fonseca +Jakob Bornecrantz