• Home
  • Raw
  • Download

Lines Matching refs:prog

286                                    struct gl_shader_program *prog)  in validate_geometry_shader_emissions()  argument
288 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_GEOMETRY]; in validate_geometry_shader_emissions()
301 linker_error(prog, "Invalid call %s(%d). Accepted values for the " in validate_geometry_shader_emissions()
336 linker_error(prog, "EmitStreamVertex(n) and EndStreamPrimitive(n) " in validate_geometry_shader_emissions()
456 struct gl_program *prog) in gl_nir_can_add_pointsize_to_program() argument
458 nir_shader *nir = prog->nir; in gl_nir_can_add_pointsize_to_program()
583 disable_varying_optimizations_for_sso(struct gl_shader_program *prog) in disable_varying_optimizations_for_sso() argument
586 assert(prog->SeparateShader); in disable_varying_optimizations_for_sso()
593 if (!prog->_LinkedShaders[i]) in disable_varying_optimizations_for_sso()
604 if (!prog->_LinkedShaders[stage]) in disable_varying_optimizations_for_sso()
615 set_always_active_io(prog->_LinkedShaders[stage]->Program->nir, in disable_varying_optimizations_for_sso()
620 set_always_active_io(prog->_LinkedShaders[stage]->Program->nir, in disable_varying_optimizations_for_sso()
865 struct gl_shader_program *prog, struct set *resource_set, in add_vars_with_modes() argument
895 if (prog->data->spirv) { in add_vars_with_modes()
897 rzalloc(prog, struct gl_shader_variable); in add_vars_with_modes()
910 if (!link_util_add_program_resource(prog, resource_set, in add_vars_with_modes()
931 if (!add_shader_variable(consts, prog, resource_set, in add_vars_with_modes()
947 struct gl_shader_program *prog, in add_interface_variables() argument
951 struct gl_linked_shader *sh = prog->_LinkedShaders[stage]; in add_interface_variables()
960 return add_vars_with_modes(consts, prog, resource_set, in add_interface_variables()
965 return add_vars_with_modes(consts, prog, resource_set, in add_interface_variables()
996 init_program_resource_list(struct gl_shader_program *prog) in init_program_resource_list() argument
999 if (prog->data->ProgramResourceList) { in init_program_resource_list()
1000 ralloc_free(prog->data->ProgramResourceList); in init_program_resource_list()
1001 prog->data->ProgramResourceList = NULL; in init_program_resource_list()
1002 prog->data->NumProgramResourceList = 0; in init_program_resource_list()
1008 struct gl_shader_program *prog, in nir_build_program_resource_list() argument
1013 init_program_resource_list(prog); in nir_build_program_resource_list()
1022 if (!prog->_LinkedShaders[i]) in nir_build_program_resource_list()
1036 if (!add_interface_variables(consts, prog, resource_set, input_stage, in nir_build_program_resource_list()
1041 if (!add_interface_variables(consts, prog, resource_set, output_stage, in nir_build_program_resource_list()
1047 if (prog->last_vert_prog) { in nir_build_program_resource_list()
1049 prog->last_vert_prog->sh.LinkedTransformFeedback; in nir_build_program_resource_list()
1054 if (!link_util_add_program_resource(prog, resource_set, in nir_build_program_resource_list()
1065 if (!link_util_add_program_resource(prog, resource_set, in nir_build_program_resource_list()
1082 for (unsigned i = 0; i < prog->data->NumUniformStorage; i++) { in nir_build_program_resource_list()
1083 struct gl_uniform_storage *uniform = &prog->data->UniformStorage[i]; in nir_build_program_resource_list()
1094 if (!link_util_add_program_resource(prog, resource_set, in nir_build_program_resource_list()
1102 if (!link_util_should_add_buffer_variable(prog, uniform, in nir_build_program_resource_list()
1109 if (prog->data->UniformStorage[i].offset >= second_element_offset) { in nir_build_program_resource_list()
1111 prog->data->UniformStorage[i].offset; in nir_build_program_resource_list()
1114 prog->data->UniformStorage[i].top_level_array_size * in nir_build_program_resource_list()
1115 prog->data->UniformStorage[i].top_level_array_stride; in nir_build_program_resource_list()
1122 prog->data->UniformStorage[i].top_level_array_stride : -1; in nir_build_program_resource_list()
1128 if (!link_util_add_program_resource(prog, resource_set, interface, uniform, in nir_build_program_resource_list()
1135 for (unsigned i = 0; i < prog->data->NumUniformBlocks; i++) { in nir_build_program_resource_list()
1136 if (!link_util_add_program_resource(prog, resource_set, GL_UNIFORM_BLOCK, in nir_build_program_resource_list()
1137 &prog->data->UniformBlocks[i], in nir_build_program_resource_list()
1138 prog->data->UniformBlocks[i].stageref)) in nir_build_program_resource_list()
1142 for (unsigned i = 0; i < prog->data->NumShaderStorageBlocks; i++) { in nir_build_program_resource_list()
1143 if (!link_util_add_program_resource(prog, resource_set, GL_SHADER_STORAGE_BLOCK, in nir_build_program_resource_list()
1144 &prog->data->ShaderStorageBlocks[i], in nir_build_program_resource_list()
1145 prog->data->ShaderStorageBlocks[i].stageref)) in nir_build_program_resource_list()
1150 for (unsigned i = 0; i < prog->data->NumAtomicBuffers; i++) { in nir_build_program_resource_list()
1151 if (!link_util_add_program_resource(prog, resource_set, GL_ATOMIC_COUNTER_BUFFER, in nir_build_program_resource_list()
1152 &prog->data->AtomicBuffers[i], 0)) in nir_build_program_resource_list()
1156 unsigned mask = prog->data->linked_stages; in nir_build_program_resource_list()
1159 struct gl_program *p = prog->_LinkedShaders[i]->Program; in nir_build_program_resource_list()
1163 if (!link_util_add_program_resource(prog, resource_set, in nir_build_program_resource_list()
1312 struct gl_program *prog, in preprocess_shader() argument
1317 &consts->ShaderCompilerOptions[prog->info.stage]; in preprocess_shader()
1321 nir_shader *nir = prog->nir; in preprocess_shader()
1322 nir_shader_gather_info(prog->nir, nir_shader_get_entrypoint(prog->nir)); in preprocess_shader()
1324 if (prog->info.stage == MESA_SHADER_FRAGMENT && consts->HasFBFetch) { in preprocess_shader()
1326 NIR_PASS(_, prog->nir, gl_nir_lower_blend_equation_advanced, in preprocess_shader()
1328 nir_lower_global_vars_to_local(prog->nir); in preprocess_shader()
1329 NIR_PASS(_, prog->nir, nir_opt_combine_stores, nir_var_shader_out); in preprocess_shader()
1337 unsigned prev_stages = (1 << (prog->info.stage + 1)) - 1; in preprocess_shader()
1347 prog->skip_pointsize_xfb = !(nir->info.outputs_written & VARYING_BIT_PSIZ); in preprocess_shader()
1348 if (!consts->PointSizeFixed && prog->skip_pointsize_xfb && in preprocess_shader()
1350 gl_nir_can_add_pointsize_to_program(consts, prog)) { in preprocess_shader()
1393 if (prog->nir->info.stage == MESA_SHADER_COMPUTE) { in preprocess_shader()
1394 NIR_PASS(_, prog->nir, nir_lower_vars_to_explicit_types, in preprocess_shader()
1396 NIR_PASS(_, prog->nir, nir_lower_explicit_io, in preprocess_shader()
1414 struct gl_program *prog = shader->Program; in prelink_lowering() local
1429 remove_dead_varyings_pre_linking(prog->nir); in prelink_lowering()
1431 preprocess_shader(consts, exts, prog, shader_program, shader->Stage); in prelink_lowering()
1433 if (prog->nir->info.shared_size > consts->MaxComputeSharedMemorySize) { in prelink_lowering()
1435 prog->nir->info.shared_size, in prelink_lowering()
1511 struct gl_shader_program *prog, bool spirv) in gl_nir_lower_optimize_varyings() argument
1520 struct gl_linked_shader *shader = prog->_LinkedShaders[i]; in gl_nir_lower_optimize_varyings()
1625 struct gl_shader_program *prog, in gl_nir_link_spirv() argument
1634 if (prog->_LinkedShaders[i]) { in gl_nir_link_spirv()
1635 linked_shader[num_shaders++] = prog->_LinkedShaders[i]; in gl_nir_link_spirv()
1637 remove_dead_varyings_pre_linking(prog->_LinkedShaders[i]->Program->nir); in gl_nir_link_spirv()
1641 if (!prelink_lowering(consts, exts, prog, linked_shader, num_shaders)) in gl_nir_link_spirv()
1644 gl_nir_link_assign_xfb_resources(consts, prog); in gl_nir_link_spirv()
1645 gl_nir_lower_optimize_varyings(consts, prog, true); in gl_nir_link_spirv()
1660 struct gl_linked_shader *shader = prog->_LinkedShaders[i]; in gl_nir_link_spirv()
1671 if (!gl_nir_link_uniform_blocks(consts, prog)) in gl_nir_link_spirv()
1674 if (!gl_nir_link_uniforms(consts, prog, options->fill_parameters)) in gl_nir_link_spirv()
1677 gl_nir_link_assign_atomic_counter_resources(consts, prog); in gl_nir_link_spirv()
1683 gl_nir_validate_intrastage_arrays(struct gl_shader_program *prog, in gl_nir_validate_intrastage_arrays() argument
1709 linker_error(prog, "%s `%s' declared as type " in gl_nir_validate_intrastage_arrays()
1722 linker_error(prog, "%s `%s' declared as type " in gl_nir_validate_intrastage_arrays()
1764 struct gl_shader_program *prog, in cross_validate_globals() argument
1806 if (!gl_nir_validate_intrastage_arrays(prog, var, existing, in cross_validate_globals()
1819 linker_error(prog, "%s `%s' declared as type " in cross_validate_globals()
1832 linker_error(prog, "explicit locations for %s " in cross_validate_globals()
1839 linker_error(prog, "explicit components for %s `%s' have " in cross_validate_globals()
1868 linker_error(prog, "explicit bindings for %s " in cross_validate_globals()
1880 linker_error(prog, "offset specifications for %s " in cross_validate_globals()
1903 linker_error(prog, in cross_validate_globals()
1910 linker_error(prog, in cross_validate_globals()
1942 linker_error(prog, "initializers for %s " in cross_validate_globals()
1961 linker_error(prog, in cross_validate_globals()
1970 linker_error(prog, "declarations for %s `%s' have " in cross_validate_globals()
1976 linker_error(prog, "declarations for %s `%s' have " in cross_validate_globals()
1982 linker_error(prog, "declarations for %s `%s` have " in cross_validate_globals()
1988 linker_error(prog, "declarations for %s `%s` have " in cross_validate_globals()
1998 prog->IsES && !var->interface_type && in cross_validate_globals()
2001 prog->GLSL_Version >= 300) { in cross_validate_globals()
2002 linker_error(prog, "declarations for %s `%s` have " in cross_validate_globals()
2007 linker_warning(prog, "declarations for %s `%s` have " in cross_validate_globals()
2028 linker_error(prog, "declarations for %s `%s` are inside block " in cross_validate_globals()
2034 linker_error(prog, "declarations for %s `%s` are inside blocks " in cross_validate_globals()
2056 struct gl_shader_program *prog) in cross_validate_uniforms() argument
2062 if (prog->_LinkedShaders[i] == NULL) in cross_validate_uniforms()
2065 cross_validate_globals(mem_ctx, consts, prog, in cross_validate_uniforms()
2066 prog->_LinkedShaders[i]->Program->nir, in cross_validate_uniforms()
2097 struct gl_shader_program *prog) in validate_xfb_buffer_stride() argument
2100 if (prog->TransformFeedback.BufferStride[idx] % 4) { in validate_xfb_buffer_stride()
2101 linker_error(prog, "invalid qualifier xfb_stride=%d must be a " in validate_xfb_buffer_stride()
2104 prog->TransformFeedback.BufferStride[idx]); in validate_xfb_buffer_stride()
2108 if (prog->TransformFeedback.BufferStride[idx] / 4 > in validate_xfb_buffer_stride()
2110 linker_error(prog, "The MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS " in validate_xfb_buffer_stride()
2124 struct gl_shader_program *prog, in link_xfb_stride_layout_qualifiers() argument
2129 prog->TransformFeedback.BufferStride[i] = 0; in link_xfb_stride_layout_qualifiers()
2137 if (prog->TransformFeedback.BufferStride[j] == 0) { in link_xfb_stride_layout_qualifiers()
2138 prog->TransformFeedback.BufferStride[j] = in link_xfb_stride_layout_qualifiers()
2140 if (!validate_xfb_buffer_stride(consts, j, prog)) in link_xfb_stride_layout_qualifiers()
2142 } else if (prog->TransformFeedback.BufferStride[j] != in link_xfb_stride_layout_qualifiers()
2144 linker_error(prog, in link_xfb_stride_layout_qualifiers()
2147 prog->TransformFeedback.BufferStride[j], in link_xfb_stride_layout_qualifiers()
2161 link_bindless_layout_qualifiers(struct gl_shader_program *prog, in link_bindless_layout_qualifiers() argument
2191 linker_error(prog, "both bindless_sampler and bound_sampler, or " in link_bindless_layout_qualifiers()
2203 link_layer_viewport_relative_qualifier(struct gl_shader_program *prog, in link_layer_viewport_relative_qualifier() argument
2226 linker_error(prog, "all gl_Layer redeclarations must have identical " in link_layer_viewport_relative_qualifier()
2238 link_tcs_out_layout_qualifiers(struct gl_shader_program *prog, in link_tcs_out_layout_qualifiers() argument
2265 linker_error(prog, "tessellation control shader defined with " in link_tcs_out_layout_qualifiers()
2281 linker_error(prog, "tessellation control shader didn't declare " in link_tcs_out_layout_qualifiers()
2295 link_tes_in_layout_qualifiers(struct gl_shader_program *prog, in link_tes_in_layout_qualifiers() argument
2330 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
2341 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
2351 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
2361 linker_error(prog, "tessellation evaluation shader defined with " in link_tes_in_layout_qualifiers()
2375 linker_error(prog, in link_tes_in_layout_qualifiers()
2403 link_fs_inout_layout_qualifiers(struct gl_shader_program *prog, in link_fs_inout_layout_qualifiers() argument
2415 (prog->GLSL_Version < 150 && !arb_fragment_coord_conventions_enable)) in link_fs_inout_layout_qualifiers()
2430 linker_error(prog, "fragment shader defined with conflicting " in link_fs_inout_layout_qualifiers()
2442 linker_error(prog, "fragment shader defined with conflicting " in link_fs_inout_layout_qualifiers()
2484 link_gs_inout_layout_qualifiers(struct gl_shader_program *prog, in link_gs_inout_layout_qualifiers() argument
2492 if (gl_prog->info.stage != MESA_SHADER_GEOMETRY || prog->GLSL_Version < 150) in link_gs_inout_layout_qualifiers()
2518 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2530 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2541 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2553 linker_error(prog, "geometry shader defined with conflicting " in link_gs_inout_layout_qualifiers()
2568 linker_error(prog, in link_gs_inout_layout_qualifiers()
2574 linker_error(prog, in link_gs_inout_layout_qualifiers()
2580 linker_error(prog, in link_gs_inout_layout_qualifiers()
2598 link_cs_input_layout_qualifiers(struct gl_shader_program *prog, in link_cs_input_layout_qualifiers() argument
2634 linker_error(prog, "compute shader defined with conflicting " in link_cs_input_layout_qualifiers()
2653 linker_error(prog, "compute shader defined with both fixed and " in link_cs_input_layout_qualifiers()
2664 linker_error(prog, "compute shader defined with conflicting " in link_cs_input_layout_qualifiers()
2678 linker_error(prog, "compute shader must contain a fixed or a variable " in link_cs_input_layout_qualifiers()
2685 linker_error(prog, "derivative_group_quadsNV must be used with a " in link_cs_input_layout_qualifiers()
2691 linker_error(prog, "derivative_group_quadsNV must be used with a local" in link_cs_input_layout_qualifiers()
2700 linker_error(prog, "derivative_group_linearNV must be used with a " in link_cs_input_layout_qualifiers()
2719 struct gl_shader_program *prog, in link_intrastage_shaders() argument
2733 cross_validate_globals(mem_ctx, &ctx->Const, prog, shader_list[i]->nir, in link_intrastage_shaders()
2741 if (!prog->data->LinkStatus) in link_intrastage_shaders()
2746 gl_nir_validate_intrastage_interface_blocks(prog, in link_intrastage_shaders()
2749 if (!prog->data->LinkStatus) in link_intrastage_shaders()
2772 linker_error(prog, "function `%s' is multiply defined\n", in link_intrastage_shaders()
2798 linker_error(prog, "%s shader lacks `main'\n", in link_intrastage_shaders()
2808 ctx->Driver.NewProgram(ctx, shader_list[0]->Stage, prog->Name, false); in link_intrastage_shaders()
2810 prog->data->LinkStatus = LINKING_FAILURE; in link_intrastage_shaders()
2815 _mesa_reference_shader_program_data(&gl_prog->sh.data, prog->data); in link_intrastage_shaders()
2822 link_fs_inout_layout_qualifiers(prog, linked, shader_list, num_shaders, in link_intrastage_shaders()
2824 link_tcs_out_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2825 link_tes_in_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2826 link_gs_inout_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2827 link_cs_input_layout_qualifiers(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2830 link_xfb_stride_layout_qualifiers(&ctx->Const, prog, shader_list, num_shaders); in link_intrastage_shaders()
2832 link_bindless_layout_qualifiers(prog, shader_list, num_shaders); in link_intrastage_shaders()
2834 link_layer_viewport_relative_qualifier(prog, gl_prog, shader_list, num_shaders); in link_intrastage_shaders()
2842 if (!gl_nir_link_function_calls(prog, main, linked, shader_list, num_shaders)) { in link_intrastage_shaders()
2871 if (!prog->data->LinkStatus) { in link_intrastage_shaders()
2911 reserve_explicit_locations(struct gl_shader_program *prog, in reserve_explicit_locations() argument
2919 if (max_loc + 1 > prog->NumUniformRemapTable) { in reserve_explicit_locations()
2920 prog->UniformRemapTable = in reserve_explicit_locations()
2921 reralloc(prog, prog->UniformRemapTable, in reserve_explicit_locations()
2925 if (!prog->UniformRemapTable) { in reserve_explicit_locations()
2926 linker_error(prog, "Out of memory during linking.\n"); in reserve_explicit_locations()
2931 for (unsigned i = prog->NumUniformRemapTable; i < max_loc + 1; i++) in reserve_explicit_locations()
2932 prog->UniformRemapTable[i] = NULL; in reserve_explicit_locations()
2934 prog->NumUniformRemapTable = max_loc + 1; in reserve_explicit_locations()
2941 if (prog->UniformRemapTable[loc] == INACTIVE_UNIFORM_EXPLICIT_LOCATION) { in reserve_explicit_locations()
2957 linker_error(prog, in reserve_explicit_locations()
2967 prog->UniformRemapTable[loc] = INACTIVE_UNIFORM_EXPLICIT_LOCATION; in reserve_explicit_locations()
2977 reserve_subroutine_explicit_locations(struct gl_shader_program *prog, in reserve_subroutine_explicit_locations() argument
2992 linker_error(prog, "Out of memory during linking.\n"); in reserve_subroutine_explicit_locations()
3014 linker_error(prog, in reserve_subroutine_explicit_locations()
3036 struct gl_shader_program *prog) in check_explicit_uniform_locations() argument
3038 prog->NumExplicitUniformLocations = 0; in check_explicit_uniform_locations()
3049 linker_error(prog, "Out of memory during linking.\n"); in check_explicit_uniform_locations()
3054 unsigned mask = prog->data->linked_stages; in check_explicit_uniform_locations()
3057 struct gl_program *p = prog->_LinkedShaders[i]->Program; in check_explicit_uniform_locations()
3064 ret = reserve_subroutine_explicit_locations(prog, p, var); in check_explicit_uniform_locations()
3066 int slots = reserve_explicit_locations(prog, uniform_map, in check_explicit_uniform_locations()
3081 link_util_update_empty_uniform_locations(prog); in check_explicit_uniform_locations()
3084 prog->NumExplicitUniformLocations = entries_total; in check_explicit_uniform_locations()
3088 link_assign_subroutine_types(struct gl_shader_program *prog) in link_assign_subroutine_types() argument
3090 unsigned mask = prog->data->linked_stages; in link_assign_subroutine_types()
3093 struct gl_program *p = prog->_LinkedShaders[i]->Program; in link_assign_subroutine_types()
3118 linker_error(prog, "Too many subroutine functions declared.\n"); in link_assign_subroutine_types()
3141 linker_error(prog, "each subroutine index qualifier in the " in link_assign_subroutine_types()
3162 verify_subroutine_associated_funcs(struct gl_shader_program *prog) in verify_subroutine_associated_funcs() argument
3164 unsigned mask = prog->data->linked_stages; in verify_subroutine_associated_funcs()
3167 struct gl_program *p = prog->_LinkedShaders[i]->Program; in verify_subroutine_associated_funcs()
3187 linker_error(prog, "%s shader contains two or more function " in verify_subroutine_associated_funcs()
3206 struct gl_shader_program *prog) in check_image_resources() argument
3216 struct gl_linked_shader *sh = prog->_LinkedShaders[i]; in check_image_resources()
3225 linker_error(prog, "Too many combined image uniforms\n"); in check_image_resources()
3228 prog->_LinkedShaders[MESA_SHADER_FRAGMENT]; in check_image_resources()
3236 linker_error(prog, "Too many combined image uniforms, shader storage " in check_image_resources()
3263 struct gl_shader_program *prog) in validate_sampler_array_indexing() argument
3266 if (prog->_LinkedShaders[i] == NULL) in validate_sampler_array_indexing()
3273 nir_foreach_function_impl(impl, prog->_LinkedShaders[i]->Program->nir) { in validate_sampler_array_indexing()
3304 linker_error(prog, msg, prog->IsES ? "ES" : "", prog->GLSL_Version); in validate_sampler_array_indexing()
3307 linker_warning(prog, msg, prog->IsES ? "ES" : "", in validate_sampler_array_indexing()
3308 prog->GLSL_Version); in validate_sampler_array_indexing()
3333 struct gl_shader_program *prog, in validate_invariant_builtins() argument
3363 linker_error(prog, in validate_invariant_builtins()
3379 linker_error(prog, in validate_invariant_builtins()
3391 linker_error(prog, in validate_invariant_builtins()
3440 analyze_clip_cull_usage(struct gl_shader_program *prog, nir_shader *shader, in analyze_clip_cull_usage() argument
3454 if (prog->GLSL_Version >= (prog->IsES ? 300 : 130)) { in analyze_clip_cull_usage()
3494 if (!prog->IsES) { in analyze_clip_cull_usage()
3496 linker_error(prog, "%s shader writes to both `gl_ClipVertex' " in analyze_clip_cull_usage()
3502 linker_error(prog, "%s shader writes to both `gl_ClipVertex' " in analyze_clip_cull_usage()
3526 validate_vertex_shader_executable(struct gl_shader_program *prog, in validate_vertex_shader_executable() argument
3559 if (prog->GLSL_Version < (prog->IsES ? 300 : 140)) { in validate_vertex_shader_executable()
3569 if (prog->IsES) { in validate_vertex_shader_executable()
3570 linker_warning(prog, in validate_vertex_shader_executable()
3574 linker_error(prog, in validate_vertex_shader_executable()
3581 analyze_clip_cull_usage(prog, shader, consts, &shader->info); in validate_vertex_shader_executable()
3585 validate_tess_eval_shader_executable(struct gl_shader_program *prog, in validate_tess_eval_shader_executable() argument
3592 analyze_clip_cull_usage(prog, shader, consts, &shader->info); in validate_tess_eval_shader_executable()
3601 validate_fragment_shader_executable(struct gl_shader_program *prog, in validate_fragment_shader_executable() argument
3622 linker_error(prog, "fragment shader writes to both " in validate_fragment_shader_executable()
3636 validate_geometry_shader_executable(struct gl_shader_program *prog, in validate_geometry_shader_executable() argument
3647 analyze_clip_cull_usage(prog, shader, consts, &shader->info); in validate_geometry_shader_executable()
3651 gl_nir_link_glsl(struct gl_context *ctx, struct gl_shader_program *prog) in gl_nir_link_glsl() argument
3657 if (prog->NumShaders == 0) in gl_nir_link_glsl()
3671 calloc(prog->NumShaders, sizeof(struct gl_shader *)); in gl_nir_link_glsl()
3677 for (unsigned i = 0; i < prog->NumShaders; i++) { in gl_nir_link_glsl()
3678 min_version = MIN2(min_version, prog->Shaders[i]->Version); in gl_nir_link_glsl()
3679 max_version = MAX2(max_version, prog->Shaders[i]->Version); in gl_nir_link_glsl()
3682 prog->Shaders[i]->IsES != prog->Shaders[0]->IsES) { in gl_nir_link_glsl()
3683 linker_error(prog, "all shaders must use same shading " in gl_nir_link_glsl()
3688 gl_shader_stage shader_type = prog->Shaders[i]->Stage; in gl_nir_link_glsl()
3689 shader_list[shader_type][num_shaders[shader_type]] = prog->Shaders[i]; in gl_nir_link_glsl()
3696 if (!consts->AllowGLSLRelaxedES && prog->Shaders[0]->IsES && in gl_nir_link_glsl()
3698 linker_error(prog, "all shaders must use same shading " in gl_nir_link_glsl()
3703 prog->GLSL_Version = max_version; in gl_nir_link_glsl()
3704 prog->IsES = prog->Shaders[0]->IsES; in gl_nir_link_glsl()
3708 if (!prog->SeparateShader) { in gl_nir_link_glsl()
3711 linker_error(prog, "Geometry shader must be linked with " in gl_nir_link_glsl()
3717 linker_error(prog, "Tessellation evaluation shader must be linked " in gl_nir_link_glsl()
3723 linker_error(prog, "Tessellation control shader must be linked with " in gl_nir_link_glsl()
3754 linker_error(prog, "Tessellation control shader must be linked with " in gl_nir_link_glsl()
3759 if (prog->IsES) { in gl_nir_link_glsl()
3762 linker_error(prog, "GLSL ES requires non-separable programs " in gl_nir_link_glsl()
3772 num_shaders[MESA_SHADER_COMPUTE] != prog->NumShaders) { in gl_nir_link_glsl()
3773 linker_error(prog, "Compute shaders may not be linked with any other " in gl_nir_link_glsl()
3782 link_intrastage_shaders(mem_ctx, ctx, prog, shader_list[stage], in gl_nir_link_glsl()
3785 if (!prog->data->LinkStatus) { in gl_nir_link_glsl()
3791 prog->_LinkedShaders[stage] = sh; in gl_nir_link_glsl()
3792 prog->data->linked_stages |= 1 << stage; in gl_nir_link_glsl()
3799 struct gl_linked_shader *sh = prog->_LinkedShaders[stage]; in gl_nir_link_glsl()
3805 sh->Program->shader_program = prog; in gl_nir_link_glsl()
3806 shader->info.separate_shader = prog->SeparateShader; in gl_nir_link_glsl()
3810 validate_vertex_shader_executable(prog, shader, consts); in gl_nir_link_glsl()
3816 validate_tess_eval_shader_executable(prog, shader, consts); in gl_nir_link_glsl()
3819 validate_geometry_shader_executable(prog, shader, consts); in gl_nir_link_glsl()
3822 validate_fragment_shader_executable(prog, shader); in gl_nir_link_glsl()
3825 if (!prog->data->LinkStatus) { in gl_nir_link_glsl()
3828 prog->_LinkedShaders[stage] = NULL; in gl_nir_link_glsl()
3829 prog->data->linked_stages ^= 1 << stage; in gl_nir_link_glsl()
3840 cross_validate_uniforms(consts, prog); in gl_nir_link_glsl()
3841 if (!prog->data->LinkStatus) in gl_nir_link_glsl()
3844 check_explicit_uniform_locations(exts, prog); in gl_nir_link_glsl()
3846 link_assign_subroutine_types(prog); in gl_nir_link_glsl()
3847 verify_subroutine_associated_funcs(prog); in gl_nir_link_glsl()
3848 if (!prog->data->LinkStatus) in gl_nir_link_glsl()
3852 if (prog->_LinkedShaders[i] == NULL) in gl_nir_link_glsl()
3855 gl_nir_detect_recursion_linked(prog, in gl_nir_link_glsl()
3856 prog->_LinkedShaders[i]->Program->nir); in gl_nir_link_glsl()
3857 if (!prog->data->LinkStatus) in gl_nir_link_glsl()
3860 gl_nir_inline_functions(prog->_LinkedShaders[i]->Program->nir); in gl_nir_link_glsl()
3863 resize_tes_inputs(consts, prog); in gl_nir_link_glsl()
3864 set_geom_shader_input_array_size(prog); in gl_nir_link_glsl()
3871 if (prog->_LinkedShaders[i] == NULL) in gl_nir_link_glsl()
3879 gl_nir_validate_interstage_inout_blocks(prog, prog->_LinkedShaders[prev], in gl_nir_link_glsl()
3880 prog->_LinkedShaders[i]); in gl_nir_link_glsl()
3881 if (!prog->data->LinkStatus) in gl_nir_link_glsl()
3888 gl_nir_validate_interstage_uniform_blocks(prog, prog->_LinkedShaders); in gl_nir_link_glsl()
3889 if (!prog->data->LinkStatus) in gl_nir_link_glsl()
3892 if (prog->IsES && prog->GLSL_Version == 100) in gl_nir_link_glsl()
3893 if (!validate_invariant_builtins(consts, prog, in gl_nir_link_glsl()
3894 prog->_LinkedShaders[MESA_SHADER_VERTEX], in gl_nir_link_glsl()
3895 prog->_LinkedShaders[MESA_SHADER_FRAGMENT])) in gl_nir_link_glsl()
3899 validate_geometry_shader_emissions(consts, prog); in gl_nir_link_glsl()
3901 prog->last_vert_prog = NULL; in gl_nir_link_glsl()
3903 if (prog->_LinkedShaders[i] == NULL) in gl_nir_link_glsl()
3906 prog->last_vert_prog = prog->_LinkedShaders[i]->Program; in gl_nir_link_glsl()
3915 if (!prog->_LinkedShaders[i]) in gl_nir_link_glsl()
3925 if (prog->GLSL_Version >= (prog->IsES ? 300 : 130)) { in gl_nir_link_glsl()
3926 struct gl_linked_shader *sh = prog->_LinkedShaders[MESA_SHADER_FRAGMENT]; in gl_nir_link_glsl()
3931 gl_nir_lower_named_interface_blocks(prog); in gl_nir_link_glsl()
3938 if (prog->_LinkedShaders[i] == NULL) in gl_nir_link_glsl()
3941 gl_nir_cross_validate_outputs_to_inputs(consts, prog, in gl_nir_link_glsl()
3942 prog->_LinkedShaders[prev], in gl_nir_link_glsl()
3943 prog->_LinkedShaders[i]); in gl_nir_link_glsl()
3944 if (!prog->data->LinkStatus) in gl_nir_link_glsl()
3955 gl_nir_validate_first_and_last_interface_explicit_locations(consts, prog, in gl_nir_link_glsl()
3959 if (prog->SeparateShader) in gl_nir_link_glsl()
3960 disable_varying_optimizations_for_sso(prog); in gl_nir_link_glsl()
3966 if (prog->_LinkedShaders[i]) { in gl_nir_link_glsl()
3967 linked_shader[num_linked_shaders++] = prog->_LinkedShaders[i]; in gl_nir_link_glsl()
3983 if (!(prog->IsES && prog->GLSL_Version >= 300 && i == MESA_SHADER_VERTEX)) in gl_nir_link_glsl()
3984 remove_dead_varyings_pre_linking(prog->_LinkedShaders[i]->Program->nir); in gl_nir_link_glsl()
3988 if (!gl_assign_attribute_or_color_locations(consts, prog)) in gl_nir_link_glsl()
3991 if (!prelink_lowering(consts, exts, prog, linked_shader, num_linked_shaders)) in gl_nir_link_glsl()
3994 if (!gl_nir_link_varyings(consts, exts, api, prog)) in gl_nir_link_glsl()
4001 if ((!prog->IsES && prog->GLSL_Version < 130) || in gl_nir_link_glsl()
4002 (prog->IsES && prog->GLSL_Version < 300)) { in gl_nir_link_glsl()
4003 if (!validate_sampler_array_indexing(consts, prog)) in gl_nir_link_glsl()
4007 if (prog->data->LinkStatus == LINKING_FAILURE) in gl_nir_link_glsl()
4030 struct gl_linked_shader *shader = prog->_LinkedShaders[i]; in gl_nir_link_glsl()
4065 if (!gl_nir_link_uniform_blocks(consts, prog)) in gl_nir_link_glsl()
4068 if (!gl_nir_link_uniforms(consts, prog, true)) in gl_nir_link_glsl()
4071 link_util_calculate_subroutine_compat(prog); in gl_nir_link_glsl()
4072 link_util_check_uniform_resources(consts, prog); in gl_nir_link_glsl()
4073 link_util_check_subroutine_resources(prog); in gl_nir_link_glsl()
4074 check_image_resources(consts, exts, prog); in gl_nir_link_glsl()
4075 gl_nir_link_assign_atomic_counter_resources(consts, prog); in gl_nir_link_glsl()
4076 gl_nir_link_check_atomic_counter_resources(consts, prog); in gl_nir_link_glsl()
4104 if (!prog->SeparateShader && _mesa_is_api_gles2(api) && in gl_nir_link_glsl()
4105 !prog->_LinkedShaders[MESA_SHADER_COMPUTE]) { in gl_nir_link_glsl()
4106 if (prog->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) { in gl_nir_link_glsl()
4107 linker_error(prog, "program lacks a vertex shader\n"); in gl_nir_link_glsl()
4108 } else if (prog->_LinkedShaders[MESA_SHADER_FRAGMENT] == NULL) { in gl_nir_link_glsl()
4109 linker_error(prog, "program lacks a fragment shader\n"); in gl_nir_link_glsl()
4120 if (prog->data->LinkStatus == LINKING_FAILURE) in gl_nir_link_glsl()