glsl: Use bit-flags image attributes and uint16_t for the image format
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 14 Jul 2014 22:48:38 +0000 (15:48 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 30 Aug 2014 06:29:19 +0000 (23:29 -0700)
commit932b0ef1ceecf873213447a8778e5cbe1b3b6be7
treee0925b8001889ad75902abe9c5d2d740b8883b5d
parent8eeca7a56cf1ef47b6f86cc5a0397a532a7c2932
glsl: Use bit-flags image attributes and uint16_t for the image format

All of the GL image enums fit in 16-bits.

Also move the fields from the anonymous "image" structucture to the next
higher structure.  This will enable packing the bits with the other
bitfield.

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): 76 40,572,916,873       68,831,248       63,328,783     5,502,465            0
After  (32-bit): 70 40,577,421,777       68,487,584       62,973,695     5,513,889            0

Before (64-bit): 60 36,822,640,058       96,526,824       88,735,296     7,791,528            0
After  (64-bit): 74 37,124,603,758       95,891,808       88,466,712     7,425,096            0

A real savings of 346KiB on 32-bit and 262KiB on 64-bit.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/glsl/ast_function.cpp
src/glsl/ast_to_hir.cpp
src/glsl/builtin_functions.cpp
src/glsl/ir.cpp
src/glsl/ir.h
src/glsl/link_uniforms.cpp