[Mesa-dev] [PATCH 5/9] glsl: change IR to add UBO information

Vincent Lejeune vljn at ovi.com
Thu Dec 1 07:35:34 PST 2011


---
 src/glsl/ir.cpp            |    1 +
 src/glsl/ir.h              |    6 ++++++
 src/glsl/ir_clone.cpp      |    1 +
 src/glsl/opt_dead_code.cpp |    6 ++++++
 4 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/src/glsl/ir.cpp b/src/glsl/ir.cpp
index a5eca5a..bf11e4f 100644
--- a/src/glsl/ir.cpp
+++ b/src/glsl/ir.cpp
@@ -1335,6 +1335,7 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name,
    this->pixel_center_integer = false;
    this->depth_layout = ir_depth_layout_none;
    this->used = false;
+   this->is_ubo_variable = false;
 
    if (type && type->base_type == GLSL_TYPE_SAMPLER)
       this->read_only = true;
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 1faae3c..dc77dec 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -398,6 +398,12 @@ public:
    int location;
 
    /**
+    * True if the variable is defined in the scope of a shader range Uniform
+    * Buffer Object.
+    */
+   bool is_ubo_variable;
+
+   /**
     * Built-in state that backs this uniform
     *
     * Once set at variable creation, \c state_slots must remain invariant.
diff --git a/src/glsl/ir_clone.cpp b/src/glsl/ir_clone.cpp
index c63615c..479f258 100644
--- a/src/glsl/ir_clone.cpp
+++ b/src/glsl/ir_clone.cpp
@@ -52,6 +52,7 @@ ir_variable::clone(void *mem_ctx, struct hash_table *ht) const
    var->explicit_location = this->explicit_location;
    var->has_initializer = this->has_initializer;
    var->depth_layout = this->depth_layout;
+   var->is_ubo_variable = this->is_ubo_variable;
 
    var->num_state_slots = this->num_state_slots;
    if (this->state_slots) {
diff --git a/src/glsl/opt_dead_code.cpp b/src/glsl/opt_dead_code.cpp
index 5b9546a..58ff534 100644
--- a/src/glsl/opt_dead_code.cpp
+++ b/src/glsl/opt_dead_code.cpp
@@ -27,6 +27,7 @@
  * Eliminates dead assignments and variable declarations from the code.
  */
 
+#include "../mesa/main/mtypes.h"
 #include "ir.h"
 #include "ir_visitor.h"
 #include "ir_variable_refcount.h"
@@ -100,6 +101,11 @@ do_dead_code(exec_list *instructions, bool uniform_locations_assigned)
 	 if (entry->var->mode == ir_var_uniform &&
 	     (uniform_locations_assigned || entry->var->constant_value))
 	    continue;
+       /*if(entry->var->mode == ir_var_uniform && entry->var->UBO) {
+          if(entry->var->UBO->UBO->Layout != packed)
+            continue;
+       }*/
+
 
 	 entry->var->remove();
 	 progress = true;
-- 
1.7.7



More information about the mesa-dev mailing list