Lines Matching defs:shader
47 "Test cloning a shader at each successful lowering/optimization call" },
49 "Test serialize and deserialize shader at each successful lowering/optimization call" },
51 "Disable shader validation at each successful lowering/optimization call" },
53 "Validate SSA dominance in shader at each successful lowering/optimization call" },
59 "Dump resulting shader after each successful lowering/optimization call" },
61 "Dump resulting vertex shader after each successful lowering/optimization call" },
63 "Dump resulting tessellation control shader after each successful lowering/optimization call" },
65 "Dump resulting tessellation evaluation shader after each successful lowering/optimization call" },
67 "Dump resulting geometry shader after each successful lowering/optimization call" },
69 "Dump resulting fragment shader after each successful lowering/optimization call" },
71 "Dump resulting compute shader after each successful lowering/optimization call" },
73 "Dump resulting task shader after each successful lowering/optimization call" },
75 "Dump resulting mesh shader after each successful lowering/optimization call" },
77 "Dump resulting raygen shader after each successful lowering/optimization call" },
79 "Dump resulting any-hit shader after each successful lowering/optimization call" },
81 "Dump resulting closest-hit shader after each successful lowering/optimization call" },
83 "Dump resulting miss-hit shader after each successful lowering/optimization call" },
85 "Dump resulting intersection shader after each successful lowering/optimization call" },
87 "Dump resulting callable shader after each successful lowering/optimization call" },
89 "Dump resulting kernel shader after each successful lowering/optimization call" },
190 nir_shader *shader = ptr;
192 /* Free all instrs from the shader, since they're not ralloced. */
193 list_for_each_entry_safe(nir_instr, instr, &shader->gc_list, gc_node) {
204 nir_shader *shader = rzalloc(mem_ctx, nir_shader);
205 ralloc_set_destructor(shader, nir_shader_destructor);
211 exec_list_make_empty(&shader->variables);
213 shader->options = options;
217 shader->info = *si;
219 shader->info.stage = stage;
222 exec_list_make_empty(&shader->functions);
224 list_inithead(&shader->gc_list);
226 shader->num_inputs = 0;
227 shader->num_outputs = 0;
228 shader->num_uniforms = 0;
230 return shader;
268 nir_shader_add_variable(nir_shader *shader, nir_variable *var)
297 exec_list_push_tail(&shader->variables, &var->node);
301 nir_variable_create(nir_shader *shader, nir_variable_mode mode,
304 nir_variable *var = rzalloc(shader, nir_variable);
311 shader->info.stage != MESA_SHADER_VERTEX &&
312 shader->info.stage != MESA_SHADER_KERNEL) ||
314 shader->info.stage != MESA_SHADER_FRAGMENT))
320 nir_shader_add_variable(shader, var);
329 nir_variable *var = rzalloc(impl->function->shader, nir_variable);
340 nir_find_variable_with_location(nir_shader *shader,
345 nir_foreach_variable_with_modes(var, shader, mode) {
353 nir_find_variable_with_driver_location(nir_shader *shader,
358 nir_foreach_variable_with_modes(var, shader, mode) {
385 nir_sort_variables_with_modes(nir_shader *shader,
391 nir_foreach_variable_with_modes(var, shader, modes) {
394 struct var_cmp *vars = ralloc_array(shader, struct var_cmp, num_vars);
396 nir_foreach_variable_with_modes_safe(var, shader, modes) {
408 exec_list_push_tail(&shader->variables, &vars[i].var->node);
414 nir_function_create(nir_shader *shader, const char *name)
416 nir_function *func = ralloc(shader, nir_function);
418 exec_list_push_tail(&shader->functions, &func->node);
421 func->shader = shader;
537 nir_function_impl_create_bare(nir_shader *shader)
539 nir_function_impl *impl = ralloc(shader, nir_function_impl);
556 nir_block *start_block = nir_block_create(shader);
557 nir_block *end_block = nir_block_create(shader);
574 nir_function_impl *impl = nir_function_impl_create_bare(function->shader);
583 nir_block_create(nir_shader *shader)
585 nir_block *block = rzalloc(shader, nir_block);
593 * way it doesn't get allocated for shader refs that never run
617 nir_if_create(nir_shader *shader)
619 nir_if *if_stmt = ralloc(shader, nir_if);
626 nir_block *then = nir_block_create(shader);
631 nir_block *else_stmt = nir_block_create(shader);
640 nir_loop_create(nir_shader *shader)
642 nir_loop *loop = rzalloc(shader, nir_loop);
648 nir_block *body = nir_block_create(shader);
694 nir_alu_instr_create(nir_shader *shader, nir_op op)
706 list_add(&instr->instr.gc_node, &shader->gc_list);
712 nir_deref_instr_create(nir_shader *shader, nir_deref_type deref_type)
728 list_add(&instr->instr.gc_node, &shader->gc_list);
734 nir_jump_instr_create(nir_shader *shader, nir_jump_type type)
743 list_add(&instr->instr.gc_node, &shader->gc_list);
749 nir_load_const_instr_create(nir_shader *shader, unsigned num_components,
758 list_add(&instr->instr.gc_node, &shader->gc_list);
764 nir_intrinsic_instr_create(nir_shader *shader, nir_intrinsic_op op)
780 list_add(&instr->instr.gc_node, &shader->gc_list);
786 nir_call_instr_create(nir_shader *shader, nir_function *callee)
798 list_add(&instr->instr.gc_node, &shader->gc_list);
812 nir_tex_instr_create(nir_shader *shader, unsigned num_srcs)
828 list_add(&instr->instr.gc_node, &shader->gc_list);
881 nir_phi_instr_create(nir_shader *shader)
889 list_add(&instr->instr.gc_node, &shader->gc_list);
898 * that the instr is not in the shader. If it is, you have to do:
917 nir_parallel_copy_instr_create(nir_shader *shader)
924 list_add(&instr->instr.gc_node, &shader->gc_list);
930 nir_ssa_undef_instr_create(nir_shader *shader,
939 list_add(&instr->instr.gc_node, &shader->gc_list);
2199 nir_shader_index_vars(nir_shader *shader, nir_variable_mode modes)
2202 nir_foreach_variable_with_modes(var, shader, modes)
2352 nir_shader_lower_instructions(nir_shader *shader,
2359 nir_foreach_function(function, shader) {
2370 * Returns true if the shader supports quad-based implicit derivatives on
2373 bool nir_shader_supports_implicit_lod(nir_shader *shader)
2375 return (shader->info.stage == MESA_SHADER_FRAGMENT ||
2376 (shader->info.stage == MESA_SHADER_COMPUTE &&
2377 shader->info.cs.derivative_group != DERIVATIVE_GROUP_NONE));
2679 nir_remap_dual_slot_attributes(nir_shader *shader, uint64_t *dual_slot)
2681 assert(shader->info.stage == MESA_SHADER_VERTEX);
2684 nir_foreach_shader_in_variable(var, shader) {
2691 nir_foreach_shader_in_variable(var, shader) {
2897 nir_variable *nir_get_binding_variable(nir_shader *shader, nir_binding binding)
2908 nir_foreach_variable_with_modes(var, shader, nir_var_mem_ubo | nir_var_mem_ssbo) {
3465 * Whether an input/output slot is consumed by the next shader stage,
3466 * or written by the previous shader stage.
3498 * This marks the output store instruction as not feeding the next shader