[Mesa-dev] [PATCH 12/20] i965: Add invalidate_cfg parameter to invalidate_live_intervals().

Matt Turner mattst88 at gmail.com
Thu Jul 24 19:54:19 PDT 2014


Will let us avoid invalidating the CFG if the optimization pass has
removed instructions using the new basic block methods.
---
 src/mesa/drivers/dri/i965/brw_fs.h                    | 2 +-
 src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp   | 5 +++--
 src/mesa/drivers/dri/i965/brw_shader.h                | 2 +-
 src/mesa/drivers/dri/i965/brw_vec4.h                  | 2 +-
 src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp | 5 +++--
 5 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h
index 009a6d5..6fe23d2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -329,7 +329,7 @@ public:
    void move_uniform_array_access_to_pull_constants();
    void assign_constant_locations();
    void demote_pull_constants();
-   void invalidate_live_intervals();
+   void invalidate_live_intervals(bool invalidate_cfg = true);
    void calculate_live_intervals();
    void calculate_register_pressure();
    bool opt_algebraic();
diff --git a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
index 4b23405..88b4d39 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
@@ -289,12 +289,13 @@ fs_live_variables::~fs_live_variables()
 }
 
 void
-fs_visitor::invalidate_live_intervals()
+fs_visitor::invalidate_live_intervals(bool __invalidate_cfg)
 {
    ralloc_free(live_intervals);
    live_intervals = NULL;
 
-   invalidate_cfg();
+   if (__invalidate_cfg)
+      invalidate_cfg();
 }
 
 /**
diff --git a/src/mesa/drivers/dri/i965/brw_shader.h b/src/mesa/drivers/dri/i965/brw_shader.h
index d174d5c..cbb3b17 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.h
+++ b/src/mesa/drivers/dri/i965/brw_shader.h
@@ -184,7 +184,7 @@ public:
 
    void assign_common_binding_table_offsets(uint32_t next_binding_table_offset);
 
-   virtual void invalidate_live_intervals() = 0;
+   virtual void invalidate_live_intervals(bool invalidate_cfg = true) = 0;
 };
 
 uint32_t brw_texture_offset(struct gl_context *ctx, ir_constant *offset);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.h b/src/mesa/drivers/dri/i965/brw_vec4.h
index 7be27a0..c8b80f1 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -379,7 +379,7 @@ public:
    void split_uniform_registers();
    void pack_uniform_registers();
    void calculate_live_intervals();
-   void invalidate_live_intervals();
+   void invalidate_live_intervals(bool invalidate_cfg = true);
    void split_virtual_grfs();
    bool dead_code_eliminate();
    bool virtual_grf_interferes(int a, int b);
diff --git a/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp b/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
index 265b064..c8a0c90 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
@@ -267,11 +267,12 @@ vec4_visitor::calculate_live_intervals()
 }
 
 void
-vec4_visitor::invalidate_live_intervals()
+vec4_visitor::invalidate_live_intervals(bool __invalidate_cfg)
 {
    live_intervals_valid = false;
 
-   invalidate_cfg();
+   if (__invalidate_cfg)
+      invalidate_cfg();
 }
 
 bool
-- 
1.8.5.5



More information about the mesa-dev mailing list