598
* \name GLSL shader/program functions.
602
* Called when a shader is compiled.
604
* Note that not all shader objects get ShaderCompile called on
605
* them. Notably, the shaders containing builtin functions do not
606
* have CompileShader() called, so if lowering passes are done they
607
* need to also be performed in LinkShader().
609
GLboolean (*CompileShader)(GLcontext *ctx, struct gl_shader *shader);
611
* Called when a shader program is linked.
613
* This gives drivers an opportunity to clone the IR and make their
614
* own transformations on it for the purposes of code generation.
616
GLboolean (*LinkShader)(GLcontext *ctx, struct gl_shader_program *shader);
600
620
* \name State-changing functions.
710
* \name State-query functions
712
* Return GL_TRUE if query was completed, GL_FALSE otherwise.
715
/** Return the value or values of a selected parameter */
716
GLboolean (*GetBooleanv)(GLcontext *ctx, GLenum pname, GLboolean *result);
717
/** Return the value or values of a selected parameter */
718
GLboolean (*GetDoublev)(GLcontext *ctx, GLenum pname, GLdouble *result);
719
/** Return the value or values of a selected parameter */
720
GLboolean (*GetFloatv)(GLcontext *ctx, GLenum pname, GLfloat *result);
721
/** Return the value or values of a selected parameter */
722
GLboolean (*GetIntegerv)(GLcontext *ctx, GLenum pname, GLint *result);
723
/** Return the value or values of a selected parameter */
724
GLboolean (*GetInteger64v)(GLcontext *ctx, GLenum pname, GLint64 *result);
725
/** Return the value or values of a selected parameter */
726
GLboolean (*GetPointerv)(GLcontext *ctx, GLenum pname, GLvoid **result);
731
730
* \name Vertex/pixel buffer object functions
733
#if FEATURE_ARB_vertex_buffer_object
735
733
void (*BindBuffer)( GLcontext *ctx, GLenum target,
736
734
struct gl_buffer_object *obj );
849
840
* \name GLSL-related functions (ARB extensions and OpenGL 2.x)
852
void (*AttachShader)(GLcontext *ctx, GLuint program, GLuint shader);
853
void (*BindAttribLocation)(GLcontext *ctx, GLuint program, GLuint index,
854
const GLcharARB *name);
855
void (*CompileShader)(GLcontext *ctx, GLuint shader);
856
GLuint (*CreateShader)(GLcontext *ctx, GLenum type);
857
GLuint (*CreateProgram)(GLcontext *ctx);
858
void (*DeleteProgram2)(GLcontext *ctx, GLuint program);
859
void (*DeleteShader)(GLcontext *ctx, GLuint shader);
860
void (*DetachShader)(GLcontext *ctx, GLuint program, GLuint shader);
861
void (*GetActiveAttrib)(GLcontext *ctx, GLuint program, GLuint index,
862
GLsizei maxLength, GLsizei * length, GLint * size,
863
GLenum * type, GLcharARB * name);
864
void (*GetActiveUniform)(GLcontext *ctx, GLuint program, GLuint index,
865
GLsizei maxLength, GLsizei *length, GLint *size,
866
GLenum *type, GLcharARB *name);
867
void (*GetAttachedShaders)(GLcontext *ctx, GLuint program, GLsizei maxCount,
868
GLsizei *count, GLuint *obj);
869
GLint (*GetAttribLocation)(GLcontext *ctx, GLuint program,
870
const GLcharARB *name);
871
GLuint (*GetHandle)(GLcontext *ctx, GLenum pname);
872
void (*GetProgramiv)(GLcontext *ctx, GLuint program,
873
GLenum pname, GLint *params);
874
void (*GetProgramInfoLog)(GLcontext *ctx, GLuint program, GLsizei bufSize,
875
GLsizei *length, GLchar *infoLog);
876
void (*GetShaderiv)(GLcontext *ctx, GLuint shader,
877
GLenum pname, GLint *params);
878
void (*GetShaderInfoLog)(GLcontext *ctx, GLuint shader, GLsizei bufSize,
879
GLsizei *length, GLchar *infoLog);
880
void (*GetShaderSource)(GLcontext *ctx, GLuint shader, GLsizei maxLength,
881
GLsizei *length, GLcharARB *sourceOut);
882
void (*GetUniformfv)(GLcontext *ctx, GLuint program, GLint location,
884
void (*GetUniformiv)(GLcontext *ctx, GLuint program, GLint location,
886
GLint (*GetUniformLocation)(GLcontext *ctx, GLuint program,
887
const GLcharARB *name);
888
GLboolean (*IsProgram)(GLcontext *ctx, GLuint name);
889
GLboolean (*IsShader)(GLcontext *ctx, GLuint name);
890
void (*LinkProgram)(GLcontext *ctx, GLuint program);
891
void (*ShaderSource)(GLcontext *ctx, GLuint shader, const GLchar *source);
892
void (*Uniform)(GLcontext *ctx, GLint location, GLsizei count,
893
const GLvoid *values, GLenum type);
894
void (*UniformMatrix)(GLcontext *ctx, GLint cols, GLint rows,
895
GLint location, GLsizei count,
896
GLboolean transpose, const GLfloat *values);
897
void (*UseProgram)(GLcontext *ctx, GLuint program);
898
void (*ValidateProgram)(GLcontext *ctx, GLuint program);
899
/* XXX many more to come */
843
struct gl_shader *(*NewShader)(GLcontext *ctx, GLuint name, GLenum type);
844
void (*DeleteShader)(GLcontext *ctx, struct gl_shader *shader);
845
struct gl_shader_program *(*NewShaderProgram)(GLcontext *ctx, GLuint name);
846
void (*DeleteShaderProgram)(GLcontext *ctx,
847
struct gl_shader_program *shProg);
848
void (*UseProgram)(GLcontext *ctx, struct gl_shader_program *shProg);
1057
1004
void (*EGLImageTargetRenderbufferStorage)(GLcontext *ctx,
1058
1005
struct gl_renderbuffer *rb,
1059
1006
void *image_handle);
1009
* \name GL_EXT_transform_feedback interface
1011
struct gl_transform_feedback_object *
1012
(*NewTransformFeedback)(GLcontext *ctx, GLuint name);
1013
void (*DeleteTransformFeedback)(GLcontext *ctx,
1014
struct gl_transform_feedback_object *obj);
1015
void (*BeginTransformFeedback)(GLcontext *ctx, GLenum mode,
1016
struct gl_transform_feedback_object *obj);
1017
void (*EndTransformFeedback)(GLcontext *ctx,
1018
struct gl_transform_feedback_object *obj);
1019
void (*PauseTransformFeedback)(GLcontext *ctx,
1020
struct gl_transform_feedback_object *obj);
1021
void (*ResumeTransformFeedback)(GLcontext *ctx,
1022
struct gl_transform_feedback_object *obj);
1023
void (*DrawTransformFeedback)(GLcontext *ctx, GLenum mode,
1024
struct gl_transform_feedback_object *obj);
1088
void (GLAPIENTRYP ArrayElement)( GLint ); /* NOTE */
1051
void (GLAPIENTRYP ArrayElement)( GLint );
1089
1052
void (GLAPIENTRYP Color3f)( GLfloat, GLfloat, GLfloat );
1090
1053
void (GLAPIENTRYP Color3fv)( const GLfloat * );
1091
1054
void (GLAPIENTRYP Color4f)( GLfloat, GLfloat, GLfloat, GLfloat );
1092
1055
void (GLAPIENTRYP Color4fv)( const GLfloat * );
1093
1056
void (GLAPIENTRYP EdgeFlag)( GLboolean );
1094
void (GLAPIENTRYP EvalCoord1f)( GLfloat ); /* NOTE */
1095
void (GLAPIENTRYP EvalCoord1fv)( const GLfloat * ); /* NOTE */
1096
void (GLAPIENTRYP EvalCoord2f)( GLfloat, GLfloat ); /* NOTE */
1097
void (GLAPIENTRYP EvalCoord2fv)( const GLfloat * ); /* NOTE */
1098
void (GLAPIENTRYP EvalPoint1)( GLint ); /* NOTE */
1099
void (GLAPIENTRYP EvalPoint2)( GLint, GLint ); /* NOTE */
1057
void (GLAPIENTRYP EvalCoord1f)( GLfloat );
1058
void (GLAPIENTRYP EvalCoord1fv)( const GLfloat * );
1059
void (GLAPIENTRYP EvalCoord2f)( GLfloat, GLfloat );
1060
void (GLAPIENTRYP EvalCoord2fv)( const GLfloat * );
1061
void (GLAPIENTRYP EvalPoint1)( GLint );
1062
void (GLAPIENTRYP EvalPoint2)( GLint, GLint );
1100
1063
void (GLAPIENTRYP FogCoordfEXT)( GLfloat );
1101
1064
void (GLAPIENTRYP FogCoordfvEXT)( const GLfloat * );
1102
1065
void (GLAPIENTRYP Indexf)( GLfloat );
1103
1066
void (GLAPIENTRYP Indexfv)( const GLfloat * );
1104
void (GLAPIENTRYP Materialfv)( GLenum face, GLenum pname, const GLfloat * ); /* NOTE */
1067
void (GLAPIENTRYP Materialfv)( GLenum face, GLenum pname, const GLfloat * );
1105
1068
void (GLAPIENTRYP MultiTexCoord1fARB)( GLenum, GLfloat );
1106
1069
void (GLAPIENTRYP MultiTexCoord1fvARB)( GLenum, const GLfloat * );
1107
1070
void (GLAPIENTRYP MultiTexCoord2fARB)( GLenum, GLfloat, GLfloat );