diff options
author | Tapani Pälli <tapani.palli@intel.com> | 2015-06-11 10:41:52 +0300 |
---|---|---|
committer | Emil Velikov <emil.l.velikov@gmail.com> | 2015-07-08 13:29:36 +0100 |
commit | 16d35dbd56b8d4687981c0dda0eeab2de8b0dc4a (patch) | |
tree | 7686de06d493cfa38142a6e7ee204e4ef07154ee /src | |
parent | e77d8eb4b67db51d2b31159189edbcf74022bf78 (diff) |
glsl: clone inputs and outputs during linking
This increases memory pressure during linking but makes it easier
for backend to free IR after it is not needed anymore.
v2: use resource list as ralloc context in case of relink (Kenneth)
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Cc: mesa-stable@lists.freedesktop.org
(cherry picked from commit c2ff3485b3d48749ea9dcad07bc1a691627dc3e5)
Diffstat (limited to 'src')
-rw-r--r-- | src/glsl/linker.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 2aa9f05a3f0..cbe7d205839 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -2630,7 +2630,9 @@ add_interface_variables(struct gl_shader_program *shProg, continue; }; - if (!add_program_resource(shProg, programInterface, var, + /* Clone ir_variable data so that backend is able to free memory. */ + if (!add_program_resource(shProg, programInterface, + var->clone(shProg->ProgramResourceList, NULL), build_stageref(shProg, var->name) | mask)) return false; } |