Mesa (master): i965: Add invalidate_cfg parameter to invalidate_live_intervals().

Matt Turner mattst88 at kemper.freedesktop.org
Fri Aug 22 17:20:38 UTC 2014


Module: Mesa
Branch: master
Commit: e0aa45768c6bda947b645ae6962054673937a55f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e0aa45768c6bda947b645ae6962054673937a55f

Author: Matt Turner <mattst88 at gmail.com>
Date:   Sat Jul 12 17:49:32 2014 -0700

i965: Add invalidate_cfg parameter to invalidate_live_intervals().

Will let us avoid invalidating the CFG if the optimization pass has
removed instructions using the new basic block methods.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>

---

 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 d0422c3d..e42b93a 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_fs.h
@@ -328,7 +328,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 c964505..e7ecb0f 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
@@ -290,12 +290,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 35a2b96..342cdb3 100644
--- a/src/mesa/drivers/dri/i965/brw_shader.h
+++ b/src/mesa/drivers/dri/i965/brw_shader.h
@@ -182,7 +182,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 f0239cb..f8313c1 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4.h
+++ b/src/mesa/drivers/dri/i965/brw_vec4.h
@@ -378,7 +378,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 opt_reduce_swizzle();
    bool dead_code_eliminate();
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 5bc5d77..7cd1dd6 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_live_variables.cpp
@@ -268,11 +268,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




More information about the mesa-commit mailing list