Lines Matching defs:llvm

67 draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *var);
766 struct draw_llvm *llvm;
771 llvm = CALLOC_STRUCT( draw_llvm );
772 if (!llvm)
775 llvm->draw = draw;
777 llvm->context = context;
778 if (!llvm->context) {
779 llvm->context = LLVMContextCreate();
782 LLVMContextSetOpaquePointers(llvm->context, false);
785 llvm->context_owned = true;
787 if (!llvm->context)
790 llvm->nr_variants = 0;
791 list_inithead(&llvm->vs_variants_list.list);
793 llvm->nr_gs_variants = 0;
794 list_inithead(&llvm->gs_variants_list.list);
796 llvm->nr_tcs_variants = 0;
797 list_inithead(&llvm->tcs_variants_list.list);
799 llvm->nr_tes_variants = 0;
800 list_inithead(&llvm->tes_variants_list.list);
802 return llvm;
805 draw_llvm_destroy(llvm);
814 draw_llvm_destroy(struct draw_llvm *llvm)
816 if (llvm->context_owned)
817 LLVMContextDispose(llvm->context);
818 llvm->context = NULL;
821 FREE(llvm);
853 draw_llvm_create_variant(struct draw_llvm *llvm,
859 llvm_vertex_shader(llvm->draw->vs.vertex_shader);
870 variant->llvm = llvm;
877 if (shader->base.state.ir.nir && llvm->draw->disk_cache_cookie) {
884 llvm->draw->disk_cache_find_shader(llvm->draw->disk_cache_cookie,
890 variant->gallivm = gallivm_create(module_name, llvm->context, &cached);
895 if (llvm->draw->vs.vertex_shader->state.type == PIPE_SHADER_IR_TGSI)
896 tgsi_dump(llvm->draw->vs.vertex_shader->state.tokens, 0);
898 nir_print_shader(llvm->draw->vs.vertex_shader->state.ir.nir, stderr);
905 draw_llvm_generate(llvm, variant);
913 llvm->draw->disk_cache_insert_shader(llvm->draw->disk_cache_cookie,
967 struct draw_llvm *llvm = variant->llvm;
968 const struct tgsi_token *tokens = llvm->draw->vs.vertex_shader->state.tokens;
989 params.info = &llvm->draw->vs.vertex_shader->info;
995 if (llvm->draw->vs.vertex_shader->state.ir.nir &&
996 llvm->draw->vs.vertex_shader->state.type == PIPE_SHADER_IR_NIR)
998 llvm->draw->vs.vertex_shader->state.ir.nir,
1008 const struct tgsi_shader_info *info = &llvm->draw->vs.vertex_shader->info;
1440 const unsigned pos = variant->llvm->draw->vs.position_output;
1492 generate_clipmask(struct draw_llvm *llvm,
1510 const unsigned pos = llvm->draw->vs.position_output;
1511 const unsigned cv = llvm->draw->vs.clipvertex_output;
1512 int num_written_clipdistance = llvm->draw->vs.vertex_shader->info.num_written_clipdistance;
1518 cd[0] = llvm->draw->vs.ccdistance_output[0];
1519 cd[1] = llvm->draw->vs.ccdistance_output[1];
1558 * Be careful with the comparisons and NaNs (using llvm's unordered
1676 unsigned edge_attr = llvm->draw->vs.edgeflag_output;
1897 draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
1921 struct draw_context *draw = llvm->draw;
2129 * it's all constant, hopefully llvm recognizes this.
2318 clipmask = generate_clipmask(llvm,
2366 draw_llvm_make_variant_key(struct draw_llvm *llvm, char *store)
2379 key->clip_xy = llvm->draw->clip_xy;
2380 key->clip_z = llvm->draw->clip_z;
2381 key->clip_user = llvm->draw->clip_user;
2382 key->bypass_viewport = llvm->draw->bypass_viewport;
2383 key->clip_halfz = llvm->draw->rasterizer->clip_halfz;
2385 key->need_edgeflags = (llvm->draw->vs.edgeflag_output ? TRUE : FALSE);
2386 key->ucp_enable = llvm->draw->rasterizer->clip_plane_enable;
2387 key->has_gs_or_tes = llvm->draw->gs.geometry_shader != NULL || llvm->draw->tes.tess_eval_shader != NULL;
2388 key->num_outputs = draw_total_vs_outputs(llvm->draw);
2391 llvm->draw->rasterizer->clamp_vertex_color;
2397 key->nr_samplers = llvm->draw->vs.vertex_shader->info.file_max[TGSI_FILE_SAMPLER] + 1;
2398 if (llvm->draw->vs.vertex_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] != -1) {
2400 llvm->draw->vs.vertex_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] + 1;
2406 key->nr_images = llvm->draw->vs.vertex_shader->info.file_max[TGSI_FILE_IMAGE] + 1;
2420 llvm->draw->vs.vertex_shader->info.file_max[TGSI_FILE_INPUT] + 1;
2422 if (llvm->draw->pt.nr_vertex_elements < key->nr_vertex_elements) {
2424 key->nr_vertex_elements, llvm->draw->pt.nr_vertex_elements);
2429 llvm->draw->pt.vertex_element,
2431 MIN2(key->nr_vertex_elements, llvm->draw->pt.nr_vertex_elements));
2439 llvm->draw->samplers[PIPE_SHADER_VERTEX][i]);
2443 llvm->draw->sampler_views[PIPE_SHADER_VERTEX][i]);
2451 llvm->draw->images[PIPE_SHADER_VERTEX][i]);
2507 assert(sview_idx < ARRAY_SIZE(draw->llvm->jit_context.textures));
2508 jit_tex = &draw->llvm->jit_context.textures[sview_idx];
2511 assert(sview_idx < ARRAY_SIZE(draw->llvm->gs_jit_context.textures));
2512 jit_tex = &draw->llvm->gs_jit_context.textures[sview_idx];
2515 assert(sview_idx < ARRAY_SIZE(draw->llvm->tcs_jit_context.textures));
2516 jit_tex = &draw->llvm->tcs_jit_context.textures[sview_idx];
2519 assert(sview_idx < ARRAY_SIZE(draw->llvm->tes_jit_context.textures));
2520 jit_tex = &draw->llvm->tes_jit_context.textures[sview_idx];
2558 assert(idx < ARRAY_SIZE(draw->llvm->jit_context.images));
2559 jit_image = &draw->llvm->jit_context.images[idx];
2562 assert(idx < ARRAY_SIZE(draw->llvm->gs_jit_context.images));
2563 jit_image = &draw->llvm->gs_jit_context.images[idx];
2566 assert(idx < ARRAY_SIZE(draw->llvm->tcs_jit_context.images));
2567 jit_image = &draw->llvm->tcs_jit_context.images[idx];
2570 assert(idx < ARRAY_SIZE(draw->llvm->tes_jit_context.images));
2571 jit_image = &draw->llvm->tes_jit_context.images[idx];
2599 struct draw_jit_sampler *jit_sam = &draw->llvm->jit_context.samplers[i];
2614 struct draw_jit_sampler *jit_sam = &draw->llvm->gs_jit_context.samplers[i];
2629 struct draw_jit_sampler *jit_sam = &draw->llvm->tcs_jit_context.samplers[i];
2644 struct draw_jit_sampler *jit_sam = &draw->llvm->tes_jit_context.samplers[i];
2667 struct draw_llvm *llvm = variant->llvm;
2671 variant->shader->variants_cached, llvm->nr_variants);
2679 llvm->nr_variants--;
2739 draw_gs_llvm_generate(struct draw_llvm *llvm,
2868 if (llvm->draw->gs.geometry_shader->state.type == PIPE_SHADER_IR_TGSI)
2871 nir_print_shader(llvm->draw->gs.geometry_shader->state.ir.nir, stderr);
2885 params.info = &llvm->draw->gs.geometry_shader->info;
2893 if (llvm->draw->gs.geometry_shader->state.type == PIPE_SHADER_IR_TGSI)
2900 llvm->draw->gs.geometry_shader->state.ir.nir,
2915 draw_gs_llvm_create_variant(struct draw_llvm *llvm,
2921 llvm_geometry_shader(llvm->draw->gs.geometry_shader);
2933 variant->llvm = llvm;
2941 if (shader->base.state.ir.nir && llvm->draw->disk_cache_cookie) {
2948 llvm->draw->disk_cache_find_shader(llvm->draw->disk_cache_cookie,
2954 variant->gallivm = gallivm_create(module_name, llvm->context, &cached);
2961 draw_gs_llvm_generate(llvm, variant);
2969 llvm->draw->disk_cache_insert_shader(llvm->draw->disk_cache_cookie,
2985 struct draw_llvm *llvm = variant->llvm;
2989 variant->shader->variants_cached, llvm->nr_gs_variants);
2997 llvm->nr_gs_variants--;
3002 draw_gs_llvm_make_variant_key(struct draw_llvm *llvm, char *store)
3013 key->num_outputs = draw_total_gs_outputs(llvm->draw);
3015 key->clamp_vertex_color = llvm->draw->rasterizer->clamp_vertex_color;
3021 key->nr_samplers = llvm->draw->gs.geometry_shader->info.file_max[TGSI_FILE_SAMPLER] + 1;
3022 if (llvm->draw->gs.geometry_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] != -1) {
3024 llvm->draw->gs.geometry_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] + 1;
3030 key->nr_images = llvm->draw->gs.geometry_shader->info.file_max[TGSI_FILE_IMAGE] + 1;
3038 llvm->draw->samplers[PIPE_SHADER_GEOMETRY][i]);
3042 llvm->draw->sampler_views[PIPE_SHADER_GEOMETRY][i]);
3050 llvm->draw->images[PIPE_SHADER_GEOMETRY][i]);
3329 draw_tcs_llvm_generate(struct draw_llvm *llvm,
3547 params.info = &llvm->draw->tcs.tess_ctrl_shader->info;
3556 llvm->draw->tcs.tess_ctrl_shader->state.ir.nir,
3580 draw_tcs_llvm_create_variant(struct draw_llvm *llvm,
3585 struct llvm_tess_ctrl_shader *shader = llvm_tess_ctrl_shader(llvm->draw->tcs.tess_ctrl_shader);
3596 variant->llvm = llvm;
3604 if (shader->base.state.ir.nir && llvm->draw->disk_cache_cookie) {
3611 llvm->draw->disk_cache_find_shader(llvm->draw->disk_cache_cookie,
3618 variant->gallivm = gallivm_create(module_name, llvm->context, &cached);
3623 nir_print_shader(llvm->draw->tcs.tess_ctrl_shader->state.ir.nir, stderr);
3627 draw_tcs_llvm_generate(llvm, variant);
3635 llvm->draw->disk_cache_insert_shader(llvm->draw->disk_cache_cookie,
3651 struct draw_llvm *llvm = variant->llvm;
3655 variant->shader->variants_cached, llvm->nr_tcs_variants);
3663 llvm->nr_tcs_variants--;
3668 draw_tcs_llvm_make_variant_key(struct draw_llvm *llvm, char *store)
3683 key->nr_samplers = llvm->draw->tcs.tess_ctrl_shader->info.file_max[TGSI_FILE_SAMPLER] + 1;
3684 if (llvm->draw->tcs.tess_ctrl_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] != -1) {
3686 llvm->draw->tcs.tess_ctrl_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] + 1;
3692 key->nr_images = llvm->draw->tcs.tess_ctrl_shader->info.file_max[TGSI_FILE_IMAGE] + 1;
3700 llvm->draw->samplers[PIPE_SHADER_TESS_CTRL][i]);
3704 llvm->draw->sampler_views[PIPE_SHADER_TESS_CTRL][i]);
3712 llvm->draw->images[PIPE_SHADER_TESS_CTRL][i]);
3898 draw_tes_llvm_generate(struct draw_llvm *llvm,
4075 params.info = &llvm->draw->tes.tess_eval_shader->info;
4083 llvm->draw->tes.tess_eval_shader->state.ir.nir,
4090 const struct tgsi_shader_info *info = &llvm->draw->tes.tess_eval_shader->info;
4099 draw_total_tes_outputs(llvm->draw), tes_type, FALSE);
4110 draw_tes_llvm_create_variant(struct draw_llvm *llvm,
4115 struct llvm_tess_eval_shader *shader = llvm_tess_eval_shader(llvm->draw->tes.tess_eval_shader);
4126 variant->llvm = llvm;
4133 if (shader->base.state.ir.nir && llvm->draw->disk_cache_cookie) {
4140 llvm->draw->disk_cache_find_shader(llvm->draw->disk_cache_cookie,
4146 variant->gallivm = gallivm_create(module_name, llvm->context, &cached);
4154 nir_print_shader(llvm->draw->tes.tess_eval_shader->state.ir.nir, stderr);
4158 draw_tes_llvm_generate(llvm, variant);
4166 llvm->draw->disk_cache_insert_shader(llvm->draw->disk_cache_cookie,
4182 struct draw_llvm *llvm = variant->llvm;
4186 variant->shader->variants_cached, llvm->nr_tes_variants);
4194 llvm->nr_tes_variants--;
4199 draw_tes_llvm_make_variant_key(struct draw_llvm *llvm, char *store)
4210 int primid_output = draw_find_shader_output(llvm->draw, TGSI_SEMANTIC_PRIMID, 0);
4216 key->clamp_vertex_color = llvm->draw->rasterizer->clamp_vertex_color &&
4217 llvm->draw->gs.geometry_shader == NULL;
4223 key->nr_samplers = llvm->draw->tes.tess_eval_shader->info.file_max[TGSI_FILE_SAMPLER] + 1;
4224 if (llvm->draw->tes.tess_eval_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] != -1) {
4226 llvm->draw->tes.tess_eval_shader->info.file_max[TGSI_FILE_SAMPLER_VIEW] + 1;
4232 key->nr_images = llvm->draw->tes.tess_eval_shader->info.file_max[TGSI_FILE_IMAGE] + 1;
4240 llvm->draw->samplers[PIPE_SHADER_TESS_EVAL][i]);
4244 llvm->draw->sampler_views[PIPE_SHADER_TESS_EVAL][i]);
4252 llvm->draw->images[PIPE_SHADER_TESS_EVAL][i]);