• Home
  • Raw
  • Download

Lines Matching refs:prog

266    gl_shader_program *prog;  member in __anon1a3432400111::array_resize_visitor
270 gl_shader_program *prog, in array_resize_visitor() argument
274 this->prog = prog; in array_resize_visitor()
297 linker_error(this->prog, "size of array %s declared as %u, " in visit()
308 linker_error(this->prog, "%s shader accesses element %i of " in visit()
454 linker_error(gl_shader_program *prog, const char *fmt, ...) in linker_error() argument
458 ralloc_strcat(&prog->data->InfoLog, "error: "); in linker_error()
460 ralloc_vasprintf_append(&prog->data->InfoLog, fmt, ap); in linker_error()
463 prog->data->LinkStatus = LINKING_FAILURE; in linker_error()
468 linker_warning(gl_shader_program *prog, const char *fmt, ...) in linker_warning() argument
472 ralloc_strcat(&prog->data->InfoLog, "warning: "); in linker_warning()
474 ralloc_vasprintf_append(&prog->data->InfoLog, fmt, ap); in linker_warning()
587 analyze_clip_cull_usage(struct gl_shader_program *prog, in analyze_clip_cull_usage() argument
595 if (prog->data->Version >= (prog->IsES ? 300 : 130)) { in analyze_clip_cull_usage()
612 !prog->IsES ? &gl_ClipVertex : NULL, in analyze_clip_cull_usage()
626 if (!prog->IsES) { in analyze_clip_cull_usage()
628 linker_error(prog, "%s shader writes to both `gl_ClipVertex' " in analyze_clip_cull_usage()
634 linker_error(prog, "%s shader writes to both `gl_ClipVertex' " in analyze_clip_cull_usage()
662 linker_error(prog, "%s shader: the combined size of " in analyze_clip_cull_usage()
682 validate_vertex_shader_executable(struct gl_shader_program *prog, in validate_vertex_shader_executable() argument
715 if (prog->data->Version < (prog->IsES ? 300 : 140)) { in validate_vertex_shader_executable()
719 if (prog->IsES) { in validate_vertex_shader_executable()
720 linker_warning(prog, in validate_vertex_shader_executable()
724 linker_error(prog, in validate_vertex_shader_executable()
731 analyze_clip_cull_usage(prog, shader, ctx, &shader->Program->info); in validate_vertex_shader_executable()
735 validate_tess_eval_shader_executable(struct gl_shader_program *prog, in validate_tess_eval_shader_executable() argument
742 analyze_clip_cull_usage(prog, shader, ctx, &shader->Program->info); in validate_tess_eval_shader_executable()
752 validate_fragment_shader_executable(struct gl_shader_program *prog, in validate_fragment_shader_executable() argument
764 linker_error(prog, "fragment shader writes to both " in validate_fragment_shader_executable()
778 validate_geometry_shader_executable(struct gl_shader_program *prog, in validate_geometry_shader_executable() argument
787 prog->Geom.VerticesIn = num_vertices; in validate_geometry_shader_executable()
789 analyze_clip_cull_usage(prog, shader, ctx, &shader->Program->info); in validate_geometry_shader_executable()
798 struct gl_shader_program *prog) in validate_geometry_shader_emissions() argument
800 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_GEOMETRY]; in validate_geometry_shader_emissions()
806 linker_error(prog, "Invalid call %s(%d). Accepted values for the " in validate_geometry_shader_emissions()
812 prog->Geom.ActiveStreamMask = emit_vertex.active_stream_mask(); in validate_geometry_shader_emissions()
813 prog->Geom.UsesEndPrimitive = emit_vertex.uses_end_primitive(); in validate_geometry_shader_emissions()
839 if (prog->Geom.ActiveStreamMask & ~(1 << 0) && in validate_geometry_shader_emissions()
841 linker_error(prog, "EmitStreamVertex(n) and EndStreamPrimitive(n) " in validate_geometry_shader_emissions()
848 validate_intrastage_arrays(struct gl_shader_program *prog, in validate_intrastage_arrays() argument
871 linker_error(prog, "%s `%s' declared as type " in validate_intrastage_arrays()
883 linker_error(prog, "%s `%s' declared as type " in validate_intrastage_arrays()
902 cross_validate_globals(struct gl_context *ctx, struct gl_shader_program *prog, in cross_validate_globals() argument
940 if (!validate_intrastage_arrays(prog, var, existing)) { in cross_validate_globals()
952 linker_error(prog, "%s `%s' declared as type " in cross_validate_globals()
965 linker_error(prog, "explicit locations for %s " in cross_validate_globals()
972 linker_error(prog, "explicit components for %s `%s' have " in cross_validate_globals()
1000 linker_error(prog, "explicit bindings for %s " in cross_validate_globals()
1012 linker_error(prog, "offset specifications for %s " in cross_validate_globals()
1035 linker_error(prog, in cross_validate_globals()
1042 linker_error(prog, in cross_validate_globals()
1073 linker_error(prog, "initializers for %s " in cross_validate_globals()
1092 linker_error(prog, in cross_validate_globals()
1101 linker_error(prog, "declarations for %s `%s' have " in cross_validate_globals()
1107 linker_error(prog, "declarations for %s `%s' have " in cross_validate_globals()
1113 linker_error(prog, "declarations for %s `%s` have " in cross_validate_globals()
1119 linker_error(prog, "declarations for %s `%s` have " in cross_validate_globals()
1129 prog->IsES && !var->get_interface_type() && in cross_validate_globals()
1131 if ((existing->data.used && var->data.used) || prog->data->Version >= 300) { in cross_validate_globals()
1132 linker_error(prog, "declarations for %s `%s` have " in cross_validate_globals()
1137 linker_warning(prog, "declarations for %s `%s` have " in cross_validate_globals()
1158 linker_error(prog, "declarations for %s `%s` are inside block " in cross_validate_globals()
1164 linker_error(prog, "declarations for %s `%s` are inside blocks " in cross_validate_globals()
1183 struct gl_shader_program *prog) in cross_validate_uniforms() argument
1187 if (prog->_LinkedShaders[i] == NULL) in cross_validate_uniforms()
1190 cross_validate_globals(ctx, prog, prog->_LinkedShaders[i]->ir, in cross_validate_uniforms()
1200 interstage_cross_validate_uniform_blocks(struct gl_shader_program *prog, in interstage_cross_validate_uniform_blocks() argument
1205 unsigned *num_blks = validate_ssbo ? &prog->data->NumShaderStorageBlocks : in interstage_cross_validate_uniform_blocks()
1206 &prog->data->NumUniformBlocks; in interstage_cross_validate_uniform_blocks()
1210 if (prog->_LinkedShaders[i]) { in interstage_cross_validate_uniform_blocks()
1213 prog->_LinkedShaders[i]->Program->info.num_ssbos; in interstage_cross_validate_uniform_blocks()
1216 prog->_LinkedShaders[i]->Program->info.num_ubos; in interstage_cross_validate_uniform_blocks()
1222 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in interstage_cross_validate_uniform_blocks()
1234 sh_num_blocks = prog->_LinkedShaders[i]->Program->info.num_ssbos; in interstage_cross_validate_uniform_blocks()
1237 sh_num_blocks = prog->_LinkedShaders[i]->Program->info.num_ubos; in interstage_cross_validate_uniform_blocks()
1242 int index = link_cross_validate_uniform_block(prog->data, &blks, in interstage_cross_validate_uniform_blocks()
1246 linker_error(prog, "buffer block `%s' has mismatching " in interstage_cross_validate_uniform_blocks()
1273 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in interstage_cross_validate_uniform_blocks()
1290 prog->data->ShaderStorageBlocks = blks; in interstage_cross_validate_uniform_blocks()
1292 prog->data->UniformBlocks = blks; in interstage_cross_validate_uniform_blocks()
1301 validate_invariant_builtins(struct gl_shader_program *prog, in validate_invariant_builtins() argument
1327 linker_error(prog, in validate_invariant_builtins()
1339 linker_error(prog, in validate_invariant_builtins()
1349 linker_error(prog, in validate_invariant_builtins()
1721 struct gl_shader_program *prog) in validate_xfb_buffer_stride() argument
1724 if (prog->TransformFeedback.BufferStride[idx] % 4) { in validate_xfb_buffer_stride()
1725 linker_error(prog, "invalid qualifier xfb_stride=%d must be a " in validate_xfb_buffer_stride()
1728 prog->TransformFeedback.BufferStride[idx]); in validate_xfb_buffer_stride()
1732 if (prog->TransformFeedback.BufferStride[idx] / 4 > in validate_xfb_buffer_stride()
1734 linker_error(prog, "The MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS " in validate_xfb_buffer_stride()
1748 struct gl_shader_program *prog, in link_xfb_stride_layout_qualifiers() argument
1753 prog->TransformFeedback.BufferStride[i] = 0; in link_xfb_stride_layout_qualifiers()
1761 if (prog->TransformFeedback.BufferStride[j] == 0) { in link_xfb_stride_layout_qualifiers()
1762 prog->TransformFeedback.BufferStride[j] = in link_xfb_stride_layout_qualifiers()
1764 if (!validate_xfb_buffer_stride(ctx, j, prog)) in link_xfb_stride_layout_qualifiers()
1766 } else if (prog->TransformFeedback.BufferStride[j] != in link_xfb_stride_layout_qualifiers()
1768 linker_error(prog, in link_xfb_stride_layout_qualifiers()
1771 prog->TransformFeedback.BufferStride[j], in link_xfb_stride_layout_qualifiers()
1785 link_bindless_layout_qualifiers(struct gl_shader_program *prog, in link_bindless_layout_qualifiers() argument
1815 linker_error(prog, "both bindless_sampler and bound_sampler, or " in link_bindless_layout_qualifiers()
1827 link_layer_viewport_relative_qualifier(struct gl_shader_program *prog, in link_layer_viewport_relative_qualifier() argument
1850 linker_error(prog, "all gl_Layer redeclarations must have identical " in link_layer_viewport_relative_qualifier()
1862 link_tcs_out_layout_qualifiers(struct gl_shader_program *prog, in link_tcs_out_layout_qualifiers() argument
1889 linker_error(prog, "tessellation control shader defined with " in link_tcs_out_layout_qualifiers()
1905 linker_error(prog, "tessellation control shader didn't declare " in link_tcs_out_layout_qualifiers()
1919 link_tes_in_layout_qualifiers(struct gl_shader_program *prog, in link_tes_in_layout_qualifiers() argument
1954 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
1965 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
1975 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
1985 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
1999 linker_error(prog, in link_tes_in_layout_qualifiers()
2027 link_fs_inout_layout_qualifiers(struct gl_shader_program *prog, in link_fs_inout_layout_qualifiers() argument
2038 (prog->data->Version < 150 && in link_fs_inout_layout_qualifiers()
2039 !prog->ARB_fragment_coord_conventions_enable)) in link_fs_inout_layout_qualifiers()
2054 linker_error(prog, "fragment shader defined with conflicting " in link_fs_inout_layout_qualifiers()
2066 linker_error(prog, "fragment shader defined with conflicting " in link_fs_inout_layout_qualifiers()
2108 link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, in link_gs_inout_layout_qualifiers() argument
2117 prog->data->Version < 150) in link_gs_inout_layout_qualifiers()
2143 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2154 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2164 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2176 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2191 linker_error(prog, in link_gs_inout_layout_qualifiers()
2197 linker_error(prog, in link_gs_inout_layout_qualifiers()
2203 linker_error(prog, in link_gs_inout_layout_qualifiers()
2221 link_cs_input_layout_qualifiers(struct gl_shader_program *prog, in link_cs_input_layout_qualifiers() argument
2257 linker_error(prog, "compute shader defined with conflicting " in link_cs_input_layout_qualifiers()
2276 linker_error(prog, "compute shader defined with both fixed and " in link_cs_input_layout_qualifiers()
2287 linker_error(prog, "compute shader defined with conflicting " in link_cs_input_layout_qualifiers()
2301 linker_error(prog, "compute shader must contain a fixed or a variable " in link_cs_input_layout_qualifiers()
2308 linker_error(prog, "derivative_group_quadsNV must be used with a " in link_cs_input_layout_qualifiers()
2314 linker_error(prog, "derivative_group_quadsNV must be used with a local" in link_cs_input_layout_qualifiers()
2323 linker_error(prog, "derivative_group_linearNV must be used with a " in link_cs_input_layout_qualifiers()
2377 struct gl_shader_program *prog, in link_intrastage_shaders() argument
2393 cross_validate_globals(ctx, prog, shader_list[i]->ir, &variables, in link_intrastage_shaders()
2397 if (!prog->data->LinkStatus) in link_intrastage_shaders()
2402 validate_intrastage_interface_blocks(prog, (const gl_shader **)shader_list, in link_intrastage_shaders()
2404 if (!prog->data->LinkStatus) in link_intrastage_shaders()
2435 linker_error(prog, "function `%s' is multiply defined\n", in link_intrastage_shaders()
2463 linker_error(prog, "%s shader lacks `main'\n", in link_intrastage_shaders()
2473 ctx->Driver.NewProgram(ctx, shader_list[0]->Stage, prog->Name, false); in link_intrastage_shaders()
2475 prog->data->LinkStatus = LINKING_FAILURE; in link_intrastage_shaders()
2480 _mesa_reference_shader_program_data(ctx, &gl_prog->sh.data, prog->data); in link_intrastage_shaders()
2488 link_fs_inout_layout_qualifiers(prog, linked, shader_list, num_shaders); in link_intrastage_shaders()
2489 link_tcs_out_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2490 link_tes_in_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2491 link_gs_inout_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2492 link_cs_input_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2495 link_xfb_stride_layout_qualifiers(ctx, prog, shader_list, num_shaders); in link_intrastage_shaders()
2497 link_bindless_layout_qualifiers(prog, shader_list, num_shaders); in link_intrastage_shaders()
2499 link_layer_viewport_relative_qualifier(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2526 if (!link_function_calls(prog, linked, shader_list, num_shaders)) { in link_intrastage_shaders()
2543 link_uniform_blocks(mem_ctx, ctx, prog, linked, &ubo_blocks, in link_intrastage_shaders()
2549 linker_error(prog, "Too many %s uniform blocks (%d/%d)\n", in link_intrastage_shaders()
2557 linker_error(prog, "Too many %s shader storage blocks (%d/%d)\n", in link_intrastage_shaders()
2562 if (!prog->data->LinkStatus) { in link_intrastage_shaders()
2595 array_resize_visitor input_resize_visitor(num_vertices, prog, in link_intrastage_shaders()
2637 update_array_sizes(struct gl_shader_program *prog) in update_array_sizes() argument
2640 if (prog->_LinkedShaders[i] == NULL) in update_array_sizes()
2645 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) { in update_array_sizes()
2668 if (prog->_LinkedShaders[j] == NULL) in update_array_sizes()
2671 foreach_in_list(ir_instruction, node2, prog->_LinkedShaders[j]->ir) { in update_array_sizes()
2707 v.run(prog->_LinkedShaders[i]->ir); in update_array_sizes()
2718 struct gl_shader_program *prog) in resize_tes_inputs() argument
2720 if (prog->_LinkedShaders[MESA_SHADER_TESS_EVAL] == NULL) in resize_tes_inputs()
2723 gl_linked_shader *const tcs = prog->_LinkedShaders[MESA_SHADER_TESS_CTRL]; in resize_tes_inputs()
2724 gl_linked_shader *const tes = prog->_LinkedShaders[MESA_SHADER_TESS_EVAL]; in resize_tes_inputs()
2734 array_resize_visitor input_resize_visitor(num_vertices, prog, in resize_tes_inputs()
2812 gl_shader_program *prog, in assign_attribute_or_color_locations() argument
2833 gl_linked_shader *const sh = prog->_LinkedShaders[target_index]; in assign_attribute_or_color_locations()
2898 linker_error(prog, in assign_attribute_or_color_locations()
2909 if (prog->AttributeBindings->get(binding, var->name)) { in assign_attribute_or_color_locations()
2922 if (prog->FragDataBindings->get(binding, name)) { in assign_attribute_or_color_locations()
2927 if (prog->FragDataIndexBindings->get(index, name)) { in assign_attribute_or_color_locations()
2958 linker_error(prog, in assign_attribute_or_color_locations()
3055 linker_error(prog, in assign_attribute_or_color_locations()
3066 if (target_index == MESA_SHADER_FRAGMENT && !prog->IsES) { in assign_attribute_or_color_locations()
3090 linker_error(prog, "types do not match for aliased" in assign_attribute_or_color_locations()
3103 linker_error(prog, "overlapping component is " in assign_attribute_or_color_locations()
3113 (prog->IsES && prog->data->Version >= 300)) { in assign_attribute_or_color_locations()
3114 linker_error(prog, "overlapping location is assigned " in assign_attribute_or_color_locations()
3119 linker_warning(prog, "overlapping location is assigned " in assign_attribute_or_color_locations()
3125 if (target_index == MESA_SHADER_FRAGMENT && !prog->IsES) { in assign_attribute_or_color_locations()
3167 linker_error(prog, "too many %s (max %u)", in assign_attribute_or_color_locations()
3186 linker_error(prog, in assign_attribute_or_color_locations()
3225 linker_error(prog, in assign_attribute_or_color_locations()
3250 linker_error(prog, in assign_attribute_or_color_locations()
3319 store_fragdepth_layout(struct gl_shader_program *prog) in store_fragdepth_layout() argument
3321 if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) { in store_fragdepth_layout()
3325 struct exec_list *ir = prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->ir; in store_fragdepth_layout()
3344 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_NONE; in store_fragdepth_layout()
3347 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_ANY; in store_fragdepth_layout()
3350 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_GREATER; in store_fragdepth_layout()
3353 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_LESS; in store_fragdepth_layout()
3356 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_UNCHANGED; in store_fragdepth_layout()
3370 check_image_resources(struct gl_context *ctx, struct gl_shader_program *prog) in check_image_resources() argument
3380 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in check_image_resources()
3398 linker_error(prog, "Too many combined image uniforms\n"); in check_image_resources()
3402 linker_error(prog, "Too many combined image uniforms, shader storage " in check_image_resources()
3413 reserve_explicit_locations(struct gl_shader_program *prog, in reserve_explicit_locations() argument
3421 if (max_loc + 1 > prog->NumUniformRemapTable) { in reserve_explicit_locations()
3422 prog->UniformRemapTable = in reserve_explicit_locations()
3423 reralloc(prog, prog->UniformRemapTable, in reserve_explicit_locations()
3427 if (!prog->UniformRemapTable) { in reserve_explicit_locations()
3428 linker_error(prog, "Out of memory during linking.\n"); in reserve_explicit_locations()
3433 for (unsigned i = prog->NumUniformRemapTable; i < max_loc + 1; i++) in reserve_explicit_locations()
3434 prog->UniformRemapTable[i] = NULL; in reserve_explicit_locations()
3436 prog->NumUniformRemapTable = max_loc + 1; in reserve_explicit_locations()
3443 if (prog->UniformRemapTable[loc] == INACTIVE_UNIFORM_EXPLICIT_LOCATION) { in reserve_explicit_locations()
3458 linker_error(prog, in reserve_explicit_locations()
3468 prog->UniformRemapTable[loc] = INACTIVE_UNIFORM_EXPLICIT_LOCATION; in reserve_explicit_locations()
3478 reserve_subroutine_explicit_locations(struct gl_shader_program *prog, in reserve_subroutine_explicit_locations() argument
3493 linker_error(prog, "Out of memory during linking.\n"); in reserve_subroutine_explicit_locations()
3515 linker_error(prog, in reserve_subroutine_explicit_locations()
3537 struct gl_shader_program *prog) in check_explicit_uniform_locations() argument
3539 prog->NumExplicitUniformLocations = 0; in check_explicit_uniform_locations()
3550 linker_error(prog, "Out of memory during linking.\n"); in check_explicit_uniform_locations()
3555 unsigned mask = prog->data->linked_stages; in check_explicit_uniform_locations()
3558 struct gl_program *p = prog->_LinkedShaders[i]->Program; in check_explicit_uniform_locations()
3560 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) { in check_explicit_uniform_locations()
3568 ret = reserve_subroutine_explicit_locations(prog, p, var); in check_explicit_uniform_locations()
3570 int slots = reserve_explicit_locations(prog, uniform_map, in check_explicit_uniform_locations()
3585 link_util_update_empty_uniform_locations(prog); in check_explicit_uniform_locations()
3588 prog->NumExplicitUniformLocations = entries_total; in check_explicit_uniform_locations()
4247 struct gl_shader_program *prog) in validate_sampler_array_indexing() argument
4251 if (prog->_LinkedShaders[i] == NULL) in validate_sampler_array_indexing()
4258 v.run(prog->_LinkedShaders[i]->ir); in validate_sampler_array_indexing()
4264 linker_error(prog, msg, prog->IsES ? "ES" : "", in validate_sampler_array_indexing()
4265 prog->data->Version); in validate_sampler_array_indexing()
4268 linker_warning(prog, msg, prog->IsES ? "ES" : "", in validate_sampler_array_indexing()
4269 prog->data->Version); in validate_sampler_array_indexing()
4277 link_assign_subroutine_types(struct gl_shader_program *prog) in link_assign_subroutine_types() argument
4279 unsigned mask = prog->data->linked_stages; in link_assign_subroutine_types()
4282 gl_program *p = prog->_LinkedShaders[i]->Program; in link_assign_subroutine_types()
4285 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) { in link_assign_subroutine_types()
4299 linker_error(prog, "Too many subroutine functions declared.\n"); in link_assign_subroutine_types()
4321 linker_error(prog, "each subroutine index qualifier in the " in link_assign_subroutine_types()
4340 verify_subroutine_associated_funcs(struct gl_shader_program *prog) in verify_subroutine_associated_funcs() argument
4342 unsigned mask = prog->data->linked_stages; in verify_subroutine_associated_funcs()
4345 gl_program *p = prog->_LinkedShaders[i]->Program; in verify_subroutine_associated_funcs()
4346 glsl_symbol_table *symbols = prog->_LinkedShaders[i]->symbols; in verify_subroutine_associated_funcs()
4363 linker_error(prog, "%s shader contains two or more function " in verify_subroutine_associated_funcs()
4402 disable_varying_optimizations_for_sso(struct gl_shader_program *prog) in disable_varying_optimizations_for_sso() argument
4405 assert(prog->SeparateShader); in disable_varying_optimizations_for_sso()
4412 if (!prog->_LinkedShaders[i]) in disable_varying_optimizations_for_sso()
4423 gl_linked_shader *sh = prog->_LinkedShaders[stage]; in disable_varying_optimizations_for_sso()
4443 struct gl_shader_program *prog) in link_and_validate_uniforms() argument
4447 update_array_sizes(prog); in link_and_validate_uniforms()
4448 link_assign_uniform_locations(prog, ctx); in link_and_validate_uniforms()
4450 if (prog->data->LinkStatus == LINKING_FAILURE) in link_and_validate_uniforms()
4453 link_util_calculate_subroutine_compat(prog); in link_and_validate_uniforms()
4454 link_util_check_uniform_resources(ctx, prog); in link_and_validate_uniforms()
4455 link_util_check_subroutine_resources(prog); in link_and_validate_uniforms()
4456 check_image_resources(ctx, prog); in link_and_validate_uniforms()
4457 link_assign_atomic_counter_resources(ctx, prog); in link_and_validate_uniforms()
4458 link_check_atomic_counter_resources(ctx, prog); in link_and_validate_uniforms()
4464 struct gl_shader_program *prog, void *mem_ctx) in link_varyings_and_uniforms() argument
4468 if (prog->_LinkedShaders[i] != NULL) { in link_varyings_and_uniforms()
4469 link_invalidate_variable_locations(prog->_LinkedShaders[i]->ir); in link_varyings_and_uniforms()
4475 if (prog->_LinkedShaders[i] == NULL) in link_varyings_and_uniforms()
4478 match_explicit_outputs_to_inputs(prog->_LinkedShaders[prev], in link_varyings_and_uniforms()
4479 prog->_LinkedShaders[i]); in link_varyings_and_uniforms()
4483 if (!assign_attribute_or_color_locations(mem_ctx, prog, &ctx->Const, in link_varyings_and_uniforms()
4488 if (!assign_attribute_or_color_locations(mem_ctx, prog, &ctx->Const, in link_varyings_and_uniforms()
4493 prog->last_vert_prog = NULL; in link_varyings_and_uniforms()
4495 if (prog->_LinkedShaders[i] == NULL) in link_varyings_and_uniforms()
4498 prog->last_vert_prog = prog->_LinkedShaders[i]->Program; in link_varyings_and_uniforms()
4502 if (!link_varyings(prog, first, last, ctx, mem_ctx)) in link_varyings_and_uniforms()
4506 link_and_validate_uniforms(ctx, prog); in link_varyings_and_uniforms()
4508 if (!prog->data->LinkStatus) in link_varyings_and_uniforms()
4512 if (prog->_LinkedShaders[i] == NULL) in link_varyings_and_uniforms()
4519 lower_ubo_reference(prog->_LinkedShaders[i], in link_varyings_and_uniforms()
4524 lower_shared_reference(ctx, prog, prog->_LinkedShaders[i]); in link_varyings_and_uniforms()
4526 lower_vector_derefs(prog->_LinkedShaders[i]); in link_varyings_and_uniforms()
4527 do_vec_index_to_swizzle(prog->_LinkedShaders[i]->ir); in link_varyings_and_uniforms()
4552 link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) in link_shaders() argument
4554 prog->data->LinkStatus = LINKING_SUCCESS; /* All error paths will set this to false */ in link_shaders()
4555 prog->data->Validated = false; in link_shaders()
4570 if (prog->NumShaders == 0) { in link_shaders()
4572 linker_error(prog, "no shaders attached to the program\n"); in link_shaders()
4577 if (shader_cache_read_program_metadata(ctx, prog)) in link_shaders()
4583 prog->ARB_fragment_coord_conventions_enable = false; in link_shaders()
4592 calloc(prog->NumShaders, sizeof(struct gl_shader *)); in link_shaders()
4598 for (unsigned i = 0; i < prog->NumShaders; i++) { in link_shaders()
4599 min_version = MIN2(min_version, prog->Shaders[i]->Version); in link_shaders()
4600 max_version = MAX2(max_version, prog->Shaders[i]->Version); in link_shaders()
4603 prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) { in link_shaders()
4604 linker_error(prog, "all shaders must use same shading " in link_shaders()
4609 if (prog->Shaders[i]->ARB_fragment_coord_conventions_enable) { in link_shaders()
4610 prog->ARB_fragment_coord_conventions_enable = true; in link_shaders()
4613 gl_shader_stage shader_type = prog->Shaders[i]->Stage; in link_shaders()
4614 shader_list[shader_type][num_shaders[shader_type]] = prog->Shaders[i]; in link_shaders()
4621 if (!ctx->Const.AllowGLSLRelaxedES && prog->Shaders[0]->IsES && in link_shaders()
4623 linker_error(prog, "all shaders must use same shading " in link_shaders()
4628 prog->data->Version = max_version; in link_shaders()
4629 prog->IsES = prog->Shaders[0]->IsES; in link_shaders()
4633 if (!prog->SeparateShader) { in link_shaders()
4636 linker_error(prog, "Geometry shader must be linked with " in link_shaders()
4642 linker_error(prog, "Tessellation evaluation shader must be linked " in link_shaders()
4648 linker_error(prog, "Tessellation control shader must be linked with " in link_shaders()
4679 linker_error(prog, "Tessellation control shader must be linked with " in link_shaders()
4684 if (prog->IsES) { in link_shaders()
4687 linker_error(prog, "GLSL ES requires non-separable programs " in link_shaders()
4697 num_shaders[MESA_SHADER_COMPUTE] != prog->NumShaders) { in link_shaders()
4698 linker_error(prog, "Compute shaders may not be linked with any other " in link_shaders()
4707 link_intrastage_shaders(mem_ctx, ctx, prog, shader_list[stage], in link_shaders()
4710 if (!prog->data->LinkStatus) { in link_shaders()
4718 validate_vertex_shader_executable(prog, sh, ctx); in link_shaders()
4724 validate_tess_eval_shader_executable(prog, sh, ctx); in link_shaders()
4727 validate_geometry_shader_executable(prog, sh, ctx); in link_shaders()
4730 validate_fragment_shader_executable(prog, sh); in link_shaders()
4733 if (!prog->data->LinkStatus) { in link_shaders()
4739 prog->_LinkedShaders[stage] = sh; in link_shaders()
4740 prog->data->linked_stages |= 1 << stage; in link_shaders()
4748 cross_validate_uniforms(ctx, prog); in link_shaders()
4749 if (!prog->data->LinkStatus) in link_shaders()
4759 if (!prog->_LinkedShaders[i]) in link_shaders()
4766 check_explicit_uniform_locations(ctx, prog); in link_shaders()
4767 link_assign_subroutine_types(prog); in link_shaders()
4768 verify_subroutine_associated_funcs(prog); in link_shaders()
4770 if (!prog->data->LinkStatus) in link_shaders()
4773 resize_tes_inputs(ctx, prog); in link_shaders()
4780 if (prog->_LinkedShaders[i] == NULL) in link_shaders()
4783 validate_interstage_inout_blocks(prog, prog->_LinkedShaders[prev], in link_shaders()
4784 prog->_LinkedShaders[i]); in link_shaders()
4785 if (!prog->data->LinkStatus) in link_shaders()
4788 cross_validate_outputs_to_inputs(ctx, prog, in link_shaders()
4789 prog->_LinkedShaders[prev], in link_shaders()
4790 prog->_LinkedShaders[i]); in link_shaders()
4791 if (!prog->data->LinkStatus) in link_shaders()
4802 validate_first_and_last_interface_explicit_locations(ctx, prog, in link_shaders()
4807 validate_interstage_uniform_blocks(prog, prog->_LinkedShaders); in link_shaders()
4808 if (!prog->data->LinkStatus) in link_shaders()
4812 if (prog->_LinkedShaders[i] != NULL) in link_shaders()
4813 lower_named_interface_blocks(mem_ctx, prog->_LinkedShaders[i]); in link_shaders()
4816 if (prog->IsES && prog->data->Version == 100) in link_shaders()
4817 if (!validate_invariant_builtins(prog, in link_shaders()
4818 prog->_LinkedShaders[MESA_SHADER_VERTEX], in link_shaders()
4819 prog->_LinkedShaders[MESA_SHADER_FRAGMENT])) in link_shaders()
4828 if (max_version >= (prog->IsES ? 300 : 130)) { in link_shaders()
4829 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT]; in link_shaders()
4835 if (prog->SeparateShader) in link_shaders()
4836 disable_varying_optimizations_for_sso(prog); in link_shaders()
4839 if (!interstage_cross_validate_uniform_blocks(prog, false)) in link_shaders()
4843 if (!interstage_cross_validate_uniform_blocks(prog, true)) in link_shaders()
4851 if (prog->_LinkedShaders[i] == NULL) in link_shaders()
4854 detect_recursion_linked(prog, prog->_LinkedShaders[i]->ir); in link_shaders()
4855 if (!prog->data->LinkStatus) in link_shaders()
4859 lower_clip_cull_distance(prog, prog->_LinkedShaders[i]); in link_shaders()
4863 lower_tess_level(prog->_LinkedShaders[i]); in link_shaders()
4880 if (prog->IsES && i == MESA_SHADER_VERTEX) { in link_shaders()
4881 if (!assign_attribute_or_color_locations(mem_ctx, prog, &ctx->Const, in link_shaders()
4890 linker_optimisation_loop(ctx, prog->_LinkedShaders[i]->ir, i); in link_shaders()
4894 lower_const_arrays_to_uniforms(prog->_LinkedShaders[i]->ir, i, in link_shaders()
4896 linker_optimisation_loop(ctx, prog->_LinkedShaders[i]->ir, i); in link_shaders()
4904 if ((!prog->IsES && prog->data->Version < 130) || in link_shaders()
4905 (prog->IsES && prog->data->Version < 300)) { in link_shaders()
4906 if (!validate_sampler_array_indexing(ctx, prog)) in link_shaders()
4911 validate_geometry_shader_emissions(ctx, prog); in link_shaders()
4913 store_fragdepth_layout(prog); in link_shaders()
4915 if(!link_varyings_and_uniforms(first, last, ctx, prog, mem_ctx)) in link_shaders()
4922 if (prog->_LinkedShaders[i] == NULL) in link_shaders()
4925 optimize_swizzles(prog->_LinkedShaders[i]->ir); in link_shaders()
4954 if (!prog->SeparateShader && ctx->API == API_OPENGLES2 && in link_shaders()
4956 if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) { in link_shaders()
4957 linker_error(prog, "program lacks a vertex shader\n"); in link_shaders()
4958 } else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) { in link_shaders()
4959 linker_error(prog, "program lacks a fragment shader\n"); in link_shaders()
4966 if (prog->_LinkedShaders[i] == NULL) in link_shaders()
4972 validate_ir_tree(prog->_LinkedShaders[i]->ir); in link_shaders()
4975 reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir); in link_shaders()
4982 delete prog->_LinkedShaders[i]->symbols; in link_shaders()
4983 prog->_LinkedShaders[i]->symbols = NULL; in link_shaders()