From ef14f0d59f24ab506b50d7612368381df51d515c Mon Sep 17 00:00:00 2001 From: Frank Henigman Date: Tue, 1 Oct 2013 15:15:43 -0400 Subject: [PATCH] draw: Delete unneeded LLVM stuff earlier. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Free up unneeded LLVM stuff immediately after generating vertex shader code. Saves about 500K per shader. v2: Don't bother calling gallivm_free_function (Jose) Signed-off-by: José Fonseca Reviewed-by: Roland Scheidegger --- src/gallium/auxiliary/draw/draw_llvm.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 6a3e5b239dc..7ecc34062b0 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -555,6 +555,8 @@ draw_llvm_create_variant(struct draw_llvm *llvm, variant->jit_func_elts = (draw_jit_vert_func_elts) gallivm_jit_function(variant->gallivm, variant->function_elts); + gallivm_free_ir(variant->gallivm); + variant->shader = shader; variant->list_item_global.base = variant; variant->list_item_local.base = variant; @@ -1960,16 +1962,6 @@ draw_llvm_destroy_variant(struct draw_llvm_variant *variant) { struct draw_llvm *llvm = variant->llvm; - if (variant->function_elts) { - gallivm_free_function(variant->gallivm, - variant->function_elts, variant->jit_func_elts); - } - - if (variant->function) { - gallivm_free_function(variant->gallivm, - variant->function, variant->jit_func); - } - gallivm_destroy(variant->gallivm); remove_from_list(&variant->list_item_local); @@ -2206,6 +2198,8 @@ draw_gs_llvm_create_variant(struct draw_llvm *llvm, variant->jit_func = (draw_gs_jit_func) gallivm_jit_function(variant->gallivm, variant->function); + gallivm_free_ir(variant->gallivm); + variant->list_item_global.base = variant; variant->list_item_local.base = variant; /*variant->no = */shader->variants_created++; @@ -2219,11 +2213,6 @@ draw_gs_llvm_destroy_variant(struct draw_gs_llvm_variant *variant) { struct draw_llvm *llvm = variant->llvm; - if (variant->function) { - gallivm_free_function(variant->gallivm, - variant->function, variant->jit_func); - } - gallivm_destroy(variant->gallivm); remove_from_list(&variant->list_item_local); -- 2.30.2