summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Romanick <[email protected]>2014-07-14 15:48:37 -0700
committerKenneth Graunke <[email protected]>2014-08-29 23:28:26 -0700
commit8eeca7a56cf1ef47b6f86cc5a0397a532a7c2932 (patch)
tree8e863952cb68d909c1491a82b24da8e6857feb2b
parentc0cd5bedf66887e958e140c047afc5bc26160000 (diff)
glsl: Use a single bit for the dual-source blend index
The only values allowed are 0 and 1, and the value is checked before assigning. 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,580,119,657 69,186,544 63,506,327 5,680,217 0 After (32-bit): 76 40,572,916,873 68,831,248 63,328,783 5,502,465 0 Before (64-bit): 89 36,822,971,897 96,526,616 88,735,296 7,791,320 0 After (64-bit): 60 36,822,640,058 96,526,824 88,735,296 7,791,528 0 A real savings of 173KiB on 32-bit and no change on 64-bit. Signed-off-by: Ian Romanick <[email protected]> Reviewed-by: Kenneth Graunke <[email protected]>
-rw-r--r--src/glsl/ir.h14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/glsl/ir.h b/src/glsl/ir.h
index 535693d9273..5032c2610fa 100644
--- a/src/glsl/ir.h
+++ b/src/glsl/ir.h
@@ -689,6 +689,15 @@ public:
unsigned must_be_shader_input:1;
/**
+ * Output index for dual source blending.
+ *
+ * \note
+ * The GLSL spec only allows the values 0 or 1 for the index in \b dual
+ * source blending.
+ */
+ unsigned index:1;
+
+ /**
* \brief Layout qualifier for gl_FragDepth.
*
* This is not equal to \c ir_depth_layout_none if and only if this
@@ -722,11 +731,6 @@ public:
unsigned stream;
/**
- * output index for dual source blending.
- */
- int index;
-
- /**
* Initial binding point for a sampler, atomic, or UBO.
*
* For array types, this represents the binding point for the first element.