[Mesa-dev] [PATCH 4/5] i965/fs: Debug the optimization passes by dumping instr to file.

Kenneth Graunke kenneth at whitecape.org
Sat May 31 17:33:15 PDT 2014


On Friday, May 30, 2014 07:35:22 PM Matt Turner wrote:
> With INTEL_DEBUG=optimizer, write the output of dump_instructions() to a
> file each time an optimization pass makes progress. This lets you easily
> diff successive files to see what an optimization pass did.
> 
> Example filenames written when running glxgears:
>    fs8-00-00-start
>    fs8-00-01-04-opt_copy_propagate
>    fs8-00-01-06-dead_code_eliminate
>    fs8-00-01-12-compute_to_mrf
>    fs8-00-02-06-dead_code_eliminate
>        |   |  |   |
>        |   |  |   `-- optimization pass name
>        |   |  |
>        |   |  `-- optimization pass number in the loop
>        |   |
>        |   `-- optimization loop interation
>        |
>        `-- shader program number
> 
> Note that with INTEL_DEBUG=optimizer, we disable compact_virtual_grfs,
> so that we can diff instruction lists across loop interations without
> the register numbers being changes.
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp | 53 ++++++++++++++++++++++++++++--------
>  1 file changed, 41 insertions(+), 12 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index c9b31fe..0d56ac7 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -1714,6 +1714,9 @@ fs_visitor::split_virtual_grfs()
>  void
>  fs_visitor::compact_virtual_grfs()
>  {
> +   if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER))
> +      return;
> +
>     /* Mark which virtual GRFs are used, and count how many. */
>     int remap_table[this->virtual_grf_count];
>     memset(remap_table, -1, sizeof(remap_table));
> @@ -3020,24 +3023,50 @@ fs_visitor::run()
>  
>        opt_drop_redundant_mov_to_flags();
>  
> +#define OPT(pass, args...) do {                                            \
> +      pass_num++;                                                          \
> +      bool this_progress = pass(args);                                     \
> +                                                                           \
> +      if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER) && this_progress) {      \
> +         char filename[64];                                                \
> +         snprintf(filename, 64, "fs%d-%02d-%02d-%02d-" #pass,              \

One thought...could we widen the shader number to:
"fs%d-%04d-%02d-%02-d"
Some programs have a lot of shaders (though admittedly you're probably not
using INTEL_DEBUG=optimizer on a whole game).

Either way's fine.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20140531/fbeea2bd/attachment.sig>


More information about the mesa-dev mailing list