Lines Matching refs:shProg
281 struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, name);
282 return shProg ? GL_TRUE : GL_FALSE;
298 attach_shader(struct gl_context *ctx, struct gl_shader_program *shProg,
301 GLuint n = shProg->NumShaders;
303 shProg->Shaders = realloc(shProg->Shaders,
305 if (!shProg->Shaders) {
311 shProg->Shaders[n] = NULL; /* since realloc() didn't zero the new space */
312 _mesa_reference_shader(ctx, &shProg->Shaders[n], sh);
313 shProg->NumShaders++;
320 struct gl_shader_program *shProg;
326 shProg = _mesa_lookup_shader_program_err(ctx, program, caller);
327 if (!shProg)
335 n = shProg->NumShaders;
337 if (shProg->Shaders[i] == sh) {
347 shProg->Shaders[i]->Stage == sh->Stage) {
361 attach_shader(ctx, shProg, sh);
367 struct gl_shader_program *shProg;
370 shProg = _mesa_lookup_shader_program(ctx, program);
373 attach_shader(ctx, shProg, sh);
410 struct gl_shader_program *shProg;
416 shProg = _mesa_new_shader_program(name);
418 _mesa_HashInsertLocked(ctx->Shared->ShaderObjects, name, shProg, true);
420 assert(shProg->RefCount == 1);
444 struct gl_shader_program *shProg;
446 shProg = _mesa_lookup_shader_program_err(ctx, name, "glDeleteProgram");
447 if (!shProg)
450 if (!shProg->DeletePending) {
451 shProg->DeletePending = GL_TRUE;
453 /* effectively, decr shProg's refcount */
454 _mesa_reference_shader_program(ctx, &shProg, NULL);
481 struct gl_shader_program *shProg;
486 shProg = _mesa_lookup_shader_program_err(ctx, program, "glDetachShader");
487 if (!shProg)
490 shProg = _mesa_lookup_shader_program(ctx, program);
493 n = shProg->NumShaders;
496 if (shProg->Shaders[i]->Name == shader) {
501 _mesa_reference_shader(ctx, &shProg->Shaders[i], NULL);
511 newList[j] = shProg->Shaders[j];
514 newList[j++] = shProg->Shaders[i];
518 free(shProg->Shaders);
519 shProg->Shaders = newList;
520 shProg->NumShaders = n - 1;
524 for (j = 0; j < shProg->NumShaders; j++) {
525 assert(shProg->Shaders[j]->Stage == MESA_SHADER_VERTEX ||
526 shProg->Shaders[j]->Stage == MESA_SHADER_TESS_CTRL ||
527 shProg->Shaders[j]->Stage == MESA_SHADER_TESS_EVAL ||
528 shProg->Shaders[j]->Stage == MESA_SHADER_GEOMETRY ||
529 shProg->Shaders[j]->Stage == MESA_SHADER_FRAGMENT);
530 assert(shProg->Shaders[j]->RefCount > 0);
574 struct gl_shader_program *shProg;
581 shProg =
584 if (shProg) {
586 for (i = 0; i < (GLuint) maxCount && i < shProg->NumShaders; i++) {
588 objOut[i] = shProg->Shaders[i]->Name;
592 handleOut[i] = (GLhandleARB) shProg->Shaders[i]->Name;
632 check_gs_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
634 if (shProg->data->LinkStatus &&
635 shProg->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
657 check_tcs_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
659 if (shProg->data->LinkStatus &&
660 shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL] != NULL) {
683 check_tes_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
685 if (shProg->data->LinkStatus &&
686 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL] != NULL) {
712 struct gl_shader_program *shProg
736 if (!shProg) {
742 *params = shProg->DeletePending;
746 *params = ctx->Driver.GetShaderProgramCompletionStatus(ctx, shProg);
751 *params = shProg->data->LinkStatus ? GL_TRUE : GL_FALSE;
754 *params = shProg->data->Validated;
757 *params = (shProg->data->InfoLog && shProg->data->InfoLog[0] != '\0') ?
758 strlen(shProg->data->InfoLog) + 1 : 0;
761 *params = shProg->NumShaders;
764 *params = _mesa_count_active_attribs(shProg);
767 *params = _mesa_longest_attribute_name_length(shProg);
770 _mesa_get_program_interfaceiv(shProg, GL_UNIFORM, GL_ACTIVE_RESOURCES,
778 shProg->data->NumUniformStorage - shProg->data->NumHiddenUniforms;
781 if (shProg->data->UniformStorage[i].is_shader_storage)
794 strlen_or_zero(shProg->data->UniformStorage[i].name);
800 ((shProg->data->UniformStorage[i].array_elements != 0) ? 3 : 0);
817 if (shProg->last_vert_prog &&
818 shProg->last_vert_prog->sh.LinkedTransformFeedback->NumVarying > 0)
820 shProg->last_vert_prog->sh.LinkedTransformFeedback->NumVarying;
822 *params = shProg->TransformFeedback.NumVarying;
837 in_shader_varyings = shProg->last_vert_prog &&
838 shProg->last_vert_prog->sh.LinkedTransformFeedback->NumVarying > 0;
841 shProg->last_vert_prog->sh.LinkedTransformFeedback->NumVarying :
842 shProg->TransformFeedback.NumVarying;
846 shProg->last_vert_prog->sh.LinkedTransformFeedback->Varyings[i].Name
847 : shProg->TransformFeedback.VaryingNames[i];
865 *params = shProg->TransformFeedback.BufferMode;
870 if (check_gs_query(ctx, shProg)) {
871 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
880 if (check_gs_query(ctx, shProg)) {
881 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
888 if (check_gs_query(ctx, shProg)) {
889 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
896 if (check_gs_query(ctx, shProg)) {
897 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
908 for (i = 0; i < shProg->data->NumUniformBlocks; i++) {
918 strlen_or_zero(shProg->data->UniformBlocks[i].Name) + 1;
931 *params = shProg->data->NumUniformBlocks;
943 *params = shProg->BinaryRetrievableHint;
946 if (ctx->Const.NumProgramBinaryFormats == 0 || !shProg->data->LinkStatus) {
949 _mesa_get_program_binary_length(ctx, shProg, params);
956 *params = shProg->data->NumAtomicBuffers;
962 if (!shProg->data->LinkStatus) {
967 if (shProg->_LinkedShaders[MESA_SHADER_COMPUTE] == NULL) {
973 params[i] = shProg->_LinkedShaders[MESA_SHADER_COMPUTE]->
979 *params = (shProg->data->LinkStatus == LINKING_FAILURE) ? 0 : shProg->SeparateShader;
986 if (check_tcs_query(ctx, shProg)) {
987 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL]->
994 if (check_tes_query(ctx, shProg)) {
995 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
1002 if (check_tes_query(ctx, shProg)) {
1004 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL];
1024 if (check_tes_query(ctx, shProg)) {
1025 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
1032 if (check_tes_query(ctx, shProg)) {
1033 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
1094 struct gl_shader_program *shProg;
1107 shProg = _mesa_lookup_shader_program_err(ctx, program,
1109 if (!shProg) {
1113 _mesa_copy_string(infoLog, bufSize, length, shProg->data->InfoLog);
1293 struct gl_shader_program *shProg;
1305 obj->CurrentProgram[stage]->Id == params->shProg->Name) {
1306 struct gl_program *prog = params->shProg->_LinkedShaders[stage]->Program;
1307 _mesa_use_program(params->ctx, stage, params->shProg, prog, obj);
1317 link_program(struct gl_context *ctx, struct gl_shader_program *shProg,
1320 if (!shProg)
1329 if (_mesa_transform_feedback_is_using_program(ctx, shProg)) {
1340 ctx->_Shader->CurrentProgram[stage]->Id == shProg->Name) {
1348 _mesa_glsl_link_shader(ctx, shProg);
1360 if (shProg->data->LinkStatus) {
1365 if (shProg->_LinkedShaders[stage])
1366 prog = shProg->_LinkedShaders[stage]->Program;
1368 _mesa_use_program(ctx, stage, shProg, prog, ctx->_Shader);
1374 .shProg = shProg
1384 if (shProg->Name != 0 && shProg->Name != ~0 && capture_path != NULL) {
1391 capture_path, shProg->Name, i);
1394 capture_path, shProg->Name);
1408 shProg->IsES ? " ES" : "",
1409 shProg->data->Version / 100, shProg->data->Version % 100);
1410 if (shProg->SeparateShader)
1414 for (unsigned i = 0; i < shProg->NumShaders; i++) {
1416 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1417 shProg->Shaders[i]->Source);
1428 if (shProg->data->LinkStatus == LINKING_FAILURE &&
1431 shProg->Name, shProg->data->InfoLog);
1437 shProg->BinaryRetrievableHint = shProg->BinaryRetrievableHintPending;
1444 shProg->NumShaders, shProg->Name,
1445 shProg->data->LinkStatus ? "Success" : "Failed");
1447 for (i = 0; i < shProg->NumShaders; i++) {
1449 shProg->Shaders[i]->Name,
1450 shProg->Shaders[i]->Stage);
1457 link_program_error(struct gl_context *ctx, struct gl_shader_program *shProg)
1459 link_program(ctx, shProg, false);
1464 link_program_no_error(struct gl_context *ctx, struct gl_shader_program *shProg)
1466 link_program(ctx, shProg, true);
1471 _mesa_link_program(struct gl_context *ctx, struct gl_shader_program *shProg)
1473 link_program_error(ctx, shProg);
1481 print_shader_info(const struct gl_shader_program *shProg)
1485 printf("Mesa: glUseProgram(%u)\n", shProg->Name);
1486 for (i = 0; i < shProg->NumShaders; i++) {
1489 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1490 shProg->Shaders[i]->Name,
1491 shProg->Shaders[i]->SourceChecksum);
1494 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1495 shProg->Shaders[i]->Name);
1498 if (shProg->_LinkedShaders[MESA_SHADER_VERTEX])
1500 shProg->_LinkedShaders[MESA_SHADER_VERTEX]->Program->Id);
1501 if (shProg->_LinkedShaders[MESA_SHADER_FRAGMENT])
1503 shProg->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program->Id);
1504 if (shProg->_LinkedShaders[MESA_SHADER_GEOMETRY])
1506 shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->Id);
1507 if (shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL])
1509 shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL]->Program->Id);
1510 if (shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL])
1512 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->Program->Id);
1520 _mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg,
1523 if ((shProg != NULL) && !shProg->data->LinkStatus) {
1525 "%s(program %u not linked)", caller, shProg->Name);
1529 if (ctx->Shader.ActiveProgram != shProg) {
1530 _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, shProg);
1541 struct gl_shader_program *shProg)
1545 if (shProg && shProg->_LinkedShaders[i])
1546 new_prog = shProg->_LinkedShaders[i]->Program;
1547 _mesa_use_program(ctx, i, shProg, new_prog, &ctx->Shader);
1549 _mesa_active_program(ctx, shProg, "glUseProgram");
1559 validate_shader_program(const struct gl_shader_program *shProg,
1562 if (!shProg->data->LinkStatus) {
1585 if (!_mesa_sampler_uniforms_are_valid(shProg, errMsg, 100))
1598 struct gl_shader_program *shProg;
1601 shProg = _mesa_lookup_shader_program_err(ctx, program, "glValidateProgram");
1602 if (!shProg) {
1606 shProg->data->Validated = validate_shader_program(shProg, errMsg);
1607 if (!shProg->data->Validated) {
1609 if (shProg->data->InfoLog) {
1610 ralloc_free(shProg->data->InfoLog);
1612 shProg->data->InfoLog = ralloc_strdup(shProg->data, errMsg);
1936 struct gl_shader_program *shProg =
1938 link_program_no_error(ctx, shProg);
1950 struct gl_shader_program *shProg =
1952 link_program_error(ctx, shProg);
2216 struct gl_shader_program *shProg = NULL;
2223 shProg = _mesa_lookup_shader_program(ctx, program);
2233 shProg =
2235 if (!shProg)
2238 if (!shProg->data->LinkStatus) {
2246 print_shader_info(shProg);
2260 if (shProg) {
2264 _mesa_use_shader_program(ctx, shProg);
2267 _mesa_use_shader_program(ctx, shProg);
2437 struct gl_shader_program *shProg;
2446 shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetProgramBinary");
2447 if (!shProg)
2467 if (!shProg->data->LinkStatus) {
2470 shProg->Name);
2480 _mesa_get_program_binary(ctx, shProg, bufSize, length, binaryFormat,
2490 struct gl_shader_program *shProg;
2493 shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramBinary");
2494 if (!shProg)
2497 _mesa_clear_shader_program_data(ctx, shProg);
2498 shProg->data = _mesa_create_shader_program_data();
2524 shProg->data->LinkStatus = LINKING_FAILURE;
2527 _mesa_program_binary(ctx, shProg, binaryFormat, binary, length);
2533 program_parameteri(struct gl_context *ctx, struct gl_shader_program *shProg,
2575 shProg->BinaryRetrievableHintPending = value;
2585 shProg->SeparateShader = value;
2610 struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program);
2611 program_parameteri(ctx, shProg, pname, value, true);
2618 struct gl_shader_program *shProg;
2621 shProg = _mesa_lookup_shader_program_err(ctx, program,
2623 if (!shProg)
2626 program_parameteri(ctx, shProg, pname, value, false);
2632 struct gl_shader_program *shProg, struct gl_program *prog,
2650 shProg);
2728 struct gl_shader_program *shProg;
2731 shProg = _mesa_lookup_shader_program(ctx, program);
2733 shProg->SeparateShader = GL_TRUE;
2738 _mesa_link_program(ctx, shProg);
2745 shProg->data->LinkStatus = LINKING_FAILURE;
2750 ralloc_strcat(&shProg->data->InfoLog, sh->InfoLog);
2844 struct gl_shader_program *shProg;
2853 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2854 if (!shProg)
2858 if (!shProg->_LinkedShaders[stage]) {
2864 return _mesa_program_resource_location(shProg, resource_type, name);
2873 struct gl_shader_program *shProg;
2883 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2884 if (!shProg)
2888 if (!shProg->_LinkedShaders[stage]) {
2894 res = _mesa_program_resource_find_name(shProg, resource_type, name, NULL);
2899 return _mesa_program_resource_index(shProg, res);
2909 struct gl_shader_program *shProg;
2922 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2923 if (!shProg)
2929 sh = shProg->_LinkedShaders[stage];
2935 struct gl_program *p = shProg->_LinkedShaders[stage]->Program;
2943 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2951 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2968 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2975 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2995 struct gl_shader_program *shProg;
3004 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
3005 if (!shProg)
3009 if (!shProg->_LinkedShaders[stage]) {
3016 _mesa_get_program_resource_name(shProg, resource_type,
3029 struct gl_shader_program *shProg;
3038 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
3039 if (!shProg)
3043 if (!shProg->_LinkedShaders[stage]) {
3048 _mesa_get_program_resource_name(shProg, resource_type,
3163 struct gl_shader_program *shProg;
3172 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
3173 if (!shProg)
3177 sh = shProg->_LinkedShaders[stage];
3220 res = _mesa_program_resource_find_index(shProg, resource_type, i);
3239 res = _mesa_program_resource_find_index(shProg, resource_type, i);