Home | History | Annotate | Download | only in glsl

Lines Matching refs:prog

224    gl_shader_program *prog;
228 gl_shader_program *prog,
232 this->prog = prog;
255 linker_error(this->prog, "size of array %s declared as %u, "
266 linker_error(this->prog, "%s shader accesses element %i of "
414 linker_error(gl_shader_program *prog, const char *fmt, ...)
418 ralloc_strcat(&prog->data->InfoLog, "error: ");
420 ralloc_vasprintf_append(&prog->data->InfoLog, fmt, ap);
423 prog->data->LinkStatus = false;
428 linker_warning(gl_shader_program *prog, const char *fmt, ...)
432 ralloc_strcat(&prog->data->InfoLog, "warning: ");
434 ralloc_vasprintf_append(&prog->data->InfoLog, fmt, ap);
547 analyze_clip_cull_usage(struct gl_shader_program *prog,
556 if (prog->data->Version >= (prog->IsES ? 300 : 130)) {
582 if (!prog->IsES) {
588 linker_error(prog, "%s shader writes to both `gl_ClipVertex' "
594 linker_error(prog, "%s shader writes to both `gl_ClipVertex' "
622 linker_error(prog, "%s shader: the combined size of "
636 * Also sets prog->Vert.ClipDistanceArraySize and
637 * prog->Vert.CullDistanceArraySize as a side effect.
642 validate_vertex_shader_executable(struct gl_shader_program *prog,
675 if (prog->data->Version < (prog->IsES ? 300 : 140)) {
679 if (prog->IsES) {
680 linker_warning(prog,
684 linker_error(prog,
691 analyze_clip_cull_usage(prog, shader, ctx,
692 &prog->Vert.ClipDistanceArraySize,
693 &prog->Vert.CullDistanceArraySize);
697 validate_tess_eval_shader_executable(struct gl_shader_program *prog,
704 analyze_clip_cull_usage(prog, shader, ctx,
705 &prog->TessEval.ClipDistanceArraySize,
706 &prog->TessEval.CullDistanceArraySize);
716 validate_fragment_shader_executable(struct gl_shader_program *prog,
729 linker_error(prog, "fragment shader writes to both "
737 * Also sets prog->Geom.VerticesIn, and prog->Geom.ClipDistanceArraySize and
738 * prog->Geom.CullDistanceArraySize as a side effect.
743 validate_geometry_shader_executable(struct gl_shader_program *prog,
751 prog->Geom.VerticesIn = num_vertices;
753 analyze_clip_cull_usage(prog, shader, ctx,
754 &prog->Geom.ClipDistanceArraySize,
755 &prog->Geom.CullDistanceArraySize);
764 struct gl_shader_program *prog)
766 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_GEOMETRY];
772 linker_error(prog, "Invalid call %s(%d). Accepted values for the "
778 prog->Geom.UsesStreams = emit_vertex.uses_streams();
779 prog->Geom.UsesEndPrimitive = emit_vertex.uses_end_primitive();
801 * does. Currently we only set prog->Geom.UsesStreams to TRUE when
805 if (prog->Geom.UsesStreams && sh->info.Geom.OutputType != GL_POINTS) {
806 linker_error(prog, "EmitStreamVertex(n) and EndStreamPrimitive(n) "
813 validate_intrastage_arrays(struct gl_shader_program *prog,
827 linker_error(prog, "%s `%s' declared as type "
839 linker_error(prog, "%s `%s' declared as type "
866 cross_validate_globals(struct gl_shader_program *prog,
900 if (!validate_intrastage_arrays(prog, var, existing)) {
916 linker_error(prog, "%s `%s' declared as type "
930 linker_error(prog, "explicit locations for %s "
937 linker_error(prog, "explicit components for %s `%s' have "
965 linker_error(prog, "explicit bindings for %s "
977 linker_error(prog, "offset specifications for %s "
1000 linker_error(prog,
1007 linker_error(prog,
1034 linker_error(prog, "initializers for %s "
1052 linker_error(prog,
1061 linker_error(prog, "declarations for %s `%s' have "
1067 linker_error(prog, "declarations for %s `%s' have "
1073 linker_error(prog, "declarations for %s `%s` have "
1079 linker_error(prog, "declarations for %s `%s` have "
1092 if (prog->IsES && (prog->data->Version != 310 ||
1095 linker_error(prog, "declarations for %s `%s` have "
1110 cross_validate_uniforms(struct gl_shader_program *prog)
1114 if (prog->_LinkedShaders[i] == NULL)
1117 cross_validate_globals(prog, prog->_LinkedShaders[i]->ir, &variables,
1127 interstage_cross_validate_uniform_blocks(struct gl_shader_program *prog,
1132 unsigned *num_blks = validate_ssbo ? &prog->data->NumShaderStorageBlocks :
1133 &prog->data->NumUniformBlocks;
1137 if (prog->_LinkedShaders[i]) {
1140 prog->_LinkedShaders[i]->Program->info.num_ssbos;
1143 prog->_LinkedShaders[i]->Program->info.num_ubos;
1149 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
1161 sh_num_blocks = prog->_LinkedShaders[i]->Program->info.num_ssbos;
1164 sh_num_blocks = prog->_LinkedShaders[i]->Program->info.num_ubos;
1169 int index = link_cross_validate_uniform_block(prog, &blks, num_blks,
1173 linker_error(prog, "buffer block `%s' has mismatching "
1200 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
1217 prog->data->ShaderStorageBlocks = blks;
1219 prog->data->UniformBlocks = blks;
1602 struct gl_shader_program *prog,
1620 linker_error(prog,
1638 prog->TransformFeedback.BufferStride[j] =
1642 if (prog->TransformFeedback.BufferStride[j] % 4) {
1643 linker_error(prog, "invalid qualifier xfb_stride=%d must be a "
1646 prog->TransformFeedback.BufferStride[j]);
1650 if (prog->TransformFeedback.BufferStride[j] / 4 >
1652 linker_error(prog,
1667 link_tcs_out_layout_qualifiers(struct gl_shader_program *prog,
1694 linker_error(prog, "tessellation control shader defined with "
1710 linker_error(prog, "tessellation control shader didn't declare "
1724 link_tes_in_layout_qualifiers(struct gl_shader_program *prog,
1758 linker_error(prog, "tessellation evaluation shader defined with "
1769 linker_error(prog, "tessellation evaluation shader defined with "
1780 linker_error(prog, "tessellation evaluation shader defined with "
1792 linker_error(prog, "tessellation evaluation shader defined with "
1807 linker_error(prog,
1830 link_fs_inout_layout_qualifiers(struct gl_shader_program *prog,
1841 (prog->data->Version < 150 &&
1842 !prog->ARB_fragment_coord_conventions_enable))
1859 linker_error(prog, "fragment shader defined with conflicting "
1874 linker_error(prog, "fragment shader defined with conflicting "
1913 link_gs_inout_layout_qualifiers(struct gl_shader_program *prog,
1927 prog->data->Version < 150)
1947 linker_error(prog, "geometry shader defined with conflicting "
1958 linker_error(prog, "geometry shader defined with conflicting "
1969 linker_error(prog, "geometry shader defined with conflicting "
1982 linker_error(prog, "geometry shader defined with conflicting "
1997 linker_error(prog,
2003 linker_error(prog,
2009 linker_error(prog,
2025 link_cs_input_layout_qualifiers(struct gl_shader_program *prog,
2059 linker_error(prog, "compute shader defined with conflicting "
2078 linker_error(prog, "compute shader defined with both fixed and "
2092 linker_error(prog, "compute shader must contain a fixed or a variable "
2097 prog->Comp.LocalSize[i] = linked_shader->info.Comp.LocalSize[i];
2099 prog->Comp.LocalSizeVariable =
2114 struct gl_shader_program *prog,
2130 cross_validate_globals(prog, shader_list[i]->ir, &variables, false);
2133 if (!prog->data->LinkStatus)
2138 validate_intrastage_interface_blocks(prog, (const gl_shader **)shader_list,
2140 if (!prog->data->LinkStatus)
2171 linker_error(prog, "function `%s' is multiply defined\n",
2199 linker_error(prog, "%s shader lacks `main'\n",
2211 prog->Name, false);
2213 prog->data->LinkStatus = false;
2218 _mesa_reference_shader_program_data(ctx, &gl_prog->sh.data, prog->data);
2226 link_fs_inout_layout_qualifiers(prog, linked, shader_list, num_shaders);
2227 link_tcs_out_layout_qualifiers(prog, linked, shader_list, num_shaders);
2228 link_tes_in_layout_qualifiers(prog, linked, shader_list, num_shaders);
2229 link_gs_inout_layout_qualifiers(prog, linked, shader_list, num_shaders);
2230 link_cs_input_layout_qualifiers(prog, linked, shader_list, num_shaders);
2231 link_xfb_stride_layout_qualifiers(ctx, prog, linked, shader_list,
2259 if (!link_function_calls(prog, linked, shader_list, num_shaders)) {
2273 link_uniform_blocks(mem_ctx, ctx, prog, linked, &ubo_blocks,
2276 if (!prog->data->LinkStatus) {
2307 array_resize_visitor input_resize_visitor(num_vertices, prog,
2346 update_array_sizes(struct gl_shader_program *prog)
2349 if (prog->_LinkedShaders[i] == NULL)
2354 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) {
2377 if (prog->_LinkedShaders[j] == NULL)
2380 foreach_in_list(ir_instruction, node2, prog->_LinkedShaders[j]->ir) {
2416 v.run(prog->_LinkedShaders[i]->ir);
2427 struct gl_shader_program *prog)
2429 if (prog->_LinkedShaders[MESA_SHADER_TESS_EVAL] == NULL)
2432 gl_linked_shader *const tcs = prog->_LinkedShaders[MESA_SHADER_TESS_CTRL];
2433 gl_linked_shader *const tes = prog->_LinkedShaders[MESA_SHADER_TESS_EVAL];
2443 array_resize_visitor input_resize_visitor(num_vertices, prog,
2515 * \param prog Shader program whose variables need locations assigned
2527 gl_shader_program *prog,
2548 gl_linked_shader *const sh = prog->_LinkedShaders[target_index];
2611 linker_error(prog,
2622 if (prog->AttributeBindings->get(binding, var->name)) {
2635 if (prog->FragDataBindings->get(binding, name)) {
2640 if (prog->FragDataIndexBindings->get(index, name)) {
2671 linker_error(prog,
2768 linker_error(prog,
2779 if (target_index == MESA_SHADER_FRAGMENT && !prog->IsES) {
2803 linker_error(prog, "types do not match for aliased"
2816 linker_error(prog, "overlapping component is "
2826 (prog->IsES && prog->data->Version >= 300)) {
2827 linker_error(prog, "overlapping location is assigned "
2832 linker_warning(prog, "overlapping location is assigned "
2871 linker_error(prog, "too many %s (max %u)",
2887 linker_error(prog,
2926 linker_error(prog,
2951 linker_error(prog,
3014 store_fragdepth_layout(struct gl_shader_program *prog)
3016 if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) {
3020 struct exec_list *ir = prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->ir;
3039 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_NONE;
3042 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_ANY;
3045 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_GREATER;
3048 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_LESS;
3051 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_UNCHANGED;
3065 check_resources(struct gl_context *ctx, struct gl_shader_program *prog)
3071 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
3078 linker_error(prog, "Too many %s shader texture samplers\n",
3085 linker_warning(prog, "Too many %s shader default uniform block "
3091 linker_error(prog, "Too many %s shader default uniform block "
3100 linker_warning(prog, "Too many %s shader uniform components, "
3105 linker_error(prog, "Too many %s shader uniform components\n",
3116 linker_error(prog, "Too many %s uniform blocks (%d/%d)\n",
3124 linker_error(prog, "Too many %s shader storage blocks (%d/%d)\n",
3131 linker_error(prog, "Too many combined uniform blocks (%d/%d)\n",
3136 linker_error(prog, "Too many combined shader storage blocks (%d/%d)\n",
3141 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) {
3142 if (prog->data->UniformBlocks[i].UniformBufferSize >
3144 linker_error(prog, "Uniform block %s too big (%d/%d)\n",
3145 prog->data->UniformBlocks[i].Name,
3146 prog->data->UniformBlocks[i].UniformBufferSize,
3151 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) {
3152 if (prog->data->ShaderStorageBlocks[i].UniformBufferSize >
3154 linker_error(prog, "Shader storage block %s too big (%d/%d)\n",
3155 prog->data->ShaderStorageBlocks[i].Name,
3156 prog->data->ShaderStorageBlocks[i].UniformBufferSize,
3163 link_calculate_subroutine_compat(struct gl_shader_program *prog)
3165 unsigned mask = prog->data->linked_stages;
3168 struct gl_program *p = prog->_LinkedShaders[i]->Program;
3181 linker_error(prog, "subroutine uniform %s defined but no valid functions found\n", uni->type->name);
3199 check_subroutine_resources(struct gl_shader_program *prog)
3201 unsigned mask = prog->data->linked_stages;
3204 struct gl_program *p = prog->_LinkedShaders[i]->Program;
3207 linker_error(prog, "Too many %s shader subroutine uniforms\n",
3216 check_image_resources(struct gl_context *ctx, struct gl_shader_program *prog)
3226 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
3230 linker_error(prog, "Too many %s shader image uniforms (%u > %u)\n",
3250 linker_error(prog, "Too many combined image uniforms\n");
3254 linker_error(prog, "Too many combined image uniforms, shader storage "
3265 reserve_explicit_locations(struct gl_shader_program *prog,
3273 if (max_loc + 1 > prog->NumUniformRemapTable) {
3274 prog->UniformRemapTable =
3275 reralloc(prog, prog->UniformRemapTable,
3279 if (!prog->UniformRemapTable) {
3280 linker_error(prog, "Out of memory during linking.\n");
3285 for (unsigned i = prog->NumUniformRemapTable; i < max_loc + 1; i++)
3286 prog->UniformRemapTable[i] = NULL;
3288 prog->NumUniformRemapTable = max_loc + 1;
3295 if (prog->UniformRemapTable[loc] == INACTIVE_UNIFORM_EXPLICIT_LOCATION) {
3310 linker_error(prog,
3320 prog->UniformRemapTable[loc] = INACTIVE_UNIFORM_EXPLICIT_LOCATION;
3330 reserve_subroutine_explicit_locations(struct gl_shader_program *prog,
3345 linker_error(prog, "Out of memory during linking.\n");
3367 linker_error(prog,
3389 struct gl_shader_program *prog)
3400 linker_error(prog, "Out of memory during linking.\n");
3405 unsigned mask = prog->data->linked_stages;
3408 struct gl_program *p = prog->_LinkedShaders[i]->Program;
3410 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) {
3418 ret = reserve_subroutine_explicit_locations(prog, p, var);
3420 int slots = reserve_explicit_locations(prog, uniform_map,
3437 for (unsigned i = 0; i < prog->NumUniformRemapTable; i++) {
3439 if (prog->UniformRemapTable[i] == NULL) {
3442 current_block = rzalloc(prog, struct empty_uniform_block);
3444 exec_list_push_tail(&prog->EmptyUniformLocations,
3533 add_program_resource(struct gl_shader_program *prog,
3543 prog->ProgramResourceList =
3544 reralloc(prog,
3545 prog->ProgramResourceList,
3547 prog->NumProgramResourceList + 1);
3549 if (!prog->ProgramResourceList) {
3550 linker_error(prog, "Out of memory during linking.\n");
3555 &prog->ProgramResourceList[prog->NumProgramResourceList];
3561 prog->NumProgramResourceList++;
4377 struct gl_shader_program *prog)
4381 if (prog->_LinkedShaders[i] == NULL)
4388 v.run(prog->_LinkedShaders[i]->ir);
4394 linker_error(prog, msg, prog->IsES ? "ES" : "",
4395 prog->data->Version);
4398 linker_warning(prog, msg, prog->IsES ? "ES" : "",
4399 prog->data->Version);
4407 link_assign_subroutine_types(struct gl_shader_program *prog)
4409 unsigned mask = prog->data->linked_stages;
4412 gl_program *p = prog->_LinkedShaders[i]->Program;
4415 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) {
4429 linker_error(prog, "Too many subroutine functions declared.\n");
4451 linker_error(prog, "each subroutine index qualifier in the "
4494 disable_varying_optimizations_for_sso(struct gl_shader_program *prog)
4497 assert(prog->SeparateShader);
4504 if (!prog->_LinkedShaders[i])
4515 gl_linked_shader *sh = prog->_LinkedShaders[stage];
4544 struct gl_shader_program *prog, void *mem_ctx)
4553 if (prog->_LinkedShaders[i] != NULL) {
4554 link_invalidate_variable_locations(prog->_LinkedShaders[i]->ir);
4560 if (prog->_LinkedShaders[i] == NULL)
4563 match_explicit_outputs_to_inputs(prog->_LinkedShaders[prev],
4564 prog->_LinkedShaders[i]);
4568 if (!assign_attribute_or_color_locations(mem_ctx, prog, &ctx->Const,
4573 if (!assign_attribute_or_color_locations(mem_ctx, prog, &ctx->Const,
4588 if (prog->_LinkedShaders[i]) {
4590 process_xfb_layout_qualifiers(mem_ctx, prog->_LinkedShaders[i],
4598 num_tfeedback_decls = prog->TransformFeedback.NumVarying;
4599 varying_names = prog->TransformFeedback.VaryingNames;
4605 prog->xfb_program = prog->_LinkedShaders[last]->Program;
4607 if (prog->_LinkedShaders[i] == NULL)
4610 prog->xfb_program = prog->_LinkedShaders[i]->Program;
4623 linker_error(prog, "Transform feedback varyings specified, but "
4631 if (!parse_tfeedback_decls(ctx, prog, mem_ctx, num_tfeedback_decls,
4643 (num_tfeedback_decls != 0 || prog->SeparateShader)) {
4645 reserved_varying_slot(prog->_LinkedShaders[last], ir_var_shader_out);
4646 if (!assign_varying_locations(ctx, mem_ctx, prog,
4647 prog->_LinkedShaders[last], NULL,
4655 remove_unused_shader_inputs_and_outputs(prog->SeparateShader,
4656 prog->_LinkedShaders[first],
4658 remove_unused_shader_inputs_and_outputs(prog->SeparateShader,
4659 prog->_LinkedShaders[last],
4664 gl_linked_shader *const sh = prog->_LinkedShaders[last];
4670 if (prog->SeparateShader) {
4677 if (!assign_varying_locations(ctx, mem_ctx, prog,
4693 if (prog->_LinkedShaders[i] == NULL && i != 0)
4696 gl_linked_shader *const sh_i = prog->_LinkedShaders[i];
4697 gl_linked_shader *const sh_next = prog->_LinkedShaders[next];
4708 if (!assign_varying_locations(ctx, mem_ctx, prog, sh_i, sh_next,
4717 if (!check_against_output_limit(ctx, prog, sh_i, slots_used)) {
4723 if (!check_against_input_limit(ctx, prog, sh_next, slots_used))
4731 if (!store_tfeedback_info(ctx, prog, num_tfeedback_decls, tfeedback_decls,
4735 update_array_sizes(prog);
4736 link_assign_uniform_locations(prog, ctx, num_explicit_uniform_locs);
4737 link_assign_atomic_counter_resources(ctx, prog);
4739 link_calculate_subroutine_compat(prog);
4740 check_resources(ctx, prog);
4741 check_subroutine_resources(prog);
4742 check_image_resources(ctx, prog);
4743 link_check_atomic_counter_resources(ctx, prog);
4745 if (!prog->data->LinkStatus)
4749 if (prog->_LinkedShaders[i] == NULL)
4756 lower_ubo_reference(prog->_LinkedShaders[i],
4760 lower_shared_reference(prog->_LinkedShaders[i],
4761 &prog->Comp.SharedSize);
4763 lower_vector_derefs(prog->_LinkedShaders[i]);
4764 do_vec_index_to_swizzle(prog->_LinkedShaders[i]->ir);
4771 link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
4773 prog->data->LinkStatus = true; /* All error paths will set this to false */
4774 prog->data->Validated = false;
4789 if (prog->NumShaders == 0) {
4791 linker_error(prog, "no shaders attached to the program\n");
4799 prog->ARB_fragment_coord_conventions_enable = false;
4808 calloc(prog->NumShaders, sizeof(struct gl_shader *));
4814 for (unsigned i = 0; i < prog->NumShaders; i++) {
4815 min_version = MIN2(min_version, prog->Shaders[i]->Version);
4816 max_version = MAX2(max_version, prog->Shaders[i]->Version);
4818 if (prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) {
4819 linker_error(prog, "all shaders must use same shading "
4824 if (prog->Shaders[i]->info.ARB_fragment_coord_conventions_enable) {
4825 prog->ARB_fragment_coord_conventions_enable = true;
4828 gl_shader_stage shader_type = prog->Shaders[i]->Stage;
4829 shader_list[shader_type][num_shaders[shader_type]] = prog->Shaders[i];
4836 if (prog->Shaders[0]->IsES && min_version != max_version) {
4837 linker_error(prog, "all shaders must use same shading "
4842 prog->data->Version = max_version;
4843 prog->IsES = prog->Shaders[0]->IsES;
4847 if (!prog->SeparateShader) {
4850 linker_error(prog, "Geometry shader must be linked with "
4856 linker_error(prog, "Tessellation evaluation shader must be linked "
4862 linker_error(prog, "Tessellation control shader must be linked with "
4885 linker_error(prog, "Tessellation control shader must be linked with "
4893 num_shaders[MESA_SHADER_COMPUTE] != prog->NumShaders) {
4894 linker_error(prog, "Compute shaders may not be linked with any other "
4903 link_intrastage_shaders(mem_ctx, ctx, prog, shader_list[stage],
4906 if (!prog->data->LinkStatus) {
4914 validate_vertex_shader_executable(prog, sh, ctx);
4920 validate_tess_eval_shader_executable(prog, sh, ctx);
4923 validate_geometry_shader_executable(prog, sh, ctx);
4926 validate_fragment_shader_executable(prog, sh);
4929 if (!prog->data->LinkStatus) {
4935 prog->_LinkedShaders[stage] = sh;
4936 prog->data->linked_stages |= 1 << stage;
4941 prog->LastClipDistanceArraySize = prog->Geom.ClipDistanceArraySize;
4942 prog->LastCullDistanceArraySize = prog->Geom.CullDistanceArraySize;
4944 prog->LastClipDistanceArraySize = prog->TessEval.ClipDistanceArraySize;
4945 prog->LastCullDistanceArraySize = prog->TessEval.CullDistanceArraySize;
4947 prog->LastClipDistanceArraySize = prog->Vert.ClipDistanceArraySize;
4948 prog->LastCullDistanceArraySize = prog->Vert.CullDistanceArraySize;
4950 prog->LastClipDistanceArraySize = 0; /* Not used */
4951 prog->LastCullDistanceArraySize = 0; /* Not used */
4958 cross_validate_uniforms(prog);
4959 if (!prog->data->LinkStatus)
4969 if (!prog->_LinkedShaders[i])
4976 num_explicit_uniform_locs = check_explicit_uniform_locations(ctx, prog);
4977 link_assign_subroutine_types(prog);
4979 if (!prog->data->LinkStatus)
4982 resize_tes_inputs(ctx, prog);
4989 if (prog->_LinkedShaders[i] == NULL)
4992 validate_interstage_inout_blocks(prog, prog->_LinkedShaders[prev],
4993 prog->_LinkedShaders[i]);
4994 if (!prog->data->LinkStatus)
4997 cross_validate_outputs_to_inputs(prog,
4998 prog->_LinkedShaders[prev],
4999 prog->_LinkedShaders[i]);
5000 if (!prog->data->LinkStatus)
5007 validate_interstage_uniform_blocks(prog, prog->_LinkedShaders);
5008 if (!prog->data->LinkStatus)
5012 if (prog->_LinkedShaders[i] != NULL)
5013 lower_named_interface_blocks(mem_ctx, prog->_LinkedShaders[i]);
5022 if (max_version >= (prog->IsES ? 300 : 130)) {
5023 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
5029 if (prog->SeparateShader)
5030 disable_varying_optimizations_for_sso(prog);
5033 if (!interstage_cross_validate_uniform_blocks(prog, false))
5037 if (!interstage_cross_validate_uniform_blocks(prog, true))
5045 if (prog->_LinkedShaders[i] == NULL)
5048 detect_recursion_linked(prog, prog->_LinkedShaders[i]->ir);
5049 if (!prog->data->LinkStatus)
5053 lower_clip_cull_distance(prog, prog->_LinkedShaders[i]);
5057 lower_tess_level(prog->_LinkedShaders[i]);
5062 do_common_optimization(prog->_LinkedShaders[i]->ir, true, false,
5067 while (do_common_optimization(prog->_LinkedShaders[i]->ir, true, false,
5073 lower_const_arrays_to_uniforms(prog->_LinkedShaders[i]->ir, i);
5074 propagate_invariance(prog->_LinkedShaders[i]->ir);
5081 if ((!prog->IsES && prog->data->Version < 130) ||
5082 (prog->IsES && prog->data->Version < 300)) {
5083 if (!validate_sampler_array_indexing(ctx, prog))
5088 validate_geometry_shader_emissions(ctx, prog);
5090 store_fragdepth_layout(prog);
5093 prog, mem_ctx))
5122 if (!prog->SeparateShader && ctx->API == API_OPENGLES2 &&
5124 if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) {
5125 linker_error(prog, "program lacks a vertex shader\n");
5126 } else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) {
5127 linker_error(prog, "program lacks a fragment shader\n");
5134 if (prog->_LinkedShaders[i] == NULL)
5140 validate_ir_tree(prog->_LinkedShaders[i]->ir);
5143 reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir);
5150 delete prog->_LinkedShaders[i]->symbols;
5151 prog->_LinkedShaders[i]->symbols = NULL;