diff options
author | Daniel Borca <[email protected]> | 2004-10-18 08:04:21 +0000 |
---|---|---|
committer | Daniel Borca <[email protected]> | 2004-10-18 08:04:21 +0000 |
commit | 1cfe1e8925f8e1b89df5330895255a038be7f122 (patch) | |
tree | 6b65a0bc966cb8ca95f82e3c3887d90437a77628 | |
parent | 8cd728f43639f0f0a1f9ad22ea00821b0ccd2b80 (diff) |
changed _mesa_rescale_teximage2d to allow rescaling of padded images
-rw-r--r-- | src/mesa/main/texstore.c | 19 | ||||
-rw-r--r-- | src/mesa/main/texstore.h | 10 |
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, |