diff options
author | Aaron Watry <awatry@gmail.com> | 2013-12-12 16:34:09 -0600 |
---|---|---|
committer | Aaron Watry <awatry@gmail.com> | 2013-12-23 07:24:50 -0600 |
commit | 8c9a9205d96b5ac0718218bfa952a5b4b6ad939c (patch) | |
tree | 089a1cf74b6d22561955441e93a6dfc38f374d60 /src/gallium/drivers/radeon/radeon_llvm_util.h | |
parent | a7653c19a3b1adae162864587a7ab1c17ab256e6 (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.h | 9 |
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 |