| #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); |
| } |