summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir.h
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2014-05-14 13:25:14 -0700
committerIan Romanick <[email protected]>2014-09-30 13:34:41 -0700
commitab51179f1fe8f365cc5357f498e4ce690c28bd3a (patch)
treeca8f1936c61ae7698c721ae3ed64aa51bd75bef6 /src/glsl/ir.h
parentbaf5a756640fde8cd4d4e704ed8c9c45da3e5407 (diff)
glsl: Replace ir_variable::warn_extension pointer with an 8-bit index
Also move the new warn_extension_index into ir_variable::data. This enables slightly better packing. 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): 82 40,580,040,531 68,488,992 62,973,695 5,515,297 0 After (32-bit): 73 40,580,476,304 68,488,400 62,796,151 5,692,249 0 Before (64-bit): 65 37,124,013,542 95,892,768 88,466,712 7,426,056 0 After (64-bit): 71 37,124,890,613 95,889,584 88,089,008 7,800,576 0 A real savings of 173KiB on 32-bit and 368KiB on 64-bit. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Matt Turner <[email protected]> Reviewed-by: Tapani Pälli <[email protected]>
Diffstat (limited to 'src/glsl/ir.h')
-rw-r--r--src/glsl/ir.h18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 3537ecfd9ac..67150ce6cd8 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -723,6 +723,13 @@ public:
uint16_t image_format;
/**
+ * Emit a warning if this variable is accessed.
+ */
+ private:
+ uint8_t warn_extension_index;
+
+ public:
+ /**
* \brief Layout qualifier for gl_FragDepth.
*
* This is not equal to \c ir_depth_layout_none if and only if this
@@ -776,6 +783,10 @@ public:
*/
unsigned max_array_access;
+ /**
+ * Allow (only) ir_variable direct access private members.
+ */
+ friend class ir_variable;
} data;
/**
@@ -810,6 +821,8 @@ public:
ir_constant *constant_initializer;
private:
+ static const char *const warn_extension_table[];
+
/**
* For variables that are in an interface block or are an instance of an
* interface block, this is the \c GLSL_TYPE_INTERFACE type for that block.
@@ -817,11 +830,6 @@ private:
* \sa ir_variable::location
*/
const glsl_type *interface_type;
-
- /**
- * Emit a warning if this variable is accessed.
- */
- const char *warn_extension;
};
/**