more work on GL_ARB_texture_compression
[mesa.git] / src / mesa / main / dd.h
index d166653777fbe8b1296849307425a3a3e5e1b5b0..106d99d780f4963d8e4ddf8e27b291098c62f51b 100644 (file)
@@ -1,4 +1,3 @@
-/* $Id: dd.h,v 1.21 2000/03/20 23:54:54 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -501,15 +500,11 @@ struct dd_function_table {
     *** Texture mapping functions:
     ***/
 
-   void (*TexEnv)( GLcontext *ctx, GLenum target, GLenum pname,
-                   const GLfloat *param );
-   /* Called whenever glTexEnv*() is called.
-    */
-
    void (*TexImage)( GLcontext *ctx, GLenum target,
                      struct gl_texture_object *tObj, GLint level,
                      GLint internalFormat,
                      const struct gl_texture_image *image );
+   /* XXX this function is obsolete */
    /* Called whenever a texture object's image is changed.
     *    texObject is the number of the texture object being changed.
     *    level indicates the mipmap level.
@@ -524,6 +519,7 @@ struct dd_function_table {
                         GLsizei width, GLsizei height,
                         GLint internalFormat,
                         const struct gl_texture_image *image );
+   /* XXX this function is obsolete */
    /* Called from glTexSubImage() to define a sub-region of a texture.
     */
 
@@ -568,8 +564,7 @@ struct dd_function_table {
                                const GLvoid *pixels,
                                const struct gl_pixelstore_attrib *packing,
                                struct gl_texture_object *texObj,
-                               struct gl_texture_image *texImage,
-                               GLboolean *retainInternalCopy );
+                               struct gl_texture_image *texImage );
    GLboolean (*TexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,
                                GLint xoffset, GLint yoffset,
                                GLsizei width, GLsizei height,
@@ -577,8 +572,7 @@ struct dd_function_table {
                                const GLvoid *pixels,
                                const struct gl_pixelstore_attrib *packing,
                                struct gl_texture_object *texObj,
-                               struct gl_texture_image *texImage,
-                               GLboolean *retainInternalCopy );
+                               struct gl_texture_image *texImage );
    GLboolean (*TexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,
                                GLint xoffset, GLint yoffset, GLint zoffset,
                                GLsizei width, GLsizei height, GLint depth,
@@ -586,9 +580,7 @@ struct dd_function_table {
                                const GLvoid *pixels,
                                const struct gl_pixelstore_attrib *packing,
                                struct gl_texture_object *texObj,
-                               struct gl_texture_image *texImage,
-                               GLboolean *retainInternalCopy );
-
+                               struct gl_texture_image *texImage );
    /* Called by glTexSubImage1/2/3D.
     * Will not be called if any glPixelTransfer operations are enabled.
     * Arguments:
@@ -599,9 +591,8 @@ struct dd_function_table {
     *   <texImage> is the target texture image.  It will have the texture
     *      width, height, border and internalFormat information.
     * Return GL_TRUE if operation completed, return GL_FALSE if core Mesa
-    * should do the job.  If GL_FALSE is returned, this function will be
-    * called a second time after the texture image has been unpacked into
-    * GLubytes.  It may be easier for the driver to handle then.
+    * should do the job.  If GL_FALSE is returned, then TexImage1/2/3D will
+    * be called with the complete texture image.
     */
       
    GLboolean (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level,
@@ -634,6 +625,7 @@ struct dd_function_table {
     */
 
    GLvoid *(*GetTexImage)( GLcontext *ctx, GLenum target, GLint level,
+                           const struct gl_texture_object *texObj,
                            GLenum *formatOut, GLenum *typeOut,
                            GLboolean *freeImageOut );
    /* Called by glGetTexImage or by core Mesa when a texture image
@@ -648,21 +640,53 @@ struct dd_function_table {
     * Core Mesa will perform any image format/type conversions that are needed.
     */
 
+   GLboolean (*CompressedTexImage1D)( GLcontext *ctx, GLenum target,
+                                      GLint level, const GLvoid *data,
+                                      struct gl_texture_object *texObj,
+                                      struct gl_texture_image *texImage,
+                                      GLboolean *retainInternalCopy);
+   GLboolean (*CompressedTexImage2D)( GLcontext *ctx, GLenum target,
+                                      GLint level, const GLvoid *data,
+                                      struct gl_texture_object *texObj,
+                                      struct gl_texture_image *texImage,
+                                      GLboolean *retainInternalCopy);
+   GLboolean (*CompressedTexImage3D)( GLcontext *ctx, GLenum target,
+                                      GLint level, const GLvoid *data,
+                                      struct gl_texture_object *texObj,
+                                      struct gl_texture_image *texImage,
+                                      GLboolean *retainInternalCopy);
+   /* Called by glCompressedTexImage1/2/3D.
+    * Arguments:
+    *   <target>, <level>, <internalFormat>, <data> are user specified.
+    *   <texObj> is the target texture object.
+    *   <texImage> is the target texture image.  It will have the texture
+    *      width, height, depth, border and internalFormat information.
+    *   <retainInternalCopy> is returned by this function and indicates whether
+    *      core Mesa should keep an internal copy of the texture image.
+    * Return GL_TRUE if operation completed, return GL_FALSE if core Mesa
+    * should do the job.
+    */
+
+
+   void (*TexEnv)( GLcontext *ctx, GLenum target, GLenum pname,
+                   const GLfloat *param );
+   /* Called by glTexEnv*().
+    */
+
    void (*TexParameter)( GLcontext *ctx, GLenum target,
-                         struct gl_texture_object *tObj,
+                         struct gl_texture_object *texObj,
                          GLenum pname, const GLfloat *params );
-   /* Called whenever glTexParameter*() is called.
-    *    target is GL_TEXTURE_1D or GL_TEXTURE_2D
-    *    texObject is the texture object to modify
-    *    pname is one of GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER,
-    *       GL_TEXTURE_WRAP_S, GL_TEXTURE_WRAP_T, or GL_TEXTURE_BORDER_COLOR.
-    *    params is dependant on pname.  See man glTexParameter.
+   /* Called by glTexParameter*().
+    *    <target> is user specified
+    *    <texObj> the texture object to modify
+    *    <pname> is one of GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER,
+    *       GL_TEXTURE_WRAP_[STR], or GL_TEXTURE_BORDER_COLOR.
+    *    <params> is user specified.
     */
 
    void (*BindTexture)( GLcontext *ctx, GLenum target,
                         struct gl_texture_object *tObj );
-   /* Called whenever glBindTexture() is called.  This specifies which
-    * texture is to be the current one.  No dirty flags will be set.
+   /* Called by glBindTexture().
     */
 
    void (*DeleteTexture)( GLcontext *ctx, struct gl_texture_object *tObj );
@@ -670,28 +694,27 @@ struct dd_function_table {
     * should free anything attached to the DriverData pointers.
     */
 
-   void (*UpdateTexturePalette)( GLcontext *ctx,
-                                 struct gl_texture_object *tObj );
-   /* Called when the texture's color lookup table is changed.
-    * If tObj is NULL then the shared texture palette ctx->Texture.Palette
-    * was changed.
+   GLboolean (*IsTextureResident)( GLcontext *ctx, 
+                                   struct gl_texture_object *t );
+   /* Called by glAreTextureResident().
+    */
+
+   void (*PrioritizeTexture)( GLcontext *ctx,  struct gl_texture_object *t,
+                              GLclampf priority );
+   /* Called by glPrioritizeTextures().
     */
 
    void (*ActiveTexture)( GLcontext *ctx, GLuint texUnitNumber );
    /* Called by glActiveTextureARB to set current texture unit.
     */
 
-
-   GLboolean (*IsTextureResident)( GLcontext *ctx, 
-                                   struct gl_texture_object *t );
-   /* Allows the driver to implement the AreTexturesResident tests without
-    * knowing about Mesa's internal hash tables for textures.
+   void (*UpdateTexturePalette)( GLcontext *ctx,
+                                 struct gl_texture_object *tObj );
+   /* Called when the texture's color lookup table is changed.
+    * If tObj is NULL then the shared texture palette ctx->Texture.Palette
+    * is to be updated.
     */
 
-   void (*PrioritizeTexture)( GLcontext *ctx,  struct gl_texture_object *t,
-                              GLclampf priority );
-   /* Notify driver of priority change for a texture.
-    */
 
 
    /***