summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/main/texutil.c21
-rw-r--r--src/mesa/main/texutil.h5
2 files changed, 15 insertions, 11 deletions
diff --git a/src/mesa/main/texutil.c b/src/mesa/main/texutil.c
index e4ca2e154b4..e7c8fa7608a 100644
--- a/src/mesa/main/texutil.c
+++ b/src/mesa/main/texutil.c
@@ -1,4 +1,4 @@
-/* $Id: texutil.c,v 1.23 2001/04/20 19:21:41 brianp Exp $ */
+/* $Id: texutil.c,v 1.24 2001/05/02 21:02:38 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -861,20 +861,21 @@ _mesa_convert_texsubimage3d( GLint mesaFormat,
* all aspect ratios). This can be made a lot faster, but I don't
* really care enough...
*/
-void _mesa_rescale_teximage2d( const struct gl_texture_format *texFormat,
+void _mesa_rescale_teximage2d( GLuint bytesPerPixel, GLuint dstRowStride,
GLint srcWidth, GLint srcHeight,
GLint dstWidth, GLint dstHeight,
const GLvoid *srcImage, GLvoid *dstImage )
{
GLint row, col;
-#define INNER_LOOP( HOP, WOP ) \
+#define INNER_LOOP( TYPE, HOP, WOP ) \
for ( row = 0 ; row < dstHeight ; row++ ) { \
GLint srcRow = row HOP hScale; \
for ( col = 0 ; col < dstWidth ; col++ ) { \
GLint srcCol = col WOP wScale; \
- *dst++ = src[srcRow * srcWidth + srcCol]; \
+ dst[col] = src[srcRow * srcWidth + srcCol]; \
} \
+ dst = (TYPE *) ((GLubyte *) dst + dstRowStride); \
} \
#define RESCALE_IMAGE( TYPE ) \
@@ -886,27 +887,27 @@ do { \
const GLint hScale = dstHeight / srcHeight; \
if ( srcWidth <= dstWidth ) { \
const GLint wScale = dstWidth / srcWidth; \
- INNER_LOOP( /, / ); \
+ INNER_LOOP( TYPE, /, / ); \
} \
else { \
const GLint wScale = srcWidth / dstWidth; \
- INNER_LOOP( /, * ); \
+ INNER_LOOP( TYPE, /, * ); \
} \
} \
else { \
const GLint hScale = srcHeight / dstHeight; \
if ( srcWidth <= dstWidth ) { \
const GLint wScale = dstWidth / srcWidth; \
- INNER_LOOP( *, / ); \
+ INNER_LOOP( TYPE, *, / ); \
} \
else { \
const GLint wScale = srcWidth / dstWidth; \
- INNER_LOOP( *, * ); \
+ INNER_LOOP( TYPE, *, * ); \
} \
} \
} while (0)
- switch ( texFormat->TexelBytes ) {
+ switch ( bytesPerPixel ) {
case 4:
RESCALE_IMAGE( GLuint );
break;
@@ -918,5 +919,7 @@ do { \
case 1:
RESCALE_IMAGE( GLubyte );
break;
+ default:
+ _mesa_problem(NULL,"unexpected bytes/pixel in _mesa_rescale_teximage2d");
}
}
diff --git a/src/mesa/main/texutil.h b/src/mesa/main/texutil.h
index d9293ef8fef..f92ecd9f982 100644
--- a/src/mesa/main/texutil.h
+++ b/src/mesa/main/texutil.h
@@ -1,4 +1,4 @@
-/* $Id: texutil.h,v 1.9 2001/03/18 08:53:50 gareth Exp $ */
+/* $Id: texutil.h,v 1.10 2001/05/02 21:02:38 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -64,9 +64,10 @@ _mesa_convert_texsubimage3d( GLint mesaFormat,
* all aspect ratios). FIXME: Make this a subimage update as well...
*/
extern void
-_mesa_rescale_teximage2d( const struct gl_texture_format *texFormat,
+_mesa_rescale_teximage2d( GLuint bytesPerPixel, GLuint dstRowStride,
GLint srcWidth, GLint srcHeight,
GLint dstWidth, GLint dstHeight,
const GLvoid *srcImage, GLvoid *dstImage );
+
#endif