/** * Free/delete a shader program object. * Called via ctx->Driver.DeleteShaderProgram(). */ static void _mesa_delete_shader_program(struct gl_context *ctx, struct gl_shader_program *shProg) { _mesa_free_shader_program_data(ctx, shProg); ralloc_free(shProg); }
/** * Free/delete a shader program object. */ void _mesa_free_shader_program(GLcontext *ctx, struct gl_shader_program *shProg) { _mesa_free_shader_program_data(ctx, shProg); _mesa_free(shProg); }
/** * Free/delete a shader program object. */ void _mesa_delete_shader_program(struct gl_context *ctx, struct gl_shader_program *shProg) { _mesa_free_shader_program_data(ctx, shProg); _mesa_reference_shader_program_data(ctx, &shProg->data, NULL); ralloc_free(shProg); }
/** * Callback for freeing shader program data. Call it before delete_shader_cb * to avoid memory access error. */ static void free_shader_program_data_cb(GLuint id, void *data, void *userData) { GLcontext *ctx = (GLcontext *) userData; struct gl_shader_program *shProg = (struct gl_shader_program *) data; if (shProg->Type == GL_SHADER_PROGRAM_MESA) { _mesa_free_shader_program_data(ctx, shProg); } }