From 21fc60ebef3400137bd508e79d1c87214ca74c9b Mon Sep 17 00:00:00 2001
From: Turo Lamminen <turotl@gmail.com>
Date: Sat, 09 May 2015 17:14:55 +0000
Subject: [PATCH] Fix cubemap face offset calculation

---
 glddstest.c   |    8 ++++----
 mojodds.h     |    4 ++--
 mojodds.c     |    8 ++++----
 afl-mojodds.c |    4 ++--
 ddsinfo.c     |    5 +++--
 5 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/afl-mojodds.c b/afl-mojodds.c
index 1f7e063..8b5c1c7 100644
--- a/afl-mojodds.c
+++ b/afl-mojodds.c
@@ -73,7 +73,7 @@
 		const void *miptex = NULL;
 		unsigned long miptexlen = 0;
 		unsigned int mipW = 0, mipH = 0;
-		retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+		retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, w, h, &miptex, &miptexlen, &mipW, &mipH);
 		if (!retval) {
 			continue;
 		}
@@ -92,7 +92,7 @@
 				const void *miptex = NULL;
 				unsigned long miptexlen = 0;
 				unsigned int mipW = 0, mipH = 0;
-				retval = MOJODDS_getCubeFace(cubeFace, miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+				retval = MOJODDS_getCubeFace(cubeFace, miplevel, glfmt, tex, cubemapfacelen, w, h, &miptex, &miptexlen, &mipW, &mipH);
 				if (!retval) {
 					continue;
 				}
diff --git a/ddsinfo.c b/ddsinfo.c
index 32c1f08..e66a524 100644
--- a/ddsinfo.c
+++ b/ddsinfo.c
@@ -74,7 +74,7 @@
 			const void *miptex = NULL;
 			unsigned long miptexlen = 0;
 			unsigned int mipW = 0, mipH = 0;
-			retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+			retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, w, h, &miptex, &miptexlen, &mipW, &mipH);
 			if (!retval) {
 				printf("MOJODDS_getMipMapTexture(%u) error: %d\n", miplevel, retval);
 				continue;
@@ -90,13 +90,14 @@
 
 		case MOJODDS_TEXTURE_CUBE:
 			printf("cube\n");
+			printf("cubemapfacelen: %u\n", cubemapfacelen);
 			printf("\n");
 
 			for (unsigned int miplevel = 0; miplevel < miplevels; miplevel++) {
 				const void *miptex = NULL;
 				unsigned long miptexlen = 0;
 				unsigned int mipW = 0, mipH = 0;
-				retval = MOJODDS_getCubeFace(MOJODDS_CUBEFACE_POSITIVE_X, miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+				retval = MOJODDS_getCubeFace(MOJODDS_CUBEFACE_POSITIVE_X, miplevel, glfmt, tex, cubemapfacelen, w, h, &miptex, &miptexlen, &mipW, &mipH);
 				if (!retval) {
 					printf("MOJODDS_getMipMapTexture(%u) error: %d\n", miplevel, retval);
 					continue;
diff --git a/glddstest.c b/glddstest.c
index 0a3b4da..3a51022 100644
--- a/glddstest.c
+++ b/glddstest.c
@@ -126,7 +126,7 @@
 			const void *miptex = NULL;
 			unsigned long miptexlen = 0;
 			unsigned int mipW = 0, mipH = 0;
-			retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+			retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, w, h, &miptex, &miptexlen, &mipW, &mipH);
 			if (!retval) {
 				printf("MOJODDS_getMipMapTexture(%u) error: %d\n", miplevel, retval);
 				continue;
@@ -152,7 +152,7 @@
 				const void *miptex = NULL;
 				unsigned long miptexlen = 0;
 				unsigned int mipW = 0, mipH = 0;
-				retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+				retval = MOJODDS_getMipMapTexture(miplevel, glfmt, tex, w, h, &miptex, &miptexlen, &mipW, &mipH);
 				if (!retval) {
 					printf("MOJODDS_getMipMapTexture(%u) error: %d\n", miplevel, retval);
 					continue;
@@ -178,7 +178,7 @@
 					const void *miptex = NULL;
 					unsigned long miptexlen = 0;
 					unsigned int mipW = 0, mipH = 0;
-					retval = MOJODDS_getCubeFace(cubeFace, miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+					retval = MOJODDS_getCubeFace(cubeFace, miplevel, glfmt, tex, cubemapfacelen, w, h, &miptex, &miptexlen, &mipW, &mipH);
 					if (!retval) {
 						printf("MOJODDS_getCubeFace(%u, %u) error: %d\n", cubeFace, miplevel, retval);
 						continue;
@@ -206,7 +206,7 @@
 						const void *miptex = NULL;
 						unsigned long miptexlen = 0;
 						unsigned int mipW = 0, mipH = 0;
-						retval = MOJODDS_getCubeFace(cubeFace, miplevel, glfmt, tex, texlen, w, h, &miptex, &miptexlen, &mipW, &mipH);
+						retval = MOJODDS_getCubeFace(cubeFace, miplevel, glfmt, tex, cubemapfacelen, w, h, &miptex, &miptexlen, &mipW, &mipH);
 						if (!retval) {
 							printf("MOJODDS_getCubeFace(%u, %u) error: %d\n", cubeFace, miplevel, retval);
 							continue;
diff --git a/mojodds.c b/mojodds.c
index 64b6938..7d78d55 100644
--- a/mojodds.c
+++ b/mojodds.c
@@ -438,7 +438,7 @@
 } // MOJODDS_getTexture
 
 int MOJODDS_getMipMapTexture(unsigned int miplevel, unsigned int glfmt,
-                             const void*_basetex, const unsigned long _basetexlen,
+                             const void*_basetex,
                              unsigned int w, unsigned h,
                              const void **_tex, unsigned long *_texlen,
                              unsigned int *_texw, unsigned int *_texh)
@@ -512,17 +512,17 @@
 
 int MOJODDS_getCubeFace(MOJODDS_cubeFace cubeFace, unsigned int miplevel,
                         unsigned int glfmt, const void *_basetex,
-                        unsigned long _basetexlen, unsigned int w, unsigned h,
+                        unsigned long _cubemapfacelen, unsigned int w, unsigned h,
                         const void **_tex, unsigned long *_texlen,
                         unsigned int *_texw, unsigned int *_texh)
 {
     // pick correct face
     const char *faceBaseTex = (const char *) _basetex;
-    faceBaseTex = faceBaseTex + cubeFace * _basetexlen;
+    faceBaseTex = faceBaseTex + cubeFace * _cubemapfacelen;
 
 
     // call MOJODDS_getMipMapTexture to get offset in that face
-    return MOJODDS_getMipMapTexture(miplevel, glfmt, faceBaseTex, _basetexlen, w, h, _tex, _texlen, _texw, _texh);
+    return MOJODDS_getMipMapTexture(miplevel, glfmt, faceBaseTex, w, h, _tex, _texlen, _texw, _texh);
 }
 
 
diff --git a/mojodds.h b/mojodds.h
index 711426e..3f9adee 100644
--- a/mojodds.h
+++ b/mojodds.h
@@ -35,14 +35,14 @@
                        unsigned int *_cubemapfacelen,
                        MOJODDS_textureType *_textureType);
 int MOJODDS_getMipMapTexture(unsigned int miplevel, unsigned int glfmt,
-                             const void*_basetex, const unsigned long _basetexlen,
+                             const void*_basetex,
                              unsigned int w, unsigned h,
                              const void **_tex, unsigned long *_texlen,
                              unsigned int *_texw, unsigned int *_texh);
 
 int MOJODDS_getCubeFace(MOJODDS_cubeFace cubeFace, unsigned int miplevel,
                         unsigned int glfmt, const void*_basetex,
-                        unsigned long _basetexlen, unsigned int w, unsigned h,
+                        unsigned long _cubemapfacelen, unsigned int w, unsigned h,
                         const void **_tex, unsigned long *_texlen,
                         unsigned int *_texw, unsigned int *_texh);
 

--
Gitblit v1.9.3