added Window-isms previously in gl.h
[mesa.git] / src / mesa / main / teximage.c
index d40655c13923284c3c274a3e118b45fb6841beb0..ae50558bf26c0121a69b640b66132d380ce12729 100644 (file)
@@ -1,4 +1,3 @@
-/* $Id: teximage.c,v 1.25 2000/03/23 16:23:14 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
  */
 
 
+#ifdef DEBUG
+static void PrintTexture(const struct gl_texture_image *img)
+{
+  int i, j, c;
+  GLubyte *data = img->Data;
+
+  if (!data) {
+     printf("No texture data\n");
+     return;
+  }
+
+  switch (img->Format) {
+     case GL_ALPHA:
+     case GL_LUMINANCE:
+     case GL_INTENSITY:
+     case GL_COLOR_INDEX:
+        c = 1;
+        break;
+     case GL_LUMINANCE_ALPHA:
+        c = 2;
+        break;
+     case GL_RGB:
+        c = 3;
+        break;
+     case GL_RGBA:
+        c = 4;
+        break;
+     default:
+        gl_problem(NULL, "error in PrintTexture\n");
+        return;
+  }
+
+
+  for (i = 0; i < img->Height; i++) {
+    for (j = 0; j < img->Width; j++) {
+      if (c==1)
+        printf("%02x  ", data[0]);
+      else if (c==2)
+        printf("%02x%02x  ", data[0], data[1]);
+      else if (c==3)
+        printf("%02x%02x%02x  ", data[0], data[1], data[2]);
+      else if (c==4)
+        printf("%02x%02x%02x%02x  ", data[0], data[1], data[2], data[3]);
+      data += c;
+    }
+    printf("\n");
+  }
+}
+#endif
+
+
+
 /*
  * Compute log base 2 of n.
  * If n isn't an exact power of two return -1.
@@ -339,7 +390,7 @@ set_teximage_component_sizes( struct gl_texture_image *texImage )
  * Return new gl_texture_image struct with all fields initialized to zero.
  */
 struct gl_texture_image *
-gl_alloc_texture_image( void )
+_mesa_alloc_texture_image( void )
 {
    return CALLOC_STRUCT(gl_texture_image);
 }
@@ -381,7 +432,7 @@ init_texture_image( struct gl_texture_image *img,
 
 
 void
-gl_free_texture_image( struct gl_texture_image *teximage )
+_mesa_free_texture_image( struct gl_texture_image *teximage )
 {
    if (teximage->Data) {
       FREE( teximage->Data );
@@ -642,7 +693,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
    }
 
    /* Border */
-   if (border!=0 && border!=1) {
+   if (border != 0 && border != 1) {
       if (!isProxy) {
          char message[100];
          sprintf(message, "glTexImage%dD(border)", dimensions);
@@ -687,7 +738,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
    }
 
    /* Level */
-   if (level<0 || level>=ctx->Const.MaxTextureLevels) {
+   if (level < 0 || level >= ctx->Const.MaxTextureLevels) {
       if (!isProxy) {
          char message[100];
          sprintf(message, "glTexImage%dD(level)", dimensions);
@@ -1034,7 +1085,7 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
       texImage = texObj->Image[level];
 
       if (!texImage) {
-         texImage = gl_alloc_texture_image();
+         texImage = _mesa_alloc_texture_image();
          texObj->Image[level] = texImage;
          if (!texImage) {
             gl_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
@@ -1142,7 +1193,7 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
       texImage = texObj->Image[level];
 
       if (!texImage) {
-         texImage = gl_alloc_texture_image();
+         texImage = _mesa_alloc_texture_image();
          texObj->Image[level] = texImage;
          if (!texImage) {
             gl_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
@@ -1264,7 +1315,7 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat,
       texImage = texObj->Image[level];
 
       if (!texImage) {
-         texImage = gl_alloc_texture_image();
+         texImage = _mesa_alloc_texture_image();
          texObj->Image[level] = texImage;
          if (!texImage) {
             gl_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
@@ -1365,9 +1416,9 @@ _mesa_TexImage3DEXT( GLenum target, GLint level, GLenum internalFormat,
  * Fetch a texture image from the device driver.
  * Store the results in the given texture object at the given mipmap level.
  */
-static void
-get_teximage_from_driver( GLcontext *ctx, GLenum target, GLint level,
-                          const struct gl_texture_object *texObj )
+void
+_mesa_get_teximage_from_driver( GLcontext *ctx, GLenum target, GLint level,
+                                const struct gl_texture_object *texObj )
 {
    GLvoid *image;
    GLenum imgFormat, imgType;
@@ -1378,7 +1429,7 @@ get_teximage_from_driver( GLcontext *ctx, GLenum target, GLint level,
    if (!ctx->Driver.GetTexImage)
       return;
 
-   image = (*ctx->Driver.GetTexImage)( ctx, target, level,
+   image = (*ctx->Driver.GetTexImage)( ctx, target, level, texObj,
                                        &imgFormat, &imgType, &freeImage);
    if (!image)
       return;
@@ -1504,7 +1555,7 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format,
 
    if (!texImage->Data) {
       /* try to get the texture image from the device driver */
-      get_teximage_from_driver(ctx, target, level, texObj);
+      _mesa_get_teximage_from_driver(ctx, target, level, texObj);
       discardImage = GL_TRUE;
    }
    else {
@@ -1644,7 +1695,7 @@ _mesa_TexSubImage1D( GLenum target, GLint level,
       const GLint xoffsetb = xoffset + texImage->Border;
       GLboolean retain = GL_TRUE;
       if (!texImage->Data) {
-         get_teximage_from_driver( ctx, target, level, texObj );
+         _mesa_get_teximage_from_driver( ctx, target, level, texObj );
          if (!texImage->Data) {
             make_null_texture(texImage);
          }
@@ -1731,7 +1782,7 @@ _mesa_TexSubImage2D( GLenum target, GLint level,
       GLboolean retain = GL_TRUE;
 
       if (!texImage->Data) {
-         get_teximage_from_driver( ctx, target, level, texObj );
+         _mesa_get_teximage_from_driver( ctx, target, level, texObj );
          if (!texImage->Data) {
             make_null_texture(texImage);
          }
@@ -1788,7 +1839,7 @@ _mesa_TexSubImage2D( GLenum target, GLint level,
                                     texImage->IntFormat, texImage);
       }
       else if (ctx->Driver.TexImage) {
-         (*ctx->Driver.TexImage)(ctx, GL_TEXTURE_1D, texObj,
+         (*ctx->Driver.TexImage)(ctx, GL_TEXTURE_2D, texObj,
                                  level, texImage->IntFormat, texImage );
       }
 #endif
@@ -2063,7 +2114,7 @@ _mesa_CopyTexSubImage1D( GLenum target, GLint level,
       if (teximage->Data) {
          copy_tex_sub_image(ctx, teximage, width, 1, x, y, xoffset, 0, 0);
          /* tell driver about the change */
-         /* XXX call Driver.TexSubImage instead? */
+         /* XXX this is obsolete */
          if (ctx->Driver.TexImage) {
             (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_1D,
                                      texUnit->CurrentD[1],
@@ -2100,7 +2151,7 @@ _mesa_CopyTexSubImage2D( GLenum target, GLint level,
          copy_tex_sub_image(ctx, teximage, width, height,
                             x, y, xoffset, yoffset, 0);
          /* tell driver about the change */
-         /* XXX call Driver.TexSubImage instead? */
+         /* XXX this is obsolete */
          if (ctx->Driver.TexImage) {
             (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_2D,
                                      texUnit->CurrentD[2],
@@ -2137,7 +2188,7 @@ _mesa_CopyTexSubImage3D( GLenum target, GLint level,
          copy_tex_sub_image(ctx, teximage, width, height, 
                             x, y, xoffset, yoffset, zoffset);
          /* tell driver about the change */
-         /* XXX call Driver.TexSubImage instead? */
+         /* XXX this is obsolete */
          if (ctx->Driver.TexImage) {
             (*ctx->Driver.TexImage)( ctx, GL_TEXTURE_3D,
                                      texUnit->CurrentD[3],