summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir.h
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2014-05-27 18:45:40 -0700
committerIan Romanick <ian.d.romanick@intel.com>2014-09-30 13:34:42 -0700
commit0e654ab1b9a20671f755cbe71fe51ff6ec849459 (patch)
treebc54bb90157e86f0dbff83468d502e0bb33065e4 /src/glsl/ir.h
parenta32ac726ee8825c8352337a0489dddaffd955d4a (diff)
downloadexternal_mesa3d-0e654ab1b9a20671f755cbe71fe51ff6ec849459.zip
external_mesa3d-0e654ab1b9a20671f755cbe71fe51ff6ec849459.tar.gz
external_mesa3d-0e654ab1b9a20671f755cbe71fe51ff6ec849459.tar.bz2
glsl: Store ir_variable_data::_num_state_slots and ::binding in 16-bits each
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): 44 40,577,049,140 68,118,608 62,441,063 5,677,545 0 After (32-bit): 71 40,583,408,411 67,761,528 62,263,519 5,498,009 0 Before (64-bit): 63 37,122,829,194 95,153,008 87,333,600 7,819,408 0 After (64-bit): 67 37,123,303,706 95,150,544 87,333,600 7,816,944 0 A real savings of 173KiB on 32-bit and no change on 64-bit. Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Matt Turner <mattst88@gmail.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r--src/glsl/ir.h24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 990808f..f2186a5 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -773,10 +773,25 @@ public:
uint16_t image_format;
private:
- unsigned _num_state_slots; /**< Number of state slots used */
+ /**
+ * Number of state slots used
+ *
+ * \note
+ * This could be stored in as few as 7-bits, if necessary. If it is made
+ * smaller, add an assertion to \c ir_variable::allocate_state_slots to
+ * be safe.
+ */
+ uint16_t _num_state_slots;
public:
/**
+ * Initial binding point for a sampler, atomic, or UBO.
+ *
+ * For array types, this represents the binding point for the first element.
+ */
+ int16_t binding;
+
+ /**
* Storage location of the base of this variable
*
* The precise meaning of this field depends on the nature of the variable.
@@ -802,13 +817,6 @@ public:
unsigned stream;
/**
- * Initial binding point for a sampler, atomic, or UBO.
- *
- * For array types, this represents the binding point for the first element.
- */
- int binding;
-
- /**
* Location an atomic counter is stored at.
*/
struct {