mesa: remove gl_texture_image::IsCompressed field
Use _mesa_is_format_compressed() instead.
This commit is contained in:
@@ -293,6 +293,8 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt,
|
|||||||
struct gl_texture_image *image,
|
struct gl_texture_image *image,
|
||||||
GLuint face, GLuint level)
|
GLuint face, GLuint level)
|
||||||
{
|
{
|
||||||
|
GLboolean isCompressed = _mesa_is_format_compressed(image->TexFormat);
|
||||||
|
|
||||||
/* Images with borders are never pulled into mipmap trees.
|
/* Images with borders are never pulled into mipmap trees.
|
||||||
*/
|
*/
|
||||||
if (image->Border ||
|
if (image->Border ||
|
||||||
@@ -302,10 +304,10 @@ intel_miptree_match_image(struct intel_mipmap_tree *mt,
|
|||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
if (image->InternalFormat != mt->internal_format ||
|
if (image->InternalFormat != mt->internal_format ||
|
||||||
image->IsCompressed != mt->compressed)
|
isCompressed != mt->compressed)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
if (!image->IsCompressed &&
|
if (!isCompressed &&
|
||||||
!mt->compressed &&
|
!mt->compressed &&
|
||||||
_mesa_get_format_bytes(image->TexFormat) != mt->cpp)
|
_mesa_get_format_bytes(image->TexFormat) != mt->cpp)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
@@ -125,7 +125,7 @@ guess_and_alloc_mipmap_tree(struct intel_context *intel,
|
|||||||
}
|
}
|
||||||
|
|
||||||
assert(!intelObj->mt);
|
assert(!intelObj->mt);
|
||||||
if (intelImage->base.IsCompressed)
|
if (_mesa_is_format_compressed(intelImage->base.TexFormat))
|
||||||
comp_byte = intel_compressed_num_bytes(intelImage->base.TexFormat);
|
comp_byte = intel_compressed_num_bytes(intelImage->base.TexFormat);
|
||||||
|
|
||||||
texelBytes = _mesa_get_format_bytes(intelImage->base.TexFormat);
|
texelBytes = _mesa_get_format_bytes(intelImage->base.TexFormat);
|
||||||
@@ -339,7 +339,6 @@ intelTexImage(GLcontext * ctx,
|
|||||||
|
|
||||||
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
texelBytes = 0;
|
texelBytes = 0;
|
||||||
texImage->IsCompressed = GL_TRUE;
|
|
||||||
texImage->CompressedSize =
|
texImage->CompressedSize =
|
||||||
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
||||||
texImage->Height, texImage->Depth,
|
texImage->Height, texImage->Depth,
|
||||||
@@ -405,7 +404,7 @@ intelTexImage(GLcontext * ctx,
|
|||||||
int comp_byte = 0;
|
int comp_byte = 0;
|
||||||
GLuint texelBytes = _mesa_get_format_bytes(intelImage->base.TexFormat);
|
GLuint texelBytes = _mesa_get_format_bytes(intelImage->base.TexFormat);
|
||||||
GLenum baseFormat = _mesa_get_format_base_format(intelImage->base.TexFormat);
|
GLenum baseFormat = _mesa_get_format_base_format(intelImage->base.TexFormat);
|
||||||
if (intelImage->base.IsCompressed) {
|
if (_mesa_is_format_compressed(intelImage->base.TexFormat)) {
|
||||||
comp_byte =
|
comp_byte =
|
||||||
intel_compressed_num_bytes(intelImage->base.TexFormat);
|
intel_compressed_num_bytes(intelImage->base.TexFormat);
|
||||||
}
|
}
|
||||||
@@ -494,7 +493,7 @@ intelTexImage(GLcontext * ctx,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Allocate regular memory and store the image there temporarily. */
|
/* Allocate regular memory and store the image there temporarily. */
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
sizeInBytes = texImage->CompressedSize;
|
sizeInBytes = texImage->CompressedSize;
|
||||||
dstRowStride =
|
dstRowStride =
|
||||||
_mesa_compressed_row_stride(texImage->TexFormat, width);
|
_mesa_compressed_row_stride(texImage->TexFormat, width);
|
||||||
|
@@ -85,7 +85,7 @@ intelTexSubimage(GLcontext * ctx,
|
|||||||
&dstRowStride,
|
&dstRowStride,
|
||||||
texImage->ImageOffsets);
|
texImage->ImageOffsets);
|
||||||
else {
|
else {
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
dstRowStride =
|
dstRowStride =
|
||||||
_mesa_compressed_row_stride(texImage->TexFormat, width);
|
_mesa_compressed_row_stride(texImage->TexFormat, width);
|
||||||
assert(dims != 3);
|
assert(dims != 3);
|
||||||
|
@@ -165,7 +165,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
|
|||||||
intel_miptree_reference(&intelObj->mt, firstImage->mt);
|
intel_miptree_reference(&intelObj->mt, firstImage->mt);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (firstImage->base.IsCompressed) {
|
if (_mesa_is_format_compressed(firstImage->base.TexFormat)) {
|
||||||
comp_byte = intel_compressed_num_bytes(firstImage->base.TexFormat);
|
comp_byte = intel_compressed_num_bytes(firstImage->base.TexFormat);
|
||||||
cpp = comp_byte;
|
cpp = comp_byte;
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit)
|
|||||||
intelObj->mt->height0 != firstImage->base.Height ||
|
intelObj->mt->height0 != firstImage->base.Height ||
|
||||||
intelObj->mt->depth0 != firstImage->base.Depth ||
|
intelObj->mt->depth0 != firstImage->base.Depth ||
|
||||||
intelObj->mt->cpp != cpp ||
|
intelObj->mt->cpp != cpp ||
|
||||||
intelObj->mt->compressed != firstImage->base.IsCompressed)) {
|
intelObj->mt->compressed != _mesa_is_format_compressed(firstImage->base.TexFormat))) {
|
||||||
intel_miptree_release(intel, &intelObj->mt);
|
intel_miptree_release(intel, &intelObj->mt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1504,7 +1504,7 @@ static void setup_hardware_state(r200ContextPtr rmesa, radeonTexObj *t)
|
|||||||
| ((firstImage->Height - 1) << R200_PP_TX_HEIGHTMASK_SHIFT));
|
| ((firstImage->Height - 1) << R200_PP_TX_HEIGHTMASK_SHIFT));
|
||||||
|
|
||||||
if ( !t->image_override ) {
|
if ( !t->image_override ) {
|
||||||
if (firstImage->IsCompressed)
|
if (_mesa_is_format_compressed(firstImage->TexFormat))
|
||||||
t->pp_txpitch = (firstImage->Width + 63) & ~(63);
|
t->pp_txpitch = (firstImage->Width + 63) & ~(63);
|
||||||
else
|
else
|
||||||
t->pp_txpitch = ((firstImage->Width * texelBytes) + 63) & ~(63);
|
t->pp_txpitch = ((firstImage->Width * texelBytes) + 63) & ~(63);
|
||||||
|
@@ -314,16 +314,17 @@ static void calculate_first_last_level(struct gl_texture_object *tObj,
|
|||||||
GLboolean radeon_miptree_matches_image(radeon_mipmap_tree *mt,
|
GLboolean radeon_miptree_matches_image(radeon_mipmap_tree *mt,
|
||||||
struct gl_texture_image *texImage, GLuint face, GLuint level)
|
struct gl_texture_image *texImage, GLuint face, GLuint level)
|
||||||
{
|
{
|
||||||
|
GLboolean isCompressed = _mesa_is_format_compressed(texImage->TexFormat);
|
||||||
radeon_mipmap_level *lvl;
|
radeon_mipmap_level *lvl;
|
||||||
|
|
||||||
if (face >= mt->faces || level < mt->firstLevel || level > mt->lastLevel)
|
if (face >= mt->faces || level < mt->firstLevel || level > mt->lastLevel)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
if (texImage->InternalFormat != mt->internal_format ||
|
if (texImage->InternalFormat != mt->internal_format ||
|
||||||
texImage->IsCompressed != mt->compressed)
|
isCompressed != mt->compressed)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
|
|
||||||
if (!texImage->IsCompressed &&
|
if (!isCompressed &&
|
||||||
!mt->compressed &&
|
!mt->compressed &&
|
||||||
_mesa_get_format_bytes(texImage->TexFormat) != mt->bpp)
|
_mesa_get_format_bytes(texImage->TexFormat) != mt->bpp)
|
||||||
return GL_FALSE;
|
return GL_FALSE;
|
||||||
@@ -354,7 +355,7 @@ GLboolean radeon_miptree_matches_texture(radeon_mipmap_tree *mt, struct gl_textu
|
|||||||
numfaces = 6;
|
numfaces = 6;
|
||||||
|
|
||||||
firstImage = texObj->Image[0][firstLevel];
|
firstImage = texObj->Image[0][firstLevel];
|
||||||
compressed = firstImage->IsCompressed ? firstImage->TexFormat : 0;
|
compressed = _mesa_is_format_compressed(firstImage->TexFormat) ? firstImage->TexFormat : 0;
|
||||||
texelBytes = _mesa_get_format_bytes(firstImage->TexFormat);
|
texelBytes = _mesa_get_format_bytes(firstImage->TexFormat);
|
||||||
|
|
||||||
return (mt->firstLevel == firstLevel &&
|
return (mt->firstLevel == firstLevel &&
|
||||||
@@ -374,7 +375,7 @@ GLboolean radeon_miptree_matches_texture(radeon_mipmap_tree *mt, struct gl_textu
|
|||||||
void radeon_try_alloc_miptree(radeonContextPtr rmesa, radeonTexObj *t,
|
void radeon_try_alloc_miptree(radeonContextPtr rmesa, radeonTexObj *t,
|
||||||
radeon_texture_image *image, GLuint face, GLuint level)
|
radeon_texture_image *image, GLuint face, GLuint level)
|
||||||
{
|
{
|
||||||
GLuint compressed = image->base.IsCompressed ? image->base.TexFormat : 0;
|
GLuint compressed = _mesa_is_format_compressed(image->base.TexFormat) ? image->base.TexFormat : 0;
|
||||||
GLuint numfaces = 1;
|
GLuint numfaces = 1;
|
||||||
GLuint firstLevel, lastLevel;
|
GLuint firstLevel, lastLevel;
|
||||||
GLuint texelBytes;
|
GLuint texelBytes;
|
||||||
|
@@ -81,8 +81,10 @@ struct tx_table {
|
|||||||
GLuint format, filter;
|
GLuint format, filter;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* XXX verify this table against MESA_FORMAT_x values */
|
||||||
static const struct tx_table tx_table[] =
|
static const struct tx_table tx_table[] =
|
||||||
{
|
{
|
||||||
|
0, /* MESA_FORMAT_NONE */
|
||||||
_ALPHA(RGBA8888),
|
_ALPHA(RGBA8888),
|
||||||
_ALPHA_REV(RGBA8888),
|
_ALPHA_REV(RGBA8888),
|
||||||
_ALPHA(ARGB8888),
|
_ALPHA(ARGB8888),
|
||||||
@@ -1083,7 +1085,7 @@ static GLboolean setup_hardware_state(r100ContextPtr rmesa, radeonTexObj *t, int
|
|||||||
| ((firstImage->Height - 1) << RADEON_TEX_VSIZE_SHIFT));
|
| ((firstImage->Height - 1) << RADEON_TEX_VSIZE_SHIFT));
|
||||||
|
|
||||||
if ( !t->image_override ) {
|
if ( !t->image_override ) {
|
||||||
if (firstImage->IsCompressed)
|
if (_mesa_is_format_compressed(firstImage->TexFormat))
|
||||||
t->pp_txpitch = (firstImage->Width + 63) & ~(63);
|
t->pp_txpitch = (firstImage->Width + 63) & ~(63);
|
||||||
else
|
else
|
||||||
t->pp_txpitch = ((firstImage->Width * texelBytes) + 63) & ~(63);
|
t->pp_txpitch = ((firstImage->Width * texelBytes) + 63) & ~(63);
|
||||||
|
@@ -546,13 +546,11 @@ static void radeon_teximage(
|
|||||||
|
|
||||||
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
texelBytes = 0;
|
texelBytes = 0;
|
||||||
texImage->IsCompressed = GL_TRUE;
|
|
||||||
texImage->CompressedSize =
|
texImage->CompressedSize =
|
||||||
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
||||||
texImage->Height, texImage->Depth,
|
texImage->Height, texImage->Depth,
|
||||||
texImage->TexFormat);
|
texImage->TexFormat);
|
||||||
} else {
|
} else {
|
||||||
texImage->IsCompressed = GL_FALSE;
|
|
||||||
texImage->CompressedSize = 0;
|
texImage->CompressedSize = 0;
|
||||||
|
|
||||||
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
@@ -590,7 +588,7 @@ static void radeon_teximage(
|
|||||||
dstRowStride = lvl->rowstride;
|
dstRowStride = lvl->rowstride;
|
||||||
} else {
|
} else {
|
||||||
int size;
|
int size;
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
size = texImage->CompressedSize;
|
size = texImage->CompressedSize;
|
||||||
} else {
|
} else {
|
||||||
size = texImage->Width * texImage->Height * texImage->Depth * _mesa_get_format_bytes(texImage->TexFormat);
|
size = texImage->Width * texImage->Height * texImage->Depth * _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
|
@@ -191,7 +191,6 @@ tdfxGenerateMipmap(GLcontext *ctx, GLenum target,
|
|||||||
|
|
||||||
texImage = _mesa_get_tex_image(ctx, texObj, target, level);
|
texImage = _mesa_get_tex_image(ctx, texObj, target, level);
|
||||||
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
assert(!texImage->IsCompressed);
|
|
||||||
|
|
||||||
mml = TDFX_TEXIMAGE_DATA(texImage);
|
mml = TDFX_TEXIMAGE_DATA(texImage);
|
||||||
|
|
||||||
@@ -1233,7 +1232,7 @@ adjust2DRatio (GLcontext *ctx,
|
|||||||
GLvoid *tempImage;
|
GLvoid *tempImage;
|
||||||
GLuint dstImageOffsets = 0;
|
GLuint dstImageOffsets = 0;
|
||||||
|
|
||||||
if (!texImage->IsCompressed) {
|
if (!_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
GLubyte *destAddr;
|
GLubyte *destAddr;
|
||||||
|
|
||||||
tempImage = MALLOC(width * height * texelBytes);
|
tempImage = MALLOC(width * height * texelBytes);
|
||||||
@@ -1366,7 +1365,7 @@ tdfxTexImage2D(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
* be correct, since it would mess with "compressedSize".
|
* be correct, since it would mess with "compressedSize".
|
||||||
* Ditto for GL_RGBA[4]_S3TC, which is always mapped to DXT3.
|
* Ditto for GL_RGBA[4]_S3TC, which is always mapped to DXT3.
|
||||||
*/
|
*/
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
switch (internalFormat) {
|
switch (internalFormat) {
|
||||||
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
|
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
|
||||||
case GL_RGB_S3TC:
|
case GL_RGB_S3TC:
|
||||||
@@ -1393,7 +1392,7 @@ tdfxTexImage2D(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
}
|
}
|
||||||
if (texNapalm) {
|
if (texNapalm) {
|
||||||
texImage->InternalFormat = internalFormat = texNapalm;
|
texImage->InternalFormat = internalFormat = texNapalm;
|
||||||
texImage->IsCompressed = GL_TRUE;
|
_mesa_is_format_compressed(texImage->TexFormat) = GL_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1409,7 +1408,7 @@ tdfxTexImage2D(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
texImage->FetchTexelc = fxFetchFunction(mesaFormat);
|
texImage->FetchTexelc = fxFetchFunction(mesaFormat);
|
||||||
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
|
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
texImage->CompressedSize = _mesa_compressed_texture_size(ctx,
|
texImage->CompressedSize = _mesa_compressed_texture_size(ctx,
|
||||||
mml->width,
|
mml->width,
|
||||||
mml->height,
|
mml->height,
|
||||||
@@ -1492,7 +1491,7 @@ tdfxTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
assert(texImage->_BaseFormat);
|
assert(texImage->_BaseFormat);
|
||||||
|
|
||||||
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
dstRowStride = _mesa_compressed_row_stride(texImage->TexFormat, mml->width);
|
dstRowStride = _mesa_compressed_row_stride(texImage->TexFormat, mml->width);
|
||||||
} else {
|
} else {
|
||||||
dstRowStride = mml->width * texelBytes;
|
dstRowStride = mml->width * texelBytes;
|
||||||
@@ -1594,8 +1593,6 @@ tdfxCompressedTexImage2D (GLcontext *ctx, GLenum target,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(texImage->IsCompressed);
|
|
||||||
|
|
||||||
ti = TDFX_TEXTURE_DATA(texObj);
|
ti = TDFX_TEXTURE_DATA(texObj);
|
||||||
if (!ti) {
|
if (!ti) {
|
||||||
texObj->DriverData = fxAllocTexObjData(fxMesa);
|
texObj->DriverData = fxAllocTexObjData(fxMesa);
|
||||||
|
@@ -696,7 +696,6 @@ static void viaTexImage(GLcontext *ctx,
|
|||||||
|
|
||||||
if (texelBytes == 0) {
|
if (texelBytes == 0) {
|
||||||
/* compressed format */
|
/* compressed format */
|
||||||
texImage->IsCompressed = GL_TRUE;
|
|
||||||
texImage->CompressedSize =
|
texImage->CompressedSize =
|
||||||
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
||||||
texImage->Height, texImage->Depth,
|
texImage->Height, texImage->Depth,
|
||||||
@@ -713,7 +712,7 @@ static void viaTexImage(GLcontext *ctx,
|
|||||||
viaImage->pitchLog2 = logbase2(postConvWidth * texelBytes);
|
viaImage->pitchLog2 = logbase2(postConvWidth * texelBytes);
|
||||||
|
|
||||||
/* allocate memory */
|
/* allocate memory */
|
||||||
if (texImage->IsCompressed)
|
if (_mesa_is_format_compressed(texImage->TexFormat))
|
||||||
sizeInBytes = texImage->CompressedSize;
|
sizeInBytes = texImage->CompressedSize;
|
||||||
else
|
else
|
||||||
sizeInBytes = postConvWidth * postConvHeight * texelBytes;
|
sizeInBytes = postConvWidth * postConvHeight * texelBytes;
|
||||||
@@ -793,7 +792,7 @@ static void viaTexImage(GLcontext *ctx,
|
|||||||
GLint dstRowStride;
|
GLint dstRowStride;
|
||||||
GLboolean success;
|
GLboolean success;
|
||||||
|
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
dstRowStride = _mesa_compressed_row_stride(texImage->TexFormat, width);
|
dstRowStride = _mesa_compressed_row_stride(texImage->TexFormat, width);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@@ -1234,7 +1234,7 @@ adjust2DRatio (GLcontext *ctx,
|
|||||||
const GLint newHeight = height * mml->hScale;
|
const GLint newHeight = height * mml->hScale;
|
||||||
GLvoid *tempImage;
|
GLvoid *tempImage;
|
||||||
|
|
||||||
if (!texImage->IsCompressed) {
|
if (!_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
GLubyte *destAddr;
|
GLubyte *destAddr;
|
||||||
|
|
||||||
tempImage = MALLOC(width * height * texelBytes);
|
tempImage = MALLOC(width * height * texelBytes);
|
||||||
@@ -1353,7 +1353,7 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
#if FX_COMPRESS_S3TC_AS_FXT1_HACK
|
#if FX_COMPRESS_S3TC_AS_FXT1_HACK
|
||||||
/* [koolsmoky] substitute FXT1 for DXTn and Legacy S3TC */
|
/* [koolsmoky] substitute FXT1 for DXTn and Legacy S3TC */
|
||||||
if (!ctx->Mesa_DXTn && texImage->IsCompressed) {
|
if (!ctx->Mesa_DXTn && _mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
switch (internalFormat) {
|
switch (internalFormat) {
|
||||||
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
|
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
|
||||||
case GL_RGB_S3TC:
|
case GL_RGB_S3TC:
|
||||||
@@ -1380,7 +1380,6 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
|
|||||||
}
|
}
|
||||||
if (texNapalm) {
|
if (texNapalm) {
|
||||||
texImage->InternalFormat = internalFormat = texNapalm;
|
texImage->InternalFormat = internalFormat = texNapalm;
|
||||||
texImage->IsCompressed = GL_TRUE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1397,7 +1396,7 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
/* allocate mipmap buffer */
|
/* allocate mipmap buffer */
|
||||||
assert(!texImage->Data);
|
assert(!texImage->Data);
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
texImage->CompressedSize = _mesa_compressed_texture_size(ctx,
|
texImage->CompressedSize = _mesa_compressed_texture_size(ctx,
|
||||||
mml->width,
|
mml->width,
|
||||||
mml->height,
|
mml->height,
|
||||||
@@ -1451,7 +1450,7 @@ fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level,
|
|||||||
const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
|
const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
|
||||||
const GLint maxLevels = _mesa_max_texture_levels(ctx, texObj->Target);
|
const GLint maxLevels = _mesa_max_texture_levels(ctx, texObj->Target);
|
||||||
|
|
||||||
assert(!texImage->IsCompressed);
|
assert(!_mesa_is_format_compressed(texImage->TexFormat));
|
||||||
|
|
||||||
while (level < texObj->MaxLevel && level < maxLevels - 1) {
|
while (level < texObj->MaxLevel && level < maxLevels - 1) {
|
||||||
mipWidth = width / 2;
|
mipWidth = width / 2;
|
||||||
@@ -1523,7 +1522,7 @@ fxDDTexSubImage2D(GLcontext * ctx, GLenum target, GLint level,
|
|||||||
assert(texImage->_BaseFormat);
|
assert(texImage->_BaseFormat);
|
||||||
|
|
||||||
texelBytes = _mesa_get_format_bytes(texImage->TexFormat->MesaFormat);
|
texelBytes = _mesa_get_format_bytes(texImage->TexFormat->MesaFormat);
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
dstRowStride = _mesa_compressed_row_stride(texImage->InternalFormat, mml->width);
|
dstRowStride = _mesa_compressed_row_stride(texImage->InternalFormat, mml->width);
|
||||||
} else {
|
} else {
|
||||||
dstRowStride = mml->width * texelBytes;
|
dstRowStride = mml->width * texelBytes;
|
||||||
@@ -1564,7 +1563,7 @@ fxDDTexSubImage2D(GLcontext * ctx, GLenum target, GLint level,
|
|||||||
const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
|
const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
|
||||||
const GLint maxLevels = _mesa_max_texture_levels(ctx, texObj->Target);
|
const GLint maxLevels = _mesa_max_texture_levels(ctx, texObj->Target);
|
||||||
|
|
||||||
assert(!texImage->IsCompressed);
|
assert(!_mesa_is_format_compressed(texImage->TexFormat));
|
||||||
|
|
||||||
width = texImage->Width;
|
width = texImage->Width;
|
||||||
height = texImage->Height;
|
height = texImage->Height;
|
||||||
@@ -1620,7 +1619,7 @@ fxDDCompressedTexImage2D (GLcontext *ctx, GLenum target,
|
|||||||
width, height);
|
width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(texImage->IsCompressed);
|
assert(_mesa_is_format_compressed(texImage->TexFormat));
|
||||||
|
|
||||||
if (!fxIsTexSupported(target, internalFormat, texImage)) {
|
if (!fxIsTexSupported(target, internalFormat, texImage)) {
|
||||||
_mesa_problem(NULL, "fx Driver: unsupported texture in fxDDCompressedTexImg()\n");
|
_mesa_problem(NULL, "fx Driver: unsupported texture in fxDDCompressedTexImg()\n");
|
||||||
@@ -1712,7 +1711,7 @@ fxDDCompressedTexImage2D (GLcontext *ctx, GLenum target,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
assert(!texImage->IsCompressed);
|
assert(!_mesa_is_format_compressed(texImage->TexFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
fxTexInvalidate(ctx, texObj);
|
fxTexInvalidate(ctx, texObj);
|
||||||
@@ -1777,7 +1776,7 @@ fxDDCompressedTexSubImage2D( GLcontext *ctx, GLenum target,
|
|||||||
|
|
||||||
/* GL_SGIS_generate_mipmap */
|
/* GL_SGIS_generate_mipmap */
|
||||||
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
if (level == texObj->BaseLevel && texObj->GenerateMipmap) {
|
||||||
assert(!texImage->IsCompressed);
|
assert(!_mesa_is_format_compressed(texImage->TexFormat));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ti->validated && ti->isInTM)
|
if (ti->validated && ti->isInTM)
|
||||||
|
@@ -1511,7 +1511,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
|||||||
ASSERT(maxLevels > 0); /* bad target */
|
ASSERT(maxLevels > 0); /* bad target */
|
||||||
|
|
||||||
/* Find convertFormat - the format that do_row() will process */
|
/* Find convertFormat - the format that do_row() will process */
|
||||||
if (srcImage->IsCompressed) {
|
if (_mesa_is_format_compressed(srcImage->TexFormat)) {
|
||||||
/* setup for compressed textures */
|
/* setup for compressed textures */
|
||||||
GLuint row;
|
GLuint row;
|
||||||
GLint components, size;
|
GLint components, size;
|
||||||
@@ -1589,7 +1589,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
|||||||
&dstWidth, &dstHeight, &dstDepth);
|
&dstWidth, &dstHeight, &dstDepth);
|
||||||
if (!nextLevel) {
|
if (!nextLevel) {
|
||||||
/* all done */
|
/* all done */
|
||||||
if (srcImage->IsCompressed) {
|
if (_mesa_is_format_compressed(srcImage->TexFormat)) {
|
||||||
_mesa_free((void *) srcData);
|
_mesa_free((void *) srcData);
|
||||||
_mesa_free(dstData);
|
_mesa_free(dstData);
|
||||||
}
|
}
|
||||||
@@ -1614,8 +1614,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
|||||||
dstImage->TexFormat = srcImage->TexFormat;
|
dstImage->TexFormat = srcImage->TexFormat;
|
||||||
dstImage->FetchTexelc = srcImage->FetchTexelc;
|
dstImage->FetchTexelc = srcImage->FetchTexelc;
|
||||||
dstImage->FetchTexelf = srcImage->FetchTexelf;
|
dstImage->FetchTexelf = srcImage->FetchTexelf;
|
||||||
dstImage->IsCompressed = srcImage->IsCompressed;
|
if (_mesa_is_format_compressed(dstImage->TexFormat)) {
|
||||||
if (dstImage->IsCompressed) {
|
|
||||||
dstImage->CompressedSize
|
dstImage->CompressedSize
|
||||||
= ctx->Driver.CompressedTextureSize(ctx, dstImage->Width,
|
= ctx->Driver.CompressedTextureSize(ctx, dstImage->Width,
|
||||||
dstImage->Height,
|
dstImage->Height,
|
||||||
@@ -1631,7 +1630,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
|||||||
/* Alloc new teximage data buffer.
|
/* Alloc new teximage data buffer.
|
||||||
* Setup src and dest data pointers.
|
* Setup src and dest data pointers.
|
||||||
*/
|
*/
|
||||||
if (dstImage->IsCompressed) {
|
if (_mesa_is_format_compressed(dstImage->TexFormat)) {
|
||||||
dstImage->Data = _mesa_alloc_texmemory(dstImage->CompressedSize);
|
dstImage->Data = _mesa_alloc_texmemory(dstImage->CompressedSize);
|
||||||
if (!dstImage->Data) {
|
if (!dstImage->Data) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
|
||||||
@@ -1661,7 +1660,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
|
|||||||
dstData, dstImage->RowStride);
|
dstData, dstImage->RowStride);
|
||||||
|
|
||||||
|
|
||||||
if (dstImage->IsCompressed) {
|
if (_mesa_is_format_compressed(dstImage->TexFormat)) {
|
||||||
GLubyte *temp;
|
GLubyte *temp;
|
||||||
/* compress image from dstData into dstImage->Data */
|
/* compress image from dstData into dstImage->Data */
|
||||||
const GLenum srcFormat = _mesa_get_format_base_format(convertFormat);
|
const GLenum srcFormat = _mesa_get_format_base_format(convertFormat);
|
||||||
|
@@ -1173,7 +1173,6 @@ struct gl_texture_image
|
|||||||
FetchTexelFuncC FetchTexelc; /**< GLchan texel fetch function pointer */
|
FetchTexelFuncC FetchTexelc; /**< GLchan texel fetch function pointer */
|
||||||
FetchTexelFuncF FetchTexelf; /**< Float texel fetch function pointer */
|
FetchTexelFuncF FetchTexelf; /**< Float texel fetch function pointer */
|
||||||
|
|
||||||
GLboolean IsCompressed; /**< GL_ARB_texture_compression */
|
|
||||||
GLuint CompressedSize; /**< GL_ARB_texture_compression */
|
GLuint CompressedSize; /**< GL_ARB_texture_compression */
|
||||||
|
|
||||||
GLuint RowStride; /**< Padded width in units of texels */
|
GLuint RowStride; /**< Padded width in units of texels */
|
||||||
|
@@ -567,7 +567,7 @@ _mesa_GetCompressedTexImageARB(GLenum target, GLint level, GLvoid *img)
|
|||||||
{
|
{
|
||||||
texImage = _mesa_select_tex_image(ctx, texObj, target, level);
|
texImage = _mesa_select_tex_image(ctx, texObj, target, level);
|
||||||
if (texImage) {
|
if (texImage) {
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
/* this typically calls _mesa_get_compressed_teximage() */
|
/* this typically calls _mesa_get_compressed_teximage() */
|
||||||
ctx->Driver.GetCompressedTexImage(ctx, target, level, img,
|
ctx->Driver.GetCompressedTexImage(ctx, target, level, img,
|
||||||
texObj, texImage);
|
texObj, texImage);
|
||||||
|
@@ -903,7 +903,6 @@ clear_teximage_fields(struct gl_texture_image *img)
|
|||||||
img->TexFormat = MESA_FORMAT_NONE;
|
img->TexFormat = MESA_FORMAT_NONE;
|
||||||
img->FetchTexelc = NULL;
|
img->FetchTexelc = NULL;
|
||||||
img->FetchTexelf = NULL;
|
img->FetchTexelf = NULL;
|
||||||
img->IsCompressed = 0;
|
|
||||||
img->CompressedSize = 0;
|
img->CompressedSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -967,7 +966,6 @@ _mesa_init_teximage_fields(GLcontext *ctx, GLenum target,
|
|||||||
|
|
||||||
img->MaxLog2 = MAX2(img->WidthLog2, img->HeightLog2);
|
img->MaxLog2 = MAX2(img->WidthLog2, img->HeightLog2);
|
||||||
|
|
||||||
img->IsCompressed = GL_FALSE;
|
|
||||||
img->CompressedSize = 0;
|
img->CompressedSize = 0;
|
||||||
|
|
||||||
if ((width == 1 || _mesa_is_pow_two(img->Width2)) &&
|
if ((width == 1 || _mesa_is_pow_two(img->Width2)) &&
|
||||||
@@ -1589,7 +1587,7 @@ subtexture_error_check2( GLcontext *ctx, GLuint dimensions,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (destTex->IsCompressed) {
|
if (_mesa_is_format_compressed(destTex->TexFormat)) {
|
||||||
if (!target_can_be_compressed(ctx, target)) {
|
if (!target_can_be_compressed(ctx, target)) {
|
||||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||||
"glTexSubImage%D(target)", dimensions);
|
"glTexSubImage%D(target)", dimensions);
|
||||||
@@ -1951,7 +1949,7 @@ copytexsubimage_error_check2( GLcontext *ctx, GLuint dimensions,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (teximage->IsCompressed) {
|
if (_mesa_is_format_compressed(teximage->TexFormat)) {
|
||||||
if (!target_can_be_compressed(ctx, target)) {
|
if (!target_can_be_compressed(ctx, target)) {
|
||||||
_mesa_error(ctx, GL_INVALID_ENUM,
|
_mesa_error(ctx, GL_INVALID_ENUM,
|
||||||
"glCopyTexSubImage%d(target)", dimensions);
|
"glCopyTexSubImage%d(target)", dimensions);
|
||||||
|
@@ -852,7 +852,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
|
|||||||
|
|
||||||
/* GL_ARB_texture_compression */
|
/* GL_ARB_texture_compression */
|
||||||
case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
|
case GL_TEXTURE_COMPRESSED_IMAGE_SIZE:
|
||||||
if (img->IsCompressed && !isProxy) {
|
if (_mesa_is_format_compressed(img->TexFormat) && !isProxy) {
|
||||||
/* Don't use ctx->Driver.CompressedTextureSize() since that
|
/* Don't use ctx->Driver.CompressedTextureSize() since that
|
||||||
* may returned a padded hardware size.
|
* may returned a padded hardware size.
|
||||||
*/
|
*/
|
||||||
@@ -866,7 +866,7 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GL_TEXTURE_COMPRESSED:
|
case GL_TEXTURE_COMPRESSED:
|
||||||
*params = (GLint) img->IsCompressed;
|
*params = (GLint) _mesa_is_format_compressed(img->TexFormat);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* GL_ARB_texture_float */
|
/* GL_ARB_texture_float */
|
||||||
|
@@ -3244,10 +3244,7 @@ _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims)
|
|||||||
static void
|
static void
|
||||||
compute_texture_size(GLcontext *ctx, struct gl_texture_image *texImage)
|
compute_texture_size(GLcontext *ctx, struct gl_texture_image *texImage)
|
||||||
{
|
{
|
||||||
texImage->IsCompressed =
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
_mesa_is_format_compressed(texImage->TexFormat);
|
|
||||||
|
|
||||||
if (texImage->IsCompressed) {
|
|
||||||
texImage->CompressedSize =
|
texImage->CompressedSize =
|
||||||
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
||||||
texImage->Height, texImage->Depth,
|
texImage->Height, texImage->Depth,
|
||||||
@@ -3260,6 +3257,41 @@ compute_texture_size(GLcontext *ctx, struct gl_texture_image *texImage)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Return texture size in bytes */
|
||||||
|
static GLuint
|
||||||
|
texture_size(const struct gl_texture_image *texImage)
|
||||||
|
{
|
||||||
|
GLuint sz;
|
||||||
|
|
||||||
|
if (_mesa_is_format_compressed(texImage->TexFormat))
|
||||||
|
sz = texImage->CompressedSize;
|
||||||
|
else
|
||||||
|
sz = texImage->Width * texImage->Height * texImage->Depth *
|
||||||
|
_mesa_get_format_bytes(texImage->TexFormat);
|
||||||
|
|
||||||
|
return sz;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** Return row stride in bytes */
|
||||||
|
static GLuint
|
||||||
|
texture_row_stride(const struct gl_texture_image *texImage)
|
||||||
|
{
|
||||||
|
GLuint stride;
|
||||||
|
|
||||||
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
|
stride = _mesa_compressed_row_stride(texImage->TexFormat,
|
||||||
|
texImage->Width);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
GLuint texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
|
stride = texImage->RowStride * texelBytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stride;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the software fallback for Driver.TexImage1D()
|
* This is the software fallback for Driver.TexImage1D()
|
||||||
@@ -3289,10 +3321,8 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
compute_texture_size(ctx, texImage);
|
compute_texture_size(ctx, texImage);
|
||||||
|
|
||||||
/* allocate memory */
|
/* allocate memory */
|
||||||
if (texImage->IsCompressed)
|
sizeInBytes = texture_size(texImage);
|
||||||
sizeInBytes = texImage->CompressedSize;
|
|
||||||
else
|
|
||||||
sizeInBytes = texImage->Width * _mesa_get_format_bytes(texImage->TexFormat);
|
|
||||||
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
|
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
|
||||||
if (!texImage->Data) {
|
if (!texImage->Data) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
|
||||||
@@ -3309,16 +3339,14 @@ _mesa_store_teximage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const GLint dstRowStride = 0;
|
const GLint dstRowStride = 0;
|
||||||
GLboolean success;
|
GLboolean success = _mesa_texstore(ctx, 1, texImage->_BaseFormat,
|
||||||
|
texImage->TexFormat,
|
||||||
success = _mesa_texstore(ctx, 1, texImage->_BaseFormat,
|
texImage->Data,
|
||||||
texImage->TexFormat,
|
0, 0, 0, /* dstX/Y/Zoffset */
|
||||||
texImage->Data,
|
dstRowStride,
|
||||||
0, 0, 0, /* dstX/Y/Zoffset */
|
texImage->ImageOffsets,
|
||||||
dstRowStride,
|
width, 1, 1,
|
||||||
texImage->ImageOffsets,
|
format, type, pixels, packing);
|
||||||
width, 1, 1,
|
|
||||||
format, type, pixels, packing);
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D");
|
||||||
}
|
}
|
||||||
@@ -3360,10 +3388,7 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
|
|
||||||
/* allocate memory */
|
/* allocate memory */
|
||||||
if (texImage->IsCompressed)
|
sizeInBytes = texture_size(texImage);
|
||||||
sizeInBytes = texImage->CompressedSize;
|
|
||||||
else
|
|
||||||
sizeInBytes = texImage->Width * texImage->Height * texelBytes;
|
|
||||||
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
|
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
|
||||||
if (!texImage->Data) {
|
if (!texImage->Data) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
|
||||||
@@ -3379,26 +3404,15 @@ _mesa_store_teximage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GLint dstRowStride;
|
GLint dstRowStride = texture_row_stride(texImage);
|
||||||
GLboolean success;
|
GLboolean success = _mesa_texstore(ctx, 2, texImage->_BaseFormat,
|
||||||
|
texImage->TexFormat,
|
||||||
if (texImage->IsCompressed) {
|
texImage->Data,
|
||||||
dstRowStride
|
0, 0, 0, /* dstX/Y/Zoffset */
|
||||||
= _mesa_compressed_row_stride(texImage->TexFormat, width);
|
dstRowStride,
|
||||||
}
|
texImage->ImageOffsets,
|
||||||
else {
|
width, height, 1,
|
||||||
dstRowStride = texImage->RowStride * texelBytes;
|
format, type, pixels, packing);
|
||||||
}
|
|
||||||
|
|
||||||
success = _mesa_texstore(ctx, 2, texImage->_BaseFormat,
|
|
||||||
texImage->TexFormat,
|
|
||||||
texImage->Data,
|
|
||||||
0, 0, 0, /* dstX/Y/Zoffset */
|
|
||||||
dstRowStride,
|
|
||||||
texImage->ImageOffsets,
|
|
||||||
width, height, 1,
|
|
||||||
format, type, pixels, packing);
|
|
||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
|
||||||
}
|
}
|
||||||
@@ -3436,10 +3450,7 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
texelBytes = _mesa_get_format_bytes(texImage->TexFormat);
|
||||||
|
|
||||||
/* allocate memory */
|
/* allocate memory */
|
||||||
if (texImage->IsCompressed)
|
sizeInBytes = texture_size(texImage);
|
||||||
sizeInBytes = texImage->CompressedSize;
|
|
||||||
else
|
|
||||||
sizeInBytes = width * height * depth * texelBytes;
|
|
||||||
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
|
texImage->Data = _mesa_alloc_texmemory(sizeInBytes);
|
||||||
if (!texImage->Data) {
|
if (!texImage->Data) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
|
||||||
@@ -3455,25 +3466,15 @@ _mesa_store_teximage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GLint dstRowStride;
|
GLint dstRowStride = texture_row_stride(texImage);
|
||||||
GLboolean success;
|
GLboolean success = _mesa_texstore(ctx, 3, texImage->_BaseFormat,
|
||||||
|
texImage->TexFormat,
|
||||||
if (texImage->IsCompressed) {
|
texImage->Data,
|
||||||
dstRowStride
|
0, 0, 0, /* dstX/Y/Zoffset */
|
||||||
= _mesa_compressed_row_stride(texImage->TexFormat, width);
|
dstRowStride,
|
||||||
}
|
texImage->ImageOffsets,
|
||||||
else {
|
width, height, depth,
|
||||||
dstRowStride = texImage->RowStride * texelBytes;
|
format, type, pixels, packing);
|
||||||
}
|
|
||||||
|
|
||||||
success = _mesa_texstore(ctx, 3, texImage->_BaseFormat,
|
|
||||||
texImage->TexFormat,
|
|
||||||
texImage->Data,
|
|
||||||
0, 0, 0, /* dstX/Y/Zoffset */
|
|
||||||
dstRowStride,
|
|
||||||
texImage->ImageOffsets,
|
|
||||||
width, height, depth,
|
|
||||||
format, type, pixels, packing);
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D");
|
||||||
}
|
}
|
||||||
@@ -3505,16 +3506,14 @@ _mesa_store_texsubimage1d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
|
|
||||||
{
|
{
|
||||||
const GLint dstRowStride = 0;
|
const GLint dstRowStride = 0;
|
||||||
GLboolean success;
|
GLboolean success = _mesa_texstore(ctx, 1, texImage->_BaseFormat,
|
||||||
|
texImage->TexFormat,
|
||||||
success = _mesa_texstore(ctx, 1, texImage->_BaseFormat,
|
texImage->Data,
|
||||||
texImage->TexFormat,
|
xoffset, 0, 0, /* offsets */
|
||||||
texImage->Data,
|
dstRowStride,
|
||||||
xoffset, 0, 0, /* offsets */
|
texImage->ImageOffsets,
|
||||||
dstRowStride,
|
width, 1, 1,
|
||||||
texImage->ImageOffsets,
|
format, type, pixels, packing);
|
||||||
width, 1, 1,
|
|
||||||
format, type, pixels, packing);
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage1D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage1D");
|
||||||
}
|
}
|
||||||
@@ -3545,26 +3544,15 @@ _mesa_store_texsubimage2d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
{
|
{
|
||||||
GLint dstRowStride = 0;
|
GLint dstRowStride = texture_row_stride(texImage);
|
||||||
GLboolean success;
|
GLboolean success = _mesa_texstore(ctx, 2, texImage->_BaseFormat,
|
||||||
|
texImage->TexFormat,
|
||||||
if (texImage->IsCompressed) {
|
texImage->Data,
|
||||||
dstRowStride = _mesa_compressed_row_stride(texImage->TexFormat,
|
xoffset, yoffset, 0,
|
||||||
texImage->Width);
|
dstRowStride,
|
||||||
}
|
texImage->ImageOffsets,
|
||||||
else {
|
width, height, 1,
|
||||||
dstRowStride = texImage->RowStride *
|
format, type, pixels, packing);
|
||||||
_mesa_get_format_bytes(texImage->TexFormat);
|
|
||||||
}
|
|
||||||
|
|
||||||
success = _mesa_texstore(ctx, 2, texImage->_BaseFormat,
|
|
||||||
texImage->TexFormat,
|
|
||||||
texImage->Data,
|
|
||||||
xoffset, yoffset, 0,
|
|
||||||
dstRowStride,
|
|
||||||
texImage->ImageOffsets,
|
|
||||||
width, height, 1,
|
|
||||||
format, type, pixels, packing);
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage2D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage2D");
|
||||||
}
|
}
|
||||||
@@ -3595,26 +3583,15 @@ _mesa_store_texsubimage3d(GLcontext *ctx, GLenum target, GLint level,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
{
|
{
|
||||||
GLint dstRowStride;
|
GLint dstRowStride = texture_row_stride(texImage);
|
||||||
GLboolean success;
|
GLboolean success = _mesa_texstore(ctx, 3, texImage->_BaseFormat,
|
||||||
|
texImage->TexFormat,
|
||||||
if (texImage->IsCompressed) {
|
texImage->Data,
|
||||||
dstRowStride = _mesa_compressed_row_stride(texImage->TexFormat,
|
xoffset, yoffset, zoffset,
|
||||||
texImage->Width);
|
dstRowStride,
|
||||||
}
|
texImage->ImageOffsets,
|
||||||
else {
|
width, height, depth,
|
||||||
dstRowStride = texImage->RowStride *
|
format, type, pixels, packing);
|
||||||
_mesa_get_format_bytes(texImage->TexFormat);
|
|
||||||
}
|
|
||||||
|
|
||||||
success = _mesa_texstore(ctx, 3, texImage->_BaseFormat,
|
|
||||||
texImage->TexFormat,
|
|
||||||
texImage->Data,
|
|
||||||
xoffset, yoffset, zoffset,
|
|
||||||
dstRowStride,
|
|
||||||
texImage->ImageOffsets,
|
|
||||||
width, height, depth,
|
|
||||||
format, type, pixels, packing);
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage3D");
|
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexSubImage3D");
|
||||||
}
|
}
|
||||||
|
@@ -562,7 +562,6 @@ st_TexImage(GLcontext * ctx,
|
|||||||
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
/* must be a compressed format */
|
/* must be a compressed format */
|
||||||
texelBytes = 0;
|
texelBytes = 0;
|
||||||
texImage->IsCompressed = GL_TRUE;
|
|
||||||
texImage->CompressedSize =
|
texImage->CompressedSize =
|
||||||
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
ctx->Driver.CompressedTextureSize(ctx, texImage->Width,
|
||||||
texImage->Height, texImage->Depth,
|
texImage->Height, texImage->Depth,
|
||||||
@@ -696,7 +695,7 @@ st_TexImage(GLcontext * ctx,
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Allocate regular memory and store the image there temporarily. */
|
/* Allocate regular memory and store the image there temporarily. */
|
||||||
if (texImage->IsCompressed) {
|
if (_mesa_is_format_compressed(texImage->TexFormat)) {
|
||||||
sizeInBytes = texImage->CompressedSize;
|
sizeInBytes = texImage->CompressedSize;
|
||||||
dstRowStride =
|
dstRowStride =
|
||||||
_mesa_compressed_row_stride(texImage->TexFormat, width);
|
_mesa_compressed_row_stride(texImage->TexFormat, width);
|
||||||
@@ -1823,7 +1822,7 @@ st_finalize_texture(GLcontext *ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: determine format block instead of cpp */
|
/* FIXME: determine format block instead of cpp */
|
||||||
if (firstImage->base.IsCompressed) {
|
if (_mesa_is_format_compressed(firstImage->base.TexFormat)) {
|
||||||
cpp = compressed_num_bytes(firstImage->base.TexFormat);
|
cpp = compressed_num_bytes(firstImage->base.TexFormat);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
Reference in New Issue
Block a user