Lines Matching refs:shProg
238 struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, name);
239 return shProg ? GL_TRUE : GL_FALSE;
255 attach_shader(struct gl_context *ctx, struct gl_shader_program *shProg,
258 GLuint n = shProg->NumShaders;
260 shProg->Shaders = realloc(shProg->Shaders,
262 if (!shProg->Shaders) {
268 shProg->Shaders[n] = NULL; /* since realloc() didn't zero the new space */
269 _mesa_reference_shader(ctx, &shProg->Shaders[n], sh);
270 shProg->NumShaders++;
277 struct gl_shader_program *shProg;
283 shProg = _mesa_lookup_shader_program_err(ctx, program, caller);
284 if (!shProg)
292 n = shProg->NumShaders;
294 if (shProg->Shaders[i] == sh) {
304 shProg->Shaders[i]->Stage == sh->Stage) {
318 attach_shader(ctx, shProg, sh);
324 struct gl_shader_program *shProg;
327 shProg = _mesa_lookup_shader_program(ctx, program);
330 attach_shader(ctx, shProg, sh);
367 struct gl_shader_program *shProg;
373 shProg = _mesa_new_shader_program(name);
375 _mesa_HashInsertLocked(ctx->Shared->ShaderObjects, name, shProg);
377 assert(shProg->RefCount == 1);
401 struct gl_shader_program *shProg;
403 shProg = _mesa_lookup_shader_program_err(ctx, name, "glDeleteProgram");
404 if (!shProg)
407 if (!shProg->DeletePending) {
408 shProg->DeletePending = GL_TRUE;
410 /* effectively, decr shProg's refcount */
411 _mesa_reference_shader_program(ctx, &shProg, NULL);
438 struct gl_shader_program *shProg;
443 shProg = _mesa_lookup_shader_program_err(ctx, program, "glDetachShader");
444 if (!shProg)
447 shProg = _mesa_lookup_shader_program(ctx, program);
450 n = shProg->NumShaders;
453 if (shProg->Shaders[i]->Name == shader) {
458 _mesa_reference_shader(ctx, &shProg->Shaders[i], NULL);
468 newList[j] = shProg->Shaders[j];
471 newList[j++] = shProg->Shaders[i];
475 free(shProg->Shaders);
476 shProg->Shaders = newList;
477 shProg->NumShaders = n - 1;
481 for (j = 0; j < shProg->NumShaders; j++) {
482 assert(shProg->Shaders[j]->Stage == MESA_SHADER_VERTEX ||
483 shProg->Shaders[j]->Stage == MESA_SHADER_TESS_CTRL ||
484 shProg->Shaders[j]->Stage == MESA_SHADER_TESS_EVAL ||
485 shProg->Shaders[j]->Stage == MESA_SHADER_GEOMETRY ||
486 shProg->Shaders[j]->Stage == MESA_SHADER_FRAGMENT);
487 assert(shProg->Shaders[j]->RefCount > 0);
531 struct gl_shader_program *shProg;
538 shProg =
541 if (shProg) {
543 for (i = 0; i < (GLuint) maxCount && i < shProg->NumShaders; i++) {
545 objOut[i] = shProg->Shaders[i]->Name;
549 handleOut[i] = (GLhandleARB) shProg->Shaders[i]->Name;
589 check_gs_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
591 if (shProg->data->LinkStatus &&
592 shProg->_LinkedShaders[MESA_SHADER_GEOMETRY] != NULL) {
614 check_tcs_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
616 if (shProg->data->LinkStatus &&
617 shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL] != NULL) {
640 check_tes_query(struct gl_context *ctx, const struct gl_shader_program *shProg)
642 if (shProg->data->LinkStatus &&
643 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL] != NULL) {
662 struct gl_shader_program *shProg
686 if (!shProg) {
692 *params = shProg->DeletePending;
696 *params = ctx->Driver.GetShaderProgramCompletionStatus(ctx, shProg);
701 *params = shProg->data->LinkStatus ? GL_TRUE : GL_FALSE;
704 *params = shProg->data->Validated;
707 *params = (shProg->data->InfoLog && shProg->data->InfoLog[0] != '\0') ?
708 strlen(shProg->data->InfoLog) + 1 : 0;
711 *params = shProg->NumShaders;
714 *params = _mesa_count_active_attribs(shProg);
717 *params = _mesa_longest_attribute_name_length(shProg);
722 shProg->data->NumUniformStorage - shProg->data->NumHiddenUniforms;
724 if (!shProg->data->UniformStorage[i].is_shader_storage)
733 shProg->data->NumUniformStorage - shProg->data->NumHiddenUniforms;
736 if (shProg->data->UniformStorage[i].is_shader_storage)
742 const GLint len = strlen(shProg->data->UniformStorage[i].name) + 1 +
743 ((shProg->data->UniformStorage[i].array_elements != 0) ? 3 : 0);
755 *params = shProg->TransformFeedback.NumVarying;
763 for (i = 0; i < shProg->TransformFeedback.NumVarying; i++) {
767 strlen(shProg->TransformFeedback.VaryingNames[i]) + 1;
779 *params = shProg->TransformFeedback.BufferMode;
784 if (check_gs_query(ctx, shProg)) {
785 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
792 if (check_gs_query(ctx, shProg)) {
793 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
800 if (check_gs_query(ctx, shProg)) {
801 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
808 if (check_gs_query(ctx, shProg)) {
809 *params = shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->
820 for (i = 0; i < shProg->data->NumUniformBlocks; i++) {
823 const GLint len = strlen(shProg->data->UniformBlocks[i].Name) + 1;
836 *params = shProg->data->NumUniformBlocks;
848 *params = shProg->BinaryRetreivableHint;
851 if (ctx->Const.NumProgramBinaryFormats == 0 || !shProg->data->LinkStatus) {
854 _mesa_get_program_binary_length(ctx, shProg, params);
861 *params = shProg->data->NumAtomicBuffers;
867 if (!shProg->data->LinkStatus) {
872 if (shProg->_LinkedShaders[MESA_SHADER_COMPUTE] == NULL) {
878 params[i] = shProg->_LinkedShaders[MESA_SHADER_COMPUTE]->
884 *params = (shProg->data->LinkStatus == LINKING_FAILURE) ? 0 : shProg->SeparateShader;
891 if (check_tcs_query(ctx, shProg)) {
892 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL]->
899 if (check_tes_query(ctx, shProg)) {
900 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
907 if (check_tes_query(ctx, shProg)) {
909 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL];
929 if (check_tes_query(ctx, shProg)) {
930 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
937 if (check_tes_query(ctx, shProg)) {
938 *params = shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->
999 struct gl_shader_program *shProg;
1012 shProg = _mesa_lookup_shader_program_err(ctx, program,
1014 if (!shProg) {
1018 _mesa_copy_string(infoLog, bufSize, length, shProg->data->InfoLog);
1189 link_program(struct gl_context *ctx, struct gl_shader_program *shProg,
1192 if (!shProg)
1201 if (_mesa_transform_feedback_is_using_program(ctx, shProg)) {
1212 ctx->_Shader->CurrentProgram[stage]->Id == shProg->Name) {
1218 _mesa_glsl_link_shader(ctx, shProg);
1230 if (shProg->data->LinkStatus && programs_in_use) {
1235 if (shProg->_LinkedShaders[stage])
1236 prog = shProg->_LinkedShaders[stage]->Program;
1238 _mesa_use_program(ctx, stage, shProg, prog, ctx->_Shader);
1244 if (shProg->Name != 0 && shProg->Name != ~0 && capture_path != NULL) {
1250 capture_path, shProg->Name, i);
1253 capture_path, shProg->Name);
1265 shProg->IsES ? " ES" : "",
1266 shProg->data->Version / 100, shProg->data->Version % 100);
1267 if (shProg->SeparateShader)
1271 for (unsigned i = 0; i < shProg->NumShaders; i++) {
1273 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1274 shProg->Shaders[i]->Source);
1284 if (shProg->data->LinkStatus == LINKING_FAILURE &&
1287 shProg->Name, shProg->data->InfoLog);
1297 shProg->NumShaders, shProg->Name,
1298 shProg->data->LinkStatus ? "Success" : "Failed");
1300 for (i = 0; i < shProg->NumShaders; i++) {
1302 shProg->Shaders[i]->Name,
1303 shProg->Shaders[i]->Stage);
1310 link_program_error(struct gl_context *ctx, struct gl_shader_program *shProg)
1312 link_program(ctx, shProg, false);
1317 link_program_no_error(struct gl_context *ctx, struct gl_shader_program *shProg)
1319 link_program(ctx, shProg, true);
1324 _mesa_link_program(struct gl_context *ctx, struct gl_shader_program *shProg)
1326 link_program_error(ctx, shProg);
1334 print_shader_info(const struct gl_shader_program *shProg)
1338 printf("Mesa: glUseProgram(%u)\n", shProg->Name);
1339 for (i = 0; i < shProg->NumShaders; i++) {
1342 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1343 shProg->Shaders[i]->Name,
1344 shProg->Shaders[i]->SourceChecksum);
1347 _mesa_shader_stage_to_string(shProg->Shaders[i]->Stage),
1348 shProg->Shaders[i]->Name);
1351 if (shProg->_LinkedShaders[MESA_SHADER_VERTEX])
1353 shProg->_LinkedShaders[MESA_SHADER_VERTEX]->Program->Id);
1354 if (shProg->_LinkedShaders[MESA_SHADER_FRAGMENT])
1356 shProg->_LinkedShaders[MESA_SHADER_FRAGMENT]->Program->Id);
1357 if (shProg->_LinkedShaders[MESA_SHADER_GEOMETRY])
1359 shProg->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->Id);
1360 if (shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL])
1362 shProg->_LinkedShaders[MESA_SHADER_TESS_CTRL]->Program->Id);
1363 if (shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL])
1365 shProg->_LinkedShaders[MESA_SHADER_TESS_EVAL]->Program->Id);
1373 _mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg,
1376 if ((shProg != NULL) && !shProg->data->LinkStatus) {
1378 "%s(program %u not linked)", caller, shProg->Name);
1382 if (ctx->Shader.ActiveProgram != shProg) {
1383 _mesa_reference_shader_program(ctx, &ctx->Shader.ActiveProgram, shProg);
1393 struct gl_shader_program *shProg)
1397 if (shProg && shProg->_LinkedShaders[i])
1398 new_prog = shProg->_LinkedShaders[i]->Program;
1399 _mesa_use_program(ctx, i, shProg, new_prog, &ctx->Shader);
1401 _mesa_active_program(ctx, shProg, "glUseProgram");
1411 validate_shader_program(const struct gl_shader_program *shProg,
1414 if (!shProg->data->LinkStatus) {
1437 if (!_mesa_sampler_uniforms_are_valid(shProg, errMsg, 100))
1450 struct gl_shader_program *shProg;
1453 shProg = _mesa_lookup_shader_program_err(ctx, program, "glValidateProgram");
1454 if (!shProg) {
1458 shProg->data->Validated = validate_shader_program(shProg, errMsg);
1459 if (!shProg->data->Validated) {
1461 if (shProg->data->InfoLog) {
1462 ralloc_free(shProg->data->InfoLog);
1464 shProg->data->InfoLog = ralloc_strdup(shProg->data, errMsg);
1788 struct gl_shader_program *shProg =
1790 link_program_no_error(ctx, shProg);
1802 struct gl_shader_program *shProg =
1804 link_program_error(ctx, shProg);
2040 struct gl_shader_program *shProg = NULL;
2047 shProg = _mesa_lookup_shader_program(ctx, program);
2057 shProg =
2059 if (!shProg)
2062 if (!shProg->data->LinkStatus) {
2070 print_shader_info(shProg);
2084 if (shProg) {
2088 _mesa_use_shader_program(ctx, shProg);
2091 _mesa_use_shader_program(ctx, shProg);
2256 struct gl_shader_program *shProg;
2265 shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetProgramBinary");
2266 if (!shProg)
2286 if (!shProg->data->LinkStatus) {
2289 shProg->Name);
2299 _mesa_get_program_binary(ctx, shProg, bufSize, length, binaryFormat,
2309 struct gl_shader_program *shProg;
2312 shProg = _mesa_lookup_shader_program_err(ctx, program, "glProgramBinary");
2313 if (!shProg)
2316 _mesa_clear_shader_program_data(ctx, shProg);
2317 shProg->data = _mesa_create_shader_program_data();
2343 shProg->data->LinkStatus = LINKING_FAILURE;
2346 _mesa_program_binary(ctx, shProg, binaryFormat, binary, length);
2352 program_parameteri(struct gl_context *ctx, struct gl_shader_program *shProg,
2394 shProg->BinaryRetreivableHint = value;
2404 shProg->SeparateShader = value;
2429 struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program);
2430 program_parameteri(ctx, shProg, pname, value, true);
2437 struct gl_shader_program *shProg;
2440 shProg = _mesa_lookup_shader_program_err(ctx, program,
2442 if (!shProg)
2445 program_parameteri(ctx, shProg, pname, value, false);
2451 struct gl_shader_program *shProg, struct gl_program *prog,
2469 shProg);
2545 struct gl_shader_program *shProg;
2548 shProg = _mesa_lookup_shader_program(ctx, program);
2550 shProg->SeparateShader = GL_TRUE;
2555 _mesa_link_program(ctx, shProg);
2562 shProg->data->LinkStatus = LINKING_FAILURE;
2567 ralloc_strcat(&shProg->data->InfoLog, sh->InfoLog);
2650 struct gl_shader_program *shProg;
2659 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2660 if (!shProg)
2664 if (!shProg->_LinkedShaders[stage]) {
2670 return _mesa_program_resource_location(shProg, resource_type, name);
2679 struct gl_shader_program *shProg;
2689 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2690 if (!shProg)
2694 if (!shProg->_LinkedShaders[stage]) {
2700 res = _mesa_program_resource_find_name(shProg, resource_type, name, NULL);
2705 return _mesa_program_resource_index(shProg, res);
2715 struct gl_shader_program *shProg;
2728 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2729 if (!shProg)
2735 sh = shProg->_LinkedShaders[stage];
2741 struct gl_program *p = shProg->_LinkedShaders[stage]->Program;
2749 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2757 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2774 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2781 res = _mesa_program_resource_find_index(shProg, resource_type, index);
2801 struct gl_shader_program *shProg;
2810 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2811 if (!shProg)
2815 if (!shProg->_LinkedShaders[stage]) {
2822 _mesa_get_program_resource_name(shProg, resource_type,
2835 struct gl_shader_program *shProg;
2844 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2845 if (!shProg)
2849 if (!shProg->_LinkedShaders[stage]) {
2854 _mesa_get_program_resource_name(shProg, resource_type,
2969 struct gl_shader_program *shProg;
2978 shProg = _mesa_lookup_shader_program_err(ctx, program, api_name);
2979 if (!shProg)
2983 sh = shProg->_LinkedShaders[stage];
3026 res = _mesa_program_resource_find_index(shProg, resource_type, i);
3045 res = _mesa_program_resource_find_index(shProg, resource_type, i);