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