Lines Matching defs:prog
269 gl_shader_program *prog;
273 gl_shader_program *prog,
277 this->prog = prog;
300 linker_error(this->prog, "size of array %s declared as %u, "
311 linker_error(this->prog, "%s shader accesses element %i of "
457 linker_error(gl_shader_program *prog, const char *fmt, ...)
461 ralloc_strcat(&prog->data->InfoLog, "error: ");
463 ralloc_vasprintf_append(&prog->data->InfoLog, fmt, ap);
466 prog->data->LinkStatus = LINKING_FAILURE;
471 linker_warning(gl_shader_program *prog, const char *fmt, ...)
475 ralloc_strcat(&prog->data->InfoLog, "warning: ");
477 ralloc_vasprintf_append(&prog->data->InfoLog, fmt, ap);
517 analyze_clip_cull_usage(struct gl_shader_program *prog,
532 if (prog->data->Version >= (prog->IsES ? 300 : 130)) {
549 !prog->IsES ? &gl_ClipVertex : NULL,
563 if (!prog->IsES) {
565 linker_error(prog, "%s shader writes to both `gl_ClipVertex' "
571 linker_error(prog, "%s shader writes to both `gl_ClipVertex' "
599 linker_error(prog, "%s shader: the combined size of "
619 validate_vertex_shader_executable(struct gl_shader_program *prog,
652 if (prog->data->Version < (prog->IsES ? 300 : 140)) {
656 if (prog->IsES) {
657 linker_warning(prog,
661 linker_error(prog,
668 analyze_clip_cull_usage(prog, shader, consts, &shader->Program->info);
672 validate_tess_eval_shader_executable(struct gl_shader_program *prog,
679 analyze_clip_cull_usage(prog, shader, consts, &shader->Program->info);
689 validate_fragment_shader_executable(struct gl_shader_program *prog,
701 linker_error(prog, "fragment shader writes to both "
709 * Also sets prog->Geom.VerticesIn, and info.clip_distance_array_sizeand
715 validate_geometry_shader_executable(struct gl_shader_program *prog,
724 prog->Geom.VerticesIn = num_vertices;
726 analyze_clip_cull_usage(prog, shader, consts, &shader->Program->info);
735 struct gl_shader_program *prog)
737 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_GEOMETRY];
743 linker_error(prog, "Invalid call %s(%d). Accepted values for the "
749 prog->Geom.ActiveStreamMask = emit_vertex.active_stream_mask();
750 prog->Geom.UsesEndPrimitive = emit_vertex.uses_end_primitive();
772 * does. We can use prog->Geom.ActiveStreamMask to check whether only the
776 if (prog->Geom.ActiveStreamMask & ~(1 << 0) &&
778 linker_error(prog, "EmitStreamVertex(n) and EndStreamPrimitive(n) "
785 validate_intrastage_arrays(struct gl_shader_program *prog,
808 linker_error(prog, "%s `%s' declared as type "
820 linker_error(prog, "%s `%s' declared as type "
840 struct gl_shader_program *prog,
878 if (!validate_intrastage_arrays(prog, var, existing)) {
890 linker_error(prog, "%s `%s' declared as type "
903 linker_error(prog, "explicit locations for %s "
910 linker_error(prog, "explicit components for %s `%s' have "
938 linker_error(prog, "explicit bindings for %s "
950 linker_error(prog, "offset specifications for %s "
973 linker_error(prog,
980 linker_error(prog,
1011 linker_error(prog, "initializers for %s "
1030 linker_error(prog,
1039 linker_error(prog, "declarations for %s `%s' have "
1045 linker_error(prog, "declarations for %s `%s' have "
1051 linker_error(prog, "declarations for %s `%s` have "
1057 linker_error(prog, "declarations for %s `%s` have "
1067 prog->IsES && !var->get_interface_type() &&
1069 if ((existing->data.used && var->data.used) || prog->data->Version >= 300) {
1070 linker_error(prog, "declarations for %s `%s` have "
1075 linker_warning(prog, "declarations for %s `%s` have "
1096 linker_error(prog, "declarations for %s `%s` are inside block "
1102 linker_error(prog, "declarations for %s `%s` are inside blocks "
1121 struct gl_shader_program *prog)
1125 if (prog->_LinkedShaders[i] == NULL)
1128 cross_validate_globals(consts, prog, prog->_LinkedShaders[i]->ir,
1138 interstage_cross_validate_uniform_blocks(struct gl_shader_program *prog,
1143 unsigned *num_blks = validate_ssbo ? &prog->data->NumShaderStorageBlocks :
1144 &prog->data->NumUniformBlocks;
1148 if (prog->_LinkedShaders[i]) {
1151 prog->_LinkedShaders[i]->Program->info.num_ssbos;
1154 prog->_LinkedShaders[i]->Program->info.num_ubos;
1160 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
1173 sh_num_blocks = prog->_LinkedShaders[i]->Program->info.num_ssbos;
1176 sh_num_blocks = prog->_LinkedShaders[i]->Program->info.num_ubos;
1181 int index = link_cross_validate_uniform_block(prog->data, &blks,
1185 linker_error(prog, "buffer block `%s' has mismatching "
1212 struct gl_linked_shader *sh = prog->_LinkedShaders[i];
1229 prog->data->ShaderStorageBlocks = blks;
1231 prog->data->UniformBlocks = blks;
1240 validate_invariant_builtins(struct gl_shader_program *prog,
1266 linker_error(prog,
1278 linker_error(prog,
1288 linker_error(prog,
1660 struct gl_shader_program *prog)
1663 if (prog->TransformFeedback.BufferStride[idx] % 4) {
1664 linker_error(prog, "invalid qualifier xfb_stride=%d must be a "
1667 prog->TransformFeedback.BufferStride[idx]);
1671 if (prog->TransformFeedback.BufferStride[idx] / 4 >
1673 linker_error(prog, "The MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS "
1687 struct gl_shader_program *prog,
1692 prog->TransformFeedback.BufferStride[i] = 0;
1700 if (prog->TransformFeedback.BufferStride[j] == 0) {
1701 prog->TransformFeedback.BufferStride[j] =
1703 if (!validate_xfb_buffer_stride(consts, j, prog))
1705 } else if (prog->TransformFeedback.BufferStride[j] !=
1707 linker_error(prog,
1710 prog->TransformFeedback.BufferStride[j],
1724 link_bindless_layout_qualifiers(struct gl_shader_program *prog,
1754 linker_error(prog, "both bindless_sampler and bound_sampler, or "
1766 link_layer_viewport_relative_qualifier(struct gl_shader_program *prog,
1789 linker_error(prog, "all gl_Layer redeclarations must have identical "
1801 link_tcs_out_layout_qualifiers(struct gl_shader_program *prog,
1828 linker_error(prog, "tessellation control shader defined with "
1844 linker_error(prog, "tessellation control shader didn't declare "
1858 link_tes_in_layout_qualifiers(struct gl_shader_program *prog,
1893 linker_error(prog, "tessellation evaluation shader defined with "
1904 linker_error(prog, "tessellation evaluation shader defined with "
1914 linker_error(prog, "tessellation evaluation shader defined with "
1924 linker_error(prog, "tessellation evaluation shader defined with "
1938 linker_error(prog,
1966 link_fs_inout_layout_qualifiers(struct gl_shader_program *prog,
1977 (prog->data->Version < 150 &&
1978 !prog->ARB_fragment_coord_conventions_enable))
1993 linker_error(prog, "fragment shader defined with conflicting "
2005 linker_error(prog, "fragment shader defined with conflicting "
2047 link_gs_inout_layout_qualifiers(struct gl_shader_program *prog,
2056 prog->data->Version < 150)
2082 linker_error(prog, "geometry shader defined with conflicting "
2093 linker_error(prog, "geometry shader defined with conflicting "
2103 linker_error(prog, "geometry shader defined with conflicting "
2115 linker_error(prog, "geometry shader defined with conflicting "
2130 linker_error(prog,
2136 linker_error(prog,
2142 linker_error(prog,
2160 link_cs_input_layout_qualifiers(struct gl_shader_program *prog,
2196 linker_error(prog, "compute shader defined with conflicting "
2215 linker_error(prog, "compute shader defined with both fixed and "
2226 linker_error(prog, "compute shader defined with conflicting "
2240 linker_error(prog, "compute shader must contain a fixed or a variable "
2247 linker_error(prog, "derivative_group_quadsNV must be used with a "
2253 linker_error(prog, "derivative_group_quadsNV must be used with a local"
2262 linker_error(prog, "derivative_group_linearNV must be used with a "
2316 struct gl_shader_program *prog,
2332 cross_validate_globals(&ctx->Const, prog, shader_list[i]->ir, &variables,
2336 if (!prog->data->LinkStatus)
2341 validate_intrastage_interface_blocks(prog, (const gl_shader **)shader_list,
2343 if (!prog->data->LinkStatus)
2374 linker_error(prog, "function `%s' is multiply defined\n",
2402 linker_error(prog, "%s shader lacks `main'\n",
2412 ctx->Driver.NewProgram(ctx, shader_list[0]->Stage, prog->Name, false);
2414 prog->data->LinkStatus = LINKING_FAILURE;
2419 _mesa_reference_shader_program_data(&gl_prog->sh.data, prog->data);
2427 link_fs_inout_layout_qualifiers(prog, linked, shader_list, num_shaders);
2428 link_tcs_out_layout_qualifiers(prog, gl_prog, shader_list, num_shaders);
2429 link_tes_in_layout_qualifiers(prog, gl_prog, shader_list, num_shaders);
2430 link_gs_inout_layout_qualifiers(prog, gl_prog, shader_list, num_shaders);
2431 link_cs_input_layout_qualifiers(prog, gl_prog, shader_list, num_shaders);
2434 link_xfb_stride_layout_qualifiers(&ctx->Const, prog, shader_list, num_shaders);
2436 link_bindless_layout_qualifiers(prog, shader_list, num_shaders);
2438 link_layer_viewport_relative_qualifier(prog, gl_prog, shader_list, num_shaders);
2465 if (!link_function_calls(prog, linked, shader_list, num_shaders)) {
2488 link_uniform_blocks(mem_ctx, &ctx->Const, prog, linked, &ubo_blocks,
2494 linker_error(prog, "Too many %s uniform blocks (%d/%d)\n",
2502 linker_error(prog, "Too many %s shader storage blocks (%d/%d)\n",
2507 if (!prog->data->LinkStatus) {
2540 array_resize_visitor input_resize_visitor(num_vertices, prog,
2580 struct gl_shader_program *prog)
2582 if (prog->_LinkedShaders[MESA_SHADER_TESS_EVAL] == NULL)
2585 gl_linked_shader *const tcs = prog->_LinkedShaders[MESA_SHADER_TESS_CTRL];
2586 gl_linked_shader *const tes = prog->_LinkedShaders[MESA_SHADER_TESS_EVAL];
2596 array_resize_visitor input_resize_visitor(num_vertices, prog,
2658 * \param prog Shader program whose variables need locations
2674 gl_shader_program *prog,
2695 gl_linked_shader *const sh = prog->_LinkedShaders[target_index];
2759 linker_error(prog,
2770 if (prog->AttributeBindings->get(binding, var->name)) {
2782 if (prog->FragDataBindings->get(binding, name)) {
2786 if (prog->FragDataIndexBindings->get(index, name)) {
2817 linker_error(prog,
2914 linker_error(prog,
2925 if (target_index == MESA_SHADER_FRAGMENT && !prog->IsES) {
2949 linker_error(prog, "types do not match for aliased"
2962 linker_error(prog, "overlapping component is "
2972 (prog->IsES && prog->data->Version >= 300)) {
2973 linker_error(prog, "overlapping location is assigned "
2978 linker_warning(prog, "overlapping location is assigned "
2984 if (target_index == MESA_SHADER_FRAGMENT && !prog->IsES) {
3026 linker_error(prog, "too many %s (max %u)",
3045 linker_error(prog,
3084 linker_error(prog,
3108 linker_error(prog,
3122 store_fragdepth_layout(struct gl_shader_program *prog)
3124 if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) {
3128 struct exec_list *ir = prog->_LinkedShaders[MESA_SHADER_FRAGMENT]->ir;
3147 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_NONE;
3150 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_ANY;
3153 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_GREATER;
3156 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_LESS;
3159 prog->FragDepthLayout = FRAG_DEPTH_LAYOUT_UNCHANGED;
3176 reserve_explicit_locations(struct gl_shader_program *prog,
3184 if (max_loc + 1 > prog->NumUniformRemapTable) {
3185 prog->UniformRemapTable =
3186 reralloc(prog, prog->UniformRemapTable,
3190 if (!prog->UniformRemapTable) {
3191 linker_error(prog, "Out of memory during linking.\n");
3196 for (unsigned i = prog->NumUniformRemapTable; i < max_loc + 1; i++)
3197 prog->UniformRemapTable[i] = NULL;
3199 prog->NumUniformRemapTable = max_loc + 1;
3206 if (prog->UniformRemapTable[loc] == INACTIVE_UNIFORM_EXPLICIT_LOCATION) {
3221 linker_error(prog,
3231 prog->UniformRemapTable[loc] = INACTIVE_UNIFORM_EXPLICIT_LOCATION;
3241 reserve_subroutine_explicit_locations(struct gl_shader_program *prog,
3256 linker_error(prog, "Out of memory during linking.\n");
3278 linker_error(prog,
3300 struct gl_shader_program *prog)
3302 prog->NumExplicitUniformLocations = 0;
3313 linker_error(prog, "Out of memory during linking.\n");
3318 unsigned mask = prog->data->linked_stages;
3321 struct gl_program *p = prog->_LinkedShaders[i]->Program;
3323 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) {
3331 ret = reserve_subroutine_explicit_locations(prog, p, var);
3333 int slots = reserve_explicit_locations(prog, uniform_map,
3348 link_util_update_empty_uniform_locations(prog);
3351 prog->NumExplicitUniformLocations = entries_total;
3355 link_assign_subroutine_types(struct gl_shader_program *prog)
3357 unsigned mask = prog->data->linked_stages;
3360 gl_program *p = prog->_LinkedShaders[i]->Program;
3363 foreach_in_list(ir_instruction, node, prog->_LinkedShaders[i]->ir) {
3377 linker_error(prog, "Too many subroutine functions declared.\n");
3400 linker_error(prog, "each subroutine index qualifier in the "
3419 verify_subroutine_associated_funcs(struct gl_shader_program *prog)
3421 unsigned mask = prog->data->linked_stages;
3424 gl_program *p = prog->_LinkedShaders[i]->Program;
3425 glsl_symbol_table *symbols = prog->_LinkedShaders[i]->symbols;
3442 linker_error(prog, "%s shader contains two or more function "
3481 disable_varying_optimizations_for_sso(struct gl_shader_program *prog)
3484 assert(prog->SeparateShader);
3491 if (!prog->_LinkedShaders[i])
3502 gl_linked_shader *sh = prog->_LinkedShaders[stage];
3521 link_varyings(const struct gl_constants *consts, struct gl_shader_program *prog,
3526 if (prog->_LinkedShaders[i] != NULL) {
3527 link_invalidate_variable_locations(prog->_LinkedShaders[i]->ir);
3531 if (!assign_attribute_or_color_locations(mem_ctx, prog, consts,
3536 if (!assign_attribute_or_color_locations(mem_ctx, prog, consts,
3541 prog->last_vert_prog = NULL;
3543 if (prog->_LinkedShaders[i] == NULL)
3546 prog->last_vert_prog = prog->_LinkedShaders[i]->Program;
3551 if (prog->_LinkedShaders[i] == NULL)
3554 lower_vector_derefs(prog->_LinkedShaders[i]);
3555 do_vec_index_to_swizzle(prog->_LinkedShaders[i]->ir);
3562 link_shaders(struct gl_context *ctx, struct gl_shader_program *prog)
3565 prog->data->LinkStatus = LINKING_SUCCESS; /* All error paths will set this to false */
3566 prog->data->Validated = false;
3581 if (prog->NumShaders == 0) {
3583 linker_error(prog, "no shaders attached to the program\n");
3588 if (shader_cache_read_program_metadata(ctx, prog))
3594 prog->ARB_fragment_coord_conventions_enable = false;
3603 calloc(prog->NumShaders, sizeof(struct gl_shader *));
3609 for (unsigned i = 0; i < prog->NumShaders; i++) {
3610 min_version = MIN2(min_version, prog->Shaders[i]->Version);
3611 max_version = MAX2(max_version, prog->Shaders[i]->Version);
3614 prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) {
3615 linker_error(prog, "all shaders must use same shading "
3620 if (prog->Shaders[i]->ARB_fragment_coord_conventions_enable) {
3621 prog->ARB_fragment_coord_conventions_enable = true;
3624 gl_shader_stage shader_type = prog->Shaders[i]->Stage;
3625 shader_list[shader_type][num_shaders[shader_type]] = prog->Shaders[i];
3632 if (!consts->AllowGLSLRelaxedES && prog->Shaders[0]->IsES &&
3634 linker_error(prog, "all shaders must use same shading "
3639 prog->data->Version = max_version;
3640 prog->IsES = prog->Shaders[0]->IsES;
3644 if (!prog->SeparateShader) {
3647 linker_error(prog, "Geometry shader must be linked with "
3653 linker_error(prog, "Tessellation evaluation shader must be linked "
3659 linker_error(prog, "Tessellation control shader must be linked with "
3690 linker_error(prog, "Tessellation control shader must be linked with "
3695 if (prog->IsES) {
3698 linker_error(prog, "GLSL ES requires non-separable programs "
3708 num_shaders[MESA_SHADER_COMPUTE] != prog->NumShaders) {
3709 linker_error(prog, "Compute shaders may not be linked with any other "
3718 link_intrastage_shaders(mem_ctx, ctx, prog, shader_list[stage],
3721 if (!prog->data->LinkStatus) {
3729 validate_vertex_shader_executable(prog, sh, consts);
3735 validate_tess_eval_shader_executable(prog, sh, consts);
3738 validate_geometry_shader_executable(prog, sh, consts);
3741 validate_fragment_shader_executable(prog, sh);
3744 if (!prog->data->LinkStatus) {
3750 prog->_LinkedShaders[stage] = sh;
3751 prog->data->linked_stages |= 1 << stage;
3759 cross_validate_uniforms(consts, prog);
3760 if (!prog->data->LinkStatus)
3770 if (!prog->_LinkedShaders[i])
3777 check_explicit_uniform_locations(&ctx->Extensions, prog);
3778 link_assign_subroutine_types(prog);
3779 verify_subroutine_associated_funcs(prog);
3781 if (!prog->data->LinkStatus)
3784 resize_tes_inputs(consts, prog);
3791 if (prog->_LinkedShaders[i] == NULL)
3794 validate_interstage_inout_blocks(prog, prog->_LinkedShaders[prev],
3795 prog->_LinkedShaders[i]);
3796 if (!prog->data->LinkStatus)
3799 cross_validate_outputs_to_inputs(consts, prog,
3800 prog->_LinkedShaders[prev],
3801 prog->_LinkedShaders[i]);
3802 if (!prog->data->LinkStatus)
3813 validate_first_and_last_interface_explicit_locations(consts, prog,
3818 validate_interstage_uniform_blocks(prog, prog->_LinkedShaders);
3819 if (!prog->data->LinkStatus)
3823 if (prog->_LinkedShaders[i] != NULL)
3824 lower_named_interface_blocks(mem_ctx, prog->_LinkedShaders[i]);
3827 if (prog->IsES && prog->data->Version == 100)
3828 if (!validate_invariant_builtins(prog,
3829 prog->_LinkedShaders[MESA_SHADER_VERTEX],
3830 prog->_LinkedShaders[MESA_SHADER_FRAGMENT]))
3839 if (max_version >= (prog->IsES ? 300 : 130)) {
3840 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT];
3846 if (prog->SeparateShader)
3847 disable_varying_optimizations_for_sso(prog);
3850 if (!interstage_cross_validate_uniform_blocks(prog, false))
3854 if (!interstage_cross_validate_uniform_blocks(prog, true))
3862 if (prog->_LinkedShaders[i] == NULL)
3865 detect_recursion_linked(prog, prog->_LinkedShaders[i]->ir);
3866 if (!prog->data->LinkStatus)
3870 lower_clip_cull_distance(prog, prog->_LinkedShaders[i]);
3874 lower_tess_level(prog->_LinkedShaders[i]);
3891 if (prog->IsES && i == MESA_SHADER_VERTEX) {
3892 if (!assign_attribute_or_color_locations(mem_ctx, prog, consts,
3899 do_common_optimization(prog->_LinkedShaders[i]->ir, true,
3905 validate_geometry_shader_emissions(consts, prog);
3907 store_fragdepth_layout(prog);
3909 if(!link_varyings(consts, prog, mem_ctx))
3938 if (!prog->SeparateShader && ctx->API == API_OPENGLES2 &&
3940 if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) {
3941 linker_error(prog, "program lacks a vertex shader\n");
3942 } else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) {
3943 linker_error(prog, "program lacks a fragment shader\n");
3950 if (prog->_LinkedShaders[i] == NULL)
3956 validate_ir_tree(prog->_LinkedShaders[i]->ir);
3959 reparent_ir(prog->_LinkedShaders[i]->ir, prog->_LinkedShaders[i]->ir);
3966 delete prog->_LinkedShaders[i]->symbols;
3967 prog->_LinkedShaders[i]->symbols = NULL;