[Mesa-dev] [PATCH 3/3] draw/llvm: delete unneeded LLVM stuff earlier

Frank Henigman fjhenigman at google.com
Fri Jun 14 12:08:20 PDT 2013


Free up unneeded LLVM stuff immediately after generating vertex shader
code.  Saves about 500K per shader.
---
 src/gallium/auxiliary/draw/draw_llvm.c | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 6733e08..823a1ce 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -593,6 +593,14 @@ 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_function(variant->gallivm,
+                         variant->function, variant->jit_func);
+
+   gallivm_free_function(variant->gallivm,
+                         variant->function_elts, variant->jit_func_elts);
+
+   gallivm_teardown(variant->gallivm);
+
    variant->shader = shader;
    variant->list_item_global.base = variant;
    variant->list_item_local.base = variant;
@@ -1938,17 +1946,8 @@ 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);
+   gallivm_free_code(variant->gallivm);
+   FREE(variant->gallivm);
 
    remove_from_list(&variant->list_item_local);
    variant->shader->variants_cached--;
-- 
1.8.3



More information about the mesa-dev mailing list