glsl: Don't allocate a name for ir_var_temporary variables

Valgrind massif results for a trimmed apitrace of dota2:

                  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
Before (32-bit): 74 40,578,719,715       67,762,208       62,263,404     5,498,804            0
After  (32-bit): 52 40,565,579,466       66,359,800       61,187,818     5,171,982            0

Before (64-bit): 74 37,129,541,061       95,195,160       87,369,671     7,825,489            0
After  (64-bit): 76 37,134,691,404       93,271,352       85,900,223     7,371,129            0

A real savings of 1.0MiB on 32-bit and 1.4MiB on 64-bit.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:
Ian Romanick
2014-07-08 19:03:52 -07:00
parent eaa0c74142
commit c87d09d7f0
4 changed files with 28 additions and 0 deletions

View File

@@ -896,6 +896,25 @@ private:
* Name used for anonymous compiler temporaries
*/
static const char tmp_name[];
public:
/**
* Should the construct keep names for ir_var_temporary variables?
*
* When this global is false, names passed to the constructor for
* \c ir_var_temporary variables will be dropped. Instead, the variable will
* be named "compiler_temp". This name will be in static storage.
*
* \warning
* \b NEVER change the mode of an \c ir_var_temporary.
*
* \warning
* This variable is \b not thread-safe. It is global, \b not
* per-context. It begins life false. A context can, at some point, make
* it true. From that point on, it will be true forever. This should be
* okay since it will only be set true while debugging.
*/
static bool temporaries_allocate_names;
};
/**