* Mesa 3-D graphics library
* Version: 6.5
*
- * Copyright (C) 2004-2005 Brian Paul All Rights Reserved.
+ * Copyright (C) 2004-2006 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
#include "context.h"
+#if FEATURE_ARB_shader_objects
+
/**
* gl2 unique interface identifier.
* Each gl2 interface has its own interface id used for object queries.
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
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
GLboolean (* GetLinkStatus) (struct gl2_program_intf **);
GLboolean (* GetValidateStatus) (struct gl2_program_intf **);
GLvoid (* Link) (struct gl2_program_intf **);
- GLvoid (* Validate) (struct gl2_program_intf **);\r
- GLvoid (* UpdateFixedUniforms) (struct gl2_program_intf **);\r
- GLvoid (* UpdateFixedAttribute) (struct gl2_program_intf **, GLuint, GLvoid *, GLuint, GLuint,\r
- GLboolean);\r
- GLvoid (* UpdateFixedVarying) (struct gl2_program_intf **, GLuint, GLvoid *, GLuint, GLuint,\r
- GLboolean);\r
- GLvoid (* GetTextureImageUsage) (struct gl2_program_intf **, GLbitfield *);\r
+ GLvoid (* Validate) (struct gl2_program_intf **);
+ GLvoid (* UpdateFixedUniforms) (struct gl2_program_intf **);
+ 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 *);
GLboolean (* IsShaderPresent) (struct gl2_program_intf **, GLenum);
+ GLvoid (* GetActiveUniform) (struct gl2_program_intf **, GLuint index, GLsizei maxLength,
+ GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+ GLuint (* GetActiveUniformMaxLength) (struct gl2_program_intf **);
+ GLuint (* GetActiveUniformCount) (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);
};
struct gl2_fragment_shader_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);
#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 */