0dff23d65b
Create a new structure glamor_gl_dispatch to hold all the gl function's pointer and initialize them at run time , rather than use them directly. To do this is to avoid symbol conflicts. Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
102 lines
4.7 KiB
C
102 lines
4.7 KiB
C
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);
|
|
|
|
|
|
|