#ifndef DD_INCLUDED
#define DD_INCLUDED
struct gl_pixelstore_attrib;
#define DD_FRONT_LEFT_BIT FRONT_LEFT_BIT
#define DD_FRONT_RIGHT_BIT FRONT_RIGHT_BIT
#define DD_BACK_LEFT_BIT BACK_LEFT_BIT
#define DD_BACK_RIGHT_BIT BACK_RIGHT_BIT
#define DD_AUX0 AUX0_BIT
#define DD_AUX1 AUX1_BIT
#define DD_AUX2 AUX2_BIT
#define DD_AUX3 AUX3_BIT
#define DD_DEPTH_BIT GL_DEPTH_BUFFER_BIT
#define DD_ACCUM_BIT GL_ACCUM_BUFFER_BIT
#define DD_STENCIL_BIT GL_STENCIL_BUFFER_BIT
struct dd_function_table {
const GLubyte * (*GetString)( GLcontext *ctx, GLenum name );
void (*UpdateState)( GLcontext *ctx, GLuint new_state );
void (*Clear)( GLcontext *ctx, GLbitfield mask, GLboolean all,
GLint x, GLint y, GLint width, GLint height );
void (*DrawBuffer)( GLcontext *ctx, GLenum buffer );
void (*ReadBuffer)( GLcontext *ctx, GLenum buffer );
void (*GetBufferSize)( GLframebuffer *buffer,
GLuint *width, GLuint *height );
void (*ResizeBuffers)( GLframebuffer *buffer );
void (*Finish)( GLcontext *ctx );
void (*Flush)( GLcontext *ctx );
void (*Error)( GLcontext *ctx );
void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value,
GLint xpos, GLint ypos, GLint width, GLint height );
void (*DrawPixels)( GLcontext *ctx,
GLint x, GLint y, GLsizei width, GLsizei height,
GLenum format, GLenum type,
const struct gl_pixelstore_attrib *unpack,
const GLvoid *pixels );
void (*ReadPixels)( GLcontext *ctx,
GLint x, GLint y, GLsizei width, GLsizei height,
GLenum format, GLenum type,
const struct gl_pixelstore_attrib *unpack,
GLvoid *dest );
void (*CopyPixels)( GLcontext *ctx,
GLint srcx, GLint srcy,
GLsizei width, GLsizei height,
GLint dstx, GLint dsty, GLenum type );
void (*Bitmap)( GLcontext *ctx,
GLint x, GLint y, GLsizei width, GLsizei height,
const struct gl_pixelstore_attrib *unpack,
const GLubyte *bitmap );
const struct gl_texture_format *
(*ChooseTextureFormat)( GLcontext *ctx, GLint internalFormat,
GLenum srcFormat, GLenum srcType );
void (*TexImage1D)( GLcontext *ctx, GLenum target, GLint level,
GLint internalFormat,
GLint width, GLint border,
GLenum format, GLenum type, const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*TexImage2D)( GLcontext *ctx, GLenum target, GLint level,
GLint internalFormat,
GLint width, GLint height, GLint border,
GLenum format, GLenum type, const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*TexImage3D)( GLcontext *ctx, GLenum target, GLint level,
GLint internalFormat,
GLint width, GLint height, GLint depth, GLint border,
GLenum format, GLenum type, const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*TexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLsizei width,
GLenum format, GLenum type,
const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*TexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLsizei width, GLsizei height,
GLenum format, GLenum type,
const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*TexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLsizei height, GLint depth,
GLenum format, GLenum type,
const GLvoid *pixels,
const struct gl_pixelstore_attrib *packing,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level,
GLenum internalFormat, GLint x, GLint y,
GLsizei width, GLint border );
void (*CopyTexImage2D)( GLcontext *ctx, GLenum target, GLint level,
GLenum internalFormat, GLint x, GLint y,
GLsizei width, GLsizei height, GLint border );
void (*CopyTexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,
GLint xoffset,
GLint x, GLint y, GLsizei width );
void (*CopyTexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLint x, GLint y,
GLsizei width, GLsizei height );
void (*CopyTexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLint x, GLint y,
GLsizei width, GLsizei height );
GLboolean (*TestProxyTexImage)(GLcontext *ctx, GLenum target,
GLint level, GLint internalFormat,
GLenum format, GLenum type,
GLint width, GLint height,
GLint depth, GLint border);
void (*CompressedTexImage1D)( GLcontext *ctx, GLenum target,
GLint level, GLint internalFormat,
GLsizei width, GLint border,
GLsizei imageSize, const GLvoid *data,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*CompressedTexImage2D)( GLcontext *ctx, GLenum target,
GLint level, GLint internalFormat,
GLsizei width, GLsizei height, GLint border,
GLsizei imageSize, const GLvoid *data,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*CompressedTexImage3D)( GLcontext *ctx, GLenum target,
GLint level, GLint internalFormat,
GLsizei width, GLsizei height, GLsizei depth,
GLint border,
GLsizei imageSize, const GLvoid *data,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage );
void (*CompressedTexSubImage1D)(GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLsizei width,
GLenum format,
GLsizei imageSize, const GLvoid *data,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage);
void (*CompressedTexSubImage2D)(GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLint yoffset,
GLsizei width, GLint height,
GLenum format,
GLsizei imageSize, const GLvoid *data,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage);
void (*CompressedTexSubImage3D)(GLcontext *ctx, GLenum target, GLint level,
GLint xoffset, GLint yoffset, GLint zoffset,
GLsizei width, GLint height, GLint depth,
GLenum format,
GLsizei imageSize, const GLvoid *data,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage);
void (*BindTexture)( GLcontext *ctx, GLenum target,
struct gl_texture_object *tObj );
void (*CreateTexture)( GLcontext *ctx, struct gl_texture_object *tObj );
void (*DeleteTexture)( GLcontext *ctx, struct gl_texture_object *tObj );
GLboolean (*IsTextureResident)( GLcontext *ctx,
struct gl_texture_object *t );
void (*PrioritizeTexture)( GLcontext *ctx, struct gl_texture_object *t,
GLclampf priority );
void (*ActiveTexture)( GLcontext *ctx, GLuint texUnitNumber );
void (*UpdateTexturePalette)( GLcontext *ctx,
struct gl_texture_object *tObj );
void (*CopyColorTable)( GLcontext *ctx,
GLenum target, GLenum internalformat,
GLint x, GLint y, GLsizei width );
void (*CopyColorSubTable)( GLcontext *ctx,
GLenum target, GLsizei start,
GLint x, GLint y, GLsizei width );
void (*CopyConvolutionFilter1D)( GLcontext *ctx, GLenum target,
GLenum internalFormat,
GLint x, GLint y, GLsizei width );
void (*CopyConvolutionFilter2D)( GLcontext *ctx, GLenum target,
GLenum internalFormat,
GLint x, GLint y,
GLsizei width, GLsizei height );
void (*AlphaFunc)(GLcontext *ctx, GLenum func, GLfloat ref);
void (*BlendColor)(GLcontext *ctx, const GLfloat color[4]);
void (*BlendEquation)(GLcontext *ctx, GLenum mode);
void (*BlendFunc)(GLcontext *ctx, GLenum sfactor, GLenum dfactor);
void (*BlendFuncSeparate)(GLcontext *ctx,
GLenum sfactorRGB, GLenum dfactorRGB,
GLenum sfactorA, GLenum dfactorA);
void (*ClearColor)(GLcontext *ctx, const GLfloat color[4]);
void (*ClearDepth)(GLcontext *ctx, GLclampd d);
void (*ClearIndex)(GLcontext *ctx, GLuint index);
void (*ClearStencil)(GLcontext *ctx, GLint s);
void (*ClipPlane)(GLcontext *ctx, GLenum plane, const GLfloat *equation );
void (*ColorMask)(GLcontext *ctx, GLboolean rmask, GLboolean gmask,
GLboolean bmask, GLboolean amask );
void (*ColorMaterial)(GLcontext *ctx, GLenum face, GLenum mode);
void (*CullFace)(GLcontext *ctx, GLenum mode);
void (*FrontFace)(GLcontext *ctx, GLenum mode);
void (*DepthFunc)(GLcontext *ctx, GLenum func);
void (*DepthMask)(GLcontext *ctx, GLboolean flag);
void (*DepthRange)(GLcontext *ctx, GLclampd nearval, GLclampd farval);
void (*Enable)(GLcontext* ctx, GLenum cap, GLboolean state);
void (*Fogfv)(GLcontext *ctx, GLenum pname, const GLfloat *params);
void (*Hint)(GLcontext *ctx, GLenum target, GLenum mode);
void (*IndexMask)(GLcontext *ctx, GLuint mask);
void (*Lightfv)(GLcontext *ctx, GLenum light,
GLenum pname, const GLfloat *params );
void (*LightModelfv)(GLcontext *ctx, GLenum pname, const GLfloat *params);
void (*LineStipple)(GLcontext *ctx, GLint factor, GLushort pattern );
void (*LineWidth)(GLcontext *ctx, GLfloat width);
void (*LogicOpcode)(GLcontext *ctx, GLenum opcode);
void (*PointParameterfv)(GLcontext *ctx, GLenum pname,
const GLfloat *params);
void (*PointSize)(GLcontext *ctx, GLfloat size);
void (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode);
void (*PolygonOffset)(GLcontext *ctx, GLfloat factor, GLfloat units);
void (*PolygonStipple)(GLcontext *ctx, const GLubyte *mask );
void (*RenderMode)(GLcontext *ctx, GLenum mode );
void (*Scissor)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h);
void (*ShadeModel)(GLcontext *ctx, GLenum mode);
void (*StencilFunc)(GLcontext *ctx, GLenum func, GLint ref, GLuint mask);
void (*StencilMask)(GLcontext *ctx, GLuint mask);
void (*StencilOp)(GLcontext *ctx, GLenum fail, GLenum zfail, GLenum zpass);
void (*ActiveStencilFace)(GLcontext *ctx, GLuint face);
void (*TexGen)(GLcontext *ctx, GLenum coord, GLenum pname,
const GLfloat *params);
void (*TexEnv)(GLcontext *ctx, GLenum target, GLenum pname,
const GLfloat *param);
void (*TexParameter)(GLcontext *ctx, GLenum target,
struct gl_texture_object *texObj,
GLenum pname, const GLfloat *params);
void (*TextureMatrix)(GLcontext *ctx, GLuint unit, const GLmatrix *mat);
void (*Viewport)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h);
void (*VertexPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*NormalPointer)(GLcontext *ctx, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*ColorPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*FogCoordPointer)(GLcontext *ctx, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*IndexPointer)(GLcontext *ctx, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*SecondaryColorPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*TexCoordPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*EdgeFlagPointer)(GLcontext *ctx, GLsizei stride, const GLvoid *ptr);
void (*VertexAttribPointer)(GLcontext *ctx, GLuint index, GLint size,
GLenum type, GLsizei stride, const GLvoid *ptr);
GLboolean (*GetBooleanv)(GLcontext *ctx, GLenum pname, GLboolean *result);
GLboolean (*GetDoublev)(GLcontext *ctx, GLenum pname, GLdouble *result);
GLboolean (*GetFloatv)(GLcontext *ctx, GLenum pname, GLfloat *result);
GLboolean (*GetIntegerv)(GLcontext *ctx, GLenum pname, GLint *result);
GLboolean (*GetPointerv)(GLcontext *ctx, GLenum pname, GLvoid **result);
GLuint NeedValidate;
void (*ValidateTnlModule)( GLcontext *ctx, GLuint new_state );
#define PRIM_OUTSIDE_BEGIN_END GL_POLYGON+1
#define PRIM_INSIDE_UNKNOWN_PRIM GL_POLYGON+2
#define PRIM_UNKNOWN GL_POLYGON+3
GLuint CurrentExecPrimitive;
GLuint CurrentSavePrimitive;
#define FLUSH_STORED_VERTICES 0x1
#define FLUSH_UPDATE_CURRENT 0x2
GLuint NeedFlush;
void (*FlushVertices)( GLcontext *ctx, GLuint flags );
void (*LightingSpaceChange)( GLcontext *ctx );
void (*NewList)( GLcontext *ctx, GLuint list, GLenum mode );
void (*EndList)( GLcontext *ctx );
void (*BeginCallList)( GLcontext *ctx, GLuint list );
void (*EndCallList)( GLcontext *ctx );
void (*MakeCurrent)( GLcontext *ctx, GLframebuffer *drawBuffer,
GLframebuffer *readBuffer );
void (*LockArraysEXT)( GLcontext *ctx, GLint first, GLsizei count );
void (*UnlockArraysEXT)( GLcontext *ctx );
};
typedef struct {
void (*ArrayElement)( GLint );
void (*Color3f)( GLfloat, GLfloat, GLfloat );
void (*Color3fv)( const GLfloat * );
void (*Color3ub)( GLubyte, GLubyte, GLubyte );
void (*Color3ubv)( const GLubyte * );
void (*Color4f)( GLfloat, GLfloat, GLfloat, GLfloat );
void (*Color4fv)( const GLfloat * );
void (*Color4ub)( GLubyte, GLubyte, GLubyte, GLubyte );
void (*Color4ubv)( const GLubyte * );
void (*EdgeFlag)( GLboolean );
void (*EdgeFlagv)( const GLboolean * );
void (*EvalCoord1f)( GLfloat );
void (*EvalCoord1fv)( const GLfloat * );
void (*EvalCoord2f)( GLfloat, GLfloat );
void (*EvalCoord2fv)( const GLfloat * );
void (*EvalPoint1)( GLint );
void (*EvalPoint2)( GLint, GLint );
void (*FogCoordfEXT)( GLfloat );
void (*FogCoordfvEXT)( const GLfloat * );
void (*Indexi)( GLint );
void (*Indexiv)( const GLint * );
void (*Materialfv)( GLenum face, GLenum pname, const GLfloat * );
void (*MultiTexCoord1fARB)( GLenum, GLfloat );
void (*MultiTexCoord1fvARB)( GLenum, const GLfloat * );
void (*MultiTexCoord2fARB)( GLenum, GLfloat, GLfloat );
void (*MultiTexCoord2fvARB)( GLenum, const GLfloat * );
void (*MultiTexCoord3fARB)( GLenum, GLfloat, GLfloat, GLfloat );
void (*MultiTexCoord3fvARB)( GLenum, const GLfloat * );
void (*MultiTexCoord4fARB)( GLenum, GLfloat, GLfloat, GLfloat, GLfloat );
void (*MultiTexCoord4fvARB)( GLenum, const GLfloat * );
void (*Normal3f)( GLfloat, GLfloat, GLfloat );
void (*Normal3fv)( const GLfloat * );
void (*SecondaryColor3fEXT)( GLfloat, GLfloat, GLfloat );
void (*SecondaryColor3fvEXT)( const GLfloat * );
void (*SecondaryColor3ubEXT)( GLubyte, GLubyte, GLubyte );
void (*SecondaryColor3ubvEXT)( const GLubyte * );
void (*TexCoord1f)( GLfloat );
void (*TexCoord1fv)( const GLfloat * );
void (*TexCoord2f)( GLfloat, GLfloat );
void (*TexCoord2fv)( const GLfloat * );
void (*TexCoord3f)( GLfloat, GLfloat, GLfloat );
void (*TexCoord3fv)( const GLfloat * );
void (*TexCoord4f)( GLfloat, GLfloat, GLfloat, GLfloat );
void (*TexCoord4fv)( const GLfloat * );
void (*Vertex2f)( GLfloat, GLfloat );
void (*Vertex2fv)( const GLfloat * );
void (*Vertex3f)( GLfloat, GLfloat, GLfloat );
void (*Vertex3fv)( const GLfloat * );
void (*Vertex4f)( GLfloat, GLfloat, GLfloat, GLfloat );
void (*Vertex4fv)( const GLfloat * );
void (*CallList)( GLuint );
void (*Begin)( GLenum );
void (*End)( void );
void (*VertexAttrib4fNV)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w );
void (*VertexAttrib4fvNV)( GLuint index, const GLfloat *v );
void (*Rectf)( GLfloat, GLfloat, GLfloat, GLfloat );
void (*DrawArrays)( GLenum mode, GLint start, GLsizei count );
void (*DrawElements)( GLenum mode, GLsizei count, GLenum type,
const GLvoid *indices );
void (*DrawRangeElements)( GLenum mode, GLuint start,
GLuint end, GLsizei count,
GLenum type, const GLvoid *indices );
void (*EvalMesh1)( GLenum mode, GLint i1, GLint i2 );
void (*EvalMesh2)( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
GLboolean prefer_float_colors;
} GLvertexformat;
#endif