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