summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Borca <[email protected]>2004-10-18 08:04:21 +0000
committerDaniel Borca <[email protected]>2004-10-18 08:04:21 +0000
commit1cfe1e8925f8e1b89df5330895255a038be7f122 (patch)
tree6b65a0bc966cb8ca95f82e3c3887d90437a77628
parent8cd728f43639f0f0a1f9ad22ea00821b0ccd2b80 (diff)
changed _mesa_rescale_teximage2d to allow rescaling of padded images
-rw-r--r--src/mesa/main/texstore.c19
-rw-r--r--src/mesa/main/texstore.h10
2 files changed, 17 insertions, 12 deletions
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 879f585a87f..8c33a0fd18c 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -3416,10 +3416,13 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
* all aspect ratios). This can be made a lot faster, but I don't
* really care enough...
*/
-void _mesa_rescale_teximage2d( GLuint bytesPerPixel, GLuint dstRowStride,
- GLint srcWidth, GLint srcHeight,
- GLint dstWidth, GLint dstHeight,
- const GLvoid *srcImage, GLvoid *dstImage )
+void
+_mesa_rescale_teximage2d (GLuint bytesPerPixel,
+ GLuint srcStrideInPixels,
+ GLuint dstRowStride,
+ GLint srcWidth, GLint srcHeight,
+ GLint dstWidth, GLint dstHeight,
+ const GLvoid *srcImage, GLvoid *dstImage)
{
GLint row, col;
@@ -3428,7 +3431,7 @@ void _mesa_rescale_teximage2d( GLuint bytesPerPixel, GLuint dstRowStride,
GLint srcRow = row HOP hScale; \
for ( col = 0 ; col < dstWidth ; col++ ) { \
GLint srcCol = col WOP wScale; \
- dst[col] = src[srcRow * srcWidth + srcCol]; \
+ dst[col] = src[srcRow * srcStrideInPixels + srcCol]; \
} \
dst = (TYPE *) ((GLubyte *) dst + dstRowStride); \
} \
@@ -3438,9 +3441,9 @@ do { \
const TYPE *src = (const TYPE *)srcImage; \
TYPE *dst = (TYPE *)dstImage; \
\
- if ( srcHeight <= dstHeight ) { \
+ if ( srcHeight < dstHeight ) { \
const GLint hScale = dstHeight / srcHeight; \
- if ( srcWidth <= dstWidth ) { \
+ if ( srcWidth < dstWidth ) { \
const GLint wScale = dstWidth / srcWidth; \
INNER_LOOP( TYPE, /, / ); \
} \
@@ -3451,7 +3454,7 @@ do { \
} \
else { \
const GLint hScale = srcHeight / dstHeight; \
- if ( srcWidth <= dstWidth ) { \
+ if ( srcWidth < dstWidth ) { \
const GLint wScale = dstWidth / srcWidth; \
INNER_LOOP( TYPE, *, / ); \
} \
diff --git a/src/mesa/main/texstore.h b/src/mesa/main/texstore.h
index 85caa774fe5..89faf526698 100644
--- a/src/mesa/main/texstore.h
+++ b/src/mesa/main/texstore.h
@@ -213,10 +213,12 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
extern void
-_mesa_rescale_teximage2d(GLuint bytesPerPixel, GLuint dstRowStride,
- GLint srcWidth, GLint srcHeight,
- GLint dstWidth, GLint dstHeight,
- const GLvoid *srcImage, GLvoid *dstImage);
+_mesa_rescale_teximage2d (GLuint bytesPerPixel,
+ GLuint srcStrideInPixels,
+ GLuint dstRowStride,
+ GLint srcWidth, GLint srcHeight,
+ GLint dstWidth, GLint dstHeight,
+ const GLvoid *srcImage, GLvoid *dstImage);
extern void
_mesa_upscale_teximage2d( GLsizei inWidth, GLsizei inHeight,