#include <stdlib.h>
#include <assert.h>
#include <GLES2/gl2.h>
#include "src/mesa/main/mtypes.h"
#include "src/talloc/hieralloc.h"
void _mesa_reference_shader(const void * ctx, struct gl_shader **ptr,
struct gl_shader *sh)
{
*ptr = sh;
}
struct gl_shader * _mesa_new_shader(const void * ctx, GLuint name, GLenum type)
{
assert(type == GL_FRAGMENT_SHADER || type == GL_VERTEX_SHADER);
struct gl_shader * shader = (struct gl_shader *)_hieralloc_zero(ctx, sizeof(struct gl_shader), "zr:gl_shader");
if (shader) {
shader->Type = type;
shader->Name = name;
shader->RefCount = 1;
}
return shader;
}
void _mesa_delete_shader(const void * ctx, struct gl_shader *shader)
{
if (!shader)
return;
if (shader->RefCount > 1) {
shader->DeletePending = GL_TRUE;
return;
}
hieralloc_free(shader);
}