Lines Matching refs:shProg

310    struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, name);
311 return shProg ? GL_TRUE : GL_FALSE;
327 attach_shader(struct gl_context *ctx, struct gl_shader_program *shProg,
330 GLuint n = shProg->NumShaders;
332 shProg->Shaders = realloc(shProg->Shaders,
334 if (!shProg->Shaders) {
340 shProg->Shaders[n] = NULL; /* since realloc() didn't zero the new space */
341 _mesa_reference_shader(ctx, &shProg->Shaders[n], sh);
342 shProg->NumShaders++;
349 struct gl_shader_program *shProg;
355 shProg = _mesa_lookup_shader_program_err(ctx, program, caller);
356 if (!shProg)
364 n = shProg->NumShaders;
366 if (shProg->Shaders[i] == sh) {
376 shProg->Shaders[i]->Stage == sh->Stage) {
390 attach_shader(ctx, shProg, sh);
396 struct gl_shader_program *shProg;
399 shProg = _mesa_lookup_shader_program(ctx, program);
402 attach_shader(ctx, shProg, sh);
439 struct gl_shader_program *shProg;
445 shProg = _mesa_new_shader_program(name);
447 _mesa_HashInsertLocked(ctx->Shared->ShaderObjects, name, shProg, true);
449 assert(shProg->RefCount == 1);
473 struct gl_shader_program *shProg;
475 shProg = _mesa_lookup_shader_program_err(ctx, name, "glDeleteProgram");
476 if (!shProg)
479 if (!shProg->DeletePending) {
480 shProg->DeletePending = GL_TRUE;
482 /* effectively, decr shProg's refcount */
483 _mesa_reference_shader_program(ctx, &shProg, NULL);
510 struct gl_shader_program *shProg;
515 shProg = _mesa_lookup_shader_program_err(ctx, program, "glDetachShader");
516 if (!shProg)
519 shProg = _mesa_lookup_shader_program(ctx, program);
522 n = shProg->NumShaders;
525 if (shProg->Shaders[i]->Name == shader) {
530 _mesa_reference_shader(ctx, &shProg->Shaders[i], NULL);
540 newList[j] = shProg->Shaders[j];
543 newList[j++] = shProg->Shaders[i];
547 free(shProg->Shaders);
548 shProg->Shaders = newList;
549 shProg->NumShaders = n - 1;
553 for (j = 0; j < shProg->NumShaders; j++) {
554 assert(shProg->Shaders[j]->Stage == MESA_SHADER_VERTEX ||
555 shProg->Shaders[j]->Stage == MESA_SHADER_TESS_CTRL ||
556 shProg->Shaders[j]->Stage == MESA_SHADER_TESS_EVAL ||
557 shProg->Shaders[j]->Stage == MESA_SHADER_GEOMETRY ||
558 shProg->Shaders[j]->Stage == MESA_SHADER_FRAGMENT);
559 assert(shProg->Shaders[j]->RefCount > 0);
603 struct gl_shader_program *shProg;
610 shProg =
613 if (shProg) {
615 for (i = 0; i < (GLuint) maxCount && i < shProg->NumShaders; i++) {
617 objOut[i] = shProg->Shaders[i]->Name;
621 handleOut[i] = (GLhandleARB) shProg->Shaders[i]->Name;
661 check_gs_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
663 if (shProg->data->LinkStatus &&
664 shProg->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
686 check_tcs_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
688 if (shProg->data->LinkStatus &&
689 shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL] != NULL) {
712 check_tes_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
714 if (shProg->data->LinkStatus &&
715 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL] != NULL) {
761 struct gl_shader_program *shProg
785 if (!shProg) {
791 *params = shProg->DeletePending;
794 *params = get_shader_program_completion_status(ctx, shProg);
797 *params = shProg->data->LinkStatus ? GL_TRUE : GL_FALSE;
800 *params = shProg->data->Validated;
803 *params = (shProg->data->InfoLog && shProg->data->InfoLog[0] != '\0') ?
804 strlen(shProg->data->InfoLog) + 1 : 0;
807 *params = shProg->NumShaders;
810 *params = _mesa_count_active_attribs(shProg);
813 *params = _mesa_longest_attribute_name_length(shProg);
816 _mesa_get_program_interfaceiv(shProg, GL_UNIFORM, GL_ACTIVE_RESOURCES,
821 _mesa_get_program_interfaceiv(shProg, GL_UNIFORM, GL_MAX_NAME_LENGTH,
833 if (shProg->last_vert_prog &&
834 shProg->last_vert_prog->sh.LinkedTransformFeedback->NumVarying > 0)
836 shProg->last_vert_prog->sh.LinkedTransformFeedback->NumVarying;
838 *params = shProg->TransformFeedback.NumVarying;
844 _mesa_get_program_interfaceiv(shProg, GL_TRANSFORM_FEEDBACK_VARYING,
851 *params = shProg->TransformFeedback.BufferMode;
856 if (check_gs_query(ctx, shProg)) {
857 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
866 if (check_gs_query(ctx, shProg)) {
867 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
874 if (check_gs_query(ctx, shProg)) {
875 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
882 if (check_gs_query(ctx, shProg)) {
883 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
891 _mesa_get_program_interfaceiv(shProg, GL_UNIFORM_BLOCK,
899 *params = shProg->data->NumUniformBlocks;
911 *params = shProg->BinaryRetrievableHint;
914 if (ctx->Const.NumProgramBinaryFormats == 0 || !shProg->data->LinkStatus) {
917 _mesa_get_program_binary_length(ctx, shProg, params);
924 *params = shProg->data->NumAtomicBuffers;
930 if (!shProg->data->LinkStatus) {
935 if (shProg->_LinkedShaders[MESA_SHADER_COMPUTE] == NULL) {
941 params[i] = shProg->_LinkedShaders[MESA_SHADER_COMPUTE]->
947 *params = (shProg->data->LinkStatus == LINKING_FAILURE) ? 0 : shProg->SeparateShader;
954 if (check_tcs_query(ctx, shProg)) {
955 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL]->
962 if (check_tes_query(ctx, shProg)) {
964 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL];
984 if (check_tes_query(ctx, shProg)) {
986 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL];
1006 if (check_tes_query(ctx, shProg)) {
1007 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
1014 if (check_tes_query(ctx, shProg)) {
1015 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
1076 struct gl_shader_program *shProg;
1089 shProg = _mesa_lookup_shader_program_err(ctx, program,
1091 if (!shProg) {
1095 _mesa_copy_string(infoLog, bufSize, length, shProg->data->InfoLog);
1275 struct gl_shader_program *shProg;
1287 obj->CurrentProgram[stage]->Id == params->shProg->Name) {
1288 struct gl_program *prog = params->shProg->_LinkedShaders[stage]->Program;
1289 _mesa_use_program(params->ctx, stage, params->shProg, prog, obj);
1299 link_program(struct gl_context *ctx, struct gl_shader_program *shProg,
1302 if (!shProg)
1311 if (_mesa_transform_feedback_is_using_program(ctx, shProg)) {
1322 ctx->_Shader->CurrentProgram[stage]->Id == shProg->Name) {
1330 _mesa_glsl_link_shader(ctx, shProg);
1342 if (shProg->data->LinkStatus) {
1347 if (shProg->_LinkedShaders[stage])
1348 prog = shProg->_LinkedShaders[stage]->Program;
1350 _mesa_use_program(ctx, stage, shProg, prog, ctx->_Shader);
1356 .shProg = shProg
1366 if (shProg->Name != 0 && shProg->Name != ~0 && capture_path != NULL) {
1373 capture_path, shProg->Name, i);
1376 capture_path, shProg->Name);
1390 shProg->IsES ? " ES" : "",
1391 shProg->data->Version / 100, shProg->data->Version % 100);
1392 if (shProg->SeparateShader)
1396 for (unsigned i = 0; i < shProg->NumShaders; i++) {
1398 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1399 shProg->Shaders[i]->Source);
1410 if (shProg->data->LinkStatus == LINKING_FAILURE &&
1413 shProg->Name, shProg->data->InfoLog);
1419 shProg->BinaryRetrievableHint = shProg->BinaryRetrievableHintPending;
1426 shProg->NumShaders, shProg->Name,
1427 shProg->data->LinkStatus ? "Success" : "Failed");
1429 for (i = 0; i < shProg->NumShaders; i++) {
1431 shProg->Shaders[i]->Name,
1432 shProg->Shaders[i]->Stage);
1439 link_program_error(struct gl_context *ctx, struct gl_shader_program *shProg)
1441 link_program(ctx, shProg, false);
1446 link_program_no_error(struct gl_context *ctx, struct gl_shader_program *shProg)
1448 link_program(ctx, shProg, true);
1453 _mesa_link_program(struct gl_context *ctx, struct gl_shader_program *shProg)
1455 link_program_error(ctx, shProg);
1463 print_shader_info(const struct gl_shader_program *shProg)
1467 printf("Mesa: glUseProgram(%u)\n", shProg->Name);
1468 for (i = 0; i < shProg->NumShaders; i++) {
1470 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1471 shProg->Shaders[i]->Name);
1473 if (shProg->_LinkedShaders[MESA_SHADER_VERTEX])
1475 shProg->_LinkedShaders[MESA_SHADER_VERTEX]->Program->Id);
1476 if (shProg->_LinkedShaders[MESA_SHADER_FRAGMENT])
1478 shProg->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program->Id);
1479 if (shProg->_LinkedShaders[MESA_SHADER_GEOMETRY])
1481 shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->Id);
1482 if (shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL])
1484 shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL]->Program->Id);
1485 if (shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL])
1487 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->Program->Id);
1495 _mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg,
1498 if ((shProg != NULL) && !shProg->data->LinkStatus) {
1500 "%s(program %u not linked)", caller, shProg->Name);
1504 if (ctx->Shader.ActiveProgram != shProg) {
1505 _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, shProg);
1516 struct gl_shader_program *shProg)
1520 if (shProg && shProg->_LinkedShaders[i])
1521 new_prog = shProg->_LinkedShaders[i]->Program;
1522 _mesa_use_program(ctx, i, shProg, new_prog, &ctx->Shader);
1524 _mesa_active_program(ctx, shProg, "glUseProgram");
1534 validate_shader_program(const struct gl_shader_program *shProg,
1537 if (!shProg->data->LinkStatus) {
1560 if (!_mesa_sampler_uniforms_are_valid(shProg, errMsg, 100))
1573 struct gl_shader_program *shProg;
1576 shProg = _mesa_lookup_shader_program_err(ctx, program, "glValidateProgram");
1577 if (!shProg) {
1581 shProg->data->Validated = validate_shader_program(shProg, errMsg);
1582 if (!shProg->data->Validated) {
1584 if (shProg->data->InfoLog) {
1585 ralloc_free(shProg->data->InfoLog);
1587 shProg->data->InfoLog = ralloc_strdup(shProg->data, errMsg);
1911 struct gl_shader_program *shProg =
1913 link_program_no_error(ctx, shProg);
1925 struct gl_shader_program *shProg =
1927 link_program_error(ctx, shProg);
2190 struct gl_shader_program *shProg = NULL;
2197 shProg = _mesa_lookup_shader_program(ctx, program);
2207 shProg =
2209 if (!shProg)
2212 if (!shProg->data->LinkStatus) {
2220 print_shader_info(shProg);
2234 if (shProg) {
2238 _mesa_use_shader_program(ctx, shProg);
2241 _mesa_use_shader_program(ctx, shProg);
2411 struct gl_shader_program *shProg;
2420 shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetProgramBinary");
2421 if (!shProg)
2441 if (!shProg->data->LinkStatus) {
2444 shProg->Name);
2454 _mesa_get_program_binary(ctx, shProg, bufSize, length, binaryFormat,
2464 struct gl_shader_program *shProg;
2467 shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramBinary");
2468 if (!shProg)
2471 _mesa_clear_shader_program_data(ctx, shProg);
2472 shProg->data = _mesa_create_shader_program_data();
2498 shProg->data->LinkStatus = LINKING_FAILURE;
2501 _mesa_program_binary(ctx, shProg, binaryFormat, binary, length);
2507 program_parameteri(struct gl_context *ctx, struct gl_shader_program *shProg,
2549 shProg->BinaryRetrievableHintPending = value;
2559 shProg->SeparateShader = value;
2584 struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program);
2585 program_parameteri(ctx, shProg, pname, value, true);
2592 struct gl_shader_program *shProg;
2595 shProg = _mesa_lookup_shader_program_err(ctx, program,
2597 if (!shProg)
2600 program_parameteri(ctx, shProg, pname, value, false);
2606 struct gl_shader_program *shProg, struct gl_program *prog,
2624 shProg);
2698 struct gl_shader_program *shProg;
2701 shProg = _mesa_lookup_shader_program(ctx, program);
2703 shProg->SeparateShader = GL_TRUE;
2708 _mesa_link_program(ctx, shProg);
2715 shProg->data->LinkStatus = LINKING_FAILURE;
2720 ralloc_strcat(&shProg->data->InfoLog, sh->InfoLog);
2814 struct gl_shader_program *shProg;
2823 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2824 if (!shProg)
2828 if (!shProg->_LinkedShaders[stage]) {
2834 return _mesa_program_resource_location(shProg, resource_type, name);
2843 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 res = _mesa_program_resource_find_name(shProg, resource_type, name, NULL);
2869 return _mesa_program_resource_index(shProg, res);
2879 struct gl_shader_program *shProg;
2892 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2893 if (!shProg)
2899 sh = shProg->_LinkedShaders[stage];
2905 struct gl_program *p = shProg->_LinkedShaders[stage]->Program;
2913 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2921 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2938 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2945 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2965 struct gl_shader_program *shProg;
2974 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2975 if (!shProg)
2979 if (!shProg->_LinkedShaders[stage]) {
2986 _mesa_get_program_resource_name(shProg, resource_type,
2999 struct gl_shader_program *shProg;
3008 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
3009 if (!shProg)
3013 if (!shProg->_LinkedShaders[stage]) {
3018 _mesa_get_program_resource_name(shProg, resource_type,
3133 struct gl_shader_program *shProg;
3142 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
3143 if (!shProg)
3147 sh = shProg->_LinkedShaders[stage];
3190 res = _mesa_program_resource_find_index(shProg, resource_type, i);
3209 res = _mesa_program_resource_find_index(shProg, resource_type, i);