From 8eeca7a56cf1ef47b6f86cc5a0397a532a7c2932 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 14 Jul 2014 15:48:37 -0700 Subject: [PATCH] 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 Reviewed-by: Kenneth Graunke --- src/glsl/ir.h | 14 +++++++++----- 1 file 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 @@ -688,6 +688,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. * @@ -721,11 +730,6 @@ public: */ unsigned stream; - /** - * output index for dual source blending. - */ - int index; - /** * Initial binding point for a sampler, atomic, or UBO. * -- 2.30.2