mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 14:50:10 +01:00
mesa: Remove _mesa_pack_rgba_span_float and tmp_pack.h
_mesa_pack_rgba_span_float was the last of the color span functions and we have replaced all calls to it with calls to _mesa_format_convert, so we can remove it together with tmp_pack.h which was used to generate the pack functions for multiple types that were used from the various color span functions that have been removed. Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
This commit is contained in:
parent
873437e209
commit
3a4de32144
3 changed files with 0 additions and 607 deletions
|
|
@ -232,409 +232,6 @@ _mesa_pack_bitmap( GLint width, GLint height, const GLubyte *source,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
static GLboolean
|
||||
get_type_min_max(GLenum type, GLfloat *min, GLfloat *max)
|
||||
{
|
||||
switch (type) {
|
||||
case GL_BYTE:
|
||||
*min = -128.0;
|
||||
*max = 127.0;
|
||||
return GL_TRUE;
|
||||
case GL_UNSIGNED_BYTE:
|
||||
*min = 0.0;
|
||||
*max = 255.0;
|
||||
return GL_TRUE;
|
||||
case GL_SHORT:
|
||||
*min = -32768.0;
|
||||
*max = 32767.0;
|
||||
return GL_TRUE;
|
||||
case GL_UNSIGNED_SHORT:
|
||||
*min = 0.0;
|
||||
*max = 65535.0;
|
||||
return GL_TRUE;
|
||||
default:
|
||||
return GL_FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Customization of float packing.
|
||||
*/
|
||||
#define SRC_TYPE GLfloat
|
||||
|
||||
#define DST_TYPE GLuint
|
||||
#define FLOAT_SRC_CONVERT(x) FLOAT_TO_UINT(x)
|
||||
#define SRC_CONVERT(x) (GLuint) x
|
||||
#define FN_NAME pack_uint_from_float_rgba
|
||||
#include "pack_tmp.h"
|
||||
#undef DST_TYPE
|
||||
#undef SRC_CONVERT
|
||||
#undef FLOAT_SRC_CONVERT
|
||||
#undef FN_NAME
|
||||
|
||||
#define DST_TYPE GLint
|
||||
#define FLOAT_SRC_CONVERT(x) FLOAT_TO_INT(x)
|
||||
#define SRC_CONVERT(x) (GLint) x
|
||||
#define FN_NAME pack_int_from_float_rgba
|
||||
#include "pack_tmp.h"
|
||||
#undef DST_TYPE
|
||||
#undef SRC_CONVERT
|
||||
#undef FLOAT_SRC_CONVERT
|
||||
#undef FN_NAME
|
||||
|
||||
#define DST_TYPE GLshort
|
||||
#define FLOAT_SRC_CONVERT(x) FLOAT_TO_SHORT_TEX(x)
|
||||
#define SRC_CONVERT(x) (GLshort) x
|
||||
#define FN_NAME pack_short_from_float_rgba
|
||||
#include "pack_tmp.h"
|
||||
#undef DST_TYPE
|
||||
#undef SRC_CONVERT
|
||||
#undef FLOAT_SRC_CONVERT
|
||||
#undef FN_NAME
|
||||
|
||||
#define DST_TYPE GLubyte
|
||||
#define FLOAT_SRC_CONVERT(x) FLOAT_TO_UBYTE(x)
|
||||
#define SRC_CONVERT(x) (GLubyte) x
|
||||
#define FN_NAME pack_ubyte_from_float_rgba
|
||||
#include "pack_tmp.h"
|
||||
#undef DST_TYPE
|
||||
#undef SRC_CONVERT
|
||||
#undef FLOAT_SRC_CONVERT
|
||||
#undef FN_NAME
|
||||
|
||||
#define DST_TYPE GLbyte
|
||||
#define FLOAT_SRC_CONVERT(x) FLOAT_TO_BYTE_TEX(x)
|
||||
#define SRC_CONVERT(x) (GLbyte) x
|
||||
#define FN_NAME pack_byte_from_float_rgba
|
||||
#include "pack_tmp.h"
|
||||
#undef DST_TYPE
|
||||
#undef SRC_CONVERT
|
||||
#undef FLOAT_SRC_CONVERT
|
||||
#undef FN_NAME
|
||||
|
||||
#define DST_TYPE GLfloat
|
||||
#define FLOAT_SRC_CONVERT(x) x
|
||||
#define SRC_CONVERT(x) x
|
||||
#define FN_NAME pack_float_from_float_rgba
|
||||
#include "pack_tmp.h"
|
||||
#undef DST_TYPE
|
||||
#undef SRC_CONVERT
|
||||
#undef FLOAT_SRC_CONVERT
|
||||
#undef FN_NAME
|
||||
|
||||
#define DST_TYPE GLhalfARB
|
||||
#define FLOAT_SRC_CONVERT(x) _mesa_float_to_half(x)
|
||||
#define FN_NAME pack_half_float_from_float_rgba
|
||||
#include "pack_tmp.h"
|
||||
#undef DST_TYPE
|
||||
#undef SRC_CONVERT
|
||||
#undef FLOAT_SRC_CONVERT
|
||||
#undef FN_NAME
|
||||
|
||||
#undef SRC_TYPE
|
||||
|
||||
/**
|
||||
* Used to pack an array [][4] of RGBA float colors as specified
|
||||
* by the dstFormat, dstType and dstPacking. Used by glReadPixels.
|
||||
* Historically, the RGBA values were in [0,1] and rescaled to fit
|
||||
* into GLubytes, etc. But with new integer formats, the RGBA values
|
||||
* may have any value and we don't always rescale when converting to
|
||||
* integers.
|
||||
*
|
||||
* Note: the rgba values will be modified by this function when any pixel
|
||||
* transfer ops are enabled.
|
||||
*/
|
||||
void
|
||||
_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4],
|
||||
GLenum dstFormat, GLenum dstType,
|
||||
GLvoid *dstAddr,
|
||||
const struct gl_pixelstore_attrib *dstPacking,
|
||||
GLbitfield transferOps)
|
||||
{
|
||||
GLfloat *luminance;
|
||||
const GLint comps = _mesa_components_in_format(dstFormat);
|
||||
const GLboolean intDstFormat = _mesa_is_enum_format_integer(dstFormat);
|
||||
GLuint i;
|
||||
uint32_t dstMesaFormat;
|
||||
|
||||
if (dstFormat == GL_LUMINANCE ||
|
||||
dstFormat == GL_LUMINANCE_ALPHA ||
|
||||
dstFormat == GL_LUMINANCE_INTEGER_EXT ||
|
||||
dstFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT) {
|
||||
luminance = malloc(n * sizeof(GLfloat));
|
||||
if (!luminance) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel packing");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else {
|
||||
luminance = NULL;
|
||||
}
|
||||
|
||||
/* EXT_texture_integer specifies no transfer ops on integer
|
||||
* types in the resolved issues section. Just set them to 0
|
||||
* for integer surfaces.
|
||||
*/
|
||||
if (intDstFormat)
|
||||
transferOps = 0;
|
||||
|
||||
if (transferOps) {
|
||||
_mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba);
|
||||
}
|
||||
|
||||
/*
|
||||
* Component clamping (besides clamping to [0,1] in
|
||||
* _mesa_apply_rgba_transfer_ops()).
|
||||
*/
|
||||
if (intDstFormat) {
|
||||
/* clamping to dest type's min/max values */
|
||||
GLfloat min, max;
|
||||
if (get_type_min_max(dstType, &min, &max)) {
|
||||
for (i = 0; i < n; i++) {
|
||||
rgba[i][RCOMP] = CLAMP(rgba[i][RCOMP], min, max);
|
||||
rgba[i][GCOMP] = CLAMP(rgba[i][GCOMP], min, max);
|
||||
rgba[i][BCOMP] = CLAMP(rgba[i][BCOMP], min, max);
|
||||
rgba[i][ACOMP] = CLAMP(rgba[i][ACOMP], min, max);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (dstFormat == GL_LUMINANCE || dstFormat == GL_LUMINANCE_ALPHA) {
|
||||
/* compute luminance values */
|
||||
if (transferOps & IMAGE_CLAMP_BIT) {
|
||||
for (i = 0; i < n; i++) {
|
||||
GLfloat sum = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
|
||||
luminance[i] = CLAMP(sum, 0.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (i = 0; i < n; i++) {
|
||||
luminance[i] = rgba[i][RCOMP] + rgba[i][GCOMP] + rgba[i][BCOMP];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Pack/store the pixels. Ugh! Lots of cases!!!
|
||||
*/
|
||||
switch (dstType) {
|
||||
case GL_UNSIGNED_BYTE:
|
||||
pack_ubyte_from_float_rgba(ctx, dstAddr, dstFormat, rgba, luminance, n);
|
||||
break;
|
||||
case GL_BYTE:
|
||||
pack_byte_from_float_rgba(ctx, dstAddr, dstFormat, rgba, luminance, n);
|
||||
break;
|
||||
case GL_UNSIGNED_SHORT:
|
||||
{
|
||||
GLushort *dst = (GLushort *) dstAddr;
|
||||
switch (dstFormat) {
|
||||
case GL_RED:
|
||||
for (i=0;i<n;i++)
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][RCOMP]);
|
||||
break;
|
||||
case GL_GREEN:
|
||||
for (i=0;i<n;i++)
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][GCOMP]);
|
||||
break;
|
||||
case GL_BLUE:
|
||||
for (i=0;i<n;i++)
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][BCOMP]);
|
||||
break;
|
||||
case GL_ALPHA:
|
||||
for (i=0;i<n;i++)
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i], rgba[i][ACOMP]);
|
||||
break;
|
||||
case GL_LUMINANCE:
|
||||
for (i=0;i<n;i++)
|
||||
UNCLAMPED_FLOAT_TO_USHORT(dst[i], luminance[i]);
|
||||
break;
|
||||
case GL_LUMINANCE_ALPHA:
|
||||
for (i=0;i<n;i++) {
|
||||
UNCLAMPED_FLOAT_TO_USHORT(dst[i*2+0], luminance[i]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_RG:
|
||||
for (i=0;i<n;i++) {
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*2+0], rgba[i][RCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*2+1], rgba[i][GCOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_RGB:
|
||||
for (i=0;i<n;i++) {
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][RCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][BCOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_RGBA:
|
||||
for (i=0;i<n;i++) {
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][RCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][BCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_BGR:
|
||||
for (i=0;i<n;i++) {
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*3+0], rgba[i][BCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*3+1], rgba[i][GCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*3+2], rgba[i][RCOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_BGRA:
|
||||
for (i=0;i<n;i++) {
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][BCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][GCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][RCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_ABGR_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+0], rgba[i][ACOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+1], rgba[i][BCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+2], rgba[i][GCOMP]);
|
||||
CLAMPED_FLOAT_TO_USHORT(dst[i*4+3], rgba[i][RCOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_RED_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = (GLushort) rgba[i][RCOMP];
|
||||
}
|
||||
break;
|
||||
case GL_GREEN_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = (GLushort) rgba[i][GCOMP];
|
||||
}
|
||||
break;
|
||||
case GL_BLUE_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = (GLushort) rgba[i][BCOMP];
|
||||
}
|
||||
break;
|
||||
case GL_ALPHA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = (GLushort) rgba[i][ACOMP];
|
||||
}
|
||||
break;
|
||||
case GL_RG_INTEGER:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*2+0] = (GLushort) rgba[i][RCOMP];
|
||||
dst[i*2+1] = (GLushort) rgba[i][GCOMP];
|
||||
}
|
||||
break;
|
||||
case GL_RGB_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*3+0] = (GLushort) rgba[i][RCOMP];
|
||||
dst[i*3+1] = (GLushort) rgba[i][GCOMP];
|
||||
dst[i*3+2] = (GLushort) rgba[i][BCOMP];
|
||||
}
|
||||
break;
|
||||
case GL_RGBA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*4+0] = (GLushort) rgba[i][RCOMP];
|
||||
dst[i*4+1] = (GLushort) rgba[i][GCOMP];
|
||||
dst[i*4+2] = (GLushort) rgba[i][BCOMP];
|
||||
dst[i*4+3] = (GLushort) rgba[i][ACOMP];
|
||||
}
|
||||
break;
|
||||
case GL_BGR_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*3+0] = (GLushort) rgba[i][BCOMP];
|
||||
dst[i*3+1] = (GLushort) rgba[i][GCOMP];
|
||||
dst[i*3+2] = (GLushort) rgba[i][RCOMP];
|
||||
}
|
||||
break;
|
||||
case GL_BGRA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*4+0] = (GLushort) rgba[i][BCOMP];
|
||||
dst[i*4+1] = (GLushort) rgba[i][GCOMP];
|
||||
dst[i*4+2] = (GLushort) rgba[i][RCOMP];
|
||||
dst[i*4+3] = (GLushort) rgba[i][ACOMP];
|
||||
}
|
||||
break;
|
||||
case GL_LUMINANCE_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*2+0] = (GLushort) (rgba[i][RCOMP] +
|
||||
rgba[i][GCOMP] +
|
||||
rgba[i][BCOMP]);
|
||||
dst[i*2+1] = (GLushort) rgba[i][ACOMP];
|
||||
}
|
||||
break;
|
||||
case GL_LUMINANCE_ALPHA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = (GLushort) (rgba[i][RCOMP] +
|
||||
rgba[i][GCOMP] +
|
||||
rgba[i][BCOMP]);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "bad format in _mesa_pack_rgba_span\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GL_SHORT:
|
||||
pack_short_from_float_rgba(ctx, dstAddr, dstFormat, rgba, luminance, n);
|
||||
break;
|
||||
case GL_UNSIGNED_INT:
|
||||
pack_uint_from_float_rgba(ctx, dstAddr, dstFormat, rgba, luminance, n);
|
||||
break;
|
||||
case GL_INT:
|
||||
pack_int_from_float_rgba(ctx, dstAddr, dstFormat, rgba, luminance, n);
|
||||
break;
|
||||
case GL_FLOAT:
|
||||
/* No conversion necessary. */
|
||||
pack_float_from_float_rgba(ctx, dstAddr, dstFormat, rgba, luminance, n);
|
||||
break;
|
||||
case GL_HALF_FLOAT_ARB:
|
||||
pack_half_float_from_float_rgba(ctx, dstAddr, dstFormat, rgba, luminance, n);
|
||||
break;
|
||||
case GL_UNSIGNED_BYTE_3_3_2:
|
||||
case GL_UNSIGNED_BYTE_2_3_3_REV:
|
||||
case GL_UNSIGNED_SHORT_5_6_5:
|
||||
case GL_UNSIGNED_SHORT_5_6_5_REV:
|
||||
case GL_UNSIGNED_SHORT_4_4_4_4:
|
||||
case GL_UNSIGNED_SHORT_4_4_4_4_REV:
|
||||
case GL_UNSIGNED_SHORT_5_5_5_1:
|
||||
case GL_UNSIGNED_SHORT_1_5_5_5_REV:
|
||||
case GL_UNSIGNED_INT_8_8_8_8:
|
||||
case GL_UNSIGNED_INT_8_8_8_8_REV:
|
||||
case GL_UNSIGNED_INT_10_10_10_2:
|
||||
case GL_UNSIGNED_INT_2_10_10_10_REV:
|
||||
case GL_UNSIGNED_INT_5_9_9_9_REV:
|
||||
case GL_UNSIGNED_INT_10F_11F_11F_REV:
|
||||
dstMesaFormat = _mesa_format_from_format_and_type(dstFormat, dstType);
|
||||
if (!(dstMesaFormat & MESA_ARRAY_FORMAT_BIT)) {
|
||||
_mesa_pack_float_rgba_row(dstMesaFormat, n, (void *)rgba[0], (void *)dstAddr);
|
||||
break;
|
||||
} else {
|
||||
/* Fall through */
|
||||
}
|
||||
default:
|
||||
_mesa_problem(ctx, "bad type in _mesa_pack_rgba_span_float");
|
||||
free(luminance);
|
||||
return;
|
||||
}
|
||||
|
||||
if (dstPacking->SwapBytes) {
|
||||
GLint swapSize = _mesa_sizeof_packed_type(dstType);
|
||||
if (swapSize == 2) {
|
||||
_mesa_swap2((GLushort *) dstAddr, n * comps);
|
||||
}
|
||||
else if (swapSize == 4) {
|
||||
_mesa_swap4((GLuint *) dstAddr, n * comps);
|
||||
}
|
||||
}
|
||||
|
||||
free(luminance);
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define SWAP2BYTE(VALUE) \
|
||||
{ \
|
||||
GLubyte *bytes = (GLubyte *) &(VALUE); \
|
||||
|
|
|
|||
|
|
@ -46,14 +46,6 @@ _mesa_pack_bitmap(GLint width, GLint height, const GLubyte *source,
|
|||
GLubyte *dest, const struct gl_pixelstore_attrib *packing);
|
||||
|
||||
|
||||
extern void
|
||||
_mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n,
|
||||
GLfloat rgba[][4],
|
||||
GLenum dstFormat, GLenum dstType, GLvoid *dstAddr,
|
||||
const struct gl_pixelstore_attrib *dstPacking,
|
||||
GLbitfield transferOps);
|
||||
|
||||
|
||||
extern void
|
||||
_mesa_unpack_index_span(struct gl_context *ctx, GLuint n,
|
||||
GLenum dstType, GLvoid *dest,
|
||||
|
|
|
|||
|
|
@ -1,196 +0,0 @@
|
|||
/*
|
||||
* Copyright © 2012 Intel Corporation
|
||||
*
|
||||
* 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 (including the next
|
||||
* paragraph) 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
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS 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.
|
||||
*/
|
||||
|
||||
static void
|
||||
FN_NAME(struct gl_context *ctx,
|
||||
DST_TYPE *dst,
|
||||
GLenum dstFormat,
|
||||
SRC_TYPE rgba[][4],
|
||||
GLfloat *luminance,
|
||||
int n)
|
||||
{
|
||||
int i;
|
||||
|
||||
switch (dstFormat) {
|
||||
#ifdef FLOAT_SRC_CONVERT
|
||||
case GL_RED:
|
||||
for (i=0;i<n;i++)
|
||||
dst[i] = FLOAT_SRC_CONVERT(rgba[i][RCOMP]);
|
||||
break;
|
||||
case GL_GREEN:
|
||||
for (i=0;i<n;i++)
|
||||
dst[i] = FLOAT_SRC_CONVERT(rgba[i][GCOMP]);
|
||||
break;
|
||||
case GL_BLUE:
|
||||
for (i=0;i<n;i++)
|
||||
dst[i] = FLOAT_SRC_CONVERT(rgba[i][BCOMP]);
|
||||
break;
|
||||
case GL_ALPHA:
|
||||
for (i=0;i<n;i++)
|
||||
dst[i] = FLOAT_SRC_CONVERT(rgba[i][ACOMP]);
|
||||
break;
|
||||
case GL_LUMINANCE:
|
||||
for (i=0;i<n;i++)
|
||||
dst[i] = FLOAT_SRC_CONVERT(luminance[i]);
|
||||
break;
|
||||
case GL_LUMINANCE_ALPHA:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*2+0] = FLOAT_SRC_CONVERT(luminance[i]);
|
||||
dst[i*2+1] = FLOAT_SRC_CONVERT(rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_RG:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*2+0] = FLOAT_SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*2+1] = FLOAT_SRC_CONVERT(rgba[i][GCOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_RGB:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*3+0] = FLOAT_SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*3+1] = FLOAT_SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*3+2] = FLOAT_SRC_CONVERT(rgba[i][BCOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_RGBA:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*4+0] = FLOAT_SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*4+1] = FLOAT_SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*4+2] = FLOAT_SRC_CONVERT(rgba[i][BCOMP]);
|
||||
dst[i*4+3] = FLOAT_SRC_CONVERT(rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_BGR:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*3+0] = FLOAT_SRC_CONVERT(rgba[i][BCOMP]);
|
||||
dst[i*3+1] = FLOAT_SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*3+2] = FLOAT_SRC_CONVERT(rgba[i][RCOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_BGRA:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*4+0] = FLOAT_SRC_CONVERT(rgba[i][BCOMP]);
|
||||
dst[i*4+1] = FLOAT_SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*4+2] = FLOAT_SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*4+3] = FLOAT_SRC_CONVERT(rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
case GL_ABGR_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*4+0] = FLOAT_SRC_CONVERT(rgba[i][ACOMP]);
|
||||
dst[i*4+1] = FLOAT_SRC_CONVERT(rgba[i][BCOMP]);
|
||||
dst[i*4+2] = FLOAT_SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*4+3] = FLOAT_SRC_CONVERT(rgba[i][RCOMP]);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
#ifdef SRC_CONVERT
|
||||
case GL_RED_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = SRC_CONVERT(rgba[i][RCOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_GREEN_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = SRC_CONVERT(rgba[i][GCOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_BLUE_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = SRC_CONVERT(rgba[i][BCOMP]);
|
||||
};
|
||||
break;
|
||||
|
||||
case GL_ALPHA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = SRC_CONVERT(rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_RG_INTEGER:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*2+0] = SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*2+1] = SRC_CONVERT(rgba[i][GCOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_RGB_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*3+0] = SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*3+1] = SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*3+2] = SRC_CONVERT(rgba[i][BCOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_RGBA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*4+0] = SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*4+1] = SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*4+2] = SRC_CONVERT(rgba[i][BCOMP]);
|
||||
dst[i*4+3] = SRC_CONVERT(rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_BGR_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*3+0] = SRC_CONVERT(rgba[i][BCOMP]);
|
||||
dst[i*3+1] = SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*3+2] = SRC_CONVERT(rgba[i][RCOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_BGRA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*4+0] = SRC_CONVERT(rgba[i][BCOMP]);
|
||||
dst[i*4+1] = SRC_CONVERT(rgba[i][GCOMP]);
|
||||
dst[i*4+2] = SRC_CONVERT(rgba[i][RCOMP]);
|
||||
dst[i*4+3] = SRC_CONVERT(rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_LUMINANCE_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i] = SRC_CONVERT(rgba[i][RCOMP] +
|
||||
rgba[i][GCOMP] +
|
||||
rgba[i][BCOMP]);
|
||||
}
|
||||
break;
|
||||
|
||||
case GL_LUMINANCE_ALPHA_INTEGER_EXT:
|
||||
for (i=0;i<n;i++) {
|
||||
dst[i*2+0] = SRC_CONVERT(rgba[i][RCOMP] +
|
||||
rgba[i][GCOMP] +
|
||||
rgba[i][BCOMP]);
|
||||
dst[i*2+1] = SRC_CONVERT(rgba[i][ACOMP]);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
_mesa_problem(ctx,
|
||||
"Unsupported format (%s)",
|
||||
_mesa_lookup_enum_by_nr(dstFormat));
|
||||
break;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue