From e448d6cf0c671822f0cb59395c88ff667f4da867 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Tue, 9 Jan 2001 00:02:55 +0000 Subject: [PATCH] Added PointSize and PointParametersfv to dd interface, for completeness. Clean-up and updated comments in dd.h file. --- src/mesa/main/dd.h | 242 +++++++++++++++++++++++------------------ src/mesa/main/points.c | 14 ++- 2 files changed, 146 insertions(+), 110 deletions(-) diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index d3cd4f8a6ec..86220bdf4ad 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -1,4 +1,4 @@ -/* $Id: dd.h,v 1.46 2001/01/08 04:09:41 keithw Exp $ */ +/* $Id: dd.h,v 1.47 2001/01/09 00:02:55 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -405,6 +405,15 @@ struct dd_function_table { */ + /*** + *** For hardware accumulation buffer: + ***/ + GLboolean (*Accum)( GLcontext *ctx, GLenum op, GLfloat value, + GLint xpos, GLint ypos, GLint width, GLint height ); + /* Execute glAccum command within the given scissor region. + */ + + /*** *** glDraw/Read/CopyPixels and glBitmap functions: ***/ @@ -446,14 +455,9 @@ struct dd_function_table { /* This is called by glBitmap. Works the same as DrawPixels, above. */ - GLboolean (*Accum)( GLcontext *ctx, GLenum op, - GLfloat value, GLint xpos, GLint ypos, - GLint width, GLint height ); - /* Hardware accum buffer. - */ /*** - *** Texture mapping functions: + *** Texture image functions: ***/ GLboolean (*TexImage1D)( GLcontext *ctx, GLenum target, GLint level, @@ -582,6 +586,10 @@ struct dd_function_table { * if the test fails. */ + /*** + *** Compressed texture functions: + ***/ + GLboolean (*CompressedTexImage1D)( GLcontext *ctx, GLenum target, GLint level, GLsizei imageSize, const GLvoid *data, @@ -697,21 +705,9 @@ struct dd_function_table { * is the source texture image. */ - void (*TexEnv)( GLcontext *ctx, GLenum target, GLenum pname, - const GLfloat *param ); - /* Called by glTexEnv*(). - */ - - void (*TexParameter)( GLcontext *ctx, GLenum target, - struct gl_texture_object *texObj, - GLenum pname, const GLfloat *params ); - /* Called by glTexParameter*(). - * is user specified - * the texture object to modify - * is one of GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, - * GL_TEXTURE_WRAP_[STR], or GL_TEXTURE_BORDER_COLOR. - * is user specified. - */ + /*** + *** Texture object functions: + ***/ void (*BindTexture)( GLcontext *ctx, GLenum target, struct gl_texture_object *tObj ); @@ -745,13 +741,111 @@ struct dd_function_table { */ - void (*RenderStart)( GLcontext *ctx ); - void (*RenderPrimitive)( GLcontext *ctx, GLenum mode ); - void (*RenderFinish)( GLcontext *ctx ); - /* Wrap around all rendering functions. Suitable for - * grabbing/releasing hardware locks. + /*** + *** State-changing functions (drawing functions are above) + *** + *** These functions are called by their corresponding OpenGL API functions. + *** They're ALSO called by the gl_PopAttrib() function!!! + *** May add more functions like these to the device driver in the future. + ***/ + void (*AlphaFunc)(GLcontext *ctx, GLenum func, GLclampf ref); + 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 (*ClearDepth)(GLcontext *ctx, GLclampd d); + void (*ClearStencil)(GLcontext *ctx, GLint s); + void (*ColorMask)(GLcontext *ctx, GLboolean rmask, GLboolean gmask, + GLboolean bmask, GLboolean amask ); + void (*CullFace)(GLcontext *ctx, GLenum mode); + void (*ClipPlane)(GLcontext *ctx, GLenum plane, const GLfloat *equation ); + 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 (*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 (*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); + + + /*** State-query functions + *** + *** Return GL_TRUE if query was completed, GL_FALSE otherwise. + ***/ + 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); + + + /*** + *** Vertex array functions + *** + *** Called by the corresponding OpenGL functions. + ***/ + 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); + + + + /*** + *** Rendering + ***/ + + void (*RenderStart)(GLcontext *ctx); + void (*RenderFinish)(GLcontext *ctx); + /* Called before and after all rendering operations, including DrawPixels, + * ReadPixels, Bitmap, span functions, and CopyTexImage, etc commands. + * These are a suitable place for grabbing/releasing hardware locks. */ + void (*RenderPrimitive)(GLcontext *ctx, GLenum mode); + /* Called between RednerStart() and RenderFinish() to indicate the + * type of primitive we're about to draw. Mode will be one of the + * modes accepted by glBegin(). + */ /*** @@ -761,11 +855,18 @@ struct dd_function_table { line_func LineFunc; triangle_func TriangleFunc; quad_func QuadFunc; + /* These functions are called in order to render points, lines, + * triangles and quads. These are only called via the T&L module. + */ render_func *RenderTabVerts; render_func *RenderTabElts; + /* XXX Description??? + */ void (*ResetLineStipple)( GLcontext *ctx ); + /* Reset the hardware's line stipple counter. + */ void (*BuildProjectedVertices)( GLcontext *ctx, GLuint start, GLuint end, @@ -840,11 +941,13 @@ struct dd_function_table { void (*EndList)( GLcontext *ctx ); /* Let the t&l component know what is going on with display lists * in time to make changes to dispatch tables, etc. + * Called by glNewList() and glEndList(), respectively. */ void (*BeginCallList)( GLcontext *ctx, GLuint list ); void (*EndCallList)( GLcontext *ctx ); /* Notify the t&l component before and after calling a display list. + * Called by glCallList(s), but not recursively. */ void (*MakeCurrent)( GLcontext *ctx, GLframebuffer *drawBuffer, @@ -855,94 +958,17 @@ struct dd_function_table { void (*LockArraysEXT)( GLcontext *ctx, GLint first, GLsizei count ); void (*UnlockArraysEXT)( GLcontext *ctx ); - /* + /* Called by glLockArraysEXT() and glUnlockArraysEXT(), respectively. */ - - /* - * State-changing functions (drawing functions are above) - * - * These functions are called by their corresponding OpenGL API functions. - * They're ALSO called by the gl_PopAttrib() function!!! - * May add more functions like these to the device driver in the future. - * This should reduce the amount of state checking that - * the driver's UpdateState() function must do. - */ - void (*AlphaFunc)(GLcontext *ctx, GLenum func, GLclampf ref); - 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 (*ClearDepth)(GLcontext *ctx, GLclampd d); - void (*ClearStencil)(GLcontext *ctx, GLint s); - void (*ColorMask)(GLcontext *ctx, GLboolean rmask, GLboolean gmask, - GLboolean bmask, GLboolean amask ); - void (*CullFace)(GLcontext *ctx, GLenum mode); - void (*ClipPlane)(GLcontext *ctx, GLenum plane, const GLfloat *equation ); - 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 (*PolygonMode)(GLcontext *ctx, GLenum face, GLenum mode); - 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 (*TexGen)(GLcontext *ctx, GLenum coord, 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); - - /* State-query functions - * - * Return GL_TRUE if query was completed, GL_FALSE otherwise. - */ - 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); - - - 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); }; - - - - +/* + * Transform/Clip/Lighting interface + */ typedef struct { - void (*ArrayElement)( GLint ); /* NOTE */ void (*Color3f)( GLfloat, GLfloat, GLfloat ); void (*Color3fv)( const GLfloat * ); diff --git a/src/mesa/main/points.c b/src/mesa/main/points.c index 3becddb34cc..c24b1b4eef3 100644 --- a/src/mesa/main/points.c +++ b/src/mesa/main/points.c @@ -1,4 +1,4 @@ -/* $Id: points.c,v 1.26 2000/12/26 05:09:29 keithw Exp $ */ +/* $Id: points.c,v 1.27 2001/01/09 00:02:55 brianp Exp $ */ /* * Mesa 3-D graphics library @@ -59,7 +59,14 @@ _mesa_PointSize( GLfloat size ) ctx->Point._Size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize); - ctx->_TriangleCaps ^= DD_POINT_SIZE; + + if (ctx->Point._Size == 1.0F) + ctx->_TriangleCaps &= ~DD_POINT_SIZE; + else + ctx->_TriangleCaps |= DD_POINT_SIZE; + + if (ctx->Driver.PointSize) + (*ctx->Driver.PointSize)(ctx, size); } @@ -136,5 +143,8 @@ _mesa_PointParameterfvEXT( GLenum pname, const GLfloat *params) gl_error( ctx, GL_INVALID_ENUM, "glPointParameterfvEXT" ); return; } + + if (ctx->Driver.PointParameterfv) + (*ctx->Driver.PointParameterfv)(ctx, pname, params); } -- 2.30.2