diff --git a/common/com_image.h b/common/com_image.h index 4e2563f7..e3bf5236 100644 --- a/common/com_image.h +++ b/common/com_image.h @@ -87,6 +87,7 @@ typedef enum IL_LOAD_PLAYER_DECAL = BIT(7), // special mode for player decals IL_KTX2_RAW = BIT(8), // renderer can consume raw KTX2 files (e.g. ref_vk) IL_ALLOW_WAD3_LUMA = BIT(9), // allow usage of luma textures in wad3 (tilde textures) + IL_HOST_ENDIAN = BIT(10), // buffer is already in host endian, skip byte-swapping } ilFlags_t; // goes into rgbdata_t->encode diff --git a/engine/common/imagelib/img_wad.c b/engine/common/imagelib/img_wad.c index eb12bfc1..a1ca1371 100644 --- a/engine/common/imagelib/img_wad.c +++ b/engine/common/imagelib/img_wad.c @@ -437,7 +437,8 @@ qboolean Image_LoadMIP( const char *name, const byte *buffer, fs_offset_t filesi return false; memcpy( &mip, buffer, sizeof( mip )); - le_struct_swap( mip_swap, &mip ); + if( !Image_CheckFlag( IL_HOST_ENDIAN )) + le_struct_swap( mip_swap, &mip ); image.width = mip.width; image.height = mip.height; diff --git a/engine/common/mod_bmodel.c b/engine/common/mod_bmodel.c index 59575ed1..532fd735 100644 --- a/engine/common/mod_bmodel.c +++ b/engine/common/mod_bmodel.c @@ -2723,6 +2723,7 @@ static void Mod_InitSkyClouds( model_t *mod, const mip_t *mt, texture_t *tx, qbo if( custom_palette ) size += sizeof( short ) + 768; + Image_SetForceFlags( IL_HOST_ENDIAN ); r_sky = FS_LoadImage( texname, (byte *)mt, size ); } else @@ -2905,7 +2906,7 @@ static void Mod_LoadTextureData( model_t *mod, dbspmodel_t *bmod, int textureInd const size_t size = Mod_CalculateMipTexSize( mipTex, usesCustomPalette ); Q_snprintf( texName, sizeof( texName ), "#%s:%s.mip", loadstat.name, mipTex->name ); - Image_SetForceFlags( texture_force_flags ); + Image_SetForceFlags( texture_force_flags | IL_HOST_ENDIAN ); texture->gl_texturenum = ref.dllFuncs.GL_LoadTexture( texName, (byte *)mipTex, size, txFlags ); } @@ -2938,7 +2939,7 @@ static void Mod_LoadTextureData( model_t *mod, dbspmodel_t *bmod, int textureInd Q_snprintf( texName, sizeof( texName ), "#%s:%s_luma.mip", loadstat.name, mipTex->name ); - Image_SetForceFlags( texture_force_flags ); + Image_SetForceFlags( texture_force_flags | IL_HOST_ENDIAN ); if( mipTex->offsets[0] > 0 ) {