summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/texstore.c
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2001-07-16 15:54:23 +0000
committerBrian Paul <[email protected]>2001-07-16 15:54:23 +0000
commita1503b00f863a48a517939a42d512f9cfe77f79c (patch)
treecf8be4ed948b2e97160482c1b7cf4164b8ef9b0b /src/mesa/main/texstore.c
parentfba5e9546874e1e140a3862b31e35b68832cc22d (diff)
Various 16-bit GLchan fixes and Win32 fixes (Gerk Huisma)
Diffstat (limited to 'src/mesa/main/texstore.c')
-rw-r--r--src/mesa/main/texstore.c40
1 files changed, 21 insertions, 19 deletions
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 56ec66e13ae..c71ef966318 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -1,4 +1,4 @@
-/* $Id: texstore.c,v 1.31 2001/07/13 20:07:37 brianp Exp $ */
+/* $Id: texstore.c,v 1.32 2001/07/16 15:54:23 brianp Exp $ */
/*
* Mesa 3-D graphics library
@@ -189,8 +189,9 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
const GLint srcRowStride = _mesa_image_row_stride(srcPacking,
srcWidth, srcFormat, srcType);
const GLint widthInBytes = srcWidth * texComponents * sizeof(GLchan);
- GLchan *dst = (GLchan *) texDestAddr + dstYoffset * dstRowStride
- + dstXoffset * texComponents;
+ GLchan *dst = (GLchan *) texDestAddr
+ + dstYoffset * (dstRowStride / sizeof(GLchan))
+ + dstXoffset * texComponents;
if (srcRowStride == widthInBytes && dstRowStride == widthInBytes) {
MEMCPY(dst, src, srcHeight * widthInBytes);
}
@@ -198,8 +199,8 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
GLint i;
for (i = 0; i < srcHeight; i++) {
MEMCPY(dst, src, widthInBytes);
- src += srcRowStride;
- dst += dstRowStride;
+ src += (srcRowStride / sizeof(GLchan));
+ dst += (dstRowStride / sizeof(GLchan));
}
}
return; /* all done */
@@ -211,8 +212,9 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
srcFormat, srcType, 0, 0, 0);
const GLint srcRowStride = _mesa_image_row_stride(srcPacking,
srcWidth, srcFormat, srcType);
- GLchan *dst = (GLchan *) texDestAddr + dstYoffset * dstRowStride
- + dstXoffset * texComponents;
+ GLchan *dst = (GLchan *) texDestAddr
+ + dstYoffset * (dstRowStride / sizeof(GLchan))
+ + dstXoffset * texComponents;
GLint i, j;
for (i = 0; i < srcHeight; i++) {
const GLchan *s = src;
@@ -223,8 +225,8 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
*d++ = *s++; /*blue*/
s++; /*alpha*/
}
- src += srcRowStride;
- dst += dstRowStride;
+ src += (srcRowStride / sizeof(GLchan));
+ dst += (dstRowStride / sizeof(GLchan));
}
return; /* all done */
}
@@ -238,8 +240,8 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
const GLenum texType = CHAN_TYPE;
GLint img, row;
GLchan *dest = (GLchan *) texDestAddr + dstZoffset * dstImageStride
- + dstYoffset * dstRowStride
- + dstXoffset * texComponents;
+ + dstYoffset * (dstRowStride / sizeof(GLchan))
+ + dstXoffset * texComponents;
for (img = 0; img < srcDepth; img++) {
GLchan *destRow = dest;
for (row = 0; row < srcHeight; row++) {
@@ -247,7 +249,7 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
srcAddr, srcWidth, srcHeight, srcFormat, srcType, img, row, 0);
_mesa_unpack_index_span(ctx, srcWidth, texType, destRow,
srcType, src, srcPacking, transferOps);
- destRow += dstRowStride;
+ destRow += (dstRowStride / sizeof(GLchan));
}
dest += dstImageStride;
}
@@ -257,7 +259,7 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
GLint img, row;
GLubyte *dest = (GLubyte *) texDestAddr
+ dstZoffset * dstImageStride
- + dstYoffset * dstRowStride
+ + dstYoffset * (dstRowStride / sizeof(GLchan))
+ dstXoffset * texComponents;
for (img = 0; img < srcDepth; img++) {
GLubyte *destRow = dest;
@@ -266,7 +268,7 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
srcAddr, srcWidth, srcHeight, srcFormat, srcType, img, row, 0);
_mesa_unpack_depth_span(ctx, srcWidth, (GLfloat *) destRow,
srcType, src, srcPacking);
- destRow += dstRowStride;
+ destRow += (dstRowStride / sizeof(GLchan));
}
dest += dstImageStride;
}
@@ -331,7 +333,7 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
/* packing and transfer ops after convolution */
srcf = convImage;
dest = (GLchan *) texDestAddr + (dstZoffset + img) * dstImageStride
- + dstYoffset * dstRowStride;
+ + dstYoffset * (dstRowStride / sizeof(GLchan));
for (row = 0; row < convHeight; row++) {
_mesa_pack_float_rgba_span(ctx, convWidth,
(const GLfloat (*)[4]) srcf,
@@ -340,7 +342,7 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
transferOps
& IMAGE_POST_CONVOLUTION_BITS);
srcf += convWidth * 4;
- dest += dstRowStride;
+ dest += (dstRowStride / sizeof(GLchan));
}
}
@@ -353,8 +355,8 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
*/
GLint img, row;
GLchan *dest = (GLchan *) texDestAddr + dstZoffset * dstImageStride
- + dstYoffset * dstRowStride
- + dstXoffset * texComponents;
+ + dstYoffset * (dstRowStride / sizeof(GLchan))
+ + dstXoffset * texComponents;
for (img = 0; img < srcDepth; img++) {
GLchan *destRow = dest;
for (row = 0; row < srcHeight; row++) {
@@ -364,7 +366,7 @@ transfer_teximage(GLcontext *ctx, GLuint dimensions,
_mesa_unpack_chan_color_span(ctx, srcWidth, texDestFormat,
destRow, srcFormat, srcType, srcRow,
srcPacking, transferOps);
- destRow += dstRowStride;
+ destRow += (dstRowStride / sizeof(GLchan));
}
dest += dstImageStride;
}