Lines Matching defs:shProg
244 * Set ptr to point to shProg.
247 * Then set ptr to point to shProg, incrementing its refcount.
252 struct gl_shader_program *shProg)
255 if (*ptr == shProg) {
277 if (shProg) {
278 p_atomic_inc(&shProg->RefCount);
279 *ptr = shProg;
320 struct gl_shader_program *shProg;
321 shProg = rzalloc(NULL, struct gl_shader_program);
322 if (shProg) {
323 shProg->Name = name;
324 shProg->data = _mesa_create_shader_program_data();
325 if (!shProg->data) {
326 ralloc_free(shProg);
329 init_shader_program(shProg);
331 return shProg;
340 struct gl_shader_program *shProg)
343 if (shProg->_LinkedShaders[sh] != NULL) {
344 _mesa_delete_linked_shader(ctx, shProg->_LinkedShaders[sh]);
345 shProg->_LinkedShaders[sh] = NULL;
349 if (shProg->UniformRemapTable) {
350 ralloc_free(shProg->UniformRemapTable);
351 shProg->NumUniformRemapTable = 0;
352 shProg->UniformRemapTable = NULL;
355 if (shProg->UniformHash) {
356 string_to_uint_map_dtor(shProg->UniformHash);
357 shProg->UniformHash = NULL;
360 if (shProg->data && shProg->data->ProgramResourceHash) {
361 _mesa_hash_table_u64_destroy(shProg->data->ProgramResourceHash);
362 shProg->data->ProgramResourceHash = NULL;
365 _mesa_reference_shader_program_data(ctx, &shProg->data, NULL);
376 struct gl_shader_program *shProg)
380 assert(shProg->Type == GL_SHADER_PROGRAM_MESA);
382 _mesa_clear_shader_program_data(ctx, shProg);
384 if (shProg->AttributeBindings) {
385 string_to_uint_map_dtor(shProg->AttributeBindings);
386 shProg->AttributeBindings = NULL;
389 if (shProg->FragDataBindings) {
390 string_to_uint_map_dtor(shProg->FragDataBindings);
391 shProg->FragDataBindings = NULL;
394 if (shProg->FragDataIndexBindings) {
395 string_to_uint_map_dtor(shProg->FragDataIndexBindings);
396 shProg->FragDataIndexBindings = NULL;
400 for (i = 0; i < shProg->NumShaders; i++) {
401 _reference_shader(ctx, &shProg->Shaders[i], NULL, true);
403 shProg->NumShaders = 0;
405 free(shProg->Shaders);
406 shProg->Shaders = NULL;
409 for (i = 0; i < shProg->TransformFeedback.NumVarying; i++) {
410 free(shProg->TransformFeedback.VaryingNames[i]);
412 free(shProg->TransformFeedback.VaryingNames);
413 shProg->TransformFeedback.VaryingNames = NULL;
414 shProg->TransformFeedback.NumVarying = 0;
416 free(shProg->Label);
417 shProg->Label = NULL;
426 struct gl_shader_program *shProg)
428 _mesa_free_shader_program_data(ctx, shProg);
429 ralloc_free(shProg);
439 struct gl_shader_program *shProg;
441 shProg = (struct gl_shader_program *)
447 if (shProg && shProg->Type != GL_SHADER_PROGRAM_MESA) {
450 return shProg;
468 struct gl_shader_program *shProg = (struct gl_shader_program *)
470 if (!shProg) {
475 if (shProg->Type != GL_SHADER_PROGRAM_MESA) {
480 return shProg;