summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/texutil_tmp.h
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2004-04-27 13:39:20 +0000
committerBrian Paul <[email protected]>2004-04-27 13:39:20 +0000
commit8f04c12e0ad876baa7eb9ed379e2b00150b376e0 (patch)
tree2d30ddd41662329fd0041dc530bce31945775813 /src/mesa/main/texutil_tmp.h
parent186d4d8cf4bd99c46b388e6ea0c60ec1d039be07 (diff)
Removed the old teximage code.
Moved all code related to specific texture compression modes into new texcompress_s3tc.c and texcompress_fxt1.c files (but not implemented).
Diffstat (limited to 'src/mesa/main/texutil_tmp.h')
-rw-r--r--src/mesa/main/texutil_tmp.h526
1 files changed, 0 insertions, 526 deletions
diff --git a/src/mesa/main/texutil_tmp.h b/src/mesa/main/texutil_tmp.h
deleted file mode 100644
index 0be341c87c3..00000000000
--- a/src/mesa/main/texutil_tmp.h
+++ /dev/null
@@ -1,526 +0,0 @@
-/**
- * \file texutil_tmp.h
- * Texture conversion templates.
- *
- * \author Gareth Hughes
- *
- * For 2D and 3D texture images, we generate functions for
- * - conversion without pixel unpacking and standard stride
- * - conversion without pixel unpacking and non-standard stride
- * - conversion with pixel unpacking and standard stride
- * - conversion with pixel unpacking and non-standard stride
- *
- * Macros which need to be defined before including this file:
- * - \c TAG(x) - the function name wrapper
- * - \c DST_TYPE - the destination texel data type (GLuint, GLushort, etc)
- * - \c DST_TEXELS_PER_DWORD - number of destination texels that'll fit in 4 bytes
- * - \c CONVERT_TEXEL - code to convert from source to destination texel
- * - \c CONVER_TEXEL_DWORD - if multiple texels fit in 4 bytes, this macros
- * will convert/store multiple texels at once
- * - \c CONVERT_DIRECT - if defined, just memcpy texels from source to destination
- * - \c SRC_TEXEL_BYTES - bytes per source texel
- * - \c PRESERVE_DST_TYPE - if defined, don't undefined these macros at end
- *
- * \sa convert_func.
- */
-
-/*
- * Mesa 3-D graphics library
- * Version: 4.0.2
- *
- * Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#define DST_TEXEL_BYTES (4 / DST_TEXELS_PER_DWORD)
-#define DST_ROW_BYTES (convert->width * DST_TEXEL_BYTES)
-#define DST_ROW_STRIDE (convert->dstImageWidth * DST_TEXEL_BYTES)
-#define DST_IMG_STRIDE (convert->dstImageWidth * \
- convert->dstImageHeight * DST_TEXEL_BYTES)
-
-
-/***************************************************************/
-/** \name Doesn't require pixelstore attributes or stride
- *
- * \code width == dstImageWidth \endcode
- * and
- * \code height == dstImageHeight \endcode
- * if applicable.
- */
-/*@{*/
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage2d)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)convert->srcImage;
- GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage +
- (convert->yoffset * convert->dstImageWidth +
- convert->xoffset) * DST_TEXEL_BYTES);
-
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ "\n" );
-#endif
-
-#ifdef CONVERT_DIRECT
- MEMCPY( dst, src, convert->height * DST_ROW_BYTES );
-#else
- {
- const GLint texels = convert->width * convert->height;
- const GLint dwords = texels / DST_TEXELS_PER_DWORD;
- const GLint leftover = texels - dwords * DST_TEXELS_PER_DWORD;
- GLint i;
- for ( i = 0 ; i < dwords ; i++ ) {
- CONVERT_TEXEL_DWORD( *dst++, src );
- src += SRC_TEXEL_BYTES * DST_TEXELS_PER_DWORD;
- }
- for ( i = 0; i < leftover; i++ ) {
- CONVERT_TEXEL( *dst++, src );
- src += SRC_TEXEL_BYTES;
- }
- }
-#endif
-
- return GL_TRUE;
-}
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage3d)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)convert->srcImage;
- GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage +
- ((convert->zoffset * convert->height +
- convert->yoffset) * convert->width +
- convert->xoffset) * DST_TEXEL_BYTES);
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ "\n" );
-#endif
-
-#ifdef CONVERT_DIRECT
- MEMCPY( dst, src, convert->depth * convert->height * DST_ROW_BYTES );
-#else
- {
- const GLint texels = convert->width * convert->height * convert->depth;
- const GLint dwords = texels / DST_TEXELS_PER_DWORD;
- const GLint leftover = texels - dwords * DST_TEXELS_PER_DWORD;
- GLint i;
- for ( i = 0 ; i < dwords ; i++ ) {
- CONVERT_TEXEL_DWORD( *dst++, src );
- src += SRC_TEXEL_BYTES * DST_TEXELS_PER_DWORD;
- }
- for ( i = 0; i < leftover; i++ ) {
- CONVERT_TEXEL( *dst++, src );
- src += SRC_TEXEL_BYTES;
- }
- }
-#endif
-
- return GL_TRUE;
-}
-
-/*@}*/
-
-
-/***************************************************************/
-/** \name Requires stride but no pixelstore attributes
- *
- * \code width != dstImageWidth \endcode
- * or
- * \code height != dstImageHeight \endcode
- * if applicable.
- */
-/*@{*/
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage2d_stride)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)convert->srcImage;
- DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
- (convert->yoffset * convert->dstImageWidth +
- convert->xoffset) * DST_TEXEL_BYTES);
- GLint adjust;
- GLint row, col;
-
- adjust = convert->dstImageWidth - convert->width;
-
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ ":\n" );
- _mesa_debug( NULL, " x=%d y=%d w=%d h=%d s=%d\n",
- convert->xoffset, convert->yoffset, convert->width,
- convert->height, convert->dstImageWidth );
- _mesa_debug( NULL, " adjust=%d\n", adjust );
-#endif
-
- for ( row = 0 ; row < convert->height ; row++ ) {
- for ( col = 0 ; col < convert->width ; col++ ) {
- CONVERT_TEXEL( *dst++, src );
- src += SRC_TEXEL_BYTES;
- }
- dst += adjust;
- }
-
- return GL_TRUE;
-}
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage3d_stride)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)convert->srcImage;
- DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
- ((convert->zoffset * convert->dstImageHeight +
- convert->yoffset) * convert->dstImageWidth +
- convert->xoffset) * DST_TEXEL_BYTES);
- GLint adjust;
- GLint row, col, img;
-
- adjust = convert->dstImageWidth - convert->width;
-
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ ":\n" );
- _mesa_debug( NULL, " x=%d y=%d w=%d h=%d s=%d\n",
- convert->xoffset, convert->yoffset, convert->width,
- convert->height, convert->dstImageWidth );
- _mesa_debug( NULL, " adjust=%d\n", adjust );
-#endif
-
- for ( img = 0 ; img < convert->depth ; img++ ) {
- for ( row = 0 ; row < convert->height ; row++ ) {
- for ( col = 0 ; col < convert->width ; col++ ) {
- CONVERT_TEXEL( *dst++, src );
- src += SRC_TEXEL_BYTES;
- }
- dst += adjust;
- }
- /* FIXME: ... */
- }
-
- return GL_TRUE;
-}
-
-/*@}*/
-
-
-/***************************************************************/
-/** \name Requires pixelstore attributes but no stride.
- *
- * \code width == dstImageWidth \endcode
- * and
- * \code height == dstImageHeight \endcode
- * if applicable.
- */
-/*@{*/
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage2d_unpack)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)
- _mesa_image_address( convert->unpacking, convert->srcImage,
- convert->width, convert->height,
- convert->format, convert->type, 0, 0, 0 );
- const GLint srcRowStride =
- _mesa_image_row_stride( convert->unpacking, convert->width,
- convert->format, convert->type );
- GLint row, col;
-
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ "\n" );
-#endif
-
- if (convert->width & (DST_TEXELS_PER_DWORD - 1)) {
- /* Can't use dword conversion (i.e. when width = 1 and texels/dword = 2
- * or width = 2 and texels/dword = 4).
- */
- DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
- (convert->yoffset * convert->width +
- convert->xoffset) * DST_TEXEL_BYTES);
- for ( row = 0 ; row < convert->height ; row++ ) {
- const GLubyte *srcRow = src;
- for ( col = 0; col < convert->width; col++ ) {
- CONVERT_TEXEL(*dst, src);
- src += SRC_TEXEL_BYTES;
- }
- src = srcRow + srcRowStride;
- }
- }
- else {
- /* the common case */
- GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage +
- (convert->yoffset * convert->width +
- convert->xoffset) * DST_TEXEL_BYTES);
- for ( row = 0 ; row < convert->height ; row++ ) {
-#ifdef CONVERT_DIRECT
- MEMCPY( dst, src, DST_ROW_STRIDE );
- src += srcRowStride;
- dst = (GLuint *)((GLubyte *)dst + DST_ROW_STRIDE);
-#else
- const GLubyte *srcRow = src;
- for ( col = convert->width / DST_TEXELS_PER_DWORD ; col ; col-- ) {
- CONVERT_TEXEL_DWORD( *dst++, src );
- src += SRC_TEXEL_BYTES * DST_TEXELS_PER_DWORD;
- }
- src = srcRow + srcRowStride;
-#endif
- }
- }
-
- return GL_TRUE;
-}
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage3d_unpack)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)
- _mesa_image_address( convert->unpacking, convert->srcImage,
- convert->width, convert->height,
- convert->format, convert->type, 0, 0, 0 );
- const GLint srcImgStride = (const GLubyte *)
- _mesa_image_address( convert->unpacking, convert->srcImage,
- convert->width, convert->height,
- convert->format, convert->type, 1, 0, 0 ) - src;
- const GLint srcRowStride =
- _mesa_image_row_stride( convert->unpacking, convert->width,
- convert->format, convert->type );
- GLint row, col, img;
-
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ "\n" );
-#endif
-
- if (convert->width & (DST_TEXELS_PER_DWORD - 1)) {
- /* Can't use dword conversion (i.e. when width = 1 and texels/dword = 2
- * or width = 2 and texels/dword = 4).
- */
- DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
- ((convert->zoffset * convert->height +
- convert->yoffset) * convert->width +
- convert->xoffset) * DST_TEXEL_BYTES);
- for ( img = 0 ; img < convert->depth ; img++ ) {
- const GLubyte *srcImage = src;
- for ( row = 0 ; row < convert->height ; row++ ) {
- const GLubyte *srcRow = src;
- for ( col = 0; col < convert->width; col++ ) {
- CONVERT_TEXEL(*dst, src);
- src += SRC_TEXEL_BYTES;
- }
- src = srcRow + srcRowStride;
- }
- src = srcImage + srcImgStride;
- }
- }
- else {
- /* the common case */
- GLuint *dst = (GLuint *)((GLubyte *)convert->dstImage +
- ((convert->zoffset * convert->height +
- convert->yoffset) * convert->width +
- convert->xoffset) * DST_TEXEL_BYTES);
- for ( img = 0 ; img < convert->depth ; img++ ) {
- const GLubyte *srcImage = src;
- for ( row = 0 ; row < convert->height ; row++ ) {
-#ifdef CONVERT_DIRECT
- MEMCPY( dst, src, DST_ROW_STRIDE );
- src += srcRowStride;
- dst = (GLuint *)((GLubyte *)dst + DST_ROW_STRIDE);
-#else
- const GLubyte *srcRow = src;
- for ( col = convert->width / DST_TEXELS_PER_DWORD ; col ; col-- ) {
- CONVERT_TEXEL_DWORD( *dst++, src );
- src += SRC_TEXEL_BYTES * DST_TEXELS_PER_DWORD;
- }
- src = srcRow + srcRowStride;
-#endif
- }
- src = srcImage + srcImgStride;
- }
- }
-
- return GL_TRUE;
-}
-
-/*@}*/
-
-
-/***************************************************************/
-/** \name Requires pixelstore attributes and stride.
- *
- * \code width != dstImageWidth \endcode
- * or
- * \code height != dstImageHeight \endcode
- * if applicable.
- */
-/*@{*/
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage2d_stride_unpack)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)
- _mesa_image_address( convert->unpacking, convert->srcImage,
- convert->width, convert->height,
- convert->format, convert->type, 0, 0, 0 );
- const GLint srcRowStride =
- _mesa_image_row_stride( convert->unpacking, convert->width,
- convert->format, convert->type );
- DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
- (convert->yoffset * convert->dstImageWidth +
- convert->xoffset) * DST_TEXEL_BYTES);
- GLint row;
-#ifndef CONVERT_DIRECT
- GLint adjust = convert->dstImageWidth - convert->width;
-#endif
-
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ ":\n" );
- _mesa_debug( NULL, " x=%d y=%d w=%d h=%d s=%d\n",
- convert->xoffset, convert->yoffset, convert->width,
- convert->height, convert->dstImageWidth );
-#endif
-
- for ( row = 0 ; row < convert->height ; row++ ) {
-#ifdef CONVERT_DIRECT
- MEMCPY( dst, src, DST_ROW_BYTES );
- src += srcRowStride;
- dst += convert->dstImageWidth;
-#else
- const GLubyte *srcRow = src;
- GLint col;
- for ( col = 0 ; col < convert->width ; col++ ) {
- CONVERT_TEXEL( *dst++, src );
- src += SRC_TEXEL_BYTES;
- }
- src = srcRow + srcRowStride;
- dst += adjust;
-#endif
- }
-
- return GL_TRUE;
-}
-
-/** \sa convert_func */
-static GLboolean
-TAG(texsubimage3d_stride_unpack)( const struct convert_info *convert )
-{
- const GLubyte *src = (const GLubyte *)
- _mesa_image_address( convert->unpacking, convert->srcImage,
- convert->width, convert->height,
- convert->format, convert->type, 0, 0, 0 );
- const GLint srcImgStride = (const GLubyte *)
- _mesa_image_address( convert->unpacking, convert->srcImage,
- convert->width, convert->height,
- convert->format, convert->type, 1, 0, 0 ) - src;
- const GLint srcRowStride =
- _mesa_image_row_stride( convert->unpacking, convert->width,
- convert->format, convert->type );
- DST_TYPE *dst = (DST_TYPE *)((GLubyte *)convert->dstImage +
- ((convert->zoffset * convert->dstImageHeight +
- convert->yoffset) * convert->dstImageWidth +
- convert->xoffset) * DST_TEXEL_BYTES);
- GLint row, img;
-#ifndef CONVERT_DIRECT
- GLint adjust = convert->dstImageWidth - convert->width;
-#endif
-
-#if DEBUG_TEXUTIL
- _mesa_debug( NULL, __FUNCTION__ ":\n" );
- _mesa_debug( NULL, " x=%d y=%d w=%d h=%d s=%d\n",
- convert->xoffset, convert->yoffset, convert->width,
- convert->height, convert->dstImageWidth );
-#endif
-
- for ( img = 0 ; img < convert->depth ; img++ ) {
- const GLubyte *srcImage = src;
- for ( row = 0 ; row < convert->height ; row++ ) {
-#ifdef CONVERT_DIRECT
- MEMCPY( dst, src, DST_ROW_BYTES );
- src += srcRowStride;
- dst += convert->dstImageWidth;
-#else
- const GLubyte *srcRow = src;
- GLint col;
- for ( col = 0 ; col < convert->width ; col++ ) {
- CONVERT_TEXEL( *dst++, src );
- src += SRC_TEXEL_BYTES;
- }
- src = srcRow + srcRowStride;
- dst += adjust;
-#endif
- }
- src = srcImage + srcImgStride;
- }
-
- return GL_TRUE;
-}
-
-/*@}*/
-
-
-/***********************************************************************/
-/** \name Conversion function tables
- */
-/*@{*/
-
-/**
- * 2D texture conversion functions table.
- *
- * \sa convert_func.
- */
-static convert_func TAG(texsubimage2d_tab)[] = {
- TAG(texsubimage2d),
- TAG(texsubimage2d_stride),
- TAG(texsubimage2d_unpack),
- TAG(texsubimage2d_stride_unpack),
-};
-
-/**
- * 3D texture conversion functions table.
- *
- * \sa convert_func.
- */
-static convert_func TAG(texsubimage3d_tab)[] = {
- TAG(texsubimage3d),
- TAG(texsubimage3d_stride),
- TAG(texsubimage3d_unpack),
- TAG(texsubimage3d_stride_unpack),
-};
-
-/*@}*/
-
-
-#ifndef PRESERVE_DST_TYPE
-#undef DST_TYPE
-#undef DST_TEXELS_PER_DWORD
-#endif
-
-#undef SRC_TEXEL_BYTES
-#undef DST_TEXEL_BYTES
-#undef DST_ROW_BYTES
-#undef DST_ROW_STRIDE
-
-#undef CONVERT_TEXEL
-#undef CONVERT_TEXEL_DWORD
-#undef CONVERT_DIRECT
-
-#undef TAG
-
-#undef PRESERVE_DST_TYPE