[Mesa-dev] [PATCH v4 23/28] mesa: Remove _mesa_unpack_color_span_float

Iago Toral Quiroga itoral at igalia.com
Wed Jan 7 23:21:42 PST 2015


And various helper functions that went unused after removing it.

Reviewed-by: Jason Ekstrand <jason.ekstrand at intel.com>
---
 src/mesa/main/pack.c | 1033 --------------------------------------------------
 src/mesa/main/pack.h |    9 -
 2 files changed, 1042 deletions(-)

diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c
index 7363e41..e0c2226 100644
--- a/src/mesa/main/pack.c
+++ b/src/mesa/main/pack.c
@@ -53,8 +53,6 @@
 #include "pixeltransfer.h"
 #include "imports.h"
 #include "glformats.h"
-#include "../../gallium/auxiliary/util/u_format_rgb9e5.h"
-#include "../../gallium/auxiliary/util/u_format_r11g11b10f.h"
 #include "format_utils.h"
 #include "format_pack.h"
 
@@ -235,100 +233,6 @@ _mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source,
 
 
 /**
- * Get indexes of color components for a basic color format, such as
- * GL_RGBA, GL_RED, GL_LUMINANCE_ALPHA, etc.  Return -1 for indexes
- * that do not apply.
- */
-static void
-get_component_indexes(GLenum format,
-                      GLint *redIndex,
-                      GLint *greenIndex,
-                      GLint *blueIndex,
-                      GLint *alphaIndex,
-                      GLint *luminanceIndex,
-                      GLint *intensityIndex)
-{
-   *redIndex = -1;
-   *greenIndex = -1;
-   *blueIndex = -1;
-   *alphaIndex = -1;
-   *luminanceIndex = -1;
-   *intensityIndex = -1;
-
-   switch (format) {
-   case GL_LUMINANCE:
-   case GL_LUMINANCE_INTEGER_EXT:
-      *luminanceIndex = 0;
-      break;
-   case GL_LUMINANCE_ALPHA:
-   case GL_LUMINANCE_ALPHA_INTEGER_EXT:
-      *luminanceIndex = 0;
-      *alphaIndex = 1;
-      break;
-   case GL_INTENSITY:
-      *intensityIndex = 0;
-      break;
-   case GL_RED:
-   case GL_RED_INTEGER_EXT:
-      *redIndex = 0;
-      break;
-   case GL_GREEN:
-   case GL_GREEN_INTEGER_EXT:
-      *greenIndex = 0;
-      break;
-   case GL_BLUE:
-   case GL_BLUE_INTEGER_EXT:
-      *blueIndex = 0;
-      break;
-   case GL_ALPHA:
-   case GL_ALPHA_INTEGER_EXT:
-      *alphaIndex = 0;
-      break;
-   case GL_RG:
-   case GL_RG_INTEGER:
-      *redIndex = 0;
-      *greenIndex = 1;
-      break;
-   case GL_RGB:
-   case GL_RGB_INTEGER_EXT:
-      *redIndex = 0;
-      *greenIndex = 1;
-      *blueIndex = 2;
-      break;
-   case GL_BGR:
-   case GL_BGR_INTEGER_EXT:
-      *blueIndex = 0;
-      *greenIndex = 1;
-      *redIndex = 2;
-      break;
-   case GL_RGBA:
-   case GL_RGBA_INTEGER_EXT:
-      *redIndex = 0;
-      *greenIndex = 1;
-      *blueIndex = 2;
-      *alphaIndex = 3;
-      break;
-   case GL_BGRA:
-   case GL_BGRA_INTEGER:
-      *redIndex = 2;
-      *greenIndex = 1;
-      *blueIndex = 0;
-      *alphaIndex = 3;
-      break;
-   case GL_ABGR_EXT:
-      *redIndex = 3;
-      *greenIndex = 2;
-      *blueIndex = 1;
-      *alphaIndex = 0;
-      break;
-   default:
-      assert(0 && "bad format in get_component_indexes()");
-   }
-}
-
-
-
-/**
  * For small integer types, return the min and max possible values.
  * Used for clamping floats to unscaled integer types.
  * \return GL_TRUE if type is handled, GL_FALSE otherwise.
@@ -964,743 +868,6 @@ extract_uint_indexes(GLuint n, GLuint indexes[],
 }
 
 
-/**
- * Return source/dest RGBA indexes for unpacking pixels.
- */
-static void
-get_component_mapping(GLenum format,
-                      GLint *rSrc,
-                      GLint *gSrc,
-                      GLint *bSrc,
-                      GLint *aSrc,
-                      GLint *rDst,
-                      GLint *gDst,
-                      GLint *bDst,
-                      GLint *aDst)
-{
-   switch (format) {
-   case GL_RED:
-   case GL_RED_INTEGER_EXT:
-      *rSrc = 0;
-      *gSrc = *bSrc = *aSrc = -1;
-      break;
-   case GL_GREEN:
-   case GL_GREEN_INTEGER_EXT:
-      *gSrc = 0;
-      *rSrc = *bSrc = *aSrc = -1;
-      break;
-   case GL_BLUE:
-   case GL_BLUE_INTEGER_EXT:
-      *bSrc = 0;
-      *rSrc = *gSrc = *aSrc = -1;
-      break;
-   case GL_ALPHA:
-   case GL_ALPHA_INTEGER_EXT:
-      *rSrc = *gSrc = *bSrc = -1;
-      *aSrc = 0;
-      break;
-   case GL_LUMINANCE:
-   case GL_LUMINANCE_INTEGER_EXT:
-      *rSrc = *gSrc = *bSrc = 0;
-      *aSrc = -1;
-      break;
-   case GL_LUMINANCE_ALPHA:
-   case GL_LUMINANCE_ALPHA_INTEGER_EXT:
-      *rSrc = *gSrc = *bSrc = 0;
-      *aSrc = 1;
-      break;
-   case GL_INTENSITY:
-      *rSrc = *gSrc = *bSrc = *aSrc = 0;
-      break;
-   case GL_RG:
-   case GL_RG_INTEGER:
-      *rSrc = 0;
-      *gSrc = 1;
-      *bSrc = -1;
-      *aSrc = -1;
-      *rDst = 0;
-      *gDst = 1;
-      *bDst = 2;
-      *aDst = 3;
-      break;
-   case GL_RGB:
-   case GL_RGB_INTEGER:
-      *rSrc = 0;
-      *gSrc = 1;
-      *bSrc = 2;
-      *aSrc = -1;
-      *rDst = 0;
-      *gDst = 1;
-      *bDst = 2;
-      *aDst = 3;
-      break;
-   case GL_BGR:
-   case GL_BGR_INTEGER:
-      *rSrc = 2;
-      *gSrc = 1;
-      *bSrc = 0;
-      *aSrc = -1;
-      *rDst = 2;
-      *gDst = 1;
-      *bDst = 0;
-      *aDst = 3;
-      break;
-   case GL_RGBA:
-   case GL_RGBA_INTEGER:
-      *rSrc = 0;
-      *gSrc = 1;
-      *bSrc = 2;
-      *aSrc = 3;
-      *rDst = 0;
-      *gDst = 1;
-      *bDst = 2;
-      *aDst = 3;
-      break;
-   case GL_BGRA:
-   case GL_BGRA_INTEGER:
-      *rSrc = 2;
-      *gSrc = 1;
-      *bSrc = 0;
-      *aSrc = 3;
-      *rDst = 2;
-      *gDst = 1;
-      *bDst = 0;
-      *aDst = 3;
-      break;
-   case GL_ABGR_EXT:
-      *rSrc = 3;
-      *gSrc = 2;
-      *bSrc = 1;
-      *aSrc = 0;
-      *rDst = 3;
-      *gDst = 2;
-      *bDst = 1;
-      *aDst = 0;
-      break;
-   default:
-      _mesa_problem(NULL, "bad srcFormat %s in get_component_mapping",
-                    _mesa_lookup_enum_by_nr(format));
-      return;
-   }
-}
-
-
-
-/*
- * This function extracts floating point RGBA values from arbitrary
- * image data.  srcFormat and srcType are the format and type parameters
- * passed to glDrawPixels, glTexImage[123]D, glTexSubImage[123]D, etc.
- *
- * Refering to section 3.6.4 of the OpenGL 1.2 spec, this function
- * implements the "Conversion to floating point", "Conversion to RGB",
- * and "Final Expansion to RGBA" operations.
- *
- * Args:  n - number of pixels
- *        rgba - output colors
- *        srcFormat - format of incoming data
- *        srcType - data type of incoming data
- *        src - source data pointer
- *        swapBytes - perform byteswapping of incoming data?
- */
-static void
-extract_float_rgba(GLuint n, GLfloat rgba[][4],
-                   GLenum srcFormat, GLenum srcType, const GLvoid *src,
-                   GLboolean swapBytes)
-{
-   GLint rSrc, gSrc, bSrc, aSrc;
-   GLint stride;
-   GLint rDst, bDst, gDst, aDst;
-   GLboolean intFormat;
-   GLfloat rs = 1.0f, gs = 1.0f, bs = 1.0f, as = 1.0f; /* scale factors */
-
-   ASSERT(srcFormat == GL_RED ||
-          srcFormat == GL_GREEN ||
-          srcFormat == GL_BLUE ||
-          srcFormat == GL_ALPHA ||
-          srcFormat == GL_LUMINANCE ||
-          srcFormat == GL_LUMINANCE_ALPHA ||
-          srcFormat == GL_INTENSITY ||
-          srcFormat == GL_RG ||
-          srcFormat == GL_RGB ||
-          srcFormat == GL_BGR ||
-          srcFormat == GL_RGBA ||
-          srcFormat == GL_BGRA ||
-          srcFormat == GL_ABGR_EXT ||
-          srcFormat == GL_RED_INTEGER_EXT ||
-          srcFormat == GL_GREEN_INTEGER_EXT ||
-          srcFormat == GL_BLUE_INTEGER_EXT ||
-          srcFormat == GL_ALPHA_INTEGER_EXT ||
-          srcFormat == GL_RG_INTEGER ||
-          srcFormat == GL_RGB_INTEGER_EXT ||
-          srcFormat == GL_RGBA_INTEGER_EXT ||
-          srcFormat == GL_BGR_INTEGER_EXT ||
-          srcFormat == GL_BGRA_INTEGER_EXT ||
-          srcFormat == GL_LUMINANCE_INTEGER_EXT ||
-          srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT);
-
-   ASSERT(srcType == GL_UNSIGNED_BYTE ||
-          srcType == GL_BYTE ||
-          srcType == GL_UNSIGNED_SHORT ||
-          srcType == GL_SHORT ||
-          srcType == GL_UNSIGNED_INT ||
-          srcType == GL_INT ||
-          srcType == GL_HALF_FLOAT_ARB ||
-          srcType == GL_FLOAT ||
-          srcType == GL_UNSIGNED_BYTE_3_3_2 ||
-          srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
-          srcType == GL_UNSIGNED_SHORT_5_6_5 ||
-          srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
-          srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
-          srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
-          srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
-          srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
-          srcType == GL_UNSIGNED_INT_8_8_8_8 ||
-          srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
-          srcType == GL_UNSIGNED_INT_10_10_10_2 ||
-          srcType == GL_UNSIGNED_INT_2_10_10_10_REV ||
-          srcType == GL_UNSIGNED_INT_5_9_9_9_REV ||
-          srcType == GL_UNSIGNED_INT_10F_11F_11F_REV);
-
-   get_component_mapping(srcFormat,
-                         &rSrc, &gSrc, &bSrc, &aSrc,
-                         &rDst, &gDst, &bDst, &aDst);
-
-   stride = _mesa_components_in_format(srcFormat);
-
-   intFormat = _mesa_is_enum_format_integer(srcFormat);
-
-#define PROCESS(SRC_INDEX, DST_INDEX, DEFAULT_FLT, DEFAULT_INT, TYPE, CONVERSION) \
-   if ((SRC_INDEX) < 0) {						\
-      GLuint i;								\
-      if (intFormat) {							\
-         for (i = 0; i < n; i++) {					\
-            rgba[i][DST_INDEX] = DEFAULT_INT;				\
-         }								\
-      }									\
-      else {								\
-         for (i = 0; i < n; i++) {					\
-            rgba[i][DST_INDEX] = DEFAULT_FLT;				\
-         }								\
-      }									\
-   }									\
-   else if (swapBytes) {						\
-      const TYPE *s = (const TYPE *) src;				\
-      GLuint i;								\
-      for (i = 0; i < n; i++) {						\
-         TYPE value = s[SRC_INDEX];					\
-         if (sizeof(TYPE) == 2) {					\
-            SWAP2BYTE(value);						\
-         }								\
-         else if (sizeof(TYPE) == 4) {					\
-            SWAP4BYTE(value);						\
-         }								\
-         if (intFormat)							\
-            rgba[i][DST_INDEX] = (GLfloat) value;			\
-         else								\
-            rgba[i][DST_INDEX] = (GLfloat) CONVERSION(value);		\
-         s += stride;							\
-      }									\
-   }									\
-   else {								\
-      const TYPE *s = (const TYPE *) src;				\
-      GLuint i;								\
-      if (intFormat) {							\
-         for (i = 0; i < n; i++) {					\
-            rgba[i][DST_INDEX] = (GLfloat) s[SRC_INDEX];		\
-            s += stride;						\
-         }								\
-      }									\
-      else {								\
-         for (i = 0; i < n; i++) {					\
-            rgba[i][DST_INDEX] = (GLfloat) CONVERSION(s[SRC_INDEX]);	\
-            s += stride;						\
-         }								\
-      }									\
-   }
-
-   switch (srcType) {
-      case GL_UNSIGNED_BYTE:
-         PROCESS(rSrc, RCOMP, 0.0F,   0, GLubyte, UBYTE_TO_FLOAT);
-         PROCESS(gSrc, GCOMP, 0.0F,   0, GLubyte, UBYTE_TO_FLOAT);
-         PROCESS(bSrc, BCOMP, 0.0F,   0, GLubyte, UBYTE_TO_FLOAT);
-         PROCESS(aSrc, ACOMP, 1.0F, 255, GLubyte, UBYTE_TO_FLOAT);
-         break;
-      case GL_BYTE:
-         PROCESS(rSrc, RCOMP, 0.0F,   0, GLbyte, BYTE_TO_FLOAT_TEX);
-         PROCESS(gSrc, GCOMP, 0.0F,   0, GLbyte, BYTE_TO_FLOAT_TEX);
-         PROCESS(bSrc, BCOMP, 0.0F,   0, GLbyte, BYTE_TO_FLOAT_TEX);
-         PROCESS(aSrc, ACOMP, 1.0F, 127, GLbyte, BYTE_TO_FLOAT_TEX);
-         break;
-      case GL_UNSIGNED_SHORT:
-         PROCESS(rSrc, RCOMP, 0.0F,      0, GLushort, USHORT_TO_FLOAT);
-         PROCESS(gSrc, GCOMP, 0.0F,      0, GLushort, USHORT_TO_FLOAT);
-         PROCESS(bSrc, BCOMP, 0.0F,      0, GLushort, USHORT_TO_FLOAT);
-         PROCESS(aSrc, ACOMP, 1.0F, 0xffff, GLushort, USHORT_TO_FLOAT);
-         break;
-      case GL_SHORT:
-         PROCESS(rSrc, RCOMP, 0.0F,     0, GLshort, SHORT_TO_FLOAT_TEX);
-         PROCESS(gSrc, GCOMP, 0.0F,     0, GLshort, SHORT_TO_FLOAT_TEX);
-         PROCESS(bSrc, BCOMP, 0.0F,     0, GLshort, SHORT_TO_FLOAT_TEX);
-         PROCESS(aSrc, ACOMP, 1.0F, 32767, GLshort, SHORT_TO_FLOAT_TEX);
-         break;
-      case GL_UNSIGNED_INT:
-         PROCESS(rSrc, RCOMP, 0.0F,          0, GLuint, UINT_TO_FLOAT);
-         PROCESS(gSrc, GCOMP, 0.0F,          0, GLuint, UINT_TO_FLOAT);
-         PROCESS(bSrc, BCOMP, 0.0F,          0, GLuint, UINT_TO_FLOAT);
-         PROCESS(aSrc, ACOMP, 1.0F, 0xffffffff, GLuint, UINT_TO_FLOAT);
-         break;
-      case GL_INT:
-         PROCESS(rSrc, RCOMP, 0.0F,          0, GLint, INT_TO_FLOAT);
-         PROCESS(gSrc, GCOMP, 0.0F,          0, GLint, INT_TO_FLOAT);
-         PROCESS(bSrc, BCOMP, 0.0F,          0, GLint, INT_TO_FLOAT);
-         PROCESS(aSrc, ACOMP, 1.0F, 2147483647, GLint, INT_TO_FLOAT);
-         break;
-      case GL_FLOAT:
-         PROCESS(rSrc, RCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
-         PROCESS(gSrc, GCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
-         PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLfloat, (GLfloat));
-         PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLfloat, (GLfloat));
-         break;
-      case GL_HALF_FLOAT_ARB:
-         PROCESS(rSrc, RCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
-         PROCESS(gSrc, GCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
-         PROCESS(bSrc, BCOMP, 0.0F, 0.0F, GLhalfARB, _mesa_half_to_float);
-         PROCESS(aSrc, ACOMP, 1.0F, 1.0F, GLhalfARB, _mesa_half_to_float);
-         break;
-      case GL_UNSIGNED_BYTE_3_3_2:
-         {
-            const GLubyte *ubsrc = (const GLubyte *) src;
-            GLuint i;
-            if (!intFormat) {
-               rs = 1.0F / 7.0F;
-               gs = 1.0F / 7.0F;
-               bs = 1.0F / 3.0F;
-            }
-            for (i = 0; i < n; i ++) {
-               GLubyte p = ubsrc[i];
-               rgba[i][rDst] = ((p >> 5)      ) * rs;
-               rgba[i][gDst] = ((p >> 2) & 0x7) * gs;
-               rgba[i][bDst] = ((p     ) & 0x3) * bs;
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         break;
-      case GL_UNSIGNED_BYTE_2_3_3_REV:
-         {
-            const GLubyte *ubsrc = (const GLubyte *) src;
-            GLuint i;
-            if (!intFormat) {
-               rs = 1.0F / 7.0F;
-               gs = 1.0F / 7.0F;
-               bs = 1.0F / 3.0F;
-            }
-            for (i = 0; i < n; i ++) {
-               GLubyte p = ubsrc[i];
-               rgba[i][rDst] = ((p     ) & 0x7) * rs;
-               rgba[i][gDst] = ((p >> 3) & 0x7) * gs;
-               rgba[i][bDst] = ((p >> 6)      ) * bs;
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         break;
-      case GL_UNSIGNED_SHORT_5_6_5:
-         if (!intFormat) {
-            rs = 1.0F / 31.0F;
-            gs = 1.0F / 63.0F;
-            bs = 1.0F / 31.0F;
-         }
-         if (swapBytes) {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               SWAP2BYTE(p);
-               rgba[i][rDst] = ((p >> 11)       ) * rs;
-               rgba[i][gDst] = ((p >>  5) & 0x3f) * gs;
-               rgba[i][bDst] = ((p      ) & 0x1f) * bs;
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         else {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               rgba[i][rDst] = ((p >> 11)       ) * rs;
-               rgba[i][gDst] = ((p >>  5) & 0x3f) * gs;
-               rgba[i][bDst] = ((p      ) & 0x1f) * bs;
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         break;
-      case GL_UNSIGNED_SHORT_5_6_5_REV:
-         if (!intFormat) {
-            rs = 1.0F / 31.0F;
-            gs = 1.0F / 63.0F;
-            bs = 1.0F / 31.0F;
-         }
-         if (swapBytes) {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               SWAP2BYTE(p);
-               rgba[i][rDst] = ((p      ) & 0x1f) * rs;
-               rgba[i][gDst] = ((p >>  5) & 0x3f) * gs;
-               rgba[i][bDst] = ((p >> 11)       ) * bs;
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         else {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               rgba[i][rDst] = ((p      ) & 0x1f) * rs;
-               rgba[i][gDst] = ((p >>  5) & 0x3f) * gs;
-               rgba[i][bDst] = ((p >> 11)       ) * bs;
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         break;
-      case GL_UNSIGNED_SHORT_4_4_4_4:
-         if (!intFormat) {
-            rs = gs = bs = as = 1.0F / 15.0F;
-         }
-         if (swapBytes) {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               SWAP2BYTE(p);
-               rgba[i][rDst] = ((p >> 12)      ) * rs;
-               rgba[i][gDst] = ((p >>  8) & 0xf) * gs;
-               rgba[i][bDst] = ((p >>  4) & 0xf) * bs;
-               rgba[i][aDst] = ((p      ) & 0xf) * as;
-            }
-         }
-         else {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               rgba[i][rDst] = ((p >> 12)      ) * rs;
-               rgba[i][gDst] = ((p >>  8) & 0xf) * gs;
-               rgba[i][bDst] = ((p >>  4) & 0xf) * bs;
-               rgba[i][aDst] = ((p      ) & 0xf) * as;
-            }
-         }
-         break;
-      case GL_UNSIGNED_SHORT_4_4_4_4_REV:
-         if (!intFormat) {
-            rs = gs = bs = as = 1.0F / 15.0F;
-         }
-         if (swapBytes) {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               SWAP2BYTE(p);
-               rgba[i][rDst] = ((p      ) & 0xf) * rs;
-               rgba[i][gDst] = ((p >>  4) & 0xf) * gs;
-               rgba[i][bDst] = ((p >>  8) & 0xf) * bs;
-               rgba[i][aDst] = ((p >> 12)      ) * as;
-            }
-         }
-         else {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               rgba[i][rDst] = ((p      ) & 0xf) * rs;
-               rgba[i][gDst] = ((p >>  4) & 0xf) * gs;
-               rgba[i][bDst] = ((p >>  8) & 0xf) * bs;
-               rgba[i][aDst] = ((p >> 12)      ) * as;
-            }
-         }
-         break;
-      case GL_UNSIGNED_SHORT_5_5_5_1:
-         if (!intFormat) {
-            rs = gs = bs = 1.0F / 31.0F;
-         }
-         if (swapBytes) {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               SWAP2BYTE(p);
-               rgba[i][rDst] = ((p >> 11)       ) * rs;
-               rgba[i][gDst] = ((p >>  6) & 0x1f) * gs;
-               rgba[i][bDst] = ((p >>  1) & 0x1f) * bs;
-               rgba[i][aDst] = ((p      ) & 0x1)  * as;
-            }
-         }
-         else {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               rgba[i][rDst] = ((p >> 11)       ) * rs;
-               rgba[i][gDst] = ((p >>  6) & 0x1f) * gs;
-               rgba[i][bDst] = ((p >>  1) & 0x1f) * bs;
-               rgba[i][aDst] = ((p      ) & 0x1)  * as;
-            }
-         }
-         break;
-      case GL_UNSIGNED_SHORT_1_5_5_5_REV:
-         if (!intFormat) {
-            rs = gs = bs = 1.0F / 31.0F;
-         }
-         if (swapBytes) {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               SWAP2BYTE(p);
-               rgba[i][rDst] = ((p      ) & 0x1f) * rs;
-               rgba[i][gDst] = ((p >>  5) & 0x1f) * gs;
-               rgba[i][bDst] = ((p >> 10) & 0x1f) * bs;
-               rgba[i][aDst] = ((p >> 15)       ) * as;
-            }
-         }
-         else {
-            const GLushort *ussrc = (const GLushort *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLushort p = ussrc[i];
-               rgba[i][rDst] = ((p      ) & 0x1f) * rs;
-               rgba[i][gDst] = ((p >>  5) & 0x1f) * gs;
-               rgba[i][bDst] = ((p >> 10) & 0x1f) * bs;
-               rgba[i][aDst] = ((p >> 15)       ) * as;
-            }
-         }
-         break;
-      case GL_UNSIGNED_INT_8_8_8_8:
-         if (swapBytes) {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            if (intFormat) {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = (GLfloat) ((p      ) & 0xff);
-                  rgba[i][gDst] = (GLfloat) ((p >>  8) & 0xff);
-                  rgba[i][bDst] = (GLfloat) ((p >> 16) & 0xff);
-                  rgba[i][aDst] = (GLfloat) ((p >> 24)       );
-               }
-            }
-            else {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = UBYTE_TO_FLOAT((p      ) & 0xff);
-                  rgba[i][gDst] = UBYTE_TO_FLOAT((p >>  8) & 0xff);
-                  rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
-                  rgba[i][aDst] = UBYTE_TO_FLOAT((p >> 24)       );
-               }
-            }
-         }
-         else {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            if (intFormat) {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = (GLfloat) ((p >> 24)       );
-                  rgba[i][gDst] = (GLfloat) ((p >> 16) & 0xff);
-                  rgba[i][bDst] = (GLfloat) ((p >>  8) & 0xff);
-                  rgba[i][aDst] = (GLfloat) ((p      ) & 0xff);
-               }
-            }
-            else {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = UBYTE_TO_FLOAT((p >> 24)       );
-                  rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
-                  rgba[i][bDst] = UBYTE_TO_FLOAT((p >>  8) & 0xff);
-                  rgba[i][aDst] = UBYTE_TO_FLOAT((p      ) & 0xff);
-               }
-            }
-         }
-         break;
-      case GL_UNSIGNED_INT_8_8_8_8_REV:
-         if (swapBytes) {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            if (intFormat) {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = (GLfloat) ((p >> 24)       );
-                  rgba[i][gDst] = (GLfloat) ((p >> 16) & 0xff);
-                  rgba[i][bDst] = (GLfloat) ((p >>  8) & 0xff);
-                  rgba[i][aDst] = (GLfloat) ((p      ) & 0xff);
-               }
-            }
-            else {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = UBYTE_TO_FLOAT((p >> 24)       );
-                  rgba[i][gDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
-                  rgba[i][bDst] = UBYTE_TO_FLOAT((p >>  8) & 0xff);
-                  rgba[i][aDst] = UBYTE_TO_FLOAT((p      ) & 0xff);
-               }
-            }
-         }
-         else {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            if (intFormat) {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = (GLfloat) ((p      ) & 0xff);
-                  rgba[i][gDst] = (GLfloat) ((p >>  8) & 0xff);
-                  rgba[i][bDst] = (GLfloat) ((p >> 16) & 0xff);
-                  rgba[i][aDst] = (GLfloat) ((p >> 24)       );
-               }
-            }
-            else {
-               for (i = 0; i < n; i ++) {
-                  GLuint p = uisrc[i];
-                  rgba[i][rDst] = UBYTE_TO_FLOAT((p      ) & 0xff);
-                  rgba[i][gDst] = UBYTE_TO_FLOAT((p >>  8) & 0xff);
-                  rgba[i][bDst] = UBYTE_TO_FLOAT((p >> 16) & 0xff);
-                  rgba[i][aDst] = UBYTE_TO_FLOAT((p >> 24)       );
-               }
-            }
-         }
-         break;
-      case GL_UNSIGNED_INT_10_10_10_2:
-         if (!intFormat) {
-            rs = 1.0F / 1023.0F;
-            gs = 1.0F / 1023.0F;
-            bs = 1.0F / 1023.0F;
-            as = 1.0F / 3.0F;
-         }
-         if (swapBytes) {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLuint p = uisrc[i];
-               SWAP4BYTE(p);
-               rgba[i][rDst] = ((p >> 22)        ) * rs;
-               rgba[i][gDst] = ((p >> 12) & 0x3ff) * gs;
-               rgba[i][bDst] = ((p >>  2) & 0x3ff) * bs;
-               rgba[i][aDst] = ((p      ) & 0x3  ) * as;
-            }
-         }
-         else {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLuint p = uisrc[i];
-               rgba[i][rDst] = ((p >> 22)        ) * rs;
-               rgba[i][gDst] = ((p >> 12) & 0x3ff) * gs;
-               rgba[i][bDst] = ((p >>  2) & 0x3ff) * bs;
-               rgba[i][aDst] = ((p      ) & 0x3  ) * as;
-            }
-         }
-         break;
-      case GL_UNSIGNED_INT_2_10_10_10_REV:
-         if (!intFormat) {
-            rs = 1.0F / 1023.0F;
-            gs = 1.0F / 1023.0F;
-            bs = 1.0F / 1023.0F;
-            as = 1.0F / 3.0F;
-         }
-         if (swapBytes) {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLuint p = uisrc[i];
-               SWAP4BYTE(p);
-               rgba[i][rDst] = ((p      ) & 0x3ff) * rs;
-               rgba[i][gDst] = ((p >> 10) & 0x3ff) * gs;
-               rgba[i][bDst] = ((p >> 20) & 0x3ff) * bs;
-               if (aSrc < 0) {
-                  rgba[i][aDst] = 1.0F;
-               } else {
-                  rgba[i][aDst] = (p >> 30) * as;
-               }
-            }
-         }
-         else {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            for (i = 0; i < n; i ++) {
-               GLuint p = uisrc[i];
-               rgba[i][rDst] = ((p      ) & 0x3ff) * rs;
-               rgba[i][gDst] = ((p >> 10) & 0x3ff) * gs;
-               rgba[i][bDst] = ((p >> 20) & 0x3ff) * bs;
-               if (aSrc < 0) {
-                  rgba[i][aDst] = 1.0F;
-               } else {
-                  rgba[i][aDst] = (p >> 30) * as;
-               }
-            }
-         }
-         break;
-      case GL_UNSIGNED_INT_5_9_9_9_REV:
-         if (swapBytes) {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            GLfloat f[3];
-            for (i = 0; i < n; i ++) {
-               GLuint p = uisrc[i];
-               SWAP4BYTE(p);
-               rgb9e5_to_float3(p, f);
-               rgba[i][rDst] = f[0];
-               rgba[i][gDst] = f[1];
-               rgba[i][bDst] = f[2];
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         else {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            GLfloat f[3];
-            for (i = 0; i < n; i ++) {
-               rgb9e5_to_float3(uisrc[i], f);
-               rgba[i][rDst] = f[0];
-               rgba[i][gDst] = f[1];
-               rgba[i][bDst] = f[2];
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         break;
-      case GL_UNSIGNED_INT_10F_11F_11F_REV:
-         if (swapBytes) {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            GLfloat f[3];
-            for (i = 0; i < n; i ++) {
-               GLuint p = uisrc[i];
-               SWAP4BYTE(p);
-               r11g11b10f_to_float3(p, f);
-               rgba[i][rDst] = f[0];
-               rgba[i][gDst] = f[1];
-               rgba[i][bDst] = f[2];
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         else {
-            const GLuint *uisrc = (const GLuint *) src;
-            GLuint i;
-            GLfloat f[3];
-            for (i = 0; i < n; i ++) {
-               r11g11b10f_to_float3(uisrc[i], f);
-               rgba[i][rDst] = f[0];
-               rgba[i][gDst] = f[1];
-               rgba[i][bDst] = f[2];
-               rgba[i][aDst] = 1.0F;
-            }
-         }
-         break;
-      default:
-         _mesa_problem(NULL, "bad srcType in extract float data");
-         break;
-   }
-#undef PROCESS
-}
-
-
 static inline GLuint
 clamp_float_to_uint(GLfloat f)
 {
@@ -1716,205 +883,6 @@ clamp_half_to_uint(GLhalfARB h)
 }
 
 
-/**
- * Same as _mesa_unpack_color_span_ubyte(), but return GLfloat data
- * instead of GLubyte.
- */
-void
-_mesa_unpack_color_span_float( struct gl_context *ctx,
-                               GLuint n, GLenum dstFormat, GLfloat dest[],
-                               GLenum srcFormat, GLenum srcType,
-                               const GLvoid *source,
-                               const struct gl_pixelstore_attrib *srcPacking,
-                               GLbitfield transferOps )
-{
-   ASSERT(dstFormat == GL_ALPHA ||
-          dstFormat == GL_LUMINANCE ||
-          dstFormat == GL_LUMINANCE_ALPHA ||
-          dstFormat == GL_INTENSITY ||
-          dstFormat == GL_RED ||
-          dstFormat == GL_RG ||
-          dstFormat == GL_RGB ||
-          dstFormat == GL_RGBA);
-
-   ASSERT(srcFormat == GL_RED ||
-          srcFormat == GL_GREEN ||
-          srcFormat == GL_BLUE ||
-          srcFormat == GL_ALPHA ||
-          srcFormat == GL_LUMINANCE ||
-          srcFormat == GL_LUMINANCE_ALPHA ||
-          srcFormat == GL_INTENSITY ||
-          srcFormat == GL_RG ||
-          srcFormat == GL_RGB ||
-          srcFormat == GL_BGR ||
-          srcFormat == GL_RGBA ||
-          srcFormat == GL_BGRA ||
-          srcFormat == GL_ABGR_EXT ||
-          srcFormat == GL_RED_INTEGER_EXT ||
-          srcFormat == GL_GREEN_INTEGER_EXT ||
-          srcFormat == GL_BLUE_INTEGER_EXT ||
-          srcFormat == GL_ALPHA_INTEGER_EXT ||
-          srcFormat == GL_RG_INTEGER ||
-          srcFormat == GL_RGB_INTEGER_EXT ||
-          srcFormat == GL_RGBA_INTEGER_EXT ||
-          srcFormat == GL_BGR_INTEGER_EXT ||
-          srcFormat == GL_BGRA_INTEGER_EXT ||
-          srcFormat == GL_LUMINANCE_INTEGER_EXT ||
-          srcFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT ||
-          srcFormat == GL_COLOR_INDEX);
-
-   ASSERT(srcType == GL_BITMAP ||
-          srcType == GL_UNSIGNED_BYTE ||
-          srcType == GL_BYTE ||
-          srcType == GL_UNSIGNED_SHORT ||
-          srcType == GL_SHORT ||
-          srcType == GL_UNSIGNED_INT ||
-          srcType == GL_INT ||
-          srcType == GL_HALF_FLOAT_ARB ||
-          srcType == GL_FLOAT ||
-          srcType == GL_UNSIGNED_BYTE_3_3_2 ||
-          srcType == GL_UNSIGNED_BYTE_2_3_3_REV ||
-          srcType == GL_UNSIGNED_SHORT_5_6_5 ||
-          srcType == GL_UNSIGNED_SHORT_5_6_5_REV ||
-          srcType == GL_UNSIGNED_SHORT_4_4_4_4 ||
-          srcType == GL_UNSIGNED_SHORT_4_4_4_4_REV ||
-          srcType == GL_UNSIGNED_SHORT_5_5_5_1 ||
-          srcType == GL_UNSIGNED_SHORT_1_5_5_5_REV ||
-          srcType == GL_UNSIGNED_INT_8_8_8_8 ||
-          srcType == GL_UNSIGNED_INT_8_8_8_8_REV ||
-          srcType == GL_UNSIGNED_INT_10_10_10_2 ||
-          srcType == GL_UNSIGNED_INT_2_10_10_10_REV ||
-          srcType == GL_UNSIGNED_INT_5_9_9_9_REV ||
-          srcType == GL_UNSIGNED_INT_10F_11F_11F_REV);
-
-   /* general solution, no special cases, yet */
-   {
-      GLint dstComponents;
-      GLint rDst, gDst, bDst, aDst, lDst, iDst;
-      GLfloat (*rgba)[4] = malloc(4 * n * sizeof(GLfloat));
-      GLboolean intFormat = _mesa_is_enum_format_integer(srcFormat);
-
-      if (!rgba) {
-         _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking");
-         return;
-      }
-
-      dstComponents = _mesa_components_in_format( dstFormat );
-      /* source & dest image formats should have been error checked by now */
-      assert(dstComponents > 0);
-
-      /* EXT_texture_integer specifies no transfer ops on integer
-       * types in the resolved issues section. Just set them to 0
-       * for integer surfaces.
-       */
-      if (intFormat)
-         transferOps = 0;
-
-      /*
-       * Extract image data and convert to RGBA floats
-       */
-      if (srcFormat == GL_COLOR_INDEX) {
-         GLuint *indexes = malloc(n * sizeof(GLuint));
-
-         if (!indexes) {
-            _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking");
-            free(rgba);
-            return;
-         }
-
-         extract_uint_indexes(n, indexes, srcFormat, srcType, source,
-                              srcPacking);
-
-	 /* Convert indexes to RGBA */
-	 if (transferOps & IMAGE_SHIFT_OFFSET_BIT) {
-	    _mesa_shift_and_offset_ci(ctx, n, indexes);
-	 }
-	 _mesa_map_ci_to_rgba(ctx, n, indexes, rgba);
-
-         /* Don't do RGBA scale/bias or RGBA->RGBA mapping if starting
-          * with color indexes.
-          */
-         transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT);
-
-         free(indexes);
-      }
-      else {
-         /* non-color index data */
-         extract_float_rgba(n, rgba, srcFormat, srcType, source,
-                            srcPacking->SwapBytes);
-      }
-
-      if (transferOps) {
-         _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
-      }
-
-      get_component_indexes(dstFormat,
-                            &rDst, &gDst, &bDst, &aDst, &lDst, &iDst);
-
-      /* Now pack results in the requested dstFormat */
-      if (rDst >= 0) {
-         GLfloat *dst = dest;
-         GLuint i;
-         for (i = 0; i < n; i++) {
-            dst[rDst] = rgba[i][RCOMP];
-            dst += dstComponents;
-         }
-      }
-
-      if (gDst >= 0) {
-         GLfloat *dst = dest;
-         GLuint i;
-         for (i = 0; i < n; i++) {
-            dst[gDst] = rgba[i][GCOMP];
-            dst += dstComponents;
-         }
-      }
-
-      if (bDst >= 0) {
-         GLfloat *dst = dest;
-         GLuint i;
-         for (i = 0; i < n; i++) {
-            dst[bDst] = rgba[i][BCOMP];
-            dst += dstComponents;
-         }
-      }
-
-      if (aDst >= 0) {
-         GLfloat *dst = dest;
-         GLuint i;
-         for (i = 0; i < n; i++) {
-            dst[aDst] = rgba[i][ACOMP];
-            dst += dstComponents;
-         }
-      }
-
-      if (iDst >= 0) {
-         GLfloat *dst = dest;
-         GLuint i;
-         assert(iDst == 0);
-         assert(dstComponents == 1);
-         for (i = 0; i < n; i++) {
-            /* Intensity comes from red channel */
-            dst[i] = rgba[i][RCOMP];
-         }
-      }
-
-      if (lDst >= 0) {
-         GLfloat *dst = dest;
-         GLuint i;
-         assert(lDst == 0);
-         for (i = 0; i < n; i++) {
-            /* Luminance comes from red channel */
-            dst[0] = rgba[i][RCOMP];
-            dst += dstComponents;
-         }
-      }
-
-      free(rgba);
-   }
-}
-
-
 /*
  * Unpack a row of color index data from a client buffer according to
  * the pixel unpacking parameters.
@@ -2840,7 +1808,6 @@ _mesa_pack_depth_stencil_span(struct gl_context *ctx,GLuint n,
 
 
 
-
 /**
  * Unpack image data.  Apply byte swapping, byte flipping (bitmap).
  * Return all image data in a contiguous block.  This is used when we
diff --git a/src/mesa/main/pack.h b/src/mesa/main/pack.h
index ec1e8bc..9ca6f68 100644
--- a/src/mesa/main/pack.h
+++ b/src/mesa/main/pack.h
@@ -55,15 +55,6 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n,
 
 
 extern void
-_mesa_unpack_color_span_float(struct gl_context *ctx,
-                              GLuint n, GLenum dstFormat, GLfloat dest[],
-                              GLenum srcFormat, GLenum srcType,
-                              const GLvoid *source,
-                              const struct gl_pixelstore_attrib *srcPacking,
-                              GLbitfield transferOps);
-
-
-extern void
 _mesa_unpack_index_span(struct gl_context *ctx, GLuint n,
                         GLenum dstType, GLvoid *dest,
                         GLenum srcType, const GLvoid *source,
-- 
1.9.1



More information about the mesa-dev mailing list