typedef struct glamor_gl_dispatch { /* Transformation functions */ void (*glMatrixMode)(GLenum mode); void (*glLoadIdentity)(void); void (*glViewport)( GLint x, GLint y, GLsizei width, GLsizei height ); /* Drawing functions */ void (*glRasterPos2i)( GLint x, GLint y ); /* Vertex Array */ void (*glDrawArrays)( GLenum mode, GLint first, GLsizei count ); /* Raster functions */ void (*glReadPixels)( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ); void (*glDrawPixels)( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ); void (*glPixelStorei)( GLenum pname, GLint param ); /* Texture Mapping */ void (*glTexParameteri)( GLenum target, GLenum pname, GLint param ); void (*glTexImage2D)( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels ); /* 1.1 */ void (*glGenTextures)( GLsizei n, GLuint *textures ); void (*glDeleteTextures)( GLsizei n, const GLuint *textures); void (*glBindTexture)( GLenum target, GLuint texture ); void (*glTexSubImage2D)( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ); /* MISC */ void (*glFlush)( void ); void (*glGetIntegerv)( GLenum pname, GLint *params ); const GLubyte * (*glGetString)( GLenum name ); void (*glScissor)( GLint x, GLint y, GLsizei width, GLsizei height); void (*glEnable)( GLenum cap ); void (*glDisable)( GLenum cap ); void (*glBlendFunc)( GLenum sfactor, GLenum dfactor ); void (*glLogicOp)( GLenum opcode ); /* 1.3 */ void (*glActiveTexture)( GLenum texture ); /* GL Extentions */ void (*glGenBuffers) (GLsizei n, GLuint *buffers); void (*glBufferData) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); GLvoid* (*glMapBuffer) (GLenum target, GLenum access); GLboolean (*glUnmapBuffer) (GLenum target); void (*glBindBuffer) (GLenum target, GLuint buffer); void (*glDeleteBuffers) (GLsizei n, const GLuint *buffers); void (*glFramebufferTexture2D) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); void (*glBindFramebuffer) (GLenum target, GLuint framebuffer); void (*glDeleteFramebuffers) (GLsizei n, const GLuint *framebuffers); void (*glGenFramebuffers) (GLsizei n, GLuint *framebuffers); GLenum (*glCheckFramebufferStatus) (GLenum target); void (*glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); void (*glVertexAttribPointer) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer); void (*glDisableVertexAttribArray) (GLuint index); void (*glEnableVertexAttribArray) (GLuint index); void (*glBindAttribLocation) (GLuint program, GLuint index, const GLchar *name); void (*glLinkProgram) (GLuint program); void (*glShaderSource) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); void (*glUseProgram) (GLuint program); void (*glUniform1i) (GLint location, GLint v0); void (*glUniform4f) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); void (*glUniform4fv) (GLint location, GLsizei count, const GLfloat *value); GLuint (*glCreateProgram) (void); GLuint (*glCreateShader) (GLenum type); void (*glCompileShader) (GLuint shader); void (*glAttachShader) (GLuint program, GLuint shader); void (*glGetShaderiv) (GLuint shader, GLenum pname, GLint *params); void (*glGetShaderInfoLog) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); void (*glGetProgramiv) (GLuint program, GLenum pname, GLint *params); void (*glGetProgramInfoLog) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); GLint (*glGetUniformLocation) (GLuint program, const GLchar *name); }glamor_gl_dispatch; Bool glamor_gl_dispatch_init_impl(struct glamor_gl_dispatch *dispatch, int gl_version, void *(*get_proc_address)(const char*)); Bool glamor_gl_dispatch_init(ScreenPtr screen, struct glamor_gl_dispatch *dispatch, int gl_version);