mesa: Dynamically allocate the storage for program local parameters.
authorEric Anholt <eric@anholt.net>
Fri, 20 Sep 2013 17:13:32 +0000 (10:13 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 15 Nov 2013 19:35:01 +0000 (11:35 -0800)
commite5885c119de1e508099cc1111e1c9f8ff00fab88
tree77232f7a5789900eb180e23fe0f2c1988a70a8f3
parentbb1f0969756fbb827c4b2520c632daa15342b064
mesa: Dynamically allocate the storage for program local parameters.

The array was 64kb per struct gl_program, plus we statically stored a copy
of one on disk for _mesa_DummyProgram.  Given that most struct gl_programs
we generate are for GLSL shaders that don't have local parameters, this
was a waste.

Since you can store and fetch parameters beyond what the program actually
uses, we do have to do a late allocation if necessary at
GetProgramLocalParameter time.

Reduces peak memory usage in the dota2 trace I made by 76MB (4.5%)

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/main/arbprogram.c
src/mesa/main/mtypes.h
src/mesa/program/program.c
src/mesa/program/program_parse.y