From b3805da0365c3be80ee0ef97ad657330cecb1c86 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 10 May 2011 14:23:00 -0400 Subject: [PATCH] Fixed (I think?) linear size calculation for S3TC/DXTC data. --- mojodds.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mojodds.c b/mojodds.c index 20e8b47..7da86f0 100644 --- a/mojodds.c +++ b/mojodds.c @@ -174,15 +174,18 @@ static int parse_dds(MOJODDS_Header *header, const uint8 **ptr, size_t *len, { case FOURCC_DXT1: *_glfmt = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; - calcSize = ((width ? ((width + 3) / 4) : 1) * 8) * height; + calcSize = ((width ? ((width + 3) / 4) : 1) * 8) * + (height ? ((height + 3) / 4) : 1); break; case FOURCC_DXT3: *_glfmt = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; - calcSize = ((width ? ((width + 3) / 4) : 1) * 16) * height; + calcSize = ((width ? ((width + 3) / 4) : 1) * 16) * + (height ? ((height + 3) / 4) : 1); break; case FOURCC_DXT5: *_glfmt = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; - calcSize = ((width ? ((width + 3) / 4) : 1) * 16) * height; + calcSize = ((width ? ((width + 3) / 4) : 1) * 16) * + (height ? ((height + 3) / 4) : 1); break; // !!! FIXME: DX10 is an extended header, introduced by DirectX 10.