1#include <stdlib.h>
2#include <assert.h>
3
4#include <GLES2/gl2.h>
5
6#include "src/mesa/main/mtypes.h"
7#include "src/talloc/hieralloc.h"
8
9void _mesa_reference_shader(const void * ctx, struct gl_shader **ptr,
10                                          struct gl_shader *sh)
11{
12   *ptr = sh;
13}
14
15struct gl_shader * _mesa_new_shader(const void * ctx, GLuint name, GLenum type)
16{
17   assert(type == GL_FRAGMENT_SHADER || type == GL_VERTEX_SHADER);
18   struct gl_shader * shader = (struct gl_shader *)_hieralloc_zero(ctx, sizeof(struct gl_shader), "zr:gl_shader");
19   if (shader) {
20      shader->Type = type;
21      shader->Name = name;
22      shader->RefCount = 1;
23   }
24   return shader;
25}
26
27void _mesa_delete_shader(const void * ctx, struct gl_shader *shader)
28{
29   if (!shader)
30      return;
31   if (shader->RefCount > 1) {
32      shader->DeletePending = GL_TRUE;
33      return;
34   }
35   hieralloc_free(shader);
36}
37