summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/draw/draw_llvm.c
diff options
context:
space:
mode:
authorFrank Henigman <[email protected]>2013-10-01 15:15:43 -0400
committerJosé Fonseca <[email protected]>2014-05-14 11:05:00 +0100
commitef14f0d59f24ab506b50d7612368381df51d515c (patch)
treef97b5556d104e1ffe45d24c58296b8ca5682d88e /src/gallium/auxiliary/draw/draw_llvm.c
parent865d0312c0dd7411ce813206cef3c399d6641241 (diff)
draw: Delete unneeded LLVM stuff earlier.
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 <[email protected]> Reviewed-by: Roland Scheidegger <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_llvm.c')
-rw-r--r--src/gallium/auxiliary/draw/draw_llvm.c19
1 files 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);