More texture format updates. Drivers now need only plug an appropriate
format into texImage->TexFormat, the rest is handled by core Mesa.
This commit is contained in:
parent
53933fe9db
commit
38f28665bf
|
@ -1,4 +1,4 @@
|
|||
/* $Id: mtypes.h,v 1.33 2001/03/27 19:18:02 gareth Exp $ */
|
||||
/* $Id: mtypes.h,v 1.34 2001/03/28 20:40:51 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -777,10 +777,10 @@ typedef void (*FetchTexelFunc)( const struct gl_texture_image *texImage,
|
|||
|
||||
/* Texture format record */
|
||||
struct gl_texture_format {
|
||||
GLint IntFormat; /* One of the MESA_FORMAT_* values */
|
||||
GLint MesaFormat; /* One of the MESA_FORMAT_* values */
|
||||
|
||||
GLenum BaseFormat;
|
||||
GLenum BaseType;
|
||||
GLenum IntFormat; /* Internal format as GL enum value */
|
||||
GLenum Type; /* Internal type as GL enum value */
|
||||
|
||||
GLubyte RedBits; /* Bits per texel component */
|
||||
GLubyte GreenBits;
|
||||
|
@ -804,8 +804,6 @@ struct gl_texture_image {
|
|||
* GL_INTENSITY, GL_RGB, GL_RGBA,
|
||||
* GL_COLOR_INDEX or GL_DEPTH_COMPONENT only.
|
||||
*/
|
||||
GLenum Type; /* Texel type: GL_UNSIGNED_BYTE, etc. */
|
||||
GLenum IntFormat; /* Internal format as given by the user */
|
||||
GLuint Border; /* 0 or 1 */
|
||||
GLuint Width; /* = 2^WidthLog2 + 2*Border */
|
||||
GLuint Height; /* = 2^HeightLog2 + 2*Border */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texformat.c,v 1.5 2001/03/27 20:26:37 brianp Exp $ */
|
||||
/* $Id: texformat.c,v 1.6 2001/03/28 20:40:51 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -73,9 +73,9 @@ static void fetch_null_texel( const struct gl_texture_image *texImage,
|
|||
*/
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_rgba = {
|
||||
MESA_FORMAT_RGBA, /* IntFormat */
|
||||
GL_RGBA, /* BaseFormat */
|
||||
CHAN_TYPE, /* BaseType */
|
||||
MESA_FORMAT_RGBA, /* MesaFormat */
|
||||
GL_RGBA, /* IntFormat */
|
||||
CHAN_TYPE, /* Type */
|
||||
CHAN_BITS, /* RedBits */
|
||||
CHAN_BITS, /* GreenBits */
|
||||
CHAN_BITS, /* BlueBits */
|
||||
|
@ -91,9 +91,9 @@ const struct gl_texture_format _mesa_texformat_rgba = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_rgb = {
|
||||
MESA_FORMAT_RGB, /* IntFormat */
|
||||
GL_RGB, /* BaseFormat */
|
||||
CHAN_TYPE, /* BaseType */
|
||||
MESA_FORMAT_RGB, /* MesaFormat */
|
||||
GL_RGB, /* IntFormat */
|
||||
CHAN_TYPE, /* Type */
|
||||
CHAN_BITS, /* RedBits */
|
||||
CHAN_BITS, /* GreenBits */
|
||||
CHAN_BITS, /* BlueBits */
|
||||
|
@ -109,9 +109,9 @@ const struct gl_texture_format _mesa_texformat_rgb = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_alpha = {
|
||||
MESA_FORMAT_ALPHA, /* IntFormat */
|
||||
GL_ALPHA, /* BaseFormat */
|
||||
CHAN_TYPE, /* BaseType */
|
||||
MESA_FORMAT_ALPHA, /* MesaFormat */
|
||||
GL_ALPHA, /* IntFormat */
|
||||
CHAN_TYPE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -127,9 +127,9 @@ const struct gl_texture_format _mesa_texformat_alpha = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_luminance = {
|
||||
MESA_FORMAT_LUMINANCE, /* IntFormat */
|
||||
GL_LUMINANCE, /* BaseFormat */
|
||||
CHAN_TYPE, /* BaseType */
|
||||
MESA_FORMAT_LUMINANCE, /* MesaFormat */
|
||||
GL_LUMINANCE, /* IntFormat */
|
||||
CHAN_TYPE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -145,9 +145,9 @@ const struct gl_texture_format _mesa_texformat_luminance = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_luminance_alpha = {
|
||||
MESA_FORMAT_LUMINANCE_ALPHA, /* IntFormat */
|
||||
GL_LUMINANCE_ALPHA, /* BaseFormat */
|
||||
CHAN_TYPE, /* BaseType */
|
||||
MESA_FORMAT_LUMINANCE_ALPHA, /* MesaFormat */
|
||||
GL_LUMINANCE_ALPHA, /* IntFormat */
|
||||
CHAN_TYPE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -163,9 +163,9 @@ const struct gl_texture_format _mesa_texformat_luminance_alpha = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_intensity = {
|
||||
MESA_FORMAT_INTENSITY, /* IntFormat */
|
||||
GL_INTENSITY, /* BaseFormat */
|
||||
CHAN_TYPE, /* BaseType */
|
||||
MESA_FORMAT_INTENSITY, /* MesaFormat */
|
||||
GL_INTENSITY, /* IntFormat */
|
||||
CHAN_TYPE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -181,9 +181,9 @@ const struct gl_texture_format _mesa_texformat_intensity = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_color_index = {
|
||||
MESA_FORMAT_COLOR_INDEX, /* IntFormat */
|
||||
GL_COLOR_INDEX, /* BaseFormat */
|
||||
CHAN_TYPE, /* BaseType */
|
||||
MESA_FORMAT_COLOR_INDEX, /* MesaFormat */
|
||||
GL_COLOR_INDEX, /* IntFormat */
|
||||
CHAN_TYPE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -199,9 +199,9 @@ const struct gl_texture_format _mesa_texformat_color_index = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_depth_component = {
|
||||
MESA_FORMAT_DEPTH_COMPONENT, /* IntFormat */
|
||||
GL_DEPTH_COMPONENT, /* BaseFormat */
|
||||
GL_FLOAT, /* BaseType */
|
||||
MESA_FORMAT_DEPTH_COMPONENT, /* MesaFormat */
|
||||
GL_DEPTH_COMPONENT, /* IntFormat */
|
||||
GL_FLOAT, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -222,9 +222,9 @@ const struct gl_texture_format _mesa_texformat_depth_component = {
|
|||
*/
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_rgba8888 = {
|
||||
MESA_FORMAT_RGBA8888, /* IntFormat */
|
||||
GL_RGBA, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* BaseType */
|
||||
MESA_FORMAT_RGBA8888, /* MesaFormat */
|
||||
GL_RGBA, /* IntFormat */
|
||||
GL_UNSIGNED_INT_8_8_8_8, /* Type */
|
||||
8, /* RedBits */
|
||||
8, /* GreenBits */
|
||||
8, /* BlueBits */
|
||||
|
@ -240,9 +240,9 @@ const struct gl_texture_format _mesa_texformat_rgba8888 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_argb8888 = {
|
||||
MESA_FORMAT_ARGB8888, /* IntFormat */
|
||||
GL_RGBA, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* FIXME: ??? */ /* BaseType */
|
||||
MESA_FORMAT_ARGB8888, /* MesaFormat */
|
||||
GL_BGRA, /* IntFormat */
|
||||
GL_UNSIGNED_INT_8_8_8_8_REV, /* Type */
|
||||
8, /* RedBits */
|
||||
8, /* GreenBits */
|
||||
8, /* BlueBits */
|
||||
|
@ -258,9 +258,9 @@ const struct gl_texture_format _mesa_texformat_argb8888 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_rgb888 = {
|
||||
MESA_FORMAT_RGB888, /* IntFormat */
|
||||
GL_RGB, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* BaseType */
|
||||
MESA_FORMAT_RGB888, /* MesaFormat */
|
||||
GL_BGR, /* IntFormat */
|
||||
GL_UNSIGNED_BYTE, /* Type */
|
||||
8, /* RedBits */
|
||||
8, /* GreenBits */
|
||||
8, /* BlueBits */
|
||||
|
@ -276,9 +276,9 @@ const struct gl_texture_format _mesa_texformat_rgb888 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_rgb565 = {
|
||||
MESA_FORMAT_RGB565, /* IntFormat */
|
||||
GL_RGB, /* BaseFormat */
|
||||
GL_UNSIGNED_SHORT_5_6_5, /* BaseType */
|
||||
MESA_FORMAT_RGB565, /* MesaFormat */
|
||||
GL_RGB, /* IntFormat */
|
||||
GL_UNSIGNED_SHORT_5_6_5, /* Type */
|
||||
5, /* RedBits */
|
||||
6, /* GreenBits */
|
||||
5, /* BlueBits */
|
||||
|
@ -294,9 +294,9 @@ const struct gl_texture_format _mesa_texformat_rgb565 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_argb4444 = {
|
||||
MESA_FORMAT_ARGB4444, /* IntFormat */
|
||||
GL_RGBA, /* BaseFormat */
|
||||
GL_UNSIGNED_SHORT_4_4_4_4_REV, /* BaseType */
|
||||
MESA_FORMAT_ARGB4444, /* MesaFormat */
|
||||
GL_BGRA, /* IntFormat */
|
||||
GL_UNSIGNED_SHORT_4_4_4_4_REV, /* Type */
|
||||
4, /* RedBits */
|
||||
4, /* GreenBits */
|
||||
4, /* BlueBits */
|
||||
|
@ -312,9 +312,9 @@ const struct gl_texture_format _mesa_texformat_argb4444 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_argb1555 = {
|
||||
MESA_FORMAT_ARGB1555, /* IntFormat */
|
||||
GL_RGBA, /* BaseFormat */
|
||||
GL_UNSIGNED_SHORT_1_5_5_5_REV, /* BaseType */
|
||||
MESA_FORMAT_ARGB1555, /* MesaFormat */
|
||||
GL_BGRA, /* IntFormat */
|
||||
GL_UNSIGNED_SHORT_1_5_5_5_REV, /* Type */
|
||||
5, /* RedBits */
|
||||
5, /* GreenBits */
|
||||
5, /* BlueBits */
|
||||
|
@ -330,9 +330,9 @@ const struct gl_texture_format _mesa_texformat_argb1555 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_al88 = {
|
||||
MESA_FORMAT_AL88, /* IntFormat */
|
||||
GL_LUMINANCE_ALPHA, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* BaseType */
|
||||
MESA_FORMAT_AL88, /* MesaFormat */
|
||||
GL_LUMINANCE_ALPHA, /* IntFormat */
|
||||
GL_UNSIGNED_BYTE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -348,9 +348,9 @@ const struct gl_texture_format _mesa_texformat_al88 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_rgb332 = {
|
||||
MESA_FORMAT_RGB332, /* IntFormat */
|
||||
GL_RGB, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE_3_3_2, /* BaseType */
|
||||
MESA_FORMAT_RGB332, /* MesaFormat */
|
||||
GL_RGB, /* IntFormat */
|
||||
GL_UNSIGNED_BYTE_3_3_2, /* Type */
|
||||
3, /* RedBits */
|
||||
3, /* GreenBits */
|
||||
2, /* BlueBits */
|
||||
|
@ -366,9 +366,9 @@ const struct gl_texture_format _mesa_texformat_rgb332 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_a8 = {
|
||||
MESA_FORMAT_A8, /* IntFormat */
|
||||
GL_ALPHA, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* BaseType */
|
||||
MESA_FORMAT_A8, /* MesaFormat */
|
||||
GL_ALPHA, /* IntFormat */
|
||||
GL_UNSIGNED_BYTE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -384,9 +384,9 @@ const struct gl_texture_format _mesa_texformat_a8 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_l8 = {
|
||||
MESA_FORMAT_L8, /* IntFormat */
|
||||
GL_LUMINANCE, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* BaseType */
|
||||
MESA_FORMAT_L8, /* MesaFormat */
|
||||
GL_LUMINANCE, /* IntFormat */
|
||||
GL_UNSIGNED_BYTE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -402,9 +402,9 @@ const struct gl_texture_format _mesa_texformat_l8 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_i8 = {
|
||||
MESA_FORMAT_I8, /* IntFormat */
|
||||
GL_INTENSITY, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* BaseType */
|
||||
MESA_FORMAT_I8, /* MesaFormat */
|
||||
GL_INTENSITY, /* IntFormat */
|
||||
GL_UNSIGNED_BYTE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -420,9 +420,9 @@ const struct gl_texture_format _mesa_texformat_i8 = {
|
|||
};
|
||||
|
||||
const struct gl_texture_format _mesa_texformat_ci8 = {
|
||||
MESA_FORMAT_CI8, /* IntFormat */
|
||||
GL_COLOR_INDEX, /* BaseFormat */
|
||||
GL_UNSIGNED_BYTE, /* BaseType */
|
||||
MESA_FORMAT_CI8, /* MesaFormat */
|
||||
GL_COLOR_INDEX, /* IntFormat */
|
||||
GL_UNSIGNED_BYTE, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -443,9 +443,9 @@ const struct gl_texture_format _mesa_texformat_ci8 = {
|
|||
*/
|
||||
|
||||
const struct gl_texture_format _mesa_null_texformat = {
|
||||
-1, /* IntFormat */
|
||||
0, /* BaseFormat */
|
||||
0, /* BaseType */
|
||||
-1, /* MesaFormat */
|
||||
0, /* IntFormat */
|
||||
0, /* Type */
|
||||
0, /* RedBits */
|
||||
0, /* GreenBits */
|
||||
0, /* BlueBits */
|
||||
|
@ -472,8 +472,6 @@ void _mesa_init_tex_format( GLcontext *ctx, GLenum internalFormat,
|
|||
{
|
||||
const struct gl_texture_format *texFormat;
|
||||
|
||||
texImage->IntFormat = internalFormat;
|
||||
|
||||
/* Ask the driver for the base format, if it doesn't know, it will
|
||||
* return -1;
|
||||
*/
|
||||
|
@ -583,10 +581,5 @@ void _mesa_init_tex_format( GLcontext *ctx, GLenum internalFormat,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Initialize the base format and type.
|
||||
*/
|
||||
texImage->Format = texFormat->BaseFormat;
|
||||
texImage->Type = texFormat->BaseType;
|
||||
|
||||
texImage->TexFormat = texFormat;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: teximage.c,v 1.87 2001/03/26 20:02:38 brianp Exp $ */
|
||||
/* $Id: teximage.c,v 1.88 2001/03/28 20:40:51 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -108,7 +108,7 @@ static void PrintTexture(const struct gl_texture_image *img)
|
|||
/*
|
||||
* Compute log base 2 of n.
|
||||
* If n isn't an exact power of two return -1.
|
||||
* If n<0 return -1.
|
||||
* If n < 0 return -1.
|
||||
*/
|
||||
static int
|
||||
logbase2( int n )
|
||||
|
@ -116,7 +116,7 @@ logbase2( int n )
|
|||
GLint i = 1;
|
||||
GLint log2 = 0;
|
||||
|
||||
if (n<0) {
|
||||
if (n < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -143,10 +143,10 @@ logbase2( int n )
|
|||
GLint
|
||||
_mesa_base_tex_format( GLcontext *ctx, GLint format )
|
||||
{
|
||||
/*
|
||||
* Ask the driver for the base format, if it doesn't
|
||||
* know, it will return -1;
|
||||
*/
|
||||
/*
|
||||
* Ask the driver for the base format, if it doesn't
|
||||
* know, it will return -1;
|
||||
*/
|
||||
if (ctx->Driver.BaseCompressedTexFormat) {
|
||||
GLint ifmt = (*ctx->Driver.BaseCompressedTexFormat)(ctx, format);
|
||||
if (ifmt >= 0) {
|
||||
|
@ -558,8 +558,6 @@ clear_teximage_fields(struct gl_texture_image *img)
|
|||
{
|
||||
ASSERT(img);
|
||||
img->Format = 0;
|
||||
img->Type = 0;
|
||||
img->IntFormat = 0;
|
||||
img->Border = 0;
|
||||
img->Width = 0;
|
||||
img->Height = 0;
|
||||
|
@ -588,8 +586,7 @@ init_teximage_fields(GLcontext *ctx,
|
|||
GLint border, GLenum internalFormat)
|
||||
{
|
||||
ASSERT(img);
|
||||
|
||||
img->IntFormat = internalFormat;
|
||||
img->Format = _mesa_base_tex_format( ctx, internalFormat );
|
||||
img->Border = border;
|
||||
img->Width = width;
|
||||
img->Height = height;
|
||||
|
@ -747,18 +744,17 @@ texture_error_check( GLcontext *ctx, GLenum target,
|
|||
return GL_TRUE;
|
||||
}
|
||||
|
||||
if (!is_compressed_format(ctx, internalFormat)) {
|
||||
if (!_mesa_is_legal_format_and_type( format, type )) {
|
||||
/* Yes, generate GL_INVALID_OPERATION, not GL_INVALID_ENUM, if there
|
||||
* is a type/format mismatch. See 1.2 spec page 94, sec 3.6.4.
|
||||
*/
|
||||
if (!isProxy) {
|
||||
char message[100];
|
||||
sprintf(message, "glTexImage%dD(format or type)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, message);
|
||||
}
|
||||
return GL_TRUE;
|
||||
if (!is_compressed_format( ctx, internalFormat ) &&
|
||||
!_mesa_is_legal_format_and_type( format, type )) {
|
||||
/* Yes, generate GL_INVALID_OPERATION, not GL_INVALID_ENUM, if there
|
||||
* is a type/format mismatch. See 1.2 spec page 94, sec 3.6.4.
|
||||
*/
|
||||
if (!isProxy) {
|
||||
char message[100];
|
||||
sprintf(message, "glTexImage%dD(format or type)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_OPERATION, message);
|
||||
}
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* if we get here, the parameters are OK */
|
||||
|
@ -870,19 +866,18 @@ subtexture_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
_mesa_error(ctx, GL_INVALID_VALUE, "glTexSubImage3D(zoffset)");
|
||||
return GL_TRUE;
|
||||
}
|
||||
if (zoffset + depth > (GLint) (destTex->Depth+destTex->Border)) {
|
||||
if (zoffset + depth > (GLint) (destTex->Depth + destTex->Border)) {
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, "glTexSubImage3D(zoffset+depth)");
|
||||
return GL_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_compressed_format(ctx, destTex->IntFormat)) {
|
||||
if (!_mesa_is_legal_format_and_type(format, type)) {
|
||||
char message[100];
|
||||
sprintf(message, "glTexSubImage%dD(format or type)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, message);
|
||||
return GL_TRUE;
|
||||
}
|
||||
if (!is_compressed_format(ctx, destTex->TexFormat->IntFormat) &&
|
||||
!_mesa_is_legal_format_and_type(format, type)) {
|
||||
char message[100];
|
||||
sprintf(message, "glTexSubImage%dD(format or type)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_ENUM, message);
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
return GL_FALSE;
|
||||
|
@ -923,7 +918,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
}
|
||||
|
||||
/* Border */
|
||||
if (border!=0 && border!=1) {
|
||||
if (border != 0 && border != 1) {
|
||||
char message[100];
|
||||
sprintf(message, "glCopyTexImage%dD(border)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, message);
|
||||
|
@ -960,7 +955,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
}
|
||||
|
||||
/* Level */
|
||||
if (level<0 || level>=ctx->Const.MaxTextureLevels) {
|
||||
if (level < 0 || level>=ctx->Const.MaxTextureLevels) {
|
||||
char message[100];
|
||||
sprintf(message, "glCopyTexImage%dD(level=%d)", dimensions, level);
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, message);
|
||||
|
@ -1050,7 +1045,7 @@ copytexsubimage_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
_mesa_error(ctx, GL_INVALID_VALUE, message);
|
||||
return GL_TRUE;
|
||||
}
|
||||
if (xoffset+width > (GLint) (teximage->Width+teximage->Border)) {
|
||||
if (xoffset + width > (GLint) (teximage->Width + teximage->Border)) {
|
||||
char message[100];
|
||||
sprintf(message, "glCopyTexSubImage%dD(xoffset+width)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, message);
|
||||
|
@ -1064,7 +1059,7 @@ copytexsubimage_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
return GL_TRUE;
|
||||
}
|
||||
/* NOTE: we're adding the border here, not subtracting! */
|
||||
if (yoffset+height > (GLint) (teximage->Height+teximage->Border)) {
|
||||
if (yoffset + height > (GLint) (teximage->Height + teximage->Border)) {
|
||||
char message[100];
|
||||
sprintf(message, "glCopyTexSubImage%dD(yoffset+height)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, message);
|
||||
|
@ -1079,7 +1074,7 @@ copytexsubimage_error_check( GLcontext *ctx, GLuint dimensions,
|
|||
_mesa_error(ctx, GL_INVALID_VALUE, message);
|
||||
return GL_TRUE;
|
||||
}
|
||||
if (zoffset > (GLint) (teximage->Depth+teximage->Border)) {
|
||||
if (zoffset > (GLint) (teximage->Depth + teximage->Border)) {
|
||||
char message[100];
|
||||
sprintf(message, "glCopyTexSubImage%dD(zoffset+depth)", dimensions);
|
||||
_mesa_error(ctx, GL_INVALID_VALUE, message);
|
||||
|
@ -1349,13 +1344,8 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat,
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* one of these has to be non-zero! */
|
||||
ASSERT(texImage->RedBits || texImage->IndexBits || texImage->AlphaBits ||
|
||||
texImage->LuminanceBits || texImage->IntensityBits ||
|
||||
texImage->DepthBits);
|
||||
ASSERT(texImage->FetchTexel);
|
||||
#endif
|
||||
ASSERT(texImage->TexFormat);
|
||||
texImage->FetchTexel = texImage->TexFormat->FetchTexel1D;
|
||||
|
||||
/* state update */
|
||||
texObj->Complete = GL_FALSE;
|
||||
|
@ -1404,7 +1394,7 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
|
|||
|
||||
if (is_color_format(internalFormat)) {
|
||||
_mesa_adjust_image_for_convolution(ctx, 2, &postConvWidth,
|
||||
&postConvHeight);
|
||||
&postConvHeight);
|
||||
}
|
||||
|
||||
if (target == GL_TEXTURE_2D ||
|
||||
|
@ -1463,13 +1453,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* one of these has to be non-zero! */
|
||||
ASSERT(texImage->RedBits || texImage->IndexBits || texImage->AlphaBits ||
|
||||
texImage->LuminanceBits || texImage->IntensityBits ||
|
||||
texImage->DepthBits);
|
||||
ASSERT(texImage->FetchTexel);
|
||||
#endif
|
||||
ASSERT(texImage->TexFormat);
|
||||
texImage->FetchTexel = texImage->TexFormat->FetchTexel2D;
|
||||
|
||||
/* state update */
|
||||
texObj->Complete = GL_FALSE;
|
||||
|
@ -1478,8 +1463,8 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat,
|
|||
else if (target == GL_PROXY_TEXTURE_2D) {
|
||||
/* Proxy texture: check for errors and update proxy state */
|
||||
GLenum error = texture_error_check(ctx, target, level, internalFormat,
|
||||
format, type, 2,
|
||||
postConvWidth, postConvHeight, 1, border);
|
||||
format, type, 2,
|
||||
postConvWidth, postConvHeight, 1, border);
|
||||
if (!error) {
|
||||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_image *texImage;
|
||||
|
@ -1571,13 +1556,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLenum internalFormat,
|
|||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* one of these has to be non-zero! */
|
||||
ASSERT(texImage->RedBits || texImage->IndexBits || texImage->AlphaBits ||
|
||||
texImage->LuminanceBits || texImage->IntensityBits ||
|
||||
texImage->DepthBits);
|
||||
ASSERT(texImage->FetchTexel);
|
||||
#endif
|
||||
ASSERT(texImage->TexFormat);
|
||||
texImage->FetchTexel = texImage->TexFormat->FetchTexel3D;
|
||||
|
||||
/* state update */
|
||||
texObj->Complete = GL_FALSE;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texstate.c,v 1.39 2001/03/26 19:42:40 brianp Exp $ */
|
||||
/* $Id: texstate.c,v 1.40 2001/03/28 20:40:51 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -956,8 +956,8 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
|
|||
case GL_TEXTURE_DEPTH:
|
||||
*params = img->Depth;
|
||||
return;
|
||||
case GL_TEXTURE_COMPONENTS:
|
||||
*params = img->IntFormat;
|
||||
case GL_TEXTURE_INTERNAL_FORMAT:
|
||||
*params = img->TexFormat->IntFormat;
|
||||
return;
|
||||
case GL_TEXTURE_BORDER:
|
||||
*params = img->Border;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texstore.c,v 1.20 2001/03/27 20:26:10 brianp Exp $ */
|
||||
/* $Id: texstore.c,v 1.21 2001/03/28 20:40:51 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -406,7 +406,6 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||
|
||||
/* setup the teximage struct's fields */
|
||||
_mesa_init_tex_format( ctx, internalFormat, texImage );
|
||||
texImage->FetchTexel = texImage->TexFormat->FetchTexel1D;
|
||||
|
||||
texelBytes = texImage->TexFormat->TexelBytes;
|
||||
|
||||
|
@ -450,7 +449,6 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||
|
||||
/* setup the teximage struct's fields */
|
||||
_mesa_init_tex_format( ctx, internalFormat, texImage );
|
||||
texImage->FetchTexel = texImage->TexFormat->FetchTexel2D;
|
||||
|
||||
texelBytes = texImage->TexFormat->TexelBytes;
|
||||
|
||||
|
@ -490,7 +488,6 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||
|
||||
/* setup the teximage struct's fields */
|
||||
_mesa_init_tex_format( ctx, internalFormat, texImage );
|
||||
texImage->FetchTexel = texImage->TexFormat->FetchTexel3D;
|
||||
|
||||
texelBytes = texImage->TexFormat->TexelBytes;
|
||||
|
||||
|
@ -542,12 +539,10 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage)
|
||||
{
|
||||
const GLint components = components_in_intformat(texImage->IntFormat);
|
||||
const GLint compSize = _mesa_sizeof_type(texImage->Type);
|
||||
_mesa_transfer_teximage(ctx, 2, texImage->Format, texImage->Data,
|
||||
width, height, 1, /* src size */
|
||||
xoffset, yoffset, 0, /* dest offsets */
|
||||
texImage->Width * components * compSize,
|
||||
texImage->Width * texImage->TexFormat->TexelBytes,
|
||||
0, /* dstImageStride */
|
||||
format, type, pixels, packing);
|
||||
}
|
||||
|
@ -565,14 +560,12 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage)
|
||||
{
|
||||
const GLint components = components_in_intformat(texImage->IntFormat);
|
||||
const GLint compSize = _mesa_sizeof_type(texImage->Type);
|
||||
const GLint texelBytes = texImage->TexFormat->TexelBytes;
|
||||
_mesa_transfer_teximage(ctx, 3, texImage->Format, texImage->Data,
|
||||
width, height, depth, /* src size */
|
||||
xoffset, yoffset, xoffset, /* dest offsets */
|
||||
texImage->Width * components * compSize,
|
||||
texImage->Width * texImage->Height * components
|
||||
* compSize,
|
||||
texImage->Width * texelBytes,
|
||||
texImage->Width * texImage->Height * texelBytes,
|
||||
format, type, pixels, packing);
|
||||
}
|
||||
|
||||
|
@ -648,7 +641,6 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
struct gl_texture_unit *texUnit;
|
||||
struct gl_texture_object *texObj;
|
||||
struct gl_texture_image *texImage;
|
||||
const struct gl_texture_format *texFormat;
|
||||
|
||||
(void) format;
|
||||
(void) type;
|
||||
|
@ -665,9 +657,5 @@ _mesa_test_proxy_teximage(GLcontext *ctx, GLenum target, GLint level,
|
|||
/* setup the teximage struct's fields */
|
||||
_mesa_init_tex_format( ctx, internalFormat, texImage );
|
||||
|
||||
texFormat = texImage->TexFormat;
|
||||
texImage->Format = texFormat->BaseFormat;
|
||||
texImage->Type = texFormat->BaseType;
|
||||
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texutil.c,v 1.20 2001/03/27 20:32:24 brianp Exp $ */
|
||||
/* $Id: texutil.c,v 1.21 2001/03/28 20:40:51 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -75,7 +75,7 @@ typedef GLboolean (*convert_func)( struct gl_texture_convert *convert );
|
|||
#define DST_TEXELS_PER_DWORD 1
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
|
||||
dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
|
||||
|
||||
#define CONVERT_DIRECT
|
||||
|
||||
|
@ -87,7 +87,7 @@ typedef GLboolean (*convert_func)( struct gl_texture_convert *convert );
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_8888( src[0], src[1], src[2], src[3] )
|
||||
dst = PACK_COLOR_8888( src[0], src[1], src[2], src[3] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
|
||||
|
||||
|
@ -99,7 +99,7 @@ typedef GLboolean (*convert_func)( struct gl_texture_convert *convert );
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_8888( src[0], src[1], src[2], 0xff )
|
||||
dst = PACK_COLOR_8888( src[0], src[1], src[2], 0xff )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
|
||||
|
||||
|
@ -154,7 +154,7 @@ CONVERT_RGBA8888( texsubimage3d )
|
|||
#define DST_TEXELS_PER_DWORD 1
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
|
||||
dst = PACK_COLOR_8888( src[3], src[2], src[1], src[0] )
|
||||
|
||||
#define CONVERT_DIRECT
|
||||
|
||||
|
@ -166,7 +166,7 @@ CONVERT_RGBA8888( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_8888( src[3], src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_8888( src[3], src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
|
||||
|
||||
|
@ -178,7 +178,7 @@ CONVERT_RGBA8888( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_8888( 0xff, src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_8888( 0xff, src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) CONVERT_TEXEL( dst, src )
|
||||
|
||||
|
@ -254,7 +254,7 @@ convert_texsubimage3d_rgb888( struct gl_texture_convert *convert )
|
|||
#define DST_TEXELS_PER_DWORD 2
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_565( src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_565( src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_DIRECT
|
||||
|
||||
|
@ -266,11 +266,11 @@ convert_texsubimage3d_rgb888( struct gl_texture_convert *convert )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_565( src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_565( src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) | \
|
||||
(PACK_COLOR_565( src[3], src[4], src[5] ) << 16))
|
||||
dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) | \
|
||||
(PACK_COLOR_565( src[3], src[4], src[5] ) << 16))
|
||||
|
||||
#define SRC_TEXEL_BYTES 3
|
||||
|
||||
|
@ -280,11 +280,11 @@ convert_texsubimage3d_rgb888( struct gl_texture_convert *convert )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_565( src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_565( src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) | \
|
||||
(PACK_COLOR_565( src[4], src[5], src[6] ) << 16))
|
||||
dst = ((PACK_COLOR_565( src[0], src[1], src[2] )) | \
|
||||
(PACK_COLOR_565( src[4], src[5], src[6] ) << 16))
|
||||
|
||||
#define SRC_TEXEL_BYTES 4
|
||||
|
||||
|
@ -336,7 +336,7 @@ CONVERT_RGB565( texsubimage3d )
|
|||
#define DST_TEXELS_PER_DWORD 2
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_DIRECT
|
||||
|
||||
|
@ -348,15 +348,15 @@ CONVERT_RGB565( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_4444( src[3], src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
dst = ((PACK_COLOR_4444( src[3], src[0], src[1], src[2] )) |\
|
||||
(PACK_COLOR_4444( src[7], src[4], src[5], src[6] ) << 16))
|
||||
dst = ((PACK_COLOR_4444( src[3], src[0], src[1], src[2] )) | \
|
||||
(PACK_COLOR_4444( src[7], src[4], src[5], src[6] ) << 16))
|
||||
|
||||
#define SRC_TEXEL_BYTES 4
|
||||
|
||||
#define TAG(x) x##_rgba8888_to_argb4444
|
||||
#define TAG(x) x##_abgr8888_to_argb4444
|
||||
#include "texutil_tmp.h"
|
||||
|
||||
|
||||
|
@ -375,7 +375,7 @@ convert_##name##_argb4444( struct gl_texture_convert *convert ) \
|
|||
else if ( convert->format == GL_RGBA && \
|
||||
convert->type == GL_UNSIGNED_BYTE ) \
|
||||
{ \
|
||||
tab = name##_tab_rgba8888_to_argb4444; \
|
||||
tab = name##_tab_abgr8888_to_argb4444; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
|
@ -399,7 +399,7 @@ CONVERT_ARGB4444( texsubimage3d )
|
|||
#define DST_TEXELS_PER_DWORD 2
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_DIRECT
|
||||
|
||||
|
@ -411,13 +411,13 @@ CONVERT_ARGB4444( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
{ const GLushort s = *(GLushort *)src; \
|
||||
dst = (s >> 1) | ((s & 1) << 15); }
|
||||
{ const GLushort s = *(GLushort *)src; \
|
||||
dst = (s >> 1) | ((s & 1) << 15); }
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
{ const GLuint s = *(GLuint *)src; \
|
||||
dst = (((s & 0xfffefffe) >> 1) | \
|
||||
((s & 0x00010001) << 15)); }
|
||||
{ const GLuint s = *(GLuint *)src; \
|
||||
dst = (((s & 0xfffefffe) >> 1) | \
|
||||
((s & 0x00010001) << 15)); }
|
||||
|
||||
#define SRC_TEXEL_BYTES 2
|
||||
|
||||
|
@ -427,15 +427,15 @@ CONVERT_ARGB4444( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
|
||||
dst = PACK_COLOR_1555( src[3], src[0], src[1], src[2] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
dst = ((PACK_COLOR_1555( src[3], src[0], src[1], src[2] )) |\
|
||||
(PACK_COLOR_1555( src[7], src[4], src[5], src[6] ) << 16))
|
||||
dst = ((PACK_COLOR_1555( src[3], src[0], src[1], src[2] )) | \
|
||||
(PACK_COLOR_1555( src[7], src[4], src[5], src[6] ) << 16))
|
||||
|
||||
#define SRC_TEXEL_BYTES 4
|
||||
|
||||
#define TAG(x) x##_rgba8888_to_argb1555
|
||||
#define TAG(x) x##_abgr8888_to_argb1555
|
||||
#include "texutil_tmp.h"
|
||||
|
||||
|
||||
|
@ -459,7 +459,7 @@ convert_##name##_argb1555( struct gl_texture_convert *convert ) \
|
|||
else if ( convert->format == GL_RGBA && \
|
||||
convert->type == GL_UNSIGNED_BYTE ) \
|
||||
{ \
|
||||
tab = name##_tab_rgba8888_to_argb1555; \
|
||||
tab = name##_tab_abgr8888_to_argb1555; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
|
@ -483,7 +483,7 @@ CONVERT_ARGB1555( texsubimage3d )
|
|||
#define DST_TEXELS_PER_DWORD 2
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_88( src[0], src[1] )
|
||||
dst = PACK_COLOR_88( src[0], src[1] )
|
||||
|
||||
#define CONVERT_DIRECT
|
||||
|
||||
|
@ -495,11 +495,11 @@ CONVERT_ARGB1555( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_88( src[0], 0x00 )
|
||||
dst = PACK_COLOR_88( src[0], 0x00 )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
dst = ((PACK_COLOR_88( src[0], 0x00 )) | \
|
||||
(PACK_COLOR_88( src[1], 0x00 ) << 16))
|
||||
dst = ((PACK_COLOR_88( src[0], 0x00 )) | \
|
||||
(PACK_COLOR_88( src[1], 0x00 ) << 16))
|
||||
|
||||
#define SRC_TEXEL_BYTES 1
|
||||
|
||||
|
@ -509,11 +509,11 @@ CONVERT_ARGB1555( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_88( 0xff, src[0] )
|
||||
dst = PACK_COLOR_88( 0xff, src[0] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
dst = ((PACK_COLOR_88( 0xff, src[0] )) | \
|
||||
(PACK_COLOR_88( 0xff, src[1] ) << 16))
|
||||
dst = ((PACK_COLOR_88( 0xff, src[0] )) | \
|
||||
(PACK_COLOR_88( 0xff, src[1] ) << 16))
|
||||
|
||||
#define SRC_TEXEL_BYTES 1
|
||||
|
||||
|
@ -523,11 +523,11 @@ CONVERT_ARGB1555( texsubimage3d )
|
|||
|
||||
|
||||
#define CONVERT_TEXEL( dst, src ) \
|
||||
dst = PACK_COLOR_88( src[3], src[0] )
|
||||
dst = PACK_COLOR_88( src[3], src[0] )
|
||||
|
||||
#define CONVERT_TEXEL_DWORD( dst, src ) \
|
||||
dst = ((PACK_COLOR_88( src[3], src[0] )) | \
|
||||
(PACK_COLOR_88( src[7], src[1] ) << 16))
|
||||
dst = ((PACK_COLOR_88( src[3], src[0] )) | \
|
||||
(PACK_COLOR_88( src[7], src[1] ) << 16))
|
||||
|
||||
#define SRC_TEXEL_BYTES 4
|
||||
|
||||
|
@ -743,13 +743,12 @@ _mesa_convert_texsubimage1d( GLint mesaFormat,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* 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.
|
||||
/* 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
|
||||
* 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.
|
||||
*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: s_texstore.c,v 1.1 2001/03/19 02:28:59 keithw Exp $ */
|
||||
/* $Id: s_texstore.c,v 1.2 2001/03/28 20:40:52 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -266,21 +266,8 @@ _swrast_copy_texsubimage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||
|
||||
ASSERT(ctx->Driver.TexImage1D);
|
||||
|
||||
if (is_depth_format(texImage->IntFormat)) {
|
||||
/* read depth image from framebuffer */
|
||||
GLfloat *image = read_depth_image(ctx, x, y, width, 1);
|
||||
if (!image) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage1D");
|
||||
return;
|
||||
}
|
||||
|
||||
/* call glTexImage1D to redefine the texture */
|
||||
(*ctx->Driver.TexSubImage1D)(ctx, target, level, xoffset, width,
|
||||
GL_DEPTH_COMPONENT, GL_FLOAT, image,
|
||||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
else {
|
||||
if (texImage->Format != GL_DEPTH_COMPONENT) {
|
||||
/* read RGBA image from framebuffer */
|
||||
GLchan *image = read_color_image(ctx, x, y, width, 1);
|
||||
if (!image) {
|
||||
_mesa_error( ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage1D" );
|
||||
|
@ -293,6 +280,20 @@ _swrast_copy_texsubimage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
else {
|
||||
/* read depth image from framebuffer */
|
||||
GLfloat *image = read_depth_image(ctx, x, y, width, 1);
|
||||
if (!image) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage1D");
|
||||
return;
|
||||
}
|
||||
|
||||
/* call glTexSubImage1D to redefine the texture */
|
||||
(*ctx->Driver.TexSubImage1D)(ctx, target, level, xoffset, width,
|
||||
GL_DEPTH_COMPONENT, GL_FLOAT, image,
|
||||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -317,22 +318,7 @@ _swrast_copy_texsubimage2d( GLcontext *ctx,
|
|||
|
||||
ASSERT(ctx->Driver.TexImage2D);
|
||||
|
||||
if (is_depth_format(texImage->IntFormat)) {
|
||||
/* read depth image from framebuffer */
|
||||
GLfloat *image = read_depth_image(ctx, x, y, width, height);
|
||||
if (!image) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage2D");
|
||||
return;
|
||||
}
|
||||
|
||||
/* call glTexImage1D to redefine the texture */
|
||||
(*ctx->Driver.TexSubImage2D)(ctx, target, level,
|
||||
xoffset, yoffset, width, height,
|
||||
GL_DEPTH_COMPONENT, GL_FLOAT, image,
|
||||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
else {
|
||||
if (texImage->Format != GL_DEPTH_COMPONENT) {
|
||||
/* read RGBA image from framebuffer */
|
||||
GLchan *image = read_color_image(ctx, x, y, width, height);
|
||||
if (!image) {
|
||||
|
@ -347,6 +333,21 @@ _swrast_copy_texsubimage2d( GLcontext *ctx,
|
|||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
else {
|
||||
/* read depth image from framebuffer */
|
||||
GLfloat *image = read_depth_image(ctx, x, y, width, height);
|
||||
if (!image) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage2D");
|
||||
return;
|
||||
}
|
||||
|
||||
/* call glTexImage1D to redefine the texture */
|
||||
(*ctx->Driver.TexSubImage2D)(ctx, target, level,
|
||||
xoffset, yoffset, width, height,
|
||||
GL_DEPTH_COMPONENT, GL_FLOAT, image,
|
||||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -371,22 +372,7 @@ _swrast_copy_texsubimage3d( GLcontext *ctx,
|
|||
|
||||
ASSERT(ctx->Driver.TexImage3D);
|
||||
|
||||
if (is_depth_format(texImage->IntFormat)) {
|
||||
/* read depth image from framebuffer */
|
||||
GLfloat *image = read_depth_image(ctx, x, y, width, height);
|
||||
if (!image) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage3D");
|
||||
return;
|
||||
}
|
||||
|
||||
/* call glTexImage1D to redefine the texture */
|
||||
(*ctx->Driver.TexSubImage3D)(ctx, target, level,
|
||||
xoffset, yoffset, zoffset, width, height, 1,
|
||||
GL_DEPTH_COMPONENT, GL_FLOAT, image,
|
||||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
else {
|
||||
if (texImage->Format != GL_DEPTH_COMPONENT) {
|
||||
/* read RGBA image from framebuffer */
|
||||
GLchan *image = read_color_image(ctx, x, y, width, height);
|
||||
if (!image) {
|
||||
|
@ -401,5 +387,19 @@ _swrast_copy_texsubimage3d( GLcontext *ctx,
|
|||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
}
|
||||
else {
|
||||
/* read depth image from framebuffer */
|
||||
GLfloat *image = read_depth_image(ctx, x, y, width, height);
|
||||
if (!image) {
|
||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexSubImage3D");
|
||||
return;
|
||||
}
|
||||
|
||||
/* call glTexImage1D to redefine the texture */
|
||||
(*ctx->Driver.TexSubImage3D)(ctx, target, level,
|
||||
xoffset, yoffset, zoffset, width, height, 1,
|
||||
GL_DEPTH_COMPONENT, GL_FLOAT, image,
|
||||
&_mesa_native_packing, texObj, texImage);
|
||||
FREE(image);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: s_texture.c,v 1.20 2001/03/26 19:42:40 brianp Exp $ */
|
||||
/* $Id: s_texture.c,v 1.21 2001/03/28 20:40:52 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -31,6 +31,7 @@
|
|||
#include "macros.h"
|
||||
#include "mmath.h"
|
||||
#include "mem.h"
|
||||
#include "texformat.h"
|
||||
#include "teximage.h"
|
||||
|
||||
#include "s_context.h"
|
||||
|
@ -1671,15 +1672,13 @@ _swrast_choose_texture_sample_func( GLcontext *ctx, GLuint texUnit,
|
|||
if (t->WrapS == GL_REPEAT &&
|
||||
t->WrapT == GL_REPEAT &&
|
||||
t->Image[baseLevel]->Border == 0 &&
|
||||
t->Image[baseLevel]->Format == GL_RGB &&
|
||||
t->Image[baseLevel]->Type == CHAN_TYPE) {
|
||||
t->Image[baseLevel]->TexFormat->MesaFormat == MESA_FORMAT_RGB) {
|
||||
swrast->TextureSample[texUnit] = opt_sample_rgb_2d;
|
||||
}
|
||||
else if (t->WrapS == GL_REPEAT &&
|
||||
t->WrapT == GL_REPEAT &&
|
||||
t->Image[baseLevel]->Border == 0 &&
|
||||
t->Image[baseLevel]->Format==GL_RGBA &&
|
||||
t->Image[baseLevel]->Type == CHAN_TYPE) {
|
||||
t->Image[baseLevel]->TexFormat->MesaFormat == MESA_FORMAT_RGBA) {
|
||||
swrast->TextureSample[texUnit] = opt_sample_rgba_2d;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: s_triangle.c,v 1.21 2001/03/22 04:54:08 brianp Exp $ */
|
||||
/* $Id: s_triangle.c,v 1.22 2001/03/28 20:40:52 gareth Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
@ -28,7 +28,7 @@
|
|||
/*
|
||||
* When the device driver doesn't implement triangle rasterization it
|
||||
* can hook in _swrast_Triangle, which eventually calls one of these
|
||||
* functions to draw triangles.
|
||||
* functions to draw triangles.
|
||||
*/
|
||||
|
||||
#include "glheader.h"
|
||||
|
@ -2284,7 +2284,7 @@ _swrast_choose_triangle( GLcontext *ctx )
|
|||
SWcontext *swrast = SWRAST_CONTEXT(ctx);
|
||||
const GLboolean rgbmode = ctx->Visual.rgbMode;
|
||||
|
||||
if (ctx->Polygon.CullFlag &&
|
||||
if (ctx->Polygon.CullFlag &&
|
||||
ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK) {
|
||||
USE(nodraw_triangle);
|
||||
return;
|
||||
|
@ -2333,7 +2333,7 @@ _swrast_choose_triangle( GLcontext *ctx )
|
|||
&& texObj2D->WrapT==GL_REPEAT
|
||||
&& texImg->Border==0
|
||||
&& (format == GL_RGB || format == GL_RGBA)
|
||||
&& texImg->Type == CHAN_TYPE
|
||||
&& texImg->TexFormat->Type == CHAN_TYPE
|
||||
&& minFilter == magFilter
|
||||
&& ctx->Light.Model.ColorControl == GL_SINGLE_COLOR
|
||||
&& ctx->Texture.Unit[0].EnvMode != GL_COMBINE_EXT) {
|
||||
|
|
Loading…
Reference in New Issue