Home | History | Annotate | Download | only in main
      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 
      9 void _mesa_reference_shader(const void * ctx, struct gl_shader **ptr,
     10                                           struct gl_shader *sh)
     11 {
     12    *ptr = sh;
     13 }
     14 
     15 struct 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 
     27 void _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