From b3805da0365c3be80ee0ef97ad657330cecb1c86 Mon Sep 17 00:00:00 2001
From: Ryan C. Gordon <icculus@icculus.org>
Date: Tue, 10 May 2011 18:23:00 +0000
Subject: [PATCH] Fixed (I think?) linear size calculation for S3TC/DXTC data.

---
 mojodds.c |    9 ++++++---
 1 files 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 @@
         {
             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.

--
Gitblit v1.9.3