Turo Lamminen
2015-05-09 21fc60ebef3400137bd508e79d1c87214ca74c9b

Fix cubemap face offset calculation

5 files modified
29 ■■■■ changed files
afl-mojodds.c 4 ●●●● patch | view | raw | blame | history
ddsinfo.c 5 ●●●●● patch | view | raw | blame | history
glddstest.c 8 ●●●● patch | view | raw | blame | history
mojodds.c 8 ●●●● patch | view | raw | blame | history
mojodds.h 4 ●●●● patch | view | raw | blame | history
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;
                }
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;
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;
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);
}
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);