draw: Init llvm if not provided
This commit is contained in:
@@ -88,8 +88,14 @@ draw_create_gallivm(struct pipe_context *pipe, struct gallivm_state *gallivm)
|
||||
goto fail;
|
||||
|
||||
#if HAVE_LLVM
|
||||
if (draw_get_option_use_llvm() && gallivm) {
|
||||
draw->llvm = draw_llvm_create(draw, gallivm);
|
||||
if (draw_get_option_use_llvm()) {
|
||||
if (!gallivm) {
|
||||
gallivm = gallivm_create();
|
||||
draw->own_gallivm = gallivm;
|
||||
}
|
||||
|
||||
if (gallivm)
|
||||
draw->llvm = draw_llvm_create(draw, gallivm);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -180,8 +186,11 @@ void draw_destroy( struct draw_context *draw )
|
||||
draw_vs_destroy( draw );
|
||||
draw_gs_destroy( draw );
|
||||
#ifdef HAVE_LLVM
|
||||
if(draw->llvm)
|
||||
if (draw->llvm)
|
||||
draw_llvm_destroy( draw->llvm );
|
||||
|
||||
if (draw->own_gallivm)
|
||||
gallivm_destroy(draw->own_gallivm);
|
||||
#endif
|
||||
|
||||
FREE( draw );
|
||||
|
||||
@@ -286,6 +286,7 @@ struct draw_context
|
||||
|
||||
#ifdef HAVE_LLVM
|
||||
struct draw_llvm *llvm;
|
||||
struct gallivm_state *own_gallivm;
|
||||
#endif
|
||||
|
||||
struct pipe_sampler_view *sampler_views[PIPE_MAX_VERTEX_SAMPLERS];
|
||||
|
||||
@@ -222,11 +222,12 @@ free_gallivm_state(struct gallivm_state *gallivm)
|
||||
static boolean
|
||||
init_gallivm_state(struct gallivm_state *gallivm)
|
||||
{
|
||||
assert(gallivm_initialized);
|
||||
assert(!gallivm->context);
|
||||
assert(!gallivm->module);
|
||||
assert(!gallivm->provider);
|
||||
|
||||
lp_build_init();
|
||||
|
||||
gallivm->context = LLVMContextCreate();
|
||||
if (!gallivm->context)
|
||||
goto fail;
|
||||
@@ -387,6 +388,9 @@ gallivm_garbage_collect(struct gallivm_state *gallivm)
|
||||
void
|
||||
lp_build_init(void)
|
||||
{
|
||||
if (gallivm_initialized)
|
||||
return;
|
||||
|
||||
#ifdef DEBUG
|
||||
gallivm_debug = debug_get_option_gallivm_debug();
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user