Lines Matching full:nir
25 #include "nir/nir.h"
34 * \brief Contains SPIR-V and NIR-specific functions.
38 * \brief SPIR-V to NIR compilation options.
57 * \brief Applies optimizations and passes required to lower the NIR shader into
65 nir_shader *nir, in rogue_nir_passes() argument
71 bool nir_debug_print_shader_prev = nir_debug_print_shader[nir->info.stage]; in rogue_nir_passes()
72 nir_debug_print_shader[nir->info.stage] = ROGUE_DEBUG(NIR_PASSES); in rogue_nir_passes()
75 nir_validate_shader(nir, "after spirv_to_nir"); in rogue_nir_passes()
77 NIR_PASS_V(nir, nir_lower_vars_to_ssa); in rogue_nir_passes()
80 NIR_PASS_V(nir, nir_split_var_copies); in rogue_nir_passes()
81 NIR_PASS_V(nir, nir_split_per_member_structs); in rogue_nir_passes()
84 NIR_PASS_V(nir, in rogue_nir_passes()
92 NIR_PASS_V(nir, nir_lower_io_to_scalar, nir_var_shader_in, NULL, NULL); in rogue_nir_passes()
98 NIR_PASS_V(nir, nir_opt_access, &opt_access_options); in rogue_nir_passes()
101 if (nir->info.stage == MESA_SHADER_FRAGMENT) in rogue_nir_passes()
102 NIR_PASS_V(nir, rogue_nir_pfo); in rogue_nir_passes()
105 NIR_PASS_V(nir, nir_lower_io_to_scalar, nir_var_shader_out, NULL, NULL); in rogue_nir_passes()
108 NIR_PASS_V(nir, nir_lower_alu_to_scalar, NULL, NULL); in rogue_nir_passes()
111 NIR_PASS_V(nir, nir_lower_load_const_to_scalar); in rogue_nir_passes()
114 NIR_PASS_V(nir, in rogue_nir_passes()
118 NIR_PASS_V(nir, nir_lower_io_to_scalar, nir_var_mem_ubo, NULL, NULL); in rogue_nir_passes()
119 NIR_PASS_V(nir, rogue_nir_lower_io); in rogue_nir_passes()
125 NIR_PASS(progress, nir, nir_copy_prop); in rogue_nir_passes()
126 NIR_PASS(progress, nir, nir_opt_cse); in rogue_nir_passes()
127 NIR_PASS(progress, nir, nir_opt_algebraic); in rogue_nir_passes()
128 NIR_PASS(progress, nir, nir_opt_constant_folding); in rogue_nir_passes()
129 NIR_PASS(progress, nir, nir_opt_dce); in rogue_nir_passes()
130 NIR_PASS_V(nir, nir_opt_gcm, false); in rogue_nir_passes()
137 NIR_PASS(progress, nir, nir_opt_algebraic_late); in rogue_nir_passes()
138 NIR_PASS_V(nir, nir_opt_constant_folding); in rogue_nir_passes()
139 NIR_PASS_V(nir, nir_copy_prop); in rogue_nir_passes()
140 NIR_PASS_V(nir, nir_opt_dce); in rogue_nir_passes()
141 NIR_PASS_V(nir, nir_opt_cse); in rogue_nir_passes()
145 NIR_PASS_V(nir, nir_opt_dce); in rogue_nir_passes()
151 /* NIR_PASS_V(nir, nir_opt_move, nir_move_load_ubo | nir_move_load_input); */ in rogue_nir_passes()
159 NIR_PASS_V(nir, nir_schedule, &schedule_options); in rogue_nir_passes()
163 nir_assign_io_var_locations(nir, in rogue_nir_passes()
165 &nir->num_inputs, in rogue_nir_passes()
166 nir->info.stage); in rogue_nir_passes()
167 nir_assign_io_var_locations(nir, in rogue_nir_passes()
169 &nir->num_outputs, in rogue_nir_passes()
170 nir->info.stage); in rogue_nir_passes()
173 nir_index_ssa_defs(nir_shader_get_entrypoint(nir)); in rogue_nir_passes()
175 /* Gather info into nir shader struct. */ in rogue_nir_passes()
176 nir_shader_gather_info(nir, nir_shader_get_entrypoint(nir)); in rogue_nir_passes()
179 nir_sweep(nir); in rogue_nir_passes()
181 nir_validate_shader(nir, "after passes"); in rogue_nir_passes()
182 if (ROGUE_DEBUG(NIR)) { in rogue_nir_passes()
184 nir_print_shader(nir, stdout); in rogue_nir_passes()
188 nir_debug_print_shader[nir->info.stage] = nir_debug_print_shader_prev; in rogue_nir_passes()
193 * \brief Converts a SPIR-V shader to NIR.
213 nir_shader *nir; in rogue_spirv_to_nir() local
215 nir = spirv_to_nir(spirv_data, in rogue_spirv_to_nir()
223 if (!nir) in rogue_spirv_to_nir()
226 ralloc_steal(ctx, nir); in rogue_spirv_to_nir()
229 rogue_nir_passes(ctx, nir, stage); in rogue_spirv_to_nir()
232 rogue_collect_io_data(ctx, nir); in rogue_spirv_to_nir()
234 return nir; in rogue_spirv_to_nir()