• Home
  • Raw
  • Download

Lines Matching full:nir

38 #include "nir/pipe_nir.h"
45 #include "compiler/nir/nir.h"
46 #include "compiler/nir/nir_serialize.h"
323 /* Note: Any setup of ->ir.nir that has had pipe->create_*_state called on in st_release_variants()
324 * it has resulted in the driver taking ownership of the NIR. Those in st_release_variants()
325 * callers should be NULLing out the nir field in any pipe_shader_state in st_release_variants()
328 * GLSL IR and ARB programs will have set gl_program->nir to the same in st_release_variants()
329 * shader as ir->ir.nir, so it will be freed by _mesa_delete_program(). in st_release_variants()
347 st_finalize_nir_before_variants(struct nir_shader *nir) in st_finalize_nir_before_variants() argument
349 NIR_PASS(_, nir, nir_split_var_copies); in st_finalize_nir_before_variants()
350 NIR_PASS(_, nir, nir_lower_var_copies); in st_finalize_nir_before_variants()
351 if (nir->options->lower_all_io_to_temps || in st_finalize_nir_before_variants()
352 nir->options->lower_all_io_to_elements || in st_finalize_nir_before_variants()
353 nir->info.stage == MESA_SHADER_VERTEX || in st_finalize_nir_before_variants()
354 nir->info.stage == MESA_SHADER_GEOMETRY) { in st_finalize_nir_before_variants()
355 NIR_PASS(_, nir, nir_lower_io_arrays_to_elements_no_indirects, false); in st_finalize_nir_before_variants()
356 } else if (nir->info.stage == MESA_SHADER_FRAGMENT) { in st_finalize_nir_before_variants()
357 NIR_PASS(_, nir, nir_lower_io_arrays_to_elements_no_indirects, true); in st_finalize_nir_before_variants()
361 nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); in st_finalize_nir_before_variants()
363 st_nir_assign_vs_in_locations(nir); in st_finalize_nir_before_variants()
367 st_prog_to_nir_postprocess(struct st_context *st, nir_shader *nir, in st_prog_to_nir_postprocess() argument
372 NIR_PASS(_, nir, nir_lower_reg_intrinsics_to_ssa); in st_prog_to_nir_postprocess()
373 nir_validate_shader(nir, "after st/ptn lower_reg_intrinsics_to_ssa"); in st_prog_to_nir_postprocess()
378 NIR_PASS(_, nir, nir_lower_io_to_temporaries, in st_prog_to_nir_postprocess()
379 nir_shader_get_entrypoint(nir), in st_prog_to_nir_postprocess()
381 NIR_PASS(_, nir, nir_lower_global_vars_to_local); in st_prog_to_nir_postprocess()
383 NIR_PASS(_, nir, st_nir_lower_wpos_ytransform, prog, screen); in st_prog_to_nir_postprocess()
384 NIR_PASS(_, nir, nir_lower_system_values); in st_prog_to_nir_postprocess()
385 NIR_PASS(_, nir, nir_lower_compute_system_values, NULL); in st_prog_to_nir_postprocess()
387 /* Optimise NIR */ in st_prog_to_nir_postprocess()
388 NIR_PASS(_, nir, nir_opt_constant_folding); in st_prog_to_nir_postprocess()
389 gl_nir_opts(nir); in st_prog_to_nir_postprocess()
390 st_finalize_nir_before_variants(nir); in st_prog_to_nir_postprocess()
393 char *msg = st_finalize_nir(st, prog, NULL, nir, true, true); in st_prog_to_nir_postprocess()
397 nir_validate_shader(nir, "after st/glsl finalize_nir"); in st_prog_to_nir_postprocess()
401 * Translate ARB (asm) program to NIR
410 /* Translate to NIR */ in st_translate_prog_to_nir()
411 nir_shader *nir = prog_to_nir(st->ctx, prog, options); in st_translate_prog_to_nir() local
413 return nir; in st_translate_prog_to_nir()
490 * Creates a driver shader from a NIR shader. Takes ownership of the
499 nir_shader *nir = state->ir.nir; in st_create_nir_shader() local
500 gl_shader_stage stage = nir->info.stage; in st_create_nir_shader()
503 fprintf(stderr, "NIR before handing off to driver:\n"); in st_create_nir_shader()
504 nir_print_shader(nir, stderr); in st_create_nir_shader()
528 shader = pipe_shader_from_nir(pipe, nir); in st_create_nir_shader()
556 if (prog->arb.Instructions && prog->nir) in st_translate_vertex_program()
557 ralloc_free(prog->nir); in st_translate_vertex_program()
566 prog->nir = st_translate_prog_to_nir(st, prog, in st_translate_vertex_program()
568 st_prog_to_nir_postprocess(st, prog->nir, prog); in st_translate_vertex_program()
569 prog->info = prog->nir->info; in st_translate_vertex_program()
578 if (prog->nir) { in get_nir_shader()
579 nir_shader *nir = prog->nir; in get_nir_shader() local
581 /* The first shader variant takes ownership of NIR, so that there is in get_nir_shader()
583 * serialized NIR to save memory. in get_nir_shader()
585 prog->nir = NULL; in get_nir_shader()
587 return nir; in get_nir_shader()
600 struct nir_shader *nir, in lower_ucp() argument
604 if (nir->info.outputs_written & VARYING_BIT_CLIP_DIST0) in lower_ucp()
605 NIR_PASS(_, nir, nir_lower_clip_disable, ucp_enables); in lower_ucp()
624 if (nir->info.stage == MESA_SHADER_VERTEX || in lower_ucp()
625 nir->info.stage == MESA_SHADER_TESS_EVAL) { in lower_ucp()
626 NIR_PASS(_, nir, nir_lower_clip_vs, ucp_enables, in lower_ucp()
628 } else if (nir->info.stage == MESA_SHADER_GEOMETRY) { in lower_ucp()
629 NIR_PASS(_, nir, nir_lower_clip_gs, ucp_enables, in lower_ucp()
633 NIR_PASS(_, nir, nir_lower_io_to_temporaries, in lower_ucp()
634 nir_shader_get_entrypoint(nir), true, false); in lower_ucp()
635 NIR_PASS(_, nir, nir_lower_global_vars_to_local); in lower_ucp()
660 state.ir.nir = get_nir_shader(st, prog); in st_create_common_variant()
661 const nir_shader_compiler_options *options = ((nir_shader *)state.ir.nir)->options; in st_create_common_variant()
664 NIR_PASS(_, state.ir.nir, nir_lower_clamp_color_outputs); in st_create_common_variant()
668 NIR_PASS(_, state.ir.nir, nir_lower_passthrough_edgeflags); in st_create_common_variant()
675 NIR_PASS(_, state.ir.nir, nir_lower_point_size_mov, in st_create_common_variant()
683 lower_ucp(st, state.ir.nir, key->lower_ucp, params); in st_create_common_variant()
693 NIR_PASS(_, state.ir.nir, nir_lower_tex, &tex_opts); in st_create_common_variant()
697 char *msg = st_finalize_nir(st, prog, prog->shader_program, state.ir.nir, in st_create_common_variant()
710 nir_shader_gather_info(state.ir.nir, in st_create_common_variant()
711 nir_shader_get_entrypoint(state.ir.nir)); in st_create_common_variant()
716 NIR_PASS(_, state.ir.nir, gl_nir_lower_images, false); in st_create_common_variant()
794 * Translate a non-GLSL Mesa fragment shader into a NIR shader.
820 /* Translate to NIR. */ in st_translate_fragment_program()
821 if (prog->nir && prog->arb.Instructions) in st_translate_fragment_program()
822 ralloc_free(prog->nir); in st_translate_fragment_program()
831 prog->nir = st_translate_prog_to_nir(st, prog, in st_translate_fragment_program()
837 assert(!prog->nir); in st_translate_fragment_program()
838 prog->nir = st_translate_atifs_program(prog->ati_fs, prog, options); in st_translate_fragment_program()
840 st_prog_to_nir_postprocess(st, prog->nir, prog); in st_translate_fragment_program()
842 prog->info = prog->nir->info; in st_translate_fragment_program()
876 /* Translate ATI_fs to NIR at variant time because that's when we have the in st_create_fp_variant()
879 state.ir.nir = get_nir_shader(st, fp); in st_create_fp_variant()
886 NIR_PASS(_, state.ir.nir, st_nir_lower_fog, key->fog, fp->Parameters); in st_create_fp_variant()
887 NIR_PASS(_, state.ir.nir, nir_lower_io_to_temporaries, in st_create_fp_variant()
888 nir_shader_get_entrypoint(state.ir.nir), in st_create_fp_variant()
890 nir_lower_global_vars_to_local(state.ir.nir); in st_create_fp_variant()
893 NIR_PASS(_, state.ir.nir, st_nir_lower_atifs_samplers, key->texture_index); in st_create_fp_variant()
899 NIR_PASS(_, state.ir.nir, nir_lower_clamp_color_outputs); in st_create_fp_variant()
904 NIR_PASS(_, state.ir.nir, nir_lower_flatshade); in st_create_fp_variant()
910 NIR_PASS(_, state.ir.nir, nir_lower_alpha_test, key->lower_alpha_func, in st_create_fp_variant()
917 NIR_PASS(_, state.ir.nir, nir_lower_two_sided_color, face_sysval); in st_create_fp_variant()
922 nir_shader *shader = state.ir.nir; in st_create_fp_variant()
942 NIR_PASS(_, state.ir.nir, nir_lower_tex, &tex_opts); in st_create_fp_variant()
956 NIR_PASS(_, state.ir.nir, nir_lower_bitmap, &options); in st_create_fp_variant()
990 NIR_PASS(_, state.ir.nir, nir_lower_drawpixels, &options); in st_create_fp_variant()
1004 st_nir_lower_samplers(st->screen, state.ir.nir, in st_create_fp_variant()
1024 NIR_PASS(_, state.ir.nir, nir_lower_tex, &options); in st_create_fp_variant()
1030 char *msg = st_finalize_nir(st, fp, fp->shader_program, state.ir.nir, in st_create_fp_variant()
1037 NIR_PASS(_, state.ir.nir, st_nir_lower_tex_src_plane, in st_create_fp_variant()
1053 NIR_PASS(_, state.ir.nir, nir_remove_tex_shadow, in st_create_fp_variant()
1060 nir_shader_gather_info(state.ir.nir, in st_create_fp_variant()
1061 nir_shader_get_entrypoint(state.ir.nir)); in st_create_fp_variant()
1065 char *msg = screen->finalize_nir(screen, state.ir.nir); in st_create_fp_variant()
1298 nir_serialize(&blob, prog->nir, false); in st_serialize_nir()
1334 if (prog->nir) { in st_finalize_program()
1335 nir_sweep(prog->nir); in st_finalize_program()
1359 /* GLSL-to-NIR should not end up here. */ in st_program_string_notify()
1374 NIR_PASS(_, prog->nir, gl_nir_add_point_size); in st_program_string_notify()