diff --git a/Android.mk b/Android.mk index aa2e7f7610efa..07eba7b831620 100644 --- a/Android.mk +++ b/Android.mk @@ -97,7 +97,7 @@ endif define mesa-build-with-llvm $(if $(filter $(MESA_ANDROID_MAJOR_VERSION), 4 5 6 7), \ $(warning Unsupported LLVM version in Android $(MESA_ANDROID_MAJOR_VERSION)),) \ - $(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DLLVM_IS_SHARED=1 -DMESA_LLVM_VERSION_STRING=\"3.9\") \ + $(eval LOCAL_CFLAGS += -DLLVM_AVAILABLE -DDRAW_LLVM_AVAILABLE -DLLVM_IS_SHARED=1 -DMESA_LLVM_VERSION_STRING=\"3.9\") \ $(eval LOCAL_SHARED_LIBRARIES += libLLVM) endef diff --git a/meson.build b/meson.build index d6ea2c18c377b..cd8b6e252fddf 100644 --- a/meson.build +++ b/meson.build @@ -1574,6 +1574,7 @@ endif dep_llvm = null_dep with_llvm = false +draw_with_llvm = get_option('draw-use-llvm') if _llvm != 'disabled' dep_llvm = dependency( 'llvm', @@ -1596,6 +1597,12 @@ if with_llvm pre_args += '-DMESA_LLVM_VERSION_STRING="@0@"'.format(dep_llvm.version()) pre_args += '-DLLVM_IS_SHARED=@0@'.format(_shared_llvm.to_int()) + if draw_with_llvm + pre_args += '-DDRAW_LLVM_AVAILABLE' + elif with_gallium_swr + error('SWR requires LLVM draw support.') + endif + # LLVM can be built without rtti, turning off rtti changes the ABI of C++ # programs, so we need to build all C++ code in mesa without rtti as well to # ensure that linking works. @@ -1627,6 +1634,8 @@ elif with_gallium_opencl error('The OpenCL "Clover" state tracker requires LLVM, but LLVM is disabled.') elif with_microsoft_clc error('The Microsoft CLC compiler requires LLVM, but LLVM is disabled.') +else + draw_with_llvm = false endif with_opencl_spirv = (_opencl != 'disabled' and get_option('opencl-spirv')) or with_microsoft_clc diff --git a/meson_options.txt b/meson_options.txt index 599a2b3fd898e..65f6665bfe2b2 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -321,6 +321,12 @@ option( choices : ['auto', 'true', 'false', 'enabled', 'disabled'], description : 'Whether to link LLVM shared or statically.' ) +option( + 'draw-use-llvm', + type : 'boolean', + value : 'true', + description : 'Whether to use LLVM for the Gallium draw module, if LLVM is included.' +) option( 'valgrind', type : 'combo', diff --git a/scons/llvm.py b/scons/llvm.py index 3d53125b31727..a8d2860a3beeb 100644 --- a/scons/llvm.py +++ b/scons/llvm.py @@ -341,6 +341,7 @@ def generate(env): # Define LLVM_AVAILABLE macro to guard code blocks, and MESA_LLVM_VERSION_STRING env.Prepend(CPPDEFINES = [('LLVM_AVAILABLE', 1)]) + env.Prepend(CPPDEFINES = [('DRAW_LLVM_AVAILABLE', 1)]) env.Prepend(CPPDEFINES = [('MESA_LLVM_VERSION_STRING=\\"%s\\"' % llvm_version)]) def exists(env): diff --git a/src/gallium/auxiliary/draw/draw_context.c b/src/gallium/auxiliary/draw/draw_context.c index f40085fe21ab9..8efcc001bb097 100644 --- a/src/gallium/auxiliary/draw/draw_context.c +++ b/src/gallium/auxiliary/draw/draw_context.c @@ -46,7 +46,7 @@ #include "draw_gs.h" #include "draw_tess.h" -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE #include "gallivm/lp_bld_init.h" #include "gallivm/lp_bld_limits.h" #include "draw_llvm.h" @@ -67,7 +67,7 @@ draw_get_option_use_llvm(void) bool draw_has_llvm(void) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE return draw_get_option_use_llvm(); #else return false; @@ -88,7 +88,7 @@ draw_create_context(struct pipe_context *pipe, void *context, /* we need correct cpu caps for disabling denorms in draw_vbo() */ util_cpu_detect(); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (try_llvm && draw_get_option_use_llvm()) { draw->llvm = draw_llvm_create(draw, (LLVMContextRef)context); } @@ -123,7 +123,7 @@ draw_create(struct pipe_context *pipe) } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct draw_context * draw_create_with_llvm_context(struct pipe_context *pipe, void *context) @@ -233,7 +233,7 @@ void draw_destroy( struct draw_context *draw ) draw_pt_destroy( draw ); draw_vs_destroy( draw ); draw_gs_destroy( draw ); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) draw_llvm_destroy( draw->llvm ); #endif @@ -1140,7 +1140,7 @@ draw_set_samplers(struct draw_context *draw, draw->num_samplers[shader_stage] = num; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) draw_llvm_set_sampler_state(draw, shader_stage); #endif @@ -1180,7 +1180,7 @@ draw_set_mapped_texture(struct draw_context *draw, uint32_t img_stride[PIPE_MAX_TEXTURE_LEVELS], uint32_t mip_offsets[PIPE_MAX_TEXTURE_LEVELS]) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) draw_llvm_set_mapped_texture(draw, shader_stage, @@ -1202,7 +1202,7 @@ draw_set_mapped_image(struct draw_context *draw, uint32_t num_samples, uint32_t sample_stride) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) draw_llvm_set_mapped_image(draw, shader_stage, @@ -1241,7 +1241,7 @@ int draw_get_shader_param(enum pipe_shader_type shader, enum pipe_shader_cap param) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw_get_option_use_llvm()) { switch(shader) { case PIPE_SHADER_VERTEX: diff --git a/src/gallium/auxiliary/draw/draw_context.h b/src/gallium/auxiliary/draw/draw_context.h index 242ffb20650f1..1ea9c49fcf3eb 100644 --- a/src/gallium/auxiliary/draw/draw_context.h +++ b/src/gallium/auxiliary/draw/draw_context.h @@ -69,7 +69,7 @@ bool draw_has_llvm(void); struct draw_context *draw_create( struct pipe_context *pipe ); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct draw_context *draw_create_with_llvm_context(struct pipe_context *pipe, void *context); #endif diff --git a/src/gallium/auxiliary/draw/draw_gs.c b/src/gallium/auxiliary/draw/draw_gs.c index 940e3b1d4b600..4288ce2f7852e 100644 --- a/src/gallium/auxiliary/draw/draw_gs.c +++ b/src/gallium/auxiliary/draw/draw_gs.c @@ -29,7 +29,7 @@ #include "draw_private.h" #include "draw_context.h" -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE #include "draw_llvm.h" #endif @@ -222,7 +222,7 @@ static void tgsi_gs_run(struct draw_geometry_shader *shader, out_prims[i] = machine->OutputPrimCount[i]; } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE static void llvm_fetch_gs_input(struct draw_geometry_shader *shader, @@ -622,7 +622,7 @@ int draw_geometry_shader_run(struct draw_geometry_shader *shader, shader->input = input; shader->input_info = input_info; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (shader->draw->llvm) { for (i = 0; i < shader->num_vertex_streams; i++) { shader->gs_output[i] = output_verts[i].verts; @@ -753,14 +753,14 @@ struct draw_geometry_shader * draw_create_geometry_shader(struct draw_context *draw, const struct pipe_shader_state *state) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE boolean use_llvm = draw->llvm != NULL; struct llvm_geometry_shader *llvm_gs = NULL; #endif struct draw_geometry_shader *gs; unsigned i; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (use_llvm) { llvm_gs = CALLOC_STRUCT(llvm_geometry_shader); @@ -796,7 +796,7 @@ draw_create_geometry_shader(struct draw_context *draw, /* setup the defaults */ gs->max_out_prims = 0; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (use_llvm) { /* TODO: change the input array to handle the following vector length, instead of the currently hardcoded @@ -853,7 +853,7 @@ draw_create_geometry_shader(struct draw_context *draw, gs->num_vertex_streams = gs->state.stream_output.output[i].stream + 1; } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (use_llvm) { int vector_size = gs->vector_length * sizeof(float); gs->gs_input = align_malloc(sizeof(struct draw_gs_inputs), 16); @@ -913,7 +913,7 @@ void draw_delete_geometry_shader(struct draw_context *draw, if (!dgs) { return; } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) { struct llvm_geometry_shader *shader = llvm_geometry_shader(dgs); struct draw_gs_llvm_variant_list_item *li; @@ -955,7 +955,7 @@ void draw_delete_geometry_shader(struct draw_context *draw, } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE void draw_gs_set_current_variant(struct draw_geometry_shader *shader, struct draw_gs_llvm_variant *variant) { diff --git a/src/gallium/auxiliary/draw/draw_gs.h b/src/gallium/auxiliary/draw/draw_gs.h index 0078f909c3af4..9449ec5094efa 100644 --- a/src/gallium/auxiliary/draw/draw_gs.h +++ b/src/gallium/auxiliary/draw/draw_gs.h @@ -36,7 +36,7 @@ struct draw_context; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct draw_gs_jit_context; struct draw_gs_llvm_variant; @@ -96,7 +96,7 @@ struct draw_geometry_shader { unsigned num_invocations; unsigned invocation_id; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct draw_gs_inputs *gs_input; struct draw_gs_jit_context *jit_context; struct draw_gs_llvm_variant *current_variant; @@ -146,7 +146,7 @@ void draw_geometry_shader_prepare(struct draw_geometry_shader *shader, int draw_gs_max_output_vertices(struct draw_geometry_shader *shader, unsigned pipe_prim); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE void draw_gs_set_current_variant(struct draw_geometry_shader *shader, struct draw_gs_llvm_variant *variant); #endif diff --git a/src/gallium/auxiliary/draw/draw_pipe_aaline.c b/src/gallium/auxiliary/draw/draw_pipe_aaline.c index e559d7f2adc75..8ba95a033bf51 100644 --- a/src/gallium/auxiliary/draw/draw_pipe_aaline.c +++ b/src/gallium/auxiliary/draw/draw_pipe_aaline.c @@ -318,7 +318,7 @@ generate_aaline_fs(struct aaline_stage *aaline) static boolean generate_aaline_fs_nir(struct aaline_stage *aaline) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct pipe_context *pipe = aaline->stage.draw->pipe; const struct pipe_shader_state *orig_fs = &aaline->fs->state; struct pipe_shader_state aaline_fs; @@ -644,7 +644,7 @@ aaline_create_fs_state(struct pipe_context *pipe, aafs->state.type = fs->type; if (fs->type == PIPE_SHADER_IR_TGSI) aafs->state.tokens = tgsi_dup_tokens(fs->tokens); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE else aafs->state.ir.nir = nir_shader_clone(NULL, fs->ir.nir); #endif diff --git a/src/gallium/auxiliary/draw/draw_pipe_aapoint.c b/src/gallium/auxiliary/draw/draw_pipe_aapoint.c index ada9044de251a..8b1f7281fa539 100644 --- a/src/gallium/auxiliary/draw/draw_pipe_aapoint.c +++ b/src/gallium/auxiliary/draw/draw_pipe_aapoint.c @@ -411,7 +411,7 @@ fail: static boolean generate_aapoint_fs_nir(struct aapoint_stage *aapoint) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct pipe_context *pipe = aapoint->stage.draw->pipe; const struct pipe_shader_state *orig_fs = &aapoint->fs->state; struct pipe_shader_state aapoint_fs; @@ -748,7 +748,7 @@ aapoint_create_fs_state(struct pipe_context *pipe, aafs->state.type = fs->type; if (fs->type == PIPE_SHADER_IR_TGSI) aafs->state.tokens = tgsi_dup_tokens(fs->tokens); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE else aafs->state.ir.nir = nir_shader_clone(NULL, fs->ir.nir); #endif diff --git a/src/gallium/auxiliary/draw/draw_pipe_pstipple.c b/src/gallium/auxiliary/draw/draw_pipe_pstipple.c index 64776534db1ff..65e8bc573d6a9 100644 --- a/src/gallium/auxiliary/draw/draw_pipe_pstipple.c +++ b/src/gallium/auxiliary/draw/draw_pipe_pstipple.c @@ -144,7 +144,7 @@ generate_pstip_fs(struct pstip_stage *pstip) if (pstip_fs.tokens == NULL) return FALSE; } else { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE pstip_fs.ir.nir = nir_shader_clone(NULL, orig_fs->ir.nir); nir_lower_pstipple_fs(pstip_fs.ir.nir, &pstip->fs->sampler_unit, 0, wincoord_file == TGSI_FILE_SYSTEM_VALUE); diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h index 3c02c8fe19fb5..d29fedd91f26f 100644 --- a/src/gallium/auxiliary/draw/draw_private.h +++ b/src/gallium/auxiliary/draw/draw_private.h @@ -46,7 +46,7 @@ #include "tgsi/tgsi_scan.h" -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct gallivm_state; #endif diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c index 5c536df72546d..45896ccce466a 100644 --- a/src/gallium/auxiliary/draw/draw_pt.c +++ b/src/gallium/auxiliary/draw/draw_pt.c @@ -200,7 +200,7 @@ boolean draw_pt_init( struct draw_context *draw ) if (!draw->pt.middle.general) return FALSE; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) draw->pt.middle.llvm = draw_pt_fetch_pipeline_or_emit_llvm( draw ); #endif @@ -546,7 +546,7 @@ draw_vbo(struct draw_context *draw, draw->pt.vertex_element, draw->pt.nr_vertex_elements, info); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (!draw->llvm) #endif { diff --git a/src/gallium/auxiliary/draw/draw_tess.c b/src/gallium/auxiliary/draw/draw_tess.c index a0fa3e8b51d5f..bcc81318cd4cc 100644 --- a/src/gallium/auxiliary/draw/draw_tess.c +++ b/src/gallium/auxiliary/draw/draw_tess.c @@ -23,7 +23,7 @@ * **************************************************************************/ #include "draw_tess.h" -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE #include "draw_llvm.h" #endif @@ -48,7 +48,7 @@ draw_tes_get_input_index(int semantic, int index, return -1; } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE #define DEBUG_INPUTS 0 static void llvm_fetch_tcs_input(struct draw_tess_ctrl_shader *shader, @@ -188,7 +188,7 @@ int draw_tess_ctrl_shader_run(struct draw_tess_ctrl_shader *shader, if (shader->draw->collect_statistics) { shader->draw->statistics.hs_invocations += num_patches; } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE for (unsigned i = 0; i < num_patches; i++) { uint32_t vert_start = output_verts->count; @@ -212,7 +212,7 @@ int draw_tess_ctrl_shader_run(struct draw_tess_ctrl_shader *shader, return 0; } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE #define DEBUG_INPUTS 0 static void llvm_fetch_tes_input(struct draw_tess_eval_shader *shader, @@ -350,7 +350,7 @@ int draw_tess_eval_shader_run(struct draw_tess_eval_shader *shader, shader->input_vertex_stride = input_stride; shader->input_info = input_info; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct pipe_tessellation_factors factors; struct pipe_tessellator_data data = { 0 }; struct pipe_tessellator *ptess = p_tess_init(shader->prim_mode, @@ -415,13 +415,13 @@ struct draw_tess_ctrl_shader * draw_create_tess_ctrl_shader(struct draw_context *draw, const struct pipe_shader_state *state) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE boolean use_llvm = draw->llvm != NULL; struct llvm_tess_ctrl_shader *llvm_tcs = NULL; #endif struct draw_tess_ctrl_shader *tcs; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (use_llvm) { llvm_tcs = CALLOC_STRUCT(llvm_tess_ctrl_shader); @@ -447,7 +447,7 @@ draw_create_tess_ctrl_shader(struct draw_context *draw, tcs->vector_length = 4; tcs->vertices_out = tcs->info.properties[TGSI_PROPERTY_TCS_VERTICES_OUT]; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (use_llvm) { tcs->tcs_input = align_malloc(sizeof(struct draw_tcs_inputs), 16); @@ -484,7 +484,7 @@ void draw_delete_tess_ctrl_shader(struct draw_context *draw, if (!dtcs) return; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) { struct llvm_tess_ctrl_shader *shader = llvm_tess_ctrl_shader(dtcs); @@ -508,7 +508,7 @@ void draw_delete_tess_ctrl_shader(struct draw_context *draw, FREE(dtcs); } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE void draw_tcs_set_current_variant(struct draw_tess_ctrl_shader *shader, struct draw_tcs_llvm_variant *variant) { @@ -520,13 +520,13 @@ struct draw_tess_eval_shader * draw_create_tess_eval_shader(struct draw_context *draw, const struct pipe_shader_state *state) { -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE boolean use_llvm = draw->llvm != NULL; struct llvm_tess_eval_shader *llvm_tes = NULL; #endif struct draw_tess_eval_shader *tes; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (use_llvm) { llvm_tes = CALLOC_STRUCT(llvm_tess_eval_shader); @@ -570,7 +570,7 @@ draw_create_tess_eval_shader(struct draw_context *draw, } } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (use_llvm) { tes->tes_input = align_malloc(sizeof(struct draw_tes_inputs), 16); @@ -605,7 +605,7 @@ void draw_delete_tess_eval_shader(struct draw_context *draw, if (!dtes) return; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->llvm) { struct llvm_tess_eval_shader *shader = llvm_tess_eval_shader(dtes); struct draw_tes_llvm_variant_list_item *li; @@ -626,7 +626,7 @@ void draw_delete_tess_eval_shader(struct draw_context *draw, FREE(dtes); } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE void draw_tes_set_current_variant(struct draw_tess_eval_shader *shader, struct draw_tes_llvm_variant *variant) { diff --git a/src/gallium/auxiliary/draw/draw_tess.h b/src/gallium/auxiliary/draw/draw_tess.h index 29ae0847a3512..e21663d826cc0 100644 --- a/src/gallium/auxiliary/draw/draw_tess.h +++ b/src/gallium/auxiliary/draw/draw_tess.h @@ -30,7 +30,7 @@ #include "draw_private.h" struct draw_context; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE #define NUM_PATCH_INPUTS 32 #define NUM_TCS_INPUTS (PIPE_MAX_SHADER_INPUTS - NUM_PATCH_INPUTS) @@ -64,7 +64,7 @@ struct draw_tess_ctrl_shader { unsigned input_vertex_stride; const float (*input)[4]; const struct tgsi_shader_info *input_info; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct draw_tcs_inputs *tcs_input; struct draw_tcs_outputs *tcs_output; struct draw_tcs_jit_context *jit_context; @@ -91,7 +91,7 @@ struct draw_tess_eval_shader { const float (*input)[4]; const struct tgsi_shader_info *input_info; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct draw_tes_inputs *tes_input; struct draw_tes_jit_context *jit_context; struct draw_tes_llvm_variant *current_variant; @@ -120,7 +120,7 @@ int draw_tess_eval_shader_run(struct draw_tess_eval_shader *shader, struct draw_prim_info *output_prims, ushort **elts_out); -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE void draw_tcs_set_current_variant(struct draw_tess_ctrl_shader *shader, struct draw_tcs_llvm_variant *variant); void draw_tes_set_current_variant(struct draw_tess_eval_shader *shader, diff --git a/src/gallium/auxiliary/draw/draw_vs.c b/src/gallium/auxiliary/draw/draw_vs.c index 802ff92b81174..e8dbc11bca66b 100644 --- a/src/gallium/auxiliary/draw/draw_vs.c +++ b/src/gallium/auxiliary/draw/draw_vs.c @@ -59,7 +59,7 @@ draw_create_vertex_shader(struct draw_context *draw, tgsi_dump(shader->tokens, 0); } -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE if (draw->pt.middle.llvm) { vs = draw_create_vs_llvm(draw, shader); } diff --git a/src/gallium/auxiliary/draw/draw_vs.h b/src/gallium/auxiliary/draw/draw_vs.h index c0c29002bbaf4..2a11f86f2910d 100644 --- a/src/gallium/auxiliary/draw/draw_vs.h +++ b/src/gallium/auxiliary/draw/draw_vs.h @@ -164,7 +164,7 @@ draw_create_vs_exec(struct draw_context *draw, struct draw_vs_variant_key; struct draw_vertex_shader; -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE struct draw_vertex_shader * draw_create_vs_llvm(struct draw_context *draw, const struct pipe_shader_state *state); diff --git a/src/gallium/auxiliary/meson.build b/src/gallium/auxiliary/meson.build index f8d0d0553b406..e1bb660ae5d16 100644 --- a/src/gallium/auxiliary/meson.build +++ b/src/gallium/auxiliary/meson.build @@ -345,7 +345,7 @@ if dep_libdrm.found() ) endif -if with_llvm +if draw_with_llvm files_libgallium += files( 'gallivm/lp_bld_arit.c', 'gallivm/lp_bld_arit.h', diff --git a/src/gallium/auxiliary/nir/nir_to_tgsi_info.h b/src/gallium/auxiliary/nir/nir_to_tgsi_info.h index c2b8639b69724..5b562ad688109 100644 --- a/src/gallium/auxiliary/nir/nir_to_tgsi_info.h +++ b/src/gallium/auxiliary/nir/nir_to_tgsi_info.h @@ -29,7 +29,7 @@ struct nir_shader; struct tgsi_shader_info; /* only llvmpipe uses this path, so handle draw not using llvm */ -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE void nir_tgsi_scan_shader(const struct nir_shader *nir, struct tgsi_shader_info *info, bool need_texcoord); diff --git a/src/gallium/drivers/llvmpipe/meson.build b/src/gallium/drivers/llvmpipe/meson.build index d91260bdaf576..724c9c277a7b0 100644 --- a/src/gallium/drivers/llvmpipe/meson.build +++ b/src/gallium/drivers/llvmpipe/meson.build @@ -114,7 +114,7 @@ driver_swrast = declare_dependency( dependencies : [driver_swrast, dep_llvm, idep_mesautil], ) -if with_tests and with_gallium_softpipe and with_llvm +if with_tests and with_gallium_softpipe and draw_with_llvm foreach t : ['lp_test_format', 'lp_test_arit', 'lp_test_blend', 'lp_test_conv', 'lp_test_printf'] test( diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c index 77046fbe56147..608532ee877e4 100644 --- a/src/gallium/drivers/svga/svga_screen.c +++ b/src/gallium/drivers/svga/svga_screen.c @@ -98,7 +98,7 @@ svga_get_name( struct pipe_screen *pscreen ) #else build = "build: RELEASE;"; #endif -#ifdef LLVM_AVAILABLE +#ifdef DRAW_LLVM_AVAILABLE llvm = "LLVM;"; #endif diff --git a/src/gallium/meson.build b/src/gallium/meson.build index daf7f3b78a231..733ab71e9a8d7 100644 --- a/src/gallium/meson.build +++ b/src/gallium/meson.build @@ -52,7 +52,7 @@ else endif if with_gallium_softpipe subdir('drivers/softpipe') - if with_llvm + if draw_with_llvm subdir('drivers/llvmpipe') endif else