From 3955dd077b61ad4f39d7ecbfaa78b183c2142269 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Wed, 24 Feb 2021 10:42:49 -0800 Subject: [PATCH] meson/gallium: Add an option to not use LLVM for gallium draw module We'd like to use one Mesa build environment which builds our CL compiler stack (which needs Clang/LLVM) and which builds our GL driver. The GL driver doesn't really need LLVM support, and since we're statically linking LLVM, removing it from the driver drastically reduces our DLL size on disk. Acked-by: Eric Anholt Part-of: --- Android.mk | 2 +- meson.build | 9 ++++++ meson_options.txt | 6 ++++ scons/llvm.py | 1 + src/gallium/auxiliary/draw/draw_context.c | 18 +++++------ src/gallium/auxiliary/draw/draw_context.h | 2 +- src/gallium/auxiliary/draw/draw_gs.c | 18 +++++------ src/gallium/auxiliary/draw/draw_gs.h | 6 ++-- src/gallium/auxiliary/draw/draw_pipe_aaline.c | 4 +-- .../auxiliary/draw/draw_pipe_aapoint.c | 4 +-- .../auxiliary/draw/draw_pipe_pstipple.c | 2 +- src/gallium/auxiliary/draw/draw_private.h | 2 +- src/gallium/auxiliary/draw/draw_pt.c | 4 +-- src/gallium/auxiliary/draw/draw_tess.c | 30 +++++++++---------- src/gallium/auxiliary/draw/draw_tess.h | 8 ++--- src/gallium/auxiliary/draw/draw_vs.c | 2 +- src/gallium/auxiliary/draw/draw_vs.h | 2 +- src/gallium/auxiliary/meson.build | 2 +- src/gallium/auxiliary/nir/nir_to_tgsi_info.h | 2 +- src/gallium/drivers/llvmpipe/meson.build | 2 +- src/gallium/drivers/svga/svga_screen.c | 2 +- src/gallium/meson.build | 2 +- 22 files changed, 73 insertions(+), 57 deletions(-) diff --git a/Android.mk b/Android.mk index aa2e7f7610e..07eba7b8316 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 d6ea2c18c37..cd8b6e252fd 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 599a2b3fd89..65f6665bfe2 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 3d53125b317..a8d2860a3be 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 f40085fe21a..8efcc001bb0 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 242ffb20650..1ea9c49fcf3 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 940e3b1d4b6..4288ce2f785 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 0078f909c3a..9449ec5094e 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 e559d7f2adc..8ba95a033bf 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 ada9044de25..8b1f7281fa5 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 64776534db1..65e8bc573d6 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 3c02c8fe19f..d29fedd91f2 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 5c536df7254..45896ccce46 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 a0fa3e8b51d..bcc81318cd4 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 29ae0847a35..e21663d826c 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 802ff92b811..e8dbc11bca6 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 c0c29002bba..2a11f86f291 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 f8d0d0553b4..e1bb660ae5d 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 c2b8639b697..5b562ad6881 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 d91260bdaf5..724c9c277a7 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 77046fbe561..608532ee877 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 daf7f3b78a2..733ab71e9a8 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