[Mesa-dev] [PATCH v2 1/1] i965: Do not overwrite optimizer dumps

Juan A. Suarez Romero jasuarez at igalia.com
Thu Nov 26 06:02:34 PST 2015


When using INTEL_DEBUG=optimizer, each optimizing step is dump to disk,
in a separate file.

But as fs_visitor::optimize() and vec4_visitor::run() are called more
than once, it ends up overwriting the files already on disk, loosing
then previous optimizer steps.

To avoid this, add a new static variable that tracks the global
iteration across the entire life of the program running.

v2: use atomic_inc() for the static variable (Jason).

Signed-off-by: Juan A. Suarez Romero <jasuarez at igalia.com>
---
 src/mesa/drivers/dri/i965/brw_fs.cpp   | 15 +++++++++++----
 src/mesa/drivers/dri/i965/brw_vec4.cpp | 13 +++++++++----
 2 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 7904f4d..72ee5cc 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -39,6 +39,7 @@
 #include "brw_program.h"
 #include "brw_dead_control_flow.h"
 #include "glsl/nir/glsl_types.h"
+#include "util/u_atomic.h"
 
 using namespace brw;
 
@@ -4948,6 +4949,9 @@ fs_visitor::calculate_register_pressure()
 void
 fs_visitor::optimize()
 {
+   static int global_iteration_atomic = 0;
+   int global_iteration;
+
    /* Start by validating the shader we currently have. */
    validate();
 
@@ -4978,8 +4982,9 @@ fs_visitor::optimize()
                                                                         \
       if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER) && this_progress) {   \
          char filename[64];                                             \
-         snprintf(filename, 64, "%s%d-%s-%02d-%02d-" #pass,              \
-                  stage_abbrev, dispatch_width, nir->info.name, iteration, pass_num); \
+         snprintf(filename, 64, "%s%d-%s-%02d-%02d-%02d-" #pass,        \
+                  stage_abbrev, dispatch_width, nir->info.name,         \
+                  global_iteration, iteration, pass_num);               \
                                                                         \
          backend_shader::dump_instructions(filename);                   \
       }                                                                 \
@@ -4990,10 +4995,12 @@ fs_visitor::optimize()
       this_progress;                                                    \
    })
 
+   global_iteration = p_atomic_inc_return(&global_iteration_atomic);
+
    if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER)) {
       char filename[64];
-      snprintf(filename, 64, "%s%d-%s-00-start",
-               stage_abbrev, dispatch_width, nir->info.name);
+      snprintf(filename, 64, "%s%d-%s-%02d-00-00-start",
+               stage_abbrev, dispatch_width, nir->info.name, global_iteration);
 
       backend_shader::dump_instructions(filename);
    }
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
index 9a79d67..dd44b32 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
@@ -29,6 +29,7 @@
 #include "brw_vec4_live_variables.h"
 #include "brw_dead_control_flow.h"
 #include "program/prog_parameter.h"
+#include "util/u_atomic.h"
 
 #define MAX_INSTRUCTION (1 << 30)
 
@@ -1779,6 +1780,9 @@ vec4_visitor::convert_to_hw_regs()
 bool
 vec4_visitor::run()
 {
+   static int global_iteration_atomic = 0;
+   int global_iteration;
+
    if (shader_time_index >= 0)
       emit_shader_time_begin();
 
@@ -1812,8 +1816,8 @@ vec4_visitor::run()
                                                                        \
       if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER) && this_progress) {  \
          char filename[64];                                            \
-         snprintf(filename, 64, "%s-%s-%02d-%02d-" #pass,              \
-                  stage_abbrev, nir->info.name, iteration, pass_num);  \
+         snprintf(filename, 64, "%s-%s-%02d-%02d-%02d-" #pass,         \
+                  stage_abbrev, nir->info.name, global_iteration, iteration, pass_num); \
                                                                        \
          backend_shader::dump_instructions(filename);                  \
       }                                                                \
@@ -1822,11 +1826,12 @@ vec4_visitor::run()
       this_progress;                                                   \
    })
 
+   global_iteration = p_atomic_inc_return(&global_iteration_atomic);
 
    if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER)) {
       char filename[64];
-      snprintf(filename, 64, "%s-%s-00-start",
-               stage_abbrev, nir->info.name);
+      snprintf(filename, 64, "%s-%s-%02d-00-00-start",
+               stage_abbrev, nir->info.name, global_iteration);
 
       backend_shader::dump_instructions(filename);
    }
-- 
2.5.0



More information about the mesa-dev mailing list