Lines Matching defs:shader
154 vtn_info("SPIR-V shader dumped to %s", filename);
244 nir_load_const_instr_create(b->shader, num_components, bit_size);
889 return b->shader->info.has_transform_feedback_varyings;
1150 if (b->shader->info.stage != MESA_SHADER_KERNEL) {
1232 if (b->shader->info.stage != MESA_SHADER_KERNEL) {
1614 b->shader->info.stage != MESA_SHADER_KERNEL &&
1704 if (b->shader->info.stage == MESA_SHADER_KERNEL) {
1745 else if (b->shader->info.stage == MESA_SHADER_KERNEL)
1770 } else if (b->shader->info.stage == MESA_SHADER_KERNEL) {
1838 if (b->shader->info.stage == MESA_SHADER_FRAGMENT)
2270 b->shader->info.float_controls_execution_mode);
2467 if (b->shader->info.stage == MESA_SHADER_TASK)
2881 vtn_fail_if(b->shader->info.stage != MESA_SHADER_KERNEL,
3056 nir_tex_instr *instr = nir_tex_instr_create(b->shader, p - srcs);
3430 nir_intrinsic_instr *intrin = nir_intrinsic_instr_create(b->shader, op);
3724 atomic = nir_intrinsic_instr_create(b->nb.shader, op);
3761 atomic = nir_intrinsic_instr_create(b->nb.shader, op);
3855 nir_alu_instr *vec = nir_alu_instr_create(b->shader, op);
4123 if (b->shader->options->use_scoped_barrier) {
4185 if (b->nb.shader->info.stage == MESA_SHADER_TESS_CTRL)
4239 b->nb.shader->info.stage == MESA_SHADER_COMPUTE &&
4259 if (b->nb.shader->info.stage == MESA_SHADER_TESS_CTRL ||
4260 b->nb.shader->info.stage == MESA_SHADER_TASK ||
4261 b->nb.shader->info.stage == MESA_SHADER_MESH) {
4270 if (b->shader->options->use_scoped_barrier) {
4866 vtn_fail_if(b->shader->info.stage != MESA_SHADER_KERNEL,
4868 b->shader->info.cs.ptr_size = 32;
4878 vtn_fail_if(b->shader->info.stage != MESA_SHADER_KERNEL,
4880 b->shader->info.cs.ptr_size = 64;
4890 vtn_fail_if(b->shader->info.stage == MESA_SHADER_KERNEL,
4976 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
4977 b->shader->info.fs.origin_upper_left =
4982 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
4983 b->shader->info.fs.early_fragment_tests = true;
4987 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
4988 b->shader->info.fs.post_depth_coverage = true;
4992 vtn_assert(b->shader->info.stage == MESA_SHADER_GEOMETRY);
4993 b->shader->info.gs.invocations = MAX2(1, mode->operands[0]);
4997 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
4998 b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_ANY;
5001 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5002 b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_GREATER;
5005 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5006 b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_LESS;
5009 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5010 b->shader->info.fs.depth_layout = FRAG_DEPTH_LAYOUT_UNCHANGED;
5014 vtn_assert(b->shader->info.stage == MESA_SHADER_KERNEL);
5015 b->shader->info.cs.workgroup_size_hint[0] = mode->operands[0];
5016 b->shader->info.cs.workgroup_size_hint[1] = mode->operands[1];
5017 b->shader->info.cs.workgroup_size_hint[2] = mode->operands[2];
5021 if (gl_shader_stage_uses_workgroup(b->shader->info.stage)) {
5022 b->shader->info.workgroup_size[0] = mode->operands[0];
5023 b->shader->info.workgroup_size[1] = mode->operands[1];
5024 b->shader->info.workgroup_size[2] = mode->operands[2];
5027 _mesa_shader_stage_to_string(b->shader->info.stage));
5032 switch (b->shader->info.stage) {
5035 b->shader->info.tess.tcs_vertices_out = mode->operands[0];
5038 b->shader->info.gs.vertices_out = mode->operands[0];
5041 b->shader->info.mesh.max_vertices_out = mode->operands[0];
5045 _mesa_shader_stage_to_string(b->shader->info.stage));
5057 if (b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
5058 b->shader->info.stage == MESA_SHADER_TESS_EVAL) {
5059 b->shader->info.tess._primitive_mode =
5062 vtn_assert(b->shader->info.stage == MESA_SHADER_GEOMETRY);
5063 b->shader->info.gs.vertices_in =
5065 b->shader->info.gs.input_primitive =
5071 vtn_assert(b->shader->info.stage == MESA_SHADER_MESH);
5072 b->shader->info.mesh.max_primitives_out = mode->operands[0];
5077 vtn_assert(b->shader->info.stage == MESA_SHADER_MESH);
5078 b->shader->info.mesh.primitive_type =
5086 switch (b->shader->info.stage) {
5088 b->shader->info.gs.output_primitive = primitive;
5091 b->shader->info.mesh.primitive_type = primitive;
5095 _mesa_shader_stage_to_string(b->shader->info.stage));
5103 vtn_assert(b->shader->info.stage == MESA_SHADER_GEOMETRY);
5104 b->shader->info.gs.output_primitive =
5109 vtn_assert(b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
5110 b->shader->info.stage == MESA_SHADER_TESS_EVAL);
5111 b->shader->info.tess.spacing = TESS_SPACING_EQUAL;
5114 vtn_assert(b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
5115 b->shader->info.stage == MESA_SHADER_TESS_EVAL);
5116 b->shader->info.tess.spacing = TESS_SPACING_FRACTIONAL_EVEN;
5119 vtn_assert(b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
5120 b->shader->info.stage == MESA_SHADER_TESS_EVAL);
5121 b->shader->info.tess.spacing = TESS_SPACING_FRACTIONAL_ODD;
5124 vtn_assert(b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
5125 b->shader->info.stage == MESA_SHADER_TESS_EVAL);
5126 b->shader->info.tess.ccw = false;
5129 vtn_assert(b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
5130 b->shader->info.stage == MESA_SHADER_TESS_EVAL);
5131 b->shader->info.tess.ccw = true;
5134 vtn_assert(b->shader->info.stage == MESA_SHADER_TESS_CTRL ||
5135 b->shader->info.stage == MESA_SHADER_TESS_EVAL);
5136 b->shader->info.tess.point_mode = true;
5140 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5141 b->shader->info.fs.pixel_center_integer = true;
5145 b->shader->info.has_transform_feedback_varyings = true;
5152 if (b->shader->info.stage != MESA_SHADER_KERNEL)
5160 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5164 vtn_assert(b->shader->info.stage == MESA_SHADER_COMPUTE);
5165 b->shader->info.cs.derivative_group = DERIVATIVE_GROUP_QUADS;
5169 vtn_assert(b->shader->info.stage == MESA_SHADER_COMPUTE);
5170 b->shader->info.cs.derivative_group = DERIVATIVE_GROUP_LINEAR;
5174 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5175 b->shader->info.fs.pixel_interlock_ordered = true;
5179 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5180 b->shader->info.fs.pixel_interlock_unordered = true;
5184 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5185 b->shader->info.fs.sample_interlock_ordered = true;
5189 vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
5190 b->shader->info.fs.sample_interlock_unordered = true;
5244 b->shader->info.float_controls_execution_mode |= execution_mode;
5247 vtn_fail_if(nir_is_denorm_flush_to_zero(b->shader->info.float_controls_execution_mode, bit_size) &&
5248 nir_is_denorm_preserve(b->shader->info.float_controls_execution_mode, bit_size),
5250 vtn_fail_if(nir_is_rounding_mode_rtne(b->shader->info.float_controls_execution_mode, bit_size) &&
5251 nir_is_rounding_mode_rtz(b->shader->info.float_controls_execution_mode, bit_size),
5263 vtn_assert(b->shader->info.stage == MESA_SHADER_KERNEL);
5264 vtn_assert(b->shader->info.subgroup_size == SUBGROUP_SIZE_VARYING);
5265 b->shader->info.subgroup_size = mode->operands[0];
5290 if (gl_shader_stage_uses_workgroup(b->shader->info.stage)) {
5291 b->shader->info.workgroup_size[0] = vtn_constant_uint(b, mode->operands[0]);
5292 b->shader->info.workgroup_size[1] = vtn_constant_uint(b, mode->operands[1]);
5293 b->shader->info.workgroup_size[2] = vtn_constant_uint(b, mode->operands[2]);
5296 _mesa_shader_stage_to_string(b->shader->info.stage));
5301 vtn_assert(b->shader->info.stage == MESA_SHADER_KERNEL);
5302 b->shader->info.cs.workgroup_size_hint[0] = vtn_constant_uint(b, mode->operands[0]);
5303 b->shader->info.cs.workgroup_size_hint[1] = vtn_constant_uint(b, mode->operands[1]);
5304 b->shader->info.cs.workgroup_size_hint[2] = vtn_constant_uint(b, mode->operands[2]);
5542 intrin = nir_intrinsic_instr_create(b->nb.shader,
5560 intrin = nir_intrinsic_instr_create(b->nb.shader,
5571 intrin = nir_intrinsic_instr_create(b->nb.shader,
5577 intrin = nir_intrinsic_instr_create(b->nb.shader,
5584 intrin = nir_intrinsic_instr_create(b->nb.shader,
5626 nir_foreach_variable_with_modes(var, b->nb.shader, nir_var_shader_out) {
5641 num_mesh_vertices_per_primitive(b->shader->info.mesh.primitive_type);
5643 vertices_per_prim * b->shader->info.mesh.max_primitives_out;
5647 nir_variable_create(b->shader, nir_var_shader_out, t,
5747 nir_intrinsic_instr_create(b->nb.shader,
6327 * to provide correct memory semantics on compute shader barrier()
6384 ralloc_asprintf(b->shader, "__wrapped_%s", entry_point->name);
6386 vtn_assert(b->shader->info.stage == MESA_SHADER_KERNEL);
6388 nir_function *main_entry_point = nir_function_create(b->shader, func_name);
6394 nir_call_instr *call = nir_call_instr_create(b->nb.shader, entry_point);
6406 nir_variable *in_var = rzalloc(b->nb.shader, nir_variable);
6427 nir_shader_add_variable(b->nb.shader, in_var);
6484 b->shader = nir_shader_create(b, stage, nir_options, NULL);
6485 b->shader->info.subgroup_size = options->subgroup_size;
6486 b->shader->info.float_controls_execution_mode = options->float_controls_execution_mode;
6507 vtn_fail("Entry point not found for %s shader \"%s\"",
6514 assert(nir_address_format_bit_size(b->options->temp_addr_format) == nir_get_ptr_bitsize(b->shader));
6517 /* Set shader info defaults */
6519 b->shader->info.gs.invocations = 1;
6548 b->shader->info.workgroup_size[0] = const_size[0].u32;
6549 b->shader->info.workgroup_size[1] = const_size[1].u32;
6550 b->shader->info.workgroup_size[2] = const_size[2].u32;
6583 if (entry_point->num_params && b->shader->info.stage == MESA_SHADER_KERNEL)
6590 nir_lower_goto_ifs(b->shader);
6605 nir_remove_dead_variables(b->shader, ~(nir_var_function_temp |
6612 nir_foreach_variable_in_shader(var, b->shader) {
6615 b->shader->info.num_ubos++;
6618 b->shader->info.num_ssbos++;
6621 vtn_assert(b->shader->num_uniforms == 0);
6622 b->shader->num_uniforms =
6631 nir_opt_dce(b->shader);
6636 nir_foreach_variable_with_modes(var, b->shader, nir_var_mem_shared) {
6639 b->shader->info.shared_memory_explicit_layout = true;
6643 if (b->shader->info.shared_memory_explicit_layout) {
6645 nir_foreach_variable_with_modes(var, b->shader, nir_var_mem_shared) {
6650 b->shader->info.shared_size = size;
6656 * "If a fragment shader entry point’s interface includes an input
6663 * "If a fragment shader input is decorated with Sample, a separate
6676 nir_foreach_variable_with_modes(var, b->shader,
6686 b->shader->info.fs.uses_sample_shading = true;
6689 b->shader->info.fs.uses_sample_shading = true;
6694 /* Unparent the shader from the vtn_builder before we delete the builder */
6695 ralloc_steal(NULL, b->shader);
6697 nir_shader *shader = b->shader;
6700 return shader;