mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 23:18:20 +02:00
renamed some vars, added a bunch of comments
This commit is contained in:
parent
c8cfbf7c19
commit
0299ad7532
4 changed files with 80 additions and 52 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texstore.c,v 1.17 2001/03/21 01:08:37 brianp Exp $ */
|
||||
/* $Id: texstore.c,v 1.18 2001/03/21 16:44:08 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -156,7 +156,7 @@ components_in_intformat( GLint format )
|
|||
*/
|
||||
void
|
||||
_mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
||||
GLenum texFormat, GLvoid *texDestAddr,
|
||||
GLenum texDestFormat, GLvoid *texDestAddr,
|
||||
GLint srcWidth, GLint srcHeight, GLint srcDepth,
|
||||
GLint dstXoffset, GLint dstYoffset, GLint dstZoffset,
|
||||
GLint dstRowStride, GLint dstImageStride,
|
||||
|
|
@ -180,12 +180,12 @@ _mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
|||
ASSERT(srcAddr);
|
||||
ASSERT(srcPacking);
|
||||
|
||||
texComponents = components_in_intformat(texFormat);
|
||||
texComponents = components_in_intformat(texDestFormat);
|
||||
|
||||
/* try common 2D texture cases first */
|
||||
if (!ctx->_ImageTransferState && dimensions == 2 && srcType == CHAN_TYPE) {
|
||||
|
||||
if (srcFormat == texFormat) {
|
||||
if (srcFormat == texDestFormat) {
|
||||
/* This will cover the common GL_RGB, GL_RGBA, GL_ALPHA,
|
||||
* GL_LUMINANCE_ALPHA, etc. texture formats. Use memcpy().
|
||||
*/
|
||||
|
|
@ -210,7 +210,7 @@ _mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
|||
}
|
||||
return; /* all done */
|
||||
}
|
||||
else if (srcFormat == GL_RGBA && texFormat == GL_RGB) {
|
||||
else if (srcFormat == GL_RGBA && texDestFormat == GL_RGB) {
|
||||
/* commonly used by Quake */
|
||||
const GLchan *src = (const GLchan *) _mesa_image_address(
|
||||
srcPacking, srcAddr, srcWidth, srcHeight,
|
||||
|
|
@ -239,7 +239,7 @@ _mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
|||
/*
|
||||
* General case solutions
|
||||
*/
|
||||
if (texFormat == GL_COLOR_INDEX) {
|
||||
if (texDestFormat == GL_COLOR_INDEX) {
|
||||
/* color index texture */
|
||||
const GLenum texType = CHAN_TYPE;
|
||||
GLint img, row;
|
||||
|
|
@ -259,7 +259,7 @@ _mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
|||
dest += dstImageStride;
|
||||
}
|
||||
}
|
||||
else if (texFormat == GL_DEPTH_COMPONENT) {
|
||||
else if (texDestFormat == GL_DEPTH_COMPONENT) {
|
||||
/* Depth texture (shadow maps) */
|
||||
GLint img, row;
|
||||
GLubyte *dest = (GLubyte *) texDestAddr
|
||||
|
|
@ -342,7 +342,7 @@ _mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
|||
for (row = 0; row < convHeight; row++) {
|
||||
_mesa_pack_float_rgba_span(ctx, convWidth,
|
||||
(const GLfloat (*)[4]) srcf,
|
||||
texFormat, CHAN_TYPE,
|
||||
texDestFormat, CHAN_TYPE,
|
||||
dest, &_mesa_native_packing,
|
||||
ctx->_ImageTransferState
|
||||
& IMAGE_POST_CONVOLUTION_BITS);
|
||||
|
|
@ -368,9 +368,9 @@ _mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
|||
const GLvoid *srcRow = _mesa_image_address(srcPacking,
|
||||
srcAddr, srcWidth, srcHeight,
|
||||
srcFormat, srcType, img, row, 0);
|
||||
_mesa_unpack_chan_color_span(ctx, srcWidth, texFormat, destRow,
|
||||
srcFormat, srcType, srcRow, srcPacking,
|
||||
ctx->_ImageTransferState);
|
||||
_mesa_unpack_chan_color_span(ctx, srcWidth, texDestFormat,
|
||||
destRow, srcFormat, srcType, srcRow,
|
||||
srcPacking, ctx->_ImageTransferState);
|
||||
destRow += dstRowStride;
|
||||
}
|
||||
dest += dstImageStride;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texstore.h,v 1.4 2001/03/21 01:08:37 brianp Exp $ */
|
||||
/* $Id: texstore.h,v 1.5 2001/03/21 16:44:08 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -39,7 +39,7 @@
|
|||
|
||||
extern void
|
||||
_mesa_transfer_teximage(GLcontext *ctx, GLuint dimensions,
|
||||
GLenum texFormat, GLvoid *texDestAddr,
|
||||
GLenum texDestFormat, GLvoid *texDestAddr,
|
||||
GLint srcWidth, GLint srcHeight, GLint srcDepth,
|
||||
GLint dstXoffset, GLint dstYoffset, GLint dstZoffset,
|
||||
GLint dstRowStride, GLint dstImageStride,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texutil.c,v 1.16 2001/03/18 13:40:58 gareth Exp $ */
|
||||
/* $Id: texutil.c,v 1.17 2001/03/21 16:44:08 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -48,8 +48,9 @@ struct gl_texture_convert {
|
|||
GLint xoffset, yoffset, zoffset; /* Subimage offset */
|
||||
GLint width, height, depth; /* Subimage region */
|
||||
|
||||
GLint imageWidth, imageHeight; /* Full image dimensions */
|
||||
GLenum format, type;
|
||||
GLint dstImageWidth, dstImageHeight; /* Dest image size */
|
||||
/* Needed for subimage replacement */
|
||||
GLenum format, type; /* Source (user) format and type */
|
||||
|
||||
const struct gl_pixelstore_attrib *packing;
|
||||
|
||||
|
|
@ -701,11 +702,38 @@ _mesa_convert_texsubimage1d( GLint mesaFormat,
|
|||
return gl_convert_texsubimage2d_tab[mesaFormat]( &convert );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Convert a user's 2D image into a texture image. This basically repacks
|
||||
* pixel data into the special texture formats used by core Mesa and the DRI
|
||||
* drivers. This function can do full images or subimages.
|
||||
*
|
||||
* We return a boolean because this function may not accept some kinds of
|
||||
* source image formats and/or types. For example, if the incoming
|
||||
* format/type = GL_BGR, GL_UNSIGNED_INT this function probably won't
|
||||
* be able to do the conversion.
|
||||
*
|
||||
* In that case, the incoming image should first be simplified to one of
|
||||
* the "canonical" formats (GL_ALPHA, GL_LUMINANCE, GL_LUMINANCE_ALPHA,
|
||||
* GL_INTENSITY, GL_RGB, GL_RGBA) and types (GL_CHAN). We can do that
|
||||
* with the _mesa_transfer_teximage() function. That function will also
|
||||
* do image transfer operations such as scale/bias and convolution.
|
||||
*
|
||||
* Input:
|
||||
* mesaFormat - one of the MESA_FORMAT_* values from texformat.h
|
||||
* xoffset, yoffset - position in dest image to put data
|
||||
* width, height - incoming image size, also size of dest region.
|
||||
* dstImageWidth - width (row stride) of dest image in pixels
|
||||
* format, type - incoming image format and type
|
||||
* packing - describes incoming image packing
|
||||
* srcImage - pointer to source image
|
||||
* destImage - pointer to dest image
|
||||
*/
|
||||
GLboolean
|
||||
_mesa_convert_texsubimage2d( GLint mesaFormat,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLint width, GLint height,
|
||||
GLint imageWidth,
|
||||
GLint destImageWidth,
|
||||
GLenum format, GLenum type,
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
const GLvoid *srcImage, GLvoid *dstImage )
|
||||
|
|
@ -725,7 +753,7 @@ _mesa_convert_texsubimage2d( GLint mesaFormat,
|
|||
convert.yoffset = yoffset;
|
||||
convert.width = width;
|
||||
convert.height = height;
|
||||
convert.imageWidth = imageWidth;
|
||||
convert.dstImageWidth = destImageWidth;
|
||||
convert.format = format;
|
||||
convert.type = type;
|
||||
convert.packing = packing;
|
||||
|
|
@ -737,7 +765,7 @@ _mesa_convert_texsubimage2d( GLint mesaFormat,
|
|||
if ( convert_needs_packing( packing, format, type ) )
|
||||
convert.index |= CONVERT_PACKING_BIT;
|
||||
|
||||
if ( width != imageWidth )
|
||||
if ( width != destImageWidth )
|
||||
convert.index |= CONVERT_STRIDE_BIT;
|
||||
|
||||
return gl_convert_texsubimage2d_tab[mesaFormat]( &convert );
|
||||
|
|
@ -747,7 +775,7 @@ GLboolean
|
|||
_mesa_convert_texsubimage3d( GLint mesaFormat,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLint width, GLint height, GLint depth,
|
||||
GLint imageWidth, GLint imageHeight,
|
||||
GLint dstImageWidth, GLint dstImageHeight,
|
||||
GLenum format, GLenum type,
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
const GLvoid *srcImage, GLvoid *dstImage )
|
||||
|
|
@ -769,8 +797,8 @@ _mesa_convert_texsubimage3d( GLint mesaFormat,
|
|||
convert.width = width;
|
||||
convert.height = height;
|
||||
convert.depth = depth;
|
||||
convert.imageWidth = imageWidth;
|
||||
convert.imageHeight = imageHeight;
|
||||
convert.dstImageWidth = dstImageWidth;
|
||||
convert.dstImageHeight = dstImageHeight;
|
||||
convert.format = format;
|
||||
convert.type = type;
|
||||
convert.packing = packing;
|
||||
|
|
@ -782,7 +810,7 @@ _mesa_convert_texsubimage3d( GLint mesaFormat,
|
|||
if ( convert_needs_packing( packing, format, type ) )
|
||||
convert.index |= CONVERT_PACKING_BIT;
|
||||
|
||||
if ( width != imageWidth || height != imageHeight )
|
||||
if ( width != dstImageWidth || height != dstImageHeight )
|
||||
convert.index |= CONVERT_STRIDE_BIT;
|
||||
|
||||
return gl_convert_texsubimage3d_tab[mesaFormat]( &convert );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texutil_tmp.h,v 1.4 2001/03/20 10:18:13 joukj Exp $ */
|
||||
/* $Id: texutil_tmp.h,v 1.5 2001/03/21 16:44:08 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -37,20 +37,20 @@
|
|||
|
||||
#define DST_TEXEL_BYTES (4 / DST_TEXELS_PER_DWORD)
|
||||
#define DST_ROW_WIDTH (convert->width * DST_TEXEL_BYTES)
|
||||
#define DST_ROW_STRIDE (convert->imageWidth * DST_TEXEL_BYTES)
|
||||
#define DST_IMG_STRIDE (convert->imageWidth * \
|
||||
convert->imageHeight * DST_TEXEL_BYTES)
|
||||
#define DST_ROW_STRIDE (convert->dstImageWidth * DST_TEXEL_BYTES)
|
||||
#define DST_IMG_STRIDE (convert->dstImageWidth * \
|
||||
convert->dstImageHeight * DST_TEXEL_BYTES)
|
||||
|
||||
|
||||
/* ================================================================
|
||||
* PRE: No pixelstore attribs, width == imageWidth.
|
||||
* PRE: No pixelstore attribs, width == dstImageWidth.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage2d)( struct gl_texture_convert *convert )
|
||||
{
|
||||
const GLubyte *src = (const GLubyte *)convert->srcImage;
|
||||
GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage +
|
||||
(convert->yoffset * convert->imageWidth +
|
||||
(convert->yoffset * convert->dstImageWidth +
|
||||
convert->xoffset) * DST_TEXEL_BYTES);
|
||||
GLint dwords, i;
|
||||
(void) dwords; (void) i;
|
||||
|
|
@ -73,7 +73,7 @@ TAG(texsubimage2d)( struct gl_texture_convert *convert )
|
|||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* PRE: As above, height == imageHeight also.
|
||||
/* PRE: As above, height == dstImageHeight also.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage3d)( struct gl_texture_convert *convert )
|
||||
|
|
@ -107,25 +107,25 @@ TAG(texsubimage3d)( struct gl_texture_convert *convert )
|
|||
|
||||
|
||||
/* ================================================================
|
||||
* PRE: No pixelstore attribs, width != imageWidth.
|
||||
* PRE: No pixelstore attribs, width != dstImageWidth.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage2d_stride)( struct gl_texture_convert *convert )
|
||||
{
|
||||
const GLubyte *src = (const GLubyte *)convert->srcImage;
|
||||
DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
|
||||
(convert->yoffset * convert->imageWidth +
|
||||
(convert->yoffset * convert->dstImageWidth +
|
||||
convert->xoffset) * DST_TEXEL_BYTES);
|
||||
GLint adjust;
|
||||
GLint row, col;
|
||||
|
||||
adjust = convert->imageWidth - convert->width;
|
||||
adjust = convert->dstImageWidth - convert->width;
|
||||
|
||||
if ( DBG ) {
|
||||
fprintf( stderr, __FUNCTION__ ":\n" );
|
||||
fprintf( stderr, " x=%d y=%d w=%d h=%d s=%d\n",
|
||||
convert->xoffset, convert->yoffset, convert->width,
|
||||
convert->height, convert->imageWidth );
|
||||
convert->height, convert->dstImageWidth );
|
||||
fprintf( stderr, " adjust=%d\n", adjust );
|
||||
}
|
||||
|
||||
|
|
@ -140,26 +140,26 @@ TAG(texsubimage2d_stride)( struct gl_texture_convert *convert )
|
|||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* PRE: As above, or height != imageHeight also.
|
||||
/* PRE: As above, or height != dstImageHeight also.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage3d_stride)( struct gl_texture_convert *convert )
|
||||
{
|
||||
const GLubyte *src = (const GLubyte *)convert->srcImage;
|
||||
DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
|
||||
((convert->zoffset * convert->imageHeight +
|
||||
convert->yoffset) * convert->imageWidth +
|
||||
((convert->zoffset * convert->dstImageHeight +
|
||||
convert->yoffset) * convert->dstImageWidth +
|
||||
convert->xoffset) * DST_TEXEL_BYTES);
|
||||
GLint adjust;
|
||||
GLint row, col, img;
|
||||
|
||||
adjust = convert->imageWidth - convert->width;
|
||||
adjust = convert->dstImageWidth - convert->width;
|
||||
|
||||
if ( DBG ) {
|
||||
fprintf( stderr, __FUNCTION__ ":\n" );
|
||||
fprintf( stderr, " x=%d y=%d w=%d h=%d s=%d\n",
|
||||
convert->xoffset, convert->yoffset, convert->width,
|
||||
convert->height, convert->imageWidth );
|
||||
convert->height, convert->dstImageWidth );
|
||||
fprintf( stderr, " adjust=%d\n", adjust );
|
||||
}
|
||||
|
||||
|
|
@ -180,7 +180,7 @@ TAG(texsubimage3d_stride)( struct gl_texture_convert *convert )
|
|||
|
||||
|
||||
/* ================================================================
|
||||
* PRE: Require pixelstore attribs, width == imageWidth.
|
||||
* PRE: Require pixelstore attribs, width == dstImageWidth.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage2d_pack)( struct gl_texture_convert *convert )
|
||||
|
|
@ -223,7 +223,7 @@ TAG(texsubimage2d_pack)( struct gl_texture_convert *convert )
|
|||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* PRE: as above, height == imageHeight also.
|
||||
/* PRE: as above, height == dstImageHeight also.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage3d_pack)( struct gl_texture_convert *convert )
|
||||
|
|
@ -272,7 +272,7 @@ TAG(texsubimage3d_pack)( struct gl_texture_convert *convert )
|
|||
|
||||
|
||||
/* ================================================================
|
||||
* PRE: Require pixelstore attribs, width != imageWidth.
|
||||
* PRE: Require pixelstore attribs, width != dstImageWidth.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage2d_stride_pack)( struct gl_texture_convert *convert )
|
||||
|
|
@ -285,19 +285,19 @@ TAG(texsubimage2d_stride_pack)( struct gl_texture_convert *convert )
|
|||
_mesa_image_row_stride( convert->packing, convert->width,
|
||||
convert->format, convert->type );
|
||||
DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
|
||||
(convert->yoffset * convert->imageWidth +
|
||||
(convert->yoffset * convert->dstImageWidth +
|
||||
convert->xoffset) * DST_TEXEL_BYTES);
|
||||
GLint adjust;
|
||||
GLint row, col;
|
||||
(void) col;
|
||||
|
||||
adjust = convert->imageWidth - convert->width;
|
||||
adjust = convert->dstImageWidth - convert->width;
|
||||
|
||||
if ( DBG ) {
|
||||
fprintf( stderr, __FUNCTION__ ":\n" );
|
||||
fprintf( stderr, " x=%d y=%d w=%d h=%d s=%d\n",
|
||||
convert->xoffset, convert->yoffset, convert->width,
|
||||
convert->height, convert->imageWidth );
|
||||
convert->height, convert->dstImageWidth );
|
||||
fprintf( stderr, " adjust=%d\n", adjust );
|
||||
}
|
||||
|
||||
|
|
@ -305,7 +305,7 @@ TAG(texsubimage2d_stride_pack)( struct gl_texture_convert *convert )
|
|||
#ifdef CONVERT_DIRECT
|
||||
MEMCPY( dst, src, DST_ROW_WIDTH );
|
||||
src += srcRowStride;
|
||||
dst += convert->imageWidth;
|
||||
dst += convert->dstImageWidth;
|
||||
#else
|
||||
const GLubyte *srcRow = src;
|
||||
for ( col = 0 ; col < convert->width ; col++ ) {
|
||||
|
|
@ -320,7 +320,7 @@ TAG(texsubimage2d_stride_pack)( struct gl_texture_convert *convert )
|
|||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* PRE: As above, or height != imageHeight also.
|
||||
/* PRE: As above, or height != dstImageHeight also.
|
||||
*/
|
||||
static GLboolean
|
||||
TAG(texsubimage3d_stride_pack)( struct gl_texture_convert *convert )
|
||||
|
|
@ -333,20 +333,20 @@ TAG(texsubimage3d_stride_pack)( struct gl_texture_convert *convert )
|
|||
_mesa_image_row_stride( convert->packing, convert->width,
|
||||
convert->format, convert->type );
|
||||
DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
|
||||
((convert->zoffset * convert->imageHeight +
|
||||
convert->yoffset) * convert->imageWidth +
|
||||
((convert->zoffset * convert->dstImageHeight +
|
||||
convert->yoffset) * convert->dstImageWidth +
|
||||
convert->xoffset) * DST_TEXEL_BYTES);
|
||||
GLint adjust;
|
||||
GLint row, col, img;
|
||||
(void) col;
|
||||
|
||||
adjust = convert->imageWidth - convert->width;
|
||||
adjust = convert->dstImageWidth - convert->width;
|
||||
|
||||
if ( DBG ) {
|
||||
fprintf( stderr, __FUNCTION__ ":\n" );
|
||||
fprintf( stderr, " x=%d y=%d w=%d h=%d s=%d\n",
|
||||
convert->xoffset, convert->yoffset, convert->width,
|
||||
convert->height, convert->imageWidth );
|
||||
convert->height, convert->dstImageWidth );
|
||||
fprintf( stderr, " adjust=%d\n", adjust );
|
||||
}
|
||||
|
||||
|
|
@ -355,7 +355,7 @@ TAG(texsubimage3d_stride_pack)( struct gl_texture_convert *convert )
|
|||
#ifdef CONVERT_DIRECT
|
||||
MEMCPY( dst, src, DST_ROW_WIDTH );
|
||||
src += srcRowStride;
|
||||
dst += convert->imageWidth;
|
||||
dst += convert->dstImageWidth;
|
||||
#else
|
||||
const GLubyte *srcRow = src;
|
||||
for ( col = 0 ; col < convert->width ; col++ ) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue