summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/dd.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/main/dd.h')
-rw-r--r--src/mesa/main/dd.h111
1 files changed, 62 insertions, 49 deletions
diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h
index 35f122415f1..4f4cff75561 100644
--- a/src/mesa/main/dd.h
+++ b/src/mesa/main/dd.h
@@ -1,21 +1,21 @@
-/* $Id: dd.h,v 1.56 2001/03/07 00:21:32 brianp Exp $ */
+/* $Id: dd.h,v 1.57 2001/03/11 18:49:11 gareth Exp $ */
/*
* Mesa 3-D graphics library
* Version: 3.5
- *
+ *
* Copyright (C) 1999-2000 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"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
- *
+ *
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
- *
+ *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
@@ -75,7 +75,7 @@ struct gl_pixelstore_attrib;
*
* Look below in the dd_function_table struct definition for descriptions
* of each device driver function.
- *
+ *
* More function pointers may be added as required.
*
*
@@ -130,7 +130,7 @@ typedef void (*triangle_func)( GLcontext *ctx,
typedef void (*quad_func)( GLcontext *ctx, GLuint v1, GLuint v2,
GLuint v3, GLuint v4 );
-typedef void (*render_func)( GLcontext *ctx, GLuint start, GLuint count,
+typedef void (*render_func)( GLcontext *ctx, GLuint start, GLuint count,
GLuint flags );
typedef void (*interp_func)( GLcontext *ctx,
@@ -167,7 +167,7 @@ struct dd_function_table {
GLint x, GLint y, GLint width, GLint height );
/* Clear the color/depth/stencil/accum buffer(s).
* 'mask' is a bitmask of the DD_*_BIT values defined above that indicates
- * which buffers need to be cleared.
+ * which buffers need to be cleared.
* If 'all' is true then the clear the whole buffer, else clear only the
* region defined by (x,y,width,height).
* This function must obey the glColorMask, glIndexMask and glStencilMask
@@ -390,7 +390,7 @@ struct dd_function_table {
GLstencil stencil[] );
/* Read an array of stencil values from the stencil buffer.
*/
-
+
/***
*** For hardware accumulation buffer:
@@ -509,7 +509,7 @@ struct dd_function_table {
* width, height, border and internalFormat information.
* The driver should use a fallback routine from texstore.c if needed.
*/
-
+
void (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level,
GLenum internalFormat, GLint x, GLint y,
GLsizei width, GLint border );
@@ -688,7 +688,7 @@ struct dd_function_table {
* should free anything attached to the DriverData pointers.
*/
- GLboolean (*IsTextureResident)( GLcontext *ctx,
+ GLboolean (*IsTextureResident)( GLcontext *ctx,
struct gl_texture_object *t );
/* Called by glAreTextureResident().
*/
@@ -757,7 +757,7 @@ struct dd_function_table {
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 (*TexGen)(GLcontext *ctx, GLenum coord, GLenum pname,
+ void (*TexGen)(GLcontext *ctx, GLenum coord, GLenum pname,
const GLfloat *params);
void (*TexEnv)(GLcontext *ctx, GLenum target, GLenum pname,
const GLfloat *param);
@@ -784,19 +784,19 @@ struct dd_function_table {
***
*** Called by the corresponding OpenGL functions.
***/
- void (*VertexPointer)(GLcontext *ctx, GLint size, GLenum type,
+ void (*VertexPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
- void (*NormalPointer)(GLcontext *ctx, GLenum type,
+ void (*NormalPointer)(GLcontext *ctx, GLenum type,
GLsizei stride, const GLvoid *ptr);
- void (*ColorPointer)(GLcontext *ctx, GLint size, GLenum type,
+ void (*ColorPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
- void (*FogCoordPointer)(GLcontext *ctx, GLenum type,
+ void (*FogCoordPointer)(GLcontext *ctx, GLenum type,
GLsizei stride, const GLvoid *ptr);
- void (*IndexPointer)(GLcontext *ctx, GLenum type,
+ void (*IndexPointer)(GLcontext *ctx, GLenum type,
GLsizei stride, const GLvoid *ptr);
- void (*SecondaryColorPointer)(GLcontext *ctx, GLint size, GLenum type,
+ void (*SecondaryColorPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
- void (*TexCoordPointer)(GLcontext *ctx, GLint size, GLenum type,
+ void (*TexCoordPointer)(GLcontext *ctx, GLint size, GLenum type,
GLsizei stride, const GLvoid *ptr);
void (*EdgeFlagPointer)(GLcontext *ctx, GLsizei stride, const GLvoid *ptr);
@@ -857,8 +857,8 @@ struct dd_function_table {
void (*ResetLineStipple)( GLcontext *ctx );
/* Reset the hardware's line stipple counter.
*/
-
- void (*BuildProjectedVertices)( GLcontext *ctx,
+
+ void (*BuildProjectedVertices)( GLcontext *ctx,
GLuint start, GLuint end,
GLuint new_inputs);
/* This function is called whenever new vertices are required for
@@ -867,7 +867,7 @@ struct dd_function_table {
* the vertex which need to be updated, if only a partial repair of
* the vertex is required.
*
- * This function is called only from _tnl_render_stage in tnl/t_render.c.
+ * This function is called only from _tnl_render_stage in tnl/t_render.c.
*/
@@ -876,8 +876,8 @@ struct dd_function_table {
* when this function is called. This function will be called
* after the first pass, and passes will be made until the function
* returns GL_FALSE. If no function is registered, only one pass
- * is made.
- *
+ * is made.
+ *
* This function will be first invoked with passno == 1.
*/
@@ -885,13 +885,31 @@ struct dd_function_table {
/***
*** Support for multiple t&l engines
***/
+
+ GLuint NeedValidate;
+ /* Bitmask of state changes that require the current tnl module to be
+ * validated, using ValidateTnlModule() below.
+ */
+
+ void (*ValidateTnlModule)( GLcontext *ctx, GLuint new_state );
+ /* Validate the current tnl module. This is called directly after
+ * UpdateState() when a state change that has occured matches the
+ * NeedValidate bitmask above. This ensures all computed values are
+ * up to date, thus allowing the driver to decide if the current tnl
+ * module needs to be swapped out.
+ *
+ * This must be non-NULL if a driver installs a custom tnl module and
+ * sets the NeedValidate bitmask, but may be NULL otherwise.
+ */
+
+
#define PRIM_OUTSIDE_BEGIN_END GL_POLYGON+1
#define PRIM_INSIDE_UNKNOWN_PRIM GL_POLYGON+2
#define PRIM_UNKNOWN GL_POLYGON+3
-
+
GLuint CurrentExecPrimitive;
/* Set by the driver-supplied t&l engine. Set to
- * PRIM_OUTSIDE_BEGIN_END when outside begin/end.
+ * PRIM_OUTSIDE_BEGIN_END when outside begin/end.
*/
GLuint CurrentSavePrimitive;
@@ -899,7 +917,6 @@ struct dd_function_table {
* the additional values defined above.
*/
-
#define FLUSH_STORED_VERTICES 0x1
#define FLUSH_UPDATE_CURRENT 0x2
@@ -907,15 +924,15 @@ struct dd_function_table {
/* Set by the driver-supplied t&l engine whenever vertices are
* buffered between begin/end objects or ctx->Current is not uptodate.
*
- * The FlushVertices() call below may be used to resolve
- * these conditions.
+ * The FlushVertices() call below may be used to resolve
+ * these conditions.
*/
void (*FlushVertices)( GLcontext *ctx, GLuint flags );
- /* If inside begin/end, ASSERT(0).
- * Otherwise,
+ /* If inside begin/end, ASSERT(0).
+ * Otherwise,
* if (flags & FLUSH_STORED_VERTICES) flushes any buffered vertices,
- * if (flags & FLUSH_UPDATE_CURRENT) updates ctx->Current
+ * if (flags & FLUSH_UPDATE_CURRENT) updates ctx->Current
* and ctx->Light.Material
*
* Note that the default t&l engine never clears the
@@ -924,7 +941,7 @@ struct dd_function_table {
void (*LightingSpaceChange)( GLcontext *ctx );
/* Notify driver that the special derived value _NeedEyeCoords has
- * changed.
+ * changed.
*/
void (*NewList)( GLcontext *ctx, GLuint list, GLenum mode );
@@ -940,7 +957,7 @@ struct dd_function_table {
* Called by glCallList(s), but not recursively.
*/
- void (*MakeCurrent)( GLcontext *ctx, GLframebuffer *drawBuffer,
+ void (*MakeCurrent)( GLcontext *ctx, GLframebuffer *drawBuffer,
GLframebuffer *readBuffer );
/* Let the t&l component know when the context becomes current.
*/
@@ -980,7 +997,7 @@ typedef struct {
void (*FogCoordfvEXT)( const GLfloat * );
void (*Indexi)( GLint );
void (*Indexiv)( const GLint * );
- void (*Materialfv)( GLenum face, GLenum pname, const GLfloat * ); /* NOTE */
+ void (*Materialfv)( GLenum face, GLenum pname, const GLfloat * ); /* NOTE */
void (*MultiTexCoord1fARB)( GLenum, GLfloat );
void (*MultiTexCoord1fvARB)( GLenum, const GLfloat * );
void (*MultiTexCoord2fARB)( GLenum, GLfloat, GLfloat );
@@ -1014,7 +1031,7 @@ typedef struct {
void (*End)( void );
/* Drivers present a reduced set of the functions possible in
* begin/end objects. Core mesa provides translation stubs for the
- * remaining functions to map down to these entrypoints.
+ * remaining functions to map down to these entrypoints.
*
* These are the initial values to be installed into dispatch by
* mesa. If the t&l driver wants to modify the dispatch table
@@ -1025,20 +1042,19 @@ typedef struct {
*
* If the driver wants to hook in entrypoints other than those
* listed above, it must restore them to their original values in
- * the disable() callback, below.
+ * the disable() callback, below.
*/
void (*Rectf)( GLfloat, GLfloat, GLfloat, GLfloat );
- /*
+ /*
*/
-
void (*DrawArrays)( GLenum mode, GLint start, GLsizei count );
- void (*DrawElements)( GLenum mode, GLsizei count, GLenum type,
+ 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 (*DrawRangeElements)( GLenum mode, GLuint start,
+ GLuint end, GLsizei count,
+ GLenum type, const GLvoid *indices );
/* These may or may not belong here. Heuristic: If an array is
* enabled, the installed vertex format should support that array and
* it's current size natively.
@@ -1051,17 +1067,14 @@ typedef struct {
* provide partial t&l acceleration.
*
* Mesa will provide a set of helper functions to do eval within
- * accelerated vertex formats, eventually...
+ * accelerated vertex formats, eventually...
*/
GLboolean prefer_float_colors;
/* Should core try to send colors to glColor4f or glColor4chan,
- * where it has a choice?
+ * where it has a choice?
*/
-
-
} GLvertexformat;
-#endif
-
+#endif /* DD_INCLUDED */