diff --git a/engine/Makefile b/engine/Makefile index 9f8ecdaf2..191ef9931 100644 --- a/engine/Makefile +++ b/engine/Makefile @@ -1077,7 +1077,7 @@ else M_LDFLAGS=$(MLDFLAGS) $(IMAGELDFLAGS) `$(SDLCONFIG) --libs` SV_LDFLAGS=`$(SDLCONFIG) --libs` endif -GL_CFLAGS=-DFTE_SDL $(GLCFLAGS) -DMLTITHREAD `$(SDLCONFIG) --cflags` +GL_CFLAGS=-DFTE_SDL $(GLCFLAGS) -DMULTITHREAD `$(SDLCONFIG) --cflags` GLB_DIR=gl_$(FTE_FULLTARGET) GLCL_DIR=glcl_$(FTE_FULLTARGET) SV_DIR?=sv_$(FTE_FULLTARGET) @@ -1101,7 +1101,7 @@ MCL_DIR=mcl_$(FTE_FULLTARGET) M_EXE_NAME=../$(EXE_NAME)-$(FTE_FULLTARGET) MCL_EXE_NAME=../$(EXE_NAME)-cl$(FTE_FULLTARGET) MCL_OBJS=$(D3DGL_OBJS) $(GLQUAKE_OBJS) $(SOFTWARE_OBJS) $(BOTLIB_OBJS) gl_vidsdl.o snd_sdl.o cd_sdl.o sys_sdl.o in_sdl.o -M_CFLAGS=-DFTE_SDL $(VKCFLAGS) $(GLCFLAGS) -DMULTITHRED `$(SDLCONFIG) --cflags` +M_CFLAGS=-DFTE_SDL $(VKCFLAGS) $(GLCFLAGS) -DMULTITHREAD `$(SDLCONFIG) --cflags` QCC_DIR=qcc$(BITS) diff --git a/engine/client/render.h b/engine/client/render.h index 0a8643f58..cb86422e1 100644 --- a/engine/client/render.h +++ b/engine/client/render.h @@ -43,8 +43,12 @@ static const texid_t r_nulltex = NULL; //desktop-gl will generally cope with ints, but expect a performance hit from that with old gpus (so we don't bother) //vulkan+dx10 can cope with ints, but might be 24bit //either way, all renderers in the same build need to use the same thing. -#if (defined(GLQUAKE) && defined(HAVE_LEGACY)) || defined(MINIMAL) || defined(D3D8QUAKE) || defined(D3D9QUAKE) || defined(ANDROID) || defined(FTE_TARGET_WEB) - #define sizeof_index_t 2 +#ifndef sizeof_index_t + #ifdef VERTEXINDEXBYTES //maybe set in config_*.h + #define sizeof_index_t VERTEXINDEXBYTES + #elif (defined(GLQUAKE) && defined(HAVE_LEGACY)) || defined(MINIMAL) || defined(D3D8QUAKE) || defined(D3D9QUAKE) || defined(ANDROID) || defined(FTE_TARGET_WEB) + #define sizeof_index_t 2 + #endif #endif #if sizeof_index_t == 2 #define GL_INDEX_TYPE GL_UNSIGNED_SHORT @@ -54,6 +58,8 @@ static const texid_t r_nulltex = NULL; typedef unsigned short index_t; #define MAX_INDICIES 0xffffu #else + #undef sizeof_index_t + #define sizeof_index_t 4 #define GL_INDEX_TYPE GL_UNSIGNED_INT #define D3DFMT_QINDEX D3DFMT_INDEX32 #define DXGI_FORMAT_INDEX_UINT DXGI_FORMAT_R32_UINT diff --git a/engine/common/com_mesh.h b/engine/common/com_mesh.h index dfcf0138b..9a27d1da6 100644 --- a/engine/common/com_mesh.h +++ b/engine/common/com_mesh.h @@ -264,7 +264,11 @@ typedef struct modplugfuncs_s void (*RenderDynamicLightmaps) (struct msurface_s *surf); entity_t *(*NewSceneEntity) (void); void (*EndSubmodelLoad)(struct model_s *submod, int modelloadstate); -#define plugmodfuncs_name "Models" +#if sizeof_index_t==2 + #define plugmodfuncs_name "Models" +#else + #define plugmodfuncs_name "Models_IDX" STRINGIFY(sizeof_index_t) +#endif } plugmodfuncs_t; #define MODPLUGFUNCS_VERSION 2 diff --git a/engine/common/config_freecs.h b/engine/common/config_freecs.h index f5ba1bd36..16013a7a7 100644 --- a/engine/common/config_freecs.h +++ b/engine/common/config_freecs.h @@ -157,6 +157,7 @@ #undef HAVE_SPEECHTOTEXT //windows speech-to-text thing //FIXME: Stuff that Spike has added that Eukara needs to decide whether to keep or not. +#define VERTEXINDEXBYTES 2 //16bit indexes work everywhere but may break some file types, 32bit indexes are optional in gles<=2 and d3d<=9 and take more memory/copying but allow for bigger batches/models. Plugins need to be compiled the same way so this is no longer set per-renderer. #define HAVE_OPUS //#define HAVE_SPEEX //#define IMAGEFMT_HDR diff --git a/engine/common/config_fteqw.h b/engine/common/config_fteqw.h index 1fe6d5d64..bcf8bae84 100644 --- a/engine/common/config_fteqw.h +++ b/engine/common/config_fteqw.h @@ -45,6 +45,7 @@ #define AVAIL_DINPUT #define SIDEVIEWS 4 //enable secondary/reverse views. #define MAX_SPLITS 4u +#define VERTEXINDEXBYTES 2 //16bit indexes work everywhere but may break some file types, 32bit indexes are optional in gles<=2 and d3d<=9 and take more memory/copying but allow for bigger batches/models. Plugins need to be compiled the same way so this is no longer set per-renderer. #define TEXTEDITOR //my funky text editor! its awesome! #define PLUGINS //support for external plugins (like huds or fancy menus or whatever) #define USE_SQLITE //sql-database-as-file support diff --git a/engine/common/config_minimal.h b/engine/common/config_minimal.h index 4af5e54c0..952c5b34b 100644 --- a/engine/common/config_minimal.h +++ b/engine/common/config_minimal.h @@ -47,6 +47,7 @@ #define AVAIL_DINPUT //#define SIDEVIEWS 4 //enable secondary/reverse views. //#define MAX_SPLITS 4u +#define VERTEXINDEXBYTES 2 //16bit indexes work everywhere but may break some file types, 32bit indexes are optional in gles<=2 and d3d<=9 and take more memory/copying but allow for bigger batches/models. Plugins need to be compiled the same way so this is no longer set per-renderer. //#define TEXTEDITOR //my funky text editor! its awesome! //#define PLUGINS //support for external plugins (like huds or fancy menus or whatever) //#define USE_SQLITE //sql-database-as-file support diff --git a/engine/common/config_nocompat.h b/engine/common/config_nocompat.h index e1de2f1db..6b7f9f654 100644 --- a/engine/common/config_nocompat.h +++ b/engine/common/config_nocompat.h @@ -45,6 +45,7 @@ #define AVAIL_DINPUT //#define SIDEVIEWS 4 //enable secondary/reverse views. #define MAX_SPLITS 4u +#define VERTEXINDEXBYTES 2 //16bit indexes work everywhere but may break some file types, 32bit indexes are optional in gles<=2 and d3d<=9 and take more memory/copying but allow for bigger batches/models. Plugins need to be compiled the same way so this is no longer set per-renderer. //#define TEXTEDITOR //my funky text editor! its awesome! #define PLUGINS //support for external plugins (like huds or fancy menus or whatever) //#define USE_SQLITE //sql-database-as-file support diff --git a/engine/common/config_wastes.h b/engine/common/config_wastes.h index 421c0d902..7efcddd0c 100644 --- a/engine/common/config_wastes.h +++ b/engine/common/config_wastes.h @@ -105,6 +105,7 @@ #undef MAP_PROC #undef Q2BSPS #define RFBSPS +#define VERTEXINDEXBYTES 2 //16bit indexes work everywhere but may break some file types, 32bit indexes are optional in gles<=2 and d3d<=9 and take more memory/copying but allow for bigger batches/models. Plugins need to be compiled the same way so this is no longer set per-renderer. #undef SPRMODELS #undef SP2MODELS #undef DSPMODELS diff --git a/engine/common/plugin.c b/engine/common/plugin.c index 994b020bd..cfe996d2f 100644 --- a/engine/common/plugin.c +++ b/engine/common/plugin.c @@ -2138,6 +2138,7 @@ static void *QDECL PlugBI_GetEngineInterface(const char *interfacename, size_t s return menu_world.progs; } #endif + Con_DPrintf("Plugin %s requested interface %s#%x, but its unavailable.\n", currentplug?currentplug->filename:"UNKNOWN", interfacename, (unsigned int)structsize); return NULL; }