#define LONGSTRING __extension__ in imports.h and use it to silence gcc
[mesa.git] / src / mesa / shader / shaderobjects.h
index 86a069ad6a9d22b87f0f1f823a0a6dcb559b2e6a..09ba807255e770856fca72940354c74f8ea6d742 100644 (file)
@@ -27,6 +27,8 @@
 
 #include "context.h"
 
+#if FEATURE_ARB_shader_objects
+
 /**
  * gl2 unique interface identifier.
  * Each gl2 interface has its own interface id used for object queries.
@@ -40,7 +42,8 @@ enum gl2_uiid
    UIID_FRAGMENT_SHADER,       /* fragment shader */
    UIID_VERTEX_SHADER,         /* vertex shader */
    UIID_PROGRAM,               /* program object */
-   UIID_3DLABS_SHHANDLE                /* encapsulates 3dlabs' ShHandle */
+   UIID_3DLABS_SHHANDLE,         /* encapsulates 3DLabs' ShHandle */
+   UIID_DEBUG                    /* debug object */
 };
 
 struct gl2_unknown_intf
@@ -57,7 +60,8 @@ struct gl2_generic_intf
    GLenum (* GetType) (struct gl2_generic_intf **);
    GLhandleARB (* GetName) (struct gl2_generic_intf **);
    GLboolean (* GetDeleteStatus) (struct gl2_generic_intf **);
-   const GLcharARB *(* GetInfoLog) (struct gl2_generic_intf **);
+   GLvoid (* GetInfoLog) (struct gl2_generic_intf **, GLsizei, GLcharARB *);
+   GLsizei (* GetInfoLogLength) (struct gl2_generic_intf **);
 };
 
 struct gl2_container_intf
@@ -87,8 +91,8 @@ struct gl2_program_intf
    GLvoid (* Link) (struct gl2_program_intf **);
    GLvoid (* Validate) (struct gl2_program_intf **);
    GLvoid (* UpdateFixedUniforms) (struct gl2_program_intf **);
-   GLvoid (* UpdateFixedAttribute) (struct gl2_program_intf **, GLuint, GLvoid *, GLuint, GLuint,
-                                    GLboolean);
+   GLvoid (* UpdateFixedAttrib) (struct gl2_program_intf **, GLuint, GLvoid *, GLuint, GLuint,
+                                 GLboolean);
    GLvoid (* UpdateFixedVarying) (struct gl2_program_intf **, GLuint, GLvoid *, GLuint, GLuint,
                                   GLboolean);
    GLvoid (* GetTextureImageUsage) (struct gl2_program_intf **, GLbitfield *);
@@ -100,12 +104,15 @@ struct gl2_program_intf
    GLint (* GetUniformLocation) (struct gl2_program_intf **, const GLchar *name);
    GLboolean (* WriteUniform) (struct gl2_program_intf **, GLint loc, GLsizei count,
                                const GLvoid *data, GLenum type);
+   GLboolean (* ReadUniform) (struct gl2_program_intf **, GLint loc, GLsizei count,
+                               GLvoid *data, GLenum type);
    GLvoid (* GetActiveAttrib) (struct gl2_program_intf **, GLuint index, GLsizei maxLength,
                                GLsizei *length, GLint *size, GLenum *type, GLchar *name);
    GLuint (* GetActiveAttribMaxLength) (struct gl2_program_intf **);
    GLuint (* GetActiveAttribCount) (struct gl2_program_intf **);
    GLint (* GetAttribLocation) (struct gl2_program_intf **, const GLchar *name);
    GLvoid (* OverrideAttribBinding) (struct gl2_program_intf **, GLuint, const GLchar *);
+   GLvoid (* WriteAttrib) (struct gl2_program_intf **, GLuint, const GLfloat *);
    GLvoid (* UpdateVarying) (struct gl2_program_intf **, GLuint, GLfloat *, GLboolean);
 };
 
@@ -125,8 +132,15 @@ struct gl2_3dlabs_shhandle_intf
    GLvoid *(* GetShHandle) (struct gl2_3dlabs_shhandle_intf **);
 };
 
+struct gl2_debug_intf
+{
+   struct gl2_generic_intf _generic;
+   GLvoid (* ClearDebugLog) (struct gl2_debug_intf **, GLenum logType, GLenum shaderType);
+   GLvoid (* GetDebugLog) (struct gl2_debug_intf **, GLenum logType, GLenum shaderType,
+                           GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+   GLsizei (* GetDebugLogLength) (struct gl2_debug_intf **, GLenum logType, GLenum shaderType);
+};
 
-#if FEATURE_ARB_shader_objects
 
 extern void GLAPIENTRY
 _mesa_DeleteObjectARB(GLhandleARB obj);
@@ -258,9 +272,82 @@ _mesa_GetAttribLocationARB (GLhandleARB, const GLcharARB *);
 
 #endif /* FEATURE_ARB_vertex_shader */
 
-extern void
-_mesa_init_shaderobjects (GLcontext *ctx);
+
+/* 2.0 */
+extern void GLAPIENTRY
+_mesa_AttachShader(GLuint program, GLuint shader);
+
+extern GLuint GLAPIENTRY
+_mesa_CreateShader(GLenum);
+
+extern GLuint GLAPIENTRY
+_mesa_CreateProgram(void);
+
+extern void GLAPIENTRY
+_mesa_DeleteProgram(GLuint program);
+
+extern void GLAPIENTRY
+_mesa_DeleteShader(GLuint shader);
+
+extern void GLAPIENTRY
+_mesa_DetachShader(GLuint program, GLuint shader);
+
+extern void GLAPIENTRY
+_mesa_GetAttachedShaders(GLuint program, GLsizei maxCount,
+                         GLsizei *count, GLuint *obj);
+
+extern void GLAPIENTRY
+_mesa_GetProgramiv(GLuint program, GLenum pname, GLint *params);
+
+extern void GLAPIENTRY
+_mesa_GetProgramInfoLog(GLuint program, GLsizei bufSize,
+                        GLsizei *length, GLchar *infoLog);
+
+extern void GLAPIENTRY
+_mesa_GetShaderiv(GLuint shader, GLenum pname, GLint *params);
+
+extern void GLAPIENTRY
+_mesa_GetShaderInfoLog(GLuint shader, GLsizei bufSize,
+                       GLsizei *length, GLchar *infoLog);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsProgram(GLuint program);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsShader(GLuint shader);
+
+
+
+/* 2.1 */
+extern void GLAPIENTRY
+_mesa_UniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *value);
+
+extern void GLAPIENTRY
+_mesa_UniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *value);
+
+extern void GLAPIENTRY
+_mesa_UniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *value);
+
+extern void GLAPIENTRY
+_mesa_UniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *value);
+
+extern void GLAPIENTRY
+_mesa_UniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *value);
+
+extern void GLAPIENTRY
+_mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose,
+                         const GLfloat *value);
+
+
 
 #endif /* FEATURE_ARB_shader_objects */
 
+extern void
+_mesa_init_shaderobjects (GLcontext *ctx);
+
 #endif /* SHADEROBJECTS_H */