summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/radeon/radeon_llvm_util.h
diff options
context:
space:
mode:
authorAaron Watry <awatry@gmail.com>2013-12-12 16:34:09 -0600
committerAaron Watry <awatry@gmail.com>2013-12-23 07:24:50 -0600
commit8c9a9205d96b5ac0718218bfa952a5b4b6ad939c (patch)
tree089a1cf74b6d22561955441e93a6dfc38f374d60 /src/gallium/drivers/radeon/radeon_llvm_util.h
parenta7653c19a3b1adae162864587a7ab1c17ab256e6 (diff)
radeon/compute: Stop leaking LLVMContexts in radeon_llvm_parse_bitcode
Previously we were creating a new LLVMContext every time that we called radeon_llvm_parse_bitcode, which caused us to leak the context every time that we compiled a CL program. Sadly, we can't dispose of the LLVMContext at the point that it was being created because evergreen_launch_grid (and possibly the SI equivalent) was assuming that the context used to compile the kernels was still available. Now, we'll create a new LLVMContext when creating EG/SI compute state, store it there, and pass it to all of the places that need it. The LLVM Context gets destroyed when we delete the EG/SI compute state. Reviewed-by: Tom Stellard <thomas.stellard@amd.com> CC: "10.0" <mesa-stable@lists.freedesktop.org>
Diffstat (limited to 'src/gallium/drivers/radeon/radeon_llvm_util.h')
-rw-r--r--src/gallium/drivers/radeon/radeon_llvm_util.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/drivers/radeon/radeon_llvm_util.h b/src/gallium/drivers/radeon/radeon_llvm_util.h
index b85164885dd..733c329e99e 100644
--- a/src/gallium/drivers/radeon/radeon_llvm_util.h
+++ b/src/gallium/drivers/radeon/radeon_llvm_util.h
@@ -29,10 +29,11 @@
#include <llvm-c/Core.h>
-LLVMModuleRef radeon_llvm_parse_bitcode(const unsigned char * bitcode,
- unsigned bitcode_len);
-unsigned radeon_llvm_get_num_kernels(const unsigned char *bitcode, unsigned bitcode_len);
-LLVMModuleRef radeon_llvm_get_kernel_module(unsigned index,
+LLVMModuleRef radeon_llvm_parse_bitcode(LLVMContextRef ctx,
+ const unsigned char * bitcode, unsigned bitcode_len);
+unsigned radeon_llvm_get_num_kernels(LLVMContextRef ctx,
+ const unsigned char *bitcode, unsigned bitcode_len);
+LLVMModuleRef radeon_llvm_get_kernel_module(LLVMContextRef ctx, unsigned index,
const unsigned char *bitcode, unsigned bitcode_len);
#endif