mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-24 10:40:46 +00:00
GL ES: Introduce ETC1 and (alpha-less) ETC2 texture compression, which improves performance by using less VRAM and requiring shorter data bus transfers.
git-svn-id: https://svn.eduke32.com/eduke32@5690 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
c942d9c4b9
commit
b3f2532bb5
6 changed files with 286 additions and 62 deletions
|
@ -25,11 +25,14 @@ LOCAL_CFLAGS = $(COMMONFLAGS)
|
||||||
LOCAL_CPPFLAGS = $(COMMONFLAGS)
|
LOCAL_CPPFLAGS = $(COMMONFLAGS)
|
||||||
|
|
||||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)/source $(LOCAL_PATH)/source/jmact $(LOCAL_PATH)/source/jaudiolib/include $(LOCAL_PATH)/source/enet/include $(LOCAL_PATH)/build/include
|
LOCAL_C_INCLUDES := $(LOCAL_PATH)/source $(LOCAL_PATH)/source/jmact $(LOCAL_PATH)/source/jaudiolib/include $(LOCAL_PATH)/source/enet/include $(LOCAL_PATH)/build/include
|
||||||
|
LOCAL_C_INCLUDES += $(LOCAL_PATH)/source/android/etcpak
|
||||||
LOCAL_C_INCLUDES += $(TOP_DIR)/ $(TOP_DIR)/Libraries/liboggvorbis/include $(TOP_DIR)/Libraries/ $(TOP_DIR)/Libraries/SDL2/include $(TOP_DIR)/Libraries/SDL2_mixer/include $(TOP_DIR)/Libraries/TinyXML/include $(TOP_DIR)/TouchControls $(TOP_DIR)/Libraries/libvpx/include
|
LOCAL_C_INCLUDES += $(TOP_DIR)/ $(TOP_DIR)/Libraries/liboggvorbis/include $(TOP_DIR)/Libraries/ $(TOP_DIR)/Libraries/SDL2/include $(TOP_DIR)/Libraries/SDL2_mixer/include $(TOP_DIR)/Libraries/TinyXML/include $(TOP_DIR)/TouchControls $(TOP_DIR)/Libraries/libvpx/include
|
||||||
|
|
||||||
ANDROID_SRC = \
|
ANDROID_SRC = \
|
||||||
build/src/jwzgles.c \
|
build/src/jwzgles.c \
|
||||||
source/android/android-jni.cpp \
|
source/android/android-jni.cpp \
|
||||||
|
source/android/etcpak/ProcessRGB.cpp \
|
||||||
|
source/android/etcpak/Tables.cpp \
|
||||||
source/android/in_android.c
|
source/android/in_android.c
|
||||||
|
|
||||||
BUILD_SRC = \
|
BUILD_SRC = \
|
||||||
|
|
|
@ -63,6 +63,9 @@ typedef unsigned int GLenum;
|
||||||
# define GL_RGBA4 0x8056
|
# define GL_RGBA4 0x8056
|
||||||
# define GL_RGB5_A1 0x8057
|
# define GL_RGB5_A1 0x8057
|
||||||
# define GL_RGB565 0x8D62
|
# define GL_RGB565 0x8D62
|
||||||
|
# define GL_COMPRESSED_RGB8_ETC2 0x9274
|
||||||
|
# define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
|
||||||
|
# define GL_COMPRESSED_RGBA8_ETC2_EAC 0x9278
|
||||||
#else
|
#else
|
||||||
# include "glext.h"
|
# include "glext.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -93,6 +96,9 @@ typedef unsigned int GLenum;
|
||||||
|
|
||||||
#define GL_TEXTURE_RECTANGLE 0x84F5
|
#define GL_TEXTURE_RECTANGLE 0x84F5
|
||||||
|
|
||||||
|
#ifndef GL_ETC1_RGB8_OES
|
||||||
|
# define GL_ETC1_RGB8_OES 0x8D64
|
||||||
|
#endif
|
||||||
|
|
||||||
// custom error checking
|
// custom error checking
|
||||||
|
|
||||||
|
|
|
@ -420,14 +420,14 @@ int32_t osdcmd_glinfo(const osdfuncparm_t *parm)
|
||||||
if (!glinfo.dumped)
|
if (!glinfo.dumped)
|
||||||
return OSDCMD_OK;
|
return OSDCMD_OK;
|
||||||
|
|
||||||
initprintf(" Maximum anisotropy: %.1f%s\n"
|
initprintf(
|
||||||
" BGRA textures: %s\n"
|
" BGRA textures: %s\n"
|
||||||
" Non-power-of-2 textures: %s\n"
|
" Non-power-of-2 textures: %s\n"
|
||||||
" Clamp-to-edge: %s\n"
|
" Clamp-to-edge: %s\n"
|
||||||
" Multitexturing: %s\n"
|
" Multitexturing: %s\n"
|
||||||
" Frame Buffer Objects: %s\n"
|
" Frame Buffer Objects: %s\n"
|
||||||
" Texure compression: %s\n"
|
|
||||||
#ifndef EDUKE32_GLES
|
#ifndef EDUKE32_GLES
|
||||||
|
" Texture compression: %s\n"
|
||||||
" Multisampling: %s\n"
|
" Multisampling: %s\n"
|
||||||
" NVIDIA multisample hint: %s\n"
|
" NVIDIA multisample hint: %s\n"
|
||||||
" ARBfp fragment programs: %s\n"
|
" ARBfp fragment programs: %s\n"
|
||||||
|
@ -442,16 +442,16 @@ int32_t osdcmd_glinfo(const osdfuncparm_t *parm)
|
||||||
" Debug Output: %s\n"
|
" Debug Output: %s\n"
|
||||||
" Buffer Storage: %s\n"
|
" Buffer Storage: %s\n"
|
||||||
#endif
|
#endif
|
||||||
|
" Maximum anisotropy: %.1f%s\n"
|
||||||
" Extensions:\n",
|
" Extensions:\n",
|
||||||
glinfo.maxanisotropy, glinfo.maxanisotropy>1.0?"":" (no anisotropic filtering)",
|
|
||||||
glinfo.bgra ? "supported": "not supported",
|
glinfo.bgra ? "supported": "not supported",
|
||||||
glinfo.texnpot ? "supported": "not supported",
|
glinfo.texnpot ? "supported": "not supported",
|
||||||
glinfo.clamptoedge ? "supported": "not supported",
|
glinfo.clamptoedge ? "supported": "not supported",
|
||||||
glinfo.multitex ? "supported": "not supported",
|
glinfo.multitex ? "supported": "not supported",
|
||||||
glinfo.fbos ? "supported": "not supported",
|
glinfo.fbos ? "supported": "not supported",
|
||||||
glinfo.texcompr ? "supported": "not supported"
|
|
||||||
#ifndef EDUKE32_GLES
|
#ifndef EDUKE32_GLES
|
||||||
,glinfo.multisample ? "supported": "not supported",
|
glinfo.texcompr ? "supported": "not supported",
|
||||||
|
glinfo.multisample ? "supported": "not supported",
|
||||||
glinfo.nvmultisamplehint ? "supported": "not supported",
|
glinfo.nvmultisamplehint ? "supported": "not supported",
|
||||||
glinfo.arbfp ? "supported": "not supported",
|
glinfo.arbfp ? "supported": "not supported",
|
||||||
glinfo.depthtex ? "supported": "not supported",
|
glinfo.depthtex ? "supported": "not supported",
|
||||||
|
@ -463,8 +463,9 @@ int32_t osdcmd_glinfo(const osdfuncparm_t *parm)
|
||||||
glinfo.occlusionqueries ? "supported": "not supported",
|
glinfo.occlusionqueries ? "supported": "not supported",
|
||||||
glinfo.glsl ? "supported": "not supported",
|
glinfo.glsl ? "supported": "not supported",
|
||||||
glinfo.debugoutput ? "supported": "not supported",
|
glinfo.debugoutput ? "supported": "not supported",
|
||||||
glinfo.bufferstorage ? "supported" : "not supported"
|
glinfo.bufferstorage ? "supported" : "not supported",
|
||||||
#endif
|
#endif
|
||||||
|
glinfo.maxanisotropy, glinfo.maxanisotropy>1.0?"":" (no anisotropic filtering)"
|
||||||
);
|
);
|
||||||
|
|
||||||
s = Bstrdup(glinfo.extensions);
|
s = Bstrdup(glinfo.extensions);
|
||||||
|
|
|
@ -87,7 +87,7 @@ int32_t glanisotropy = 1; // 0 = maximum supported by card
|
||||||
int32_t gltexfiltermode = TEXFILTER_OFF;
|
int32_t gltexfiltermode = TEXFILTER_OFF;
|
||||||
|
|
||||||
#ifdef EDUKE32_GLES
|
#ifdef EDUKE32_GLES
|
||||||
int32_t glusetexcompr = 0;
|
int32_t glusetexcompr = 2;
|
||||||
int32_t glusetexcache = 0, glusememcache = 0;
|
int32_t glusetexcache = 0, glusememcache = 0;
|
||||||
#else
|
#else
|
||||||
int32_t glusetexcompr = 1;
|
int32_t glusetexcompr = 1;
|
||||||
|
@ -648,12 +648,30 @@ static int32_t const *texfmt_rgb_mask = texfmts_rgb_mask;
|
||||||
static int32_t const *texfmt_rgb = texfmts_rgb;
|
static int32_t const *texfmt_rgb = texfmts_rgb;
|
||||||
static int32_t const *texfmt_rgba = texfmts_rgba;
|
static int32_t const *texfmt_rgba = texfmts_rgba;
|
||||||
|
|
||||||
static int32_t polymost_glTexImage2D_error(int32_t * intexfmt, int32_t const **intexfmt_master)
|
#if defined EDUKE32_IOS
|
||||||
|
static int32_t const comprtexfmts_rgb[] = { GL_ETC1_RGB8_OES, 0 };
|
||||||
|
static int32_t const comprtexfmts_rgba[] = { 0 };
|
||||||
|
static int32_t const comprtexfmts_rgb_mask[] = { 0 };
|
||||||
|
#else
|
||||||
|
static int32_t const comprtexfmts_rgb[] = { GL_COMPRESSED_RGB8_ETC2, GL_ETC1_RGB8_OES, 0 };
|
||||||
|
// TODO: waiting on etcpak support for ETC2 with alpha
|
||||||
|
static int32_t const comprtexfmts_rgba[] = { /*GL_COMPRESSED_RGBA8_ETC2_EAC,*/ 0 };
|
||||||
|
static int32_t const comprtexfmts_rgb_mask[] = { /*GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,*/ 0 };
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int32_t const *comprtexfmt_rgb_mask = comprtexfmts_rgb_mask;
|
||||||
|
static int32_t const *comprtexfmt_rgb = comprtexfmts_rgb;
|
||||||
|
static int32_t const *comprtexfmt_rgba = comprtexfmts_rgba;
|
||||||
|
|
||||||
|
static int32_t Polymost_glTexImage2D_Error(int32_t const ** const intexfmt_master)
|
||||||
{
|
{
|
||||||
GLenum err;
|
GLenum checkerr, err = GL_NO_ERROR;
|
||||||
while ((err = bglGetError()) != GL_NO_ERROR)
|
while ((checkerr = bglGetError()) != GL_NO_ERROR)
|
||||||
|
err = checkerr;
|
||||||
|
|
||||||
|
if (err != GL_NO_ERROR)
|
||||||
{
|
{
|
||||||
if ((*intexfmt = *++*intexfmt_master) == 0)
|
if (*++*intexfmt_master == 0)
|
||||||
{
|
{
|
||||||
initprintf("No texture formats supported (error 0x%X).\n", err);
|
initprintf("No texture formats supported (error 0x%X).\n", err);
|
||||||
Bfflush(NULL);
|
Bfflush(NULL);
|
||||||
|
@ -666,10 +684,168 @@ static int32_t polymost_glTexImage2D_error(int32_t * intexfmt, int32_t const **i
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int32_t Polymost_glCompressedTexImage2D_Error(int32_t const ** const comprtexfmt_master)
|
||||||
|
{
|
||||||
|
GLenum checkerr, err = GL_NO_ERROR;
|
||||||
|
while ((checkerr = bglGetError()) != GL_NO_ERROR)
|
||||||
|
err = checkerr;
|
||||||
|
|
||||||
|
if (err != GL_NO_ERROR)
|
||||||
|
{
|
||||||
|
if (*++*comprtexfmt_master == 0)
|
||||||
|
{
|
||||||
|
return 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
# endif
|
||||||
|
extern uint64_t ProcessRGB(uint8_t const *);
|
||||||
|
extern uint64_t ProcessRGB_ETC2(uint8_t const *);
|
||||||
|
# ifdef __cplusplus
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
# define polymost_glTexImage2D_error(...) (0)
|
# define Polymost_glTexImage2D_Error(...) (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void Polymost_SendTexToDriver(int32_t const doalloc,
|
||||||
|
vec2_t const siz,
|
||||||
|
int32_t const texfmt,
|
||||||
|
coltype const * const pic,
|
||||||
|
#if !defined EDUKE32_GLES
|
||||||
|
int32_t const intexfmt,
|
||||||
|
#else
|
||||||
|
int32_t const ** const intexfmt_master,
|
||||||
|
int32_t const ** const comprtexfmt_master,
|
||||||
|
# define intexfmt (**intexfmt_master)
|
||||||
|
int32_t const texcompress_ok,
|
||||||
|
#endif
|
||||||
|
int32_t const level)
|
||||||
|
{
|
||||||
|
BuildGLErrorCheck(); // XXX
|
||||||
|
|
||||||
|
#if defined EDUKE32_GLES
|
||||||
|
if (texcompress_ok && **comprtexfmt_master && (siz.x & 3) == 0 && (siz.y & 3) == 0)
|
||||||
|
{
|
||||||
|
size_t const picLength = siz.x * siz.y;
|
||||||
|
size_t const fourRows = siz.x << 2u;
|
||||||
|
GLsizei const imageSize = picLength >> 1u; // 4x4 pixels --> 8 bytes
|
||||||
|
uint8_t * const comprpic = (uint8_t *)Xaligned_alloc(8, imageSize);
|
||||||
|
int32_t err;
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
int32_t const comprtexfmt = **comprtexfmt_master;
|
||||||
|
|
||||||
|
switch (comprtexfmt)
|
||||||
|
{
|
||||||
|
case GL_ETC1_RGB8_OES:
|
||||||
|
{
|
||||||
|
coltype buf[4*4];
|
||||||
|
uint64_t * out = (uint64_t *)comprpic;
|
||||||
|
for (coltype const * row = pic, * const pic_end = pic + picLength; row < pic_end; row += fourRows)
|
||||||
|
for (coltype const * block = row, * const row_end = row + siz.x; block < row_end; block += 4)
|
||||||
|
{
|
||||||
|
buf[0] = block[0];
|
||||||
|
buf[1] = block[siz.x];
|
||||||
|
buf[2] = block[siz.x*2];
|
||||||
|
buf[3] = block[siz.x*3];
|
||||||
|
buf[4] = block[1];
|
||||||
|
buf[5] = block[siz.x+1];
|
||||||
|
buf[6] = block[siz.x*2+1];
|
||||||
|
buf[7] = block[siz.x*3+1];
|
||||||
|
buf[8] = block[2];
|
||||||
|
buf[9] = block[siz.x+2];
|
||||||
|
buf[10] = block[siz.x*2+2];
|
||||||
|
buf[11] = block[siz.x*3+2];
|
||||||
|
buf[12] = block[3];
|
||||||
|
buf[13] = block[siz.x+3];
|
||||||
|
buf[14] = block[siz.x*2+3];
|
||||||
|
buf[15] = block[siz.x*3+3];
|
||||||
|
|
||||||
|
*out++ = ProcessRGB((uint8_t const *)buf);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case GL_COMPRESSED_RGB8_ETC2:
|
||||||
|
{
|
||||||
|
coltype buf[4*4];
|
||||||
|
uint64_t * out = (uint64_t *)comprpic;
|
||||||
|
for (coltype const * row = pic, * const pic_end = pic + picLength; row < pic_end; row += fourRows)
|
||||||
|
for (coltype const * block = row, * const row_end = row + siz.x; block < row_end; block += 4)
|
||||||
|
{
|
||||||
|
buf[0] = block[0];
|
||||||
|
buf[1] = block[siz.x];
|
||||||
|
buf[2] = block[siz.x*2];
|
||||||
|
buf[3] = block[siz.x*3];
|
||||||
|
buf[4] = block[1];
|
||||||
|
buf[5] = block[siz.x+1];
|
||||||
|
buf[6] = block[siz.x*2+1];
|
||||||
|
buf[7] = block[siz.x*3+1];
|
||||||
|
buf[8] = block[2];
|
||||||
|
buf[9] = block[siz.x+2];
|
||||||
|
buf[10] = block[siz.x*2+2];
|
||||||
|
buf[11] = block[siz.x*3+2];
|
||||||
|
buf[12] = block[3];
|
||||||
|
buf[13] = block[siz.x+3];
|
||||||
|
buf[14] = block[siz.x*2+3];
|
||||||
|
buf[15] = block[siz.x*3+3];
|
||||||
|
|
||||||
|
*out++ = ProcessRGB_ETC2((uint8_t const *)buf);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
# if 0
|
||||||
|
case GL_COMPRESSED_RGBA8_ETC2_EAC:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
|
default:
|
||||||
|
EDUKE32_UNREACHABLE_SECTION(break);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (doalloc & 1)
|
||||||
|
jwzgles_glCompressedTexImage2D(GL_TEXTURE_2D, level, comprtexfmt, siz.x,siz.y, 0, imageSize, comprpic);
|
||||||
|
else
|
||||||
|
jwzgles_glCompressedTexSubImage2D(GL_TEXTURE_2D, level, 0,0, siz.x,siz.y, comprtexfmt, imageSize, comprpic);
|
||||||
|
}
|
||||||
|
while ((err = Polymost_glCompressedTexImage2D_Error(comprtexfmt_master)) == 1);
|
||||||
|
|
||||||
|
Baligned_free(comprpic);
|
||||||
|
|
||||||
|
if (err == 0)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (doalloc & 1)
|
||||||
|
bglTexImage2D(GL_TEXTURE_2D, level, intexfmt, siz.x,siz.y, 0, texfmt, GL_UNSIGNED_BYTE, pic);
|
||||||
|
else
|
||||||
|
bglTexSubImage2D(GL_TEXTURE_2D, level, 0,0, siz.x,siz.y, texfmt, GL_UNSIGNED_BYTE, pic);
|
||||||
|
}
|
||||||
|
while (Polymost_glTexImage2D_Error(intexfmt_master));
|
||||||
|
}
|
||||||
|
|
||||||
void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
||||||
coltype *pic, vec2_t tsiz, int32_t dameth)
|
coltype *pic, vec2_t tsiz, int32_t dameth)
|
||||||
{
|
{
|
||||||
|
@ -678,12 +854,11 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
||||||
const int nodownsize = !!(dameth & DAMETH_NODOWNSIZE) || artimmunity;
|
const int nodownsize = !!(dameth & DAMETH_NODOWNSIZE) || artimmunity;
|
||||||
const int nomiptransfix = !!(dameth & DAMETH_NOFIX);
|
const int nomiptransfix = !!(dameth & DAMETH_NOFIX);
|
||||||
const int hasalpha = !!(dameth & DAMETH_HASALPHA) && (dameth & DAMETH_MASKPROPS) != DAMETH_NOMASK;
|
const int hasalpha = !!(dameth & DAMETH_HASALPHA) && (dameth & DAMETH_MASKPROPS) != DAMETH_NOMASK;
|
||||||
|
const int texcompress_ok = !(dameth & DAMETH_NOTEXCOMPRESS) && (glusetexcompr == 2 || (glusetexcompr && !artimmunity));
|
||||||
|
|
||||||
#if !defined EDUKE32_GLES
|
#if !defined EDUKE32_GLES
|
||||||
const int texcompress_ok = glinfo.texcompr && !(dameth & DAMETH_NOTEXCOMPRESS) && (glusetexcompr == 2 || (glusetexcompr && !artimmunity));
|
|
||||||
|
|
||||||
int32_t intexfmt;
|
int32_t intexfmt;
|
||||||
if (texcompress_ok)
|
if (texcompress_ok && glinfo.texcompr)
|
||||||
intexfmt = hasalpha ? GL_COMPRESSED_RGBA_ARB : GL_COMPRESSED_RGB_ARB;
|
intexfmt = hasalpha ? GL_COMPRESSED_RGBA_ARB : GL_COMPRESSED_RGB_ARB;
|
||||||
else
|
else
|
||||||
intexfmt = hasalpha ? GL_RGBA : GL_RGB;
|
intexfmt = hasalpha ? GL_RGBA : GL_RGB;
|
||||||
|
@ -691,7 +866,7 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
||||||
const int onebitalpha = !!(dameth & DAMETH_ONEBITALPHA);
|
const int onebitalpha = !!(dameth & DAMETH_ONEBITALPHA);
|
||||||
|
|
||||||
int32_t const ** intexfmt_master = hasalpha ? (onebitalpha ? &texfmt_rgb_mask : &texfmt_rgba) : &texfmt_rgb;
|
int32_t const ** intexfmt_master = hasalpha ? (onebitalpha ? &texfmt_rgb_mask : &texfmt_rgba) : &texfmt_rgb;
|
||||||
int32_t intexfmt = **intexfmt_master;
|
int32_t const ** comprtexfmt_master = hasalpha ? (onebitalpha ? &comprtexfmt_rgb_mask : &comprtexfmt_rgba) : &comprtexfmt_rgb;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dameth &= ~DAMETH_UPLOADTEXTURE_MASK;
|
dameth &= ~DAMETH_UPLOADTEXTURE_MASK;
|
||||||
|
@ -723,17 +898,15 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
||||||
miplevel = r_downsize;
|
miplevel = r_downsize;
|
||||||
|
|
||||||
if (!miplevel)
|
if (!miplevel)
|
||||||
{
|
Polymost_SendTexToDriver(doalloc, siz, texfmt, pic,
|
||||||
BuildGLErrorCheck(); // XXX
|
#if !defined EDUKE32_GLES
|
||||||
do
|
intexfmt,
|
||||||
{
|
#else
|
||||||
if (doalloc&1)
|
intexfmt_master,
|
||||||
bglTexImage2D(GL_TEXTURE_2D,0,intexfmt,siz.x,siz.y,0,texfmt,GL_UNSIGNED_BYTE,pic); //loading 1st time
|
comprtexfmt_master,
|
||||||
else
|
texcompress_ok,
|
||||||
bglTexSubImage2D(GL_TEXTURE_2D,0,0,0,siz.x,siz.y,texfmt,GL_UNSIGNED_BYTE,pic); //overwrite old texture
|
#endif
|
||||||
}
|
0);
|
||||||
while (polymost_glTexImage2D_error(&intexfmt, intexfmt_master));
|
|
||||||
}
|
|
||||||
|
|
||||||
vec2_t siz2 = siz;
|
vec2_t siz2 = siz;
|
||||||
|
|
||||||
|
@ -785,17 +958,15 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (j >= miplevel)
|
if (j >= miplevel)
|
||||||
{
|
Polymost_SendTexToDriver(doalloc, siz3, texfmt, pic,
|
||||||
BuildGLErrorCheck(); // XXX
|
#if !defined EDUKE32_GLES
|
||||||
do
|
intexfmt,
|
||||||
{
|
#else
|
||||||
if (doalloc & 1) // loading 1st time
|
intexfmt_master,
|
||||||
bglTexImage2D(GL_TEXTURE_2D, j - miplevel, intexfmt, siz3.x, siz3.y, 0, texfmt, GL_UNSIGNED_BYTE, pic);
|
comprtexfmt_master,
|
||||||
else // overwrite old texture
|
texcompress_ok,
|
||||||
bglTexSubImage2D(GL_TEXTURE_2D, j - miplevel, 0, 0, siz3.x, siz3.y, texfmt, GL_UNSIGNED_BYTE, pic);
|
#endif
|
||||||
}
|
j - miplevel);
|
||||||
while (polymost_glTexImage2D_error(&intexfmt, intexfmt_master));
|
|
||||||
}
|
|
||||||
|
|
||||||
siz2 = siz3;
|
siz2 = siz3;
|
||||||
}
|
}
|
||||||
|
@ -5789,8 +5960,8 @@ void polymost_initosdfuncs(void)
|
||||||
{ "r_polygonmode","debugging feature",(void *) &r_polygonmode, CVAR_INT | CVAR_NOSAVE, 0, 3 },
|
{ "r_polygonmode","debugging feature",(void *) &r_polygonmode, CVAR_INT | CVAR_NOSAVE, 0, 3 },
|
||||||
{ "r_texcache","enable/disable OpenGL compressed texture cache",(void *) &glusetexcache, CVAR_INT, 0, 2 },
|
{ "r_texcache","enable/disable OpenGL compressed texture cache",(void *) &glusetexcache, CVAR_INT, 0, 2 },
|
||||||
{ "r_memcache","enable/disable texture cache memory cache",(void *) &glusememcache, CVAR_BOOL, 0, 1 },
|
{ "r_memcache","enable/disable texture cache memory cache",(void *) &glusememcache, CVAR_BOOL, 0, 1 },
|
||||||
{ "r_texcompr","enable/disable OpenGL texture compression: 0: off 1: hightile only 2: ART and hightile",(void *) &glusetexcompr, CVAR_INT, 0, 2 },
|
|
||||||
#endif
|
#endif
|
||||||
|
{ "r_texcompr","enable/disable OpenGL texture compression: 0: off 1: hightile only 2: ART and hightile",(void *) &glusetexcompr, CVAR_INT, 0, 2 },
|
||||||
|
|
||||||
#ifdef REDBLUEMODE
|
#ifdef REDBLUEMODE
|
||||||
{ "r_redbluemode","enable/disable experimental OpenGL red-blue glasses mode",(void *) &glredbluemode, CVAR_BOOL, 0, 1 },
|
{ "r_redbluemode","enable/disable experimental OpenGL red-blue glasses mode",(void *) &glredbluemode, CVAR_BOOL, 0, 1 },
|
||||||
|
|
|
@ -1303,13 +1303,11 @@ void sdlayer_setvideomode_opengl(void)
|
||||||
|
|
||||||
glinfo.maxanisotropy = 1.0;
|
glinfo.maxanisotropy = 1.0;
|
||||||
glinfo.bgra = 0;
|
glinfo.bgra = 0;
|
||||||
glinfo.texcompr = 0;
|
|
||||||
glinfo.clamptoedge = 1;
|
glinfo.clamptoedge = 1;
|
||||||
glinfo.multitex = 1;
|
glinfo.multitex = 1;
|
||||||
|
|
||||||
// process the extensions string and flag stuff we recognize
|
// process the extensions string and flag stuff we recognize
|
||||||
|
|
||||||
glinfo.texcompr = !!Bstrstr(glinfo.extensions, "GL_ARB_texture_compression") && Bstrcmp(glinfo.vendor, "ATI Technologies Inc.");
|
|
||||||
glinfo.texnpot = !!Bstrstr(glinfo.extensions, "GL_ARB_texture_non_power_of_two") || !!Bstrstr(glinfo.extensions, "GL_OES_texture_npot");
|
glinfo.texnpot = !!Bstrstr(glinfo.extensions, "GL_ARB_texture_non_power_of_two") || !!Bstrstr(glinfo.extensions, "GL_OES_texture_npot");
|
||||||
glinfo.multisample = !!Bstrstr(glinfo.extensions, "GL_ARB_multisample");
|
glinfo.multisample = !!Bstrstr(glinfo.extensions, "GL_ARB_multisample");
|
||||||
glinfo.nvmultisamplehint = !!Bstrstr(glinfo.extensions, "GL_NV_multisample_filter_hint");
|
glinfo.nvmultisamplehint = !!Bstrstr(glinfo.extensions, "GL_NV_multisample_filter_hint");
|
||||||
|
@ -1318,7 +1316,8 @@ void sdlayer_setvideomode_opengl(void)
|
||||||
glinfo.shadow = !!Bstrstr(glinfo.extensions, "GL_ARB_shadow");
|
glinfo.shadow = !!Bstrstr(glinfo.extensions, "GL_ARB_shadow");
|
||||||
glinfo.fbos = !!Bstrstr(glinfo.extensions, "GL_EXT_framebuffer_object") || !!Bstrstr(glinfo.extensions, "GL_OES_framebuffer_object");
|
glinfo.fbos = !!Bstrstr(glinfo.extensions, "GL_EXT_framebuffer_object") || !!Bstrstr(glinfo.extensions, "GL_OES_framebuffer_object");
|
||||||
|
|
||||||
#ifndef __ANDROID__
|
#if !defined EDUKE32_GLES
|
||||||
|
glinfo.texcompr = !!Bstrstr(glinfo.extensions, "GL_ARB_texture_compression") && Bstrcmp(glinfo.vendor, "ATI Technologies Inc.");
|
||||||
# ifdef DYNAMIC_GLEXT
|
# ifdef DYNAMIC_GLEXT
|
||||||
if (glinfo.texcompr && (!bglCompressedTexImage2DARB || !bglGetCompressedTexImageARB))
|
if (glinfo.texcompr && (!bglCompressedTexImage2DARB || !bglGetCompressedTexImageARB))
|
||||||
{
|
{
|
||||||
|
@ -1353,6 +1352,9 @@ void sdlayer_setvideomode_opengl(void)
|
||||||
initprintf("3dfx card detected: OpenGL fog disabled\n");
|
initprintf("3dfx card detected: OpenGL fog disabled\n");
|
||||||
warnonce |= 1;
|
warnonce |= 1;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
// don't bother checking because ETC2 et al. are not listed in extensions anyway
|
||||||
|
glinfo.texcompr = 1; // !!Bstrstr(glinfo.extensions, "GL_OES_compressed_ETC1_RGB8_texture");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// if (Bstrstr(glinfo.extensions, "GL_EXT_texture_filter_anisotropic"))
|
// if (Bstrstr(glinfo.extensions, "GL_EXT_texture_filter_anisotropic"))
|
||||||
|
|
|
@ -409,6 +409,14 @@
|
||||||
2038AEA01A8F12B60093B7B2 /* animsounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 2038AE9E1A8F12B60093B7B2 /* animsounds.c */; };
|
2038AEA01A8F12B60093B7B2 /* animsounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 2038AE9E1A8F12B60093B7B2 /* animsounds.c */; };
|
||||||
2038AEA11A8F12B60093B7B2 /* animsounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 2038AE9E1A8F12B60093B7B2 /* animsounds.c */; };
|
2038AEA11A8F12B60093B7B2 /* animsounds.c in Sources */ = {isa = PBXBuildFile; fileRef = 2038AE9E1A8F12B60093B7B2 /* animsounds.c */; };
|
||||||
2038AEA31A8F137E0093B7B2 /* DUKE.RTS in Resources */ = {isa = PBXBuildFile; fileRef = 2038AEA21A8F137E0093B7B2 /* DUKE.RTS */; };
|
2038AEA31A8F137E0093B7B2 /* DUKE.RTS in Resources */ = {isa = PBXBuildFile; fileRef = 2038AEA21A8F137E0093B7B2 /* DUKE.RTS */; };
|
||||||
|
204D6B5F1C98973F001FA505 /* Math.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 204D6B571C98973F001FA505 /* Math.hpp */; };
|
||||||
|
204D6B601C98973F001FA505 /* ProcessCommon.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 204D6B581C98973F001FA505 /* ProcessCommon.hpp */; };
|
||||||
|
204D6B611C98973F001FA505 /* ProcessRGB.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 204D6B591C98973F001FA505 /* ProcessRGB.cpp */; };
|
||||||
|
204D6B621C98973F001FA505 /* ProcessRGB.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 204D6B5A1C98973F001FA505 /* ProcessRGB.hpp */; };
|
||||||
|
204D6B631C98973F001FA505 /* Tables.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 204D6B5B1C98973F001FA505 /* Tables.cpp */; };
|
||||||
|
204D6B641C98973F001FA505 /* Tables.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 204D6B5C1C98973F001FA505 /* Tables.hpp */; };
|
||||||
|
204D6B651C98973F001FA505 /* Types.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 204D6B5D1C98973F001FA505 /* Types.hpp */; };
|
||||||
|
204D6B661C98973F001FA505 /* Vector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 204D6B5E1C98973F001FA505 /* Vector.hpp */; };
|
||||||
206B3A081B074F3800E5DBD0 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = 206B3A061B074F3000E5DBD0 /* jwzglesI.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
206B3A081B074F3800E5DBD0 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = 206B3A061B074F3000E5DBD0 /* jwzglesI.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
206B3A0A1B074F4300E5DBD0 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = 206B3A051B074F3000E5DBD0 /* jwzgles.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
206B3A0A1B074F4300E5DBD0 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = 206B3A051B074F3000E5DBD0 /* jwzgles.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
206B3A0C1B074F6400E5DBD0 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = 206B3A0B1B074F6400E5DBD0 /* jwzgles.c */; };
|
206B3A0C1B074F6400E5DBD0 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = 206B3A0B1B074F6400E5DBD0 /* jwzgles.c */; };
|
||||||
|
@ -786,6 +794,14 @@
|
||||||
2038AE9F1A8F12B60093B7B2 /* animsounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = animsounds.h; path = ../../source/animsounds.h; sourceTree = SOURCE_ROOT; };
|
2038AE9F1A8F12B60093B7B2 /* animsounds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = animsounds.h; path = ../../source/animsounds.h; sourceTree = SOURCE_ROOT; };
|
||||||
2038AEA21A8F137E0093B7B2 /* DUKE.RTS */ = {isa = PBXFileReference; lastKnownFileType = file; name = DUKE.RTS; path = ../../../../../DUKE.RTS; sourceTree = SOURCE_ROOT; };
|
2038AEA21A8F137E0093B7B2 /* DUKE.RTS */ = {isa = PBXFileReference; lastKnownFileType = file; name = DUKE.RTS; path = ../../../../../DUKE.RTS; sourceTree = SOURCE_ROOT; };
|
||||||
204D6B4F1C9896B0001FA505 /* inv.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = inv.h; path = ../../source/inv.h; sourceTree = SOURCE_ROOT; };
|
204D6B4F1C9896B0001FA505 /* inv.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; name = inv.h; path = ../../source/inv.h; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B571C98973F001FA505 /* Math.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Math.hpp; path = ../../source/android/etcpak/Math.hpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B581C98973F001FA505 /* ProcessCommon.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ProcessCommon.hpp; path = ../../source/android/etcpak/ProcessCommon.hpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B591C98973F001FA505 /* ProcessRGB.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ProcessRGB.cpp; path = ../../source/android/etcpak/ProcessRGB.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B5A1C98973F001FA505 /* ProcessRGB.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ProcessRGB.hpp; path = ../../source/android/etcpak/ProcessRGB.hpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B5B1C98973F001FA505 /* Tables.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Tables.cpp; path = ../../source/android/etcpak/Tables.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B5C1C98973F001FA505 /* Tables.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Tables.hpp; path = ../../source/android/etcpak/Tables.hpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B5D1C98973F001FA505 /* Types.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Types.hpp; path = ../../source/android/etcpak/Types.hpp; sourceTree = SOURCE_ROOT; };
|
||||||
|
204D6B5E1C98973F001FA505 /* Vector.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Vector.hpp; path = ../../source/android/etcpak/Vector.hpp; sourceTree = SOURCE_ROOT; };
|
||||||
206B3A051B074F3000E5DBD0 /* jwzgles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = ../../build/include/jwzgles.h; sourceTree = SOURCE_ROOT; };
|
206B3A051B074F3000E5DBD0 /* jwzgles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = ../../build/include/jwzgles.h; sourceTree = SOURCE_ROOT; };
|
||||||
206B3A061B074F3000E5DBD0 /* jwzglesI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = ../../build/include/jwzglesI.h; sourceTree = SOURCE_ROOT; };
|
206B3A061B074F3000E5DBD0 /* jwzglesI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = ../../build/include/jwzglesI.h; sourceTree = SOURCE_ROOT; };
|
||||||
206B3A0B1B074F6400E5DBD0 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = ../../build/src/jwzgles.c; sourceTree = SOURCE_ROOT; };
|
206B3A0B1B074F6400E5DBD0 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = ../../build/src/jwzgles.c; sourceTree = SOURCE_ROOT; };
|
||||||
|
@ -1268,6 +1284,7 @@
|
||||||
0008E8D619F1AC530091588D /* src */ = {
|
0008E8D619F1AC530091588D /* src */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
204D6B541C98973F001FA505 /* etcpak */,
|
||||||
00970E3319F207F000873EB9 /* a-c.c */,
|
00970E3319F207F000873EB9 /* a-c.c */,
|
||||||
20C2146E1B02C1D800917E58 /* build.png */,
|
20C2146E1B02C1D800917E58 /* build.png */,
|
||||||
0008EA2419F1AF220091588D /* build.osxmain.nib */,
|
0008EA2419F1AF220091588D /* build.osxmain.nib */,
|
||||||
|
@ -1406,6 +1423,22 @@
|
||||||
name = Libraries;
|
name = Libraries;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
204D6B541C98973F001FA505 /* etcpak */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
204D6B571C98973F001FA505 /* Math.hpp */,
|
||||||
|
204D6B581C98973F001FA505 /* ProcessCommon.hpp */,
|
||||||
|
204D6B591C98973F001FA505 /* ProcessRGB.cpp */,
|
||||||
|
204D6B5A1C98973F001FA505 /* ProcessRGB.hpp */,
|
||||||
|
204D6B5B1C98973F001FA505 /* Tables.cpp */,
|
||||||
|
204D6B5C1C98973F001FA505 /* Tables.hpp */,
|
||||||
|
204D6B5D1C98973F001FA505 /* Types.hpp */,
|
||||||
|
204D6B5E1C98973F001FA505 /* Vector.hpp */,
|
||||||
|
);
|
||||||
|
name = etcpak;
|
||||||
|
path = ../../source/android/etcpak;
|
||||||
|
sourceTree = SOURCE_ROOT;
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXHeadersBuildPhase section */
|
/* Begin PBXHeadersBuildPhase section */
|
||||||
|
@ -1537,13 +1570,17 @@
|
||||||
001382C019F361B60007DA6C /* SDLMain.h in Headers */,
|
001382C019F361B60007DA6C /* SDLMain.h in Headers */,
|
||||||
001382C119F361B60007DA6C /* pragmas.h in Headers */,
|
001382C119F361B60007DA6C /* pragmas.h in Headers */,
|
||||||
001382C219F361B60007DA6C /* sdlappicon.h in Headers */,
|
001382C219F361B60007DA6C /* sdlappicon.h in Headers */,
|
||||||
|
204D6B661C98973F001FA505 /* Vector.hpp in Headers */,
|
||||||
206B3A0A1B074F4300E5DBD0 /* jwzgles.h in Headers */,
|
206B3A0A1B074F4300E5DBD0 /* jwzgles.h in Headers */,
|
||||||
001382C319F361B60007DA6C /* tracker.hpp in Headers */,
|
001382C319F361B60007DA6C /* tracker.hpp in Headers */,
|
||||||
|
204D6B651C98973F001FA505 /* Types.hpp in Headers */,
|
||||||
|
204D6B5F1C98973F001FA505 /* Math.hpp in Headers */,
|
||||||
001382C419F361B60007DA6C /* hightile.h in Headers */,
|
001382C419F361B60007DA6C /* hightile.h in Headers */,
|
||||||
001382C519F361B60007DA6C /* glbuild.h in Headers */,
|
001382C519F361B60007DA6C /* glbuild.h in Headers */,
|
||||||
001382C619F361B60007DA6C /* tracker_operator.hpp in Headers */,
|
001382C619F361B60007DA6C /* tracker_operator.hpp in Headers */,
|
||||||
001382C719F361B60007DA6C /* rawinput.h in Headers */,
|
001382C719F361B60007DA6C /* rawinput.h in Headers */,
|
||||||
001382C819F361B60007DA6C /* common.h in Headers */,
|
001382C819F361B60007DA6C /* common.h in Headers */,
|
||||||
|
204D6B621C98973F001FA505 /* ProcessRGB.hpp in Headers */,
|
||||||
001382C919F361B60007DA6C /* pragmas_arm.h in Headers */,
|
001382C919F361B60007DA6C /* pragmas_arm.h in Headers */,
|
||||||
001382CA19F361B60007DA6C /* dxtfilter.h in Headers */,
|
001382CA19F361B60007DA6C /* dxtfilter.h in Headers */,
|
||||||
001382CB19F361B60007DA6C /* kplib.h in Headers */,
|
001382CB19F361B60007DA6C /* kplib.h in Headers */,
|
||||||
|
@ -1562,7 +1599,9 @@
|
||||||
001382D719F361B60007DA6C /* polymost.h in Headers */,
|
001382D719F361B60007DA6C /* polymost.h in Headers */,
|
||||||
001382D819F361B60007DA6C /* sdlayer.h in Headers */,
|
001382D819F361B60007DA6C /* sdlayer.h in Headers */,
|
||||||
2038AE971A8F122D0093B7B2 /* libdivide.h in Headers */,
|
2038AE971A8F122D0093B7B2 /* libdivide.h in Headers */,
|
||||||
|
204D6B601C98973F001FA505 /* ProcessCommon.hpp in Headers */,
|
||||||
001382D919F361B60007DA6C /* cache1d.h in Headers */,
|
001382D919F361B60007DA6C /* cache1d.h in Headers */,
|
||||||
|
204D6B641C98973F001FA505 /* Tables.hpp in Headers */,
|
||||||
001382DA19F361B60007DA6C /* mmulti.h in Headers */,
|
001382DA19F361B60007DA6C /* mmulti.h in Headers */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -2096,8 +2135,10 @@
|
||||||
0013829C19F361B60007DA6C /* a-c.c in Sources */,
|
0013829C19F361B60007DA6C /* a-c.c in Sources */,
|
||||||
2038AE9D1A8F126C0093B7B2 /* md4.c in Sources */,
|
2038AE9D1A8F126C0093B7B2 /* md4.c in Sources */,
|
||||||
0013829D19F361B60007DA6C /* textfont.c in Sources */,
|
0013829D19F361B60007DA6C /* textfont.c in Sources */,
|
||||||
|
204D6B611C98973F001FA505 /* ProcessRGB.cpp in Sources */,
|
||||||
0013829E19F361B60007DA6C /* mdsprite.c in Sources */,
|
0013829E19F361B60007DA6C /* mdsprite.c in Sources */,
|
||||||
0013829F19F361B60007DA6C /* defs.c in Sources */,
|
0013829F19F361B60007DA6C /* defs.c in Sources */,
|
||||||
|
204D6B631C98973F001FA505 /* Tables.cpp in Sources */,
|
||||||
001382A019F361B60007DA6C /* baselayer.c in Sources */,
|
001382A019F361B60007DA6C /* baselayer.c in Sources */,
|
||||||
001382A119F361B60007DA6C /* xxhash.c in Sources */,
|
001382A119F361B60007DA6C /* xxhash.c in Sources */,
|
||||||
001382A219F361B60007DA6C /* scriptfile.c in Sources */,
|
001382A219F361B60007DA6C /* scriptfile.c in Sources */,
|
||||||
|
@ -2230,7 +2271,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
||||||
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -2351,7 +2392,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
||||||
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -2466,7 +2507,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
||||||
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -2587,7 +2628,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER = YES;
|
||||||
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -2699,7 +2740,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -2809,7 +2850,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -2913,7 +2954,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3020,7 +3061,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3121,7 +3162,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3227,7 +3268,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3359,7 +3400,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3466,7 +3507,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3568,7 +3609,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3684,7 +3725,7 @@
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3794,7 +3835,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -3906,7 +3947,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -4012,7 +4053,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -4121,7 +4162,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -4224,7 +4265,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
@ -4333,7 +4374,7 @@
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++98";
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++11";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = NO;
|
CLANG_ENABLE_MODULES = NO;
|
||||||
CLANG_ENABLE_OBJC_ARC = NO;
|
CLANG_ENABLE_OBJC_ARC = NO;
|
||||||
|
|
Loading…
Reference in a new issue