From: Ian Romanick <ian.d.roman...@intel.com>

Reduces the peak ir_variable memory usage in a trimmed apitrace of dota2
by 66KiB on 64-bit.

Before: IR MEM: variable usage / name / total: 5746368 1208630 6954998
After:  IR MEM: variable usage / name / total: 5746368 1140817 6887185

Reduces the peak ir_variable memory usage in a trimmed apitrace of dota2
by 42KiB on 32-bit.

Before: IR MEM: variable usage / name / total: 4327584 844096 5171680
After:  IR MEM: variable usage / name / total: 4327584 800183 5127767

Signed-off-by: Ian Romanick <ian.d.roman...@intel.com>
---
 src/glsl/ir_expression_flattening.cpp                 |  2 +-
 src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp | 16 +++++++++++++---
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/glsl/ir_expression_flattening.cpp 
b/src/glsl/ir_expression_flattening.cpp
index c1cadb1..4fd4733 100644
--- a/src/glsl/ir_expression_flattening.cpp
+++ b/src/glsl/ir_expression_flattening.cpp
@@ -78,7 +78,7 @@ ir_expression_flattening_visitor::handle_rvalue(ir_rvalue 
**rvalue)
 
    void *ctx = ralloc_parent(ir);
 
-   var = new(ctx) ir_variable(ir->type, "flattening_tmp", ir_var_temporary);
+   var = new(ctx) ir_variable(ir->type, "$f", ir_var_temporary);
    base_ir->insert_before(var);
 
    assign = new(ctx) ir_assignment(new(ctx) ir_dereference_variable(var),
diff --git a/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp 
b/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp
index a9125ca..aac515b 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_vector_splitting.cpp
@@ -368,9 +368,19 @@ brw_do_vector_splitting(exec_list *instructions)
       entry->mem_ctx = ralloc_parent(entry->var);
 
       for (unsigned int i = 0; i < entry->var->type->vector_elements; i++) {
-        const char *name = ralloc_asprintf(mem_ctx, "%s_%c",
-                                           entry->var->name,
-                                           "xyzw"[i]);
+         const char *name;
+         char buf[3];
+
+         if (entry->var->name[0] == '$') {
+            buf[0] = '$';
+            buf[1] = "xyzw"[i];
+            buf[2] = '\0';
+            name = buf;
+         } else {
+            name = ralloc_asprintf(mem_ctx, "%s_%c",
+                                   entry->var->name,
+                                   "xyzw"[i]);
+         }
 
         entry->components[i] = new(entry->mem_ctx) ir_variable(type, name,
                                                                
ir_var_temporary);
-- 
1.8.1.4

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to