updated some comments/docs
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 21 Oct 1999 12:46:27 +0000 (12:46 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 21 Oct 1999 12:46:27 +0000 (12:46 +0000)
src/mesa/main/dd.h

index 64b031e4e10f608f91501df33eb9050cf497aff6..3173e144ae97dc0f533a2ee5b1a8fca6af43ce27 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: dd.h,v 1.3 1999/09/30 11:18:21 keithw Exp $ */
+/* $Id: dd.h,v 1.4 1999/10/21 12:46:27 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -63,10 +63,10 @@ struct gl_pipeline_stage;
  * The optional functions provide ways to take advantage of special hardware
  * or optimized algorithms.
  *
- * The function pointers in the dd_function_table struct are first
- * initialized in the "MakeCurrent" function.  The "MakeCurrent" function
- * is a little different in each device driver.  See the X/Mesa, GLX, or
- * OS/Mesa drivers for examples.
+ * The function pointers in the dd_function_table struct should first be
+ * initialized in the driver's "MakeCurrent" function.  The "MakeCurrent"
+ * function is a little different in each device driver.  See the X/Mesa,
+ * GLX, or OS/Mesa drivers for examples.
  *
  * Later, Mesa may call the dd_function_table's UpdateState() function.
  * This function should initialize the dd_function_table's pointers again.
@@ -81,7 +81,8 @@ struct gl_pipeline_stage;
  * for an example.
  *
  * For more information about writing a device driver see the ddsample.c
- * file and other device drivers (xmesa[123].c, osmesa.c, etc) for examples.
+ * file and other device drivers (X/xmesa[1234].c, OSMesa/osmesa.c, etc)
+ * for examples.
  *
  *
  * Look below in the dd_function_table struct definition for descriptions
@@ -132,8 +133,8 @@ struct dd_function_table {
    const char * (*RendererString)(void);
    /*
     * Return a string which uniquely identifies this device driver.
-    * The string should contain no whitespace.  Examples: "X11" "OffScreen"
-    * "MSWindows" "SVGA".
+    * The string should contain no whitespace.  Examples: "X11", "OffScreen",
+    * "MSWindows", "SVGA".
     * NOTE: This function will be obsolete in favor of GetString in the future!
     */
 
@@ -147,14 +148,14 @@ struct dd_function_table {
    void (*ClearIndex)( GLcontext *ctx, GLuint index );
    /*
     * Called whenever glClearIndex() is called.  Set the index for clearing
-    * the color buffer.
+    * the color buffer when in color index mode.
     */
 
    void (*ClearColor)( GLcontext *ctx, GLubyte red, GLubyte green,
                                         GLubyte blue, GLubyte alpha );
    /*
     * Called whenever glClearColor() is called.  Set the color for clearing
-    * the color buffer.
+    * the color buffer when in RGBA mode.
     */
 
    GLbitfield (*Clear)( GLcontext *ctx, GLbitfield mask, GLboolean all,
@@ -169,12 +170,14 @@ struct dd_function_table {
    void (*Index)( GLcontext *ctx, GLuint index );
    /*
     * Sets current color index for drawing flat-shaded primitives.
+    * This index should also be used in the "mono" drawing functions.
     */
 
    void (*Color)( GLcontext *ctx,
                   GLubyte red, GLubyte green, GLubyte glue, GLubyte alpha );
    /*
     * Sets current color for drawing flat-shaded primitives.
+    * This color should also be used in the "mono" drawing functions.
     */
 
    GLboolean (*SetBuffer)( GLcontext *ctx, GLenum buffer );
@@ -197,8 +200,7 @@ struct dd_function_table {
     *    GL_NONE - disable buffer write in device driver.
     */
 
-   void (*GetBufferSize)( GLcontext *ctx,
-                          GLuint *width, GLuint *height );
+   void (*GetBufferSize)( GLcontext *ctx, GLuint *width, GLuint *height );
    /*
     * Returns the width and height of the current color buffer.
     */
@@ -216,11 +218,14 @@ struct dd_function_table {
                          CONST GLubyte rgb[][3], const GLubyte mask[] );
    /* Write a horizontal run of RGB[A] pixels.  The later version is only
     * used to accelerate GL_RGB, GL_UNSIGNED_BYTE glDrawPixels() calls.
+    * If mask is NULL, draw all pixels.
+    * If mask is not null, only draw pixel [i] when mask [i] is true.
     */
 
    void (*WriteMonoRGBASpan)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
                               const GLubyte mask[] );
-   /* Write a horizontal run of mono-RGBA pixels.
+   /* Write a horizontal run of RGBA pixels all with the color last
+    * specified by the Color function.
     */
 
    void (*WriteRGBAPixels)( const GLcontext *ctx,
@@ -239,12 +244,15 @@ struct dd_function_table {
                           const GLuint index[], const GLubyte mask[] );
    void (*WriteCI8Span)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
                          const GLubyte index[], const GLubyte mask[] );
-   /* Write a horizontal run of CI pixels.  32 or 8bpp.
+   /* Write a horizontal run of CI pixels.  One function is for 32bpp
+    * indexes and the other for 8bpp pixels (the common case).  You mus
+    * implement both for color index mode.
     */
 
    void (*WriteMonoCISpan)( const GLcontext *ctx, GLuint n, GLint x, GLint y,
                             const GLubyte mask[] );
-   /* Write a horizontal run of mono-CI pixels.
+   /* Write a horizontal run of color index pixels using the color index
+    * last specified by the Index() function.
     */
 
    void (*WriteCI32Pixels)( const GLcontext *ctx,
@@ -257,8 +265,8 @@ struct dd_function_table {
    void (*WriteMonoCIPixels)( const GLcontext *ctx,
                               GLuint n, const GLint x[], const GLint y[],
                               const GLubyte mask[] );
-   /*
-    * Write a random array of mono-CI pixels.
+   /* Write a random array of color index pixels using the color index
+    * last specified by the Index() function.
     */
 
 
@@ -310,12 +318,12 @@ struct dd_function_table {
 
    void (*Finish)( GLcontext *ctx );
    /*
-    * Called whenever glFinish() is called.
+    * This is called whenever glFinish() is called.
     */
 
    void (*Flush)( GLcontext *ctx );
    /*
-    * Called whenever glFlush() is called.
+    * This is called whenever glFlush() is called.
     */
 
    GLboolean (*IndexMask)( GLcontext *ctx, GLuint mask );
@@ -418,16 +426,17 @@ struct dd_function_table {
                             GLenum format, GLenum type,
                             const struct gl_pixelstore_attrib *unpack,
                             const GLvoid *pixels );
-   /* Device driver hook for optimized glDrawPixels.  'unpack' describes how
-    * to unpack the source image data.
+   /* This is called by glDrawPixels.
+    * 'unpack' describes how to unpack the source image data.
+    * Return GL_TRUE if the driver succeeds, return GL_FALSE if core Mesa
+    * must do the job.
     */
 
    GLboolean (*Bitmap)( GLcontext *ctx,
                         GLint x, GLint y, GLsizei width, GLsizei height,
                         const struct gl_pixelstore_attrib *unpack,
                         const GLubyte *bitmap );
-   /* Device driver hook for optimized glBitmap.  'unpack' describes how
-    * to unpack the source image data.
+   /* This is called by glBitmap.  Works the same as DrawPixels, above.
     */
 
    void (*RenderStart)( GLcontext *ctx );