mirror of
https://github.com/BinomialLLC/basis_universal.git
synced 2026-10-10 19:15:25 +00:00
modifications for v2.5
This commit is contained in:
54
encoder/3rdparty/tinydds.h
vendored
54
encoder/3rdparty/tinydds.h
vendored
@@ -1368,27 +1368,51 @@ bool TinyDDS_ReadHeader(TinyDDS_ContextHandle handle) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// correct for dodgy mipmap levels counts
|
||||
// rg: The original tinydds mipmap-count "correction" below is WRONG and is
|
||||
// disabled. For COMPRESSED formats it stopped counting at the 4x4 block size
|
||||
// (w <= 4 || h <= 4) and truncated mipMapCount there, which drops the perfectly
|
||||
// valid sub-block mip levels (e.g. 2x2 and 1x1) -- those levels are legal and are
|
||||
// simply stored padded to a single 4x4 block. ANY DDS file, block-compressed or
|
||||
// uncompressed, can carry a full mip chain down to 1x1.
|
||||
//
|
||||
// Original (incorrect) code:
|
||||
//
|
||||
// if(ctx->header.mipMapCount > 1) {
|
||||
// uint32_t w = ctx->header.width;
|
||||
// uint32_t h = ctx->header.height;
|
||||
//
|
||||
// for(uint32_t i = 0; i < ctx->header.mipMapCount;++i) {
|
||||
// if (TinyDDS_IsCompressed(ctx->format)) {
|
||||
// if (w <= 4 || h <= 4) {
|
||||
// ctx->header.mipMapCount = i + 1;
|
||||
// break;
|
||||
// }
|
||||
// } else if (w <= 1 || h <= 1) {
|
||||
// ctx->header.mipMapCount = i + 1;
|
||||
// break;
|
||||
// }
|
||||
//
|
||||
// w = w / 2;
|
||||
// h = h / 2;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// Replacement: count the true maximum number of mip levels for these dimensions
|
||||
// (halving each axis down to 1x1, for every format) and clamp the header's count
|
||||
// to it ONLY if the file claims MORE levels than are dimensionally possible.
|
||||
if(ctx->header.mipMapCount > 1) {
|
||||
uint32_t w = ctx->header.width;
|
||||
uint32_t h = ctx->header.height;
|
||||
|
||||
for(uint32_t i = 0; i < ctx->header.mipMapCount;++i) {
|
||||
if (TinyDDS_IsCompressed(ctx->format)) {
|
||||
if (w <= 4 || h <= 4) {
|
||||
ctx->header.mipMapCount = i + 1;
|
||||
break;
|
||||
}
|
||||
} else if (w <= 1 || h <= 1) {
|
||||
ctx->header.mipMapCount = i + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
w = w / 2;
|
||||
h = h / 2;
|
||||
uint32_t maxMipMapCount = 1;
|
||||
while ((w > 1) || (h > 1)) {
|
||||
w = (w > 1) ? (w >> 1) : 1;
|
||||
h = (h > 1) ? (h >> 1) : 1;
|
||||
maxMipMapCount++;
|
||||
}
|
||||
|
||||
if (ctx->header.mipMapCount > maxMipMapCount)
|
||||
ctx->header.mipMapCount = maxMipMapCount;
|
||||
}
|
||||
|
||||
if (TinyDDS_IsCompressed(ctx->format)) {
|
||||
|
||||
@@ -32,12 +32,16 @@
|
||||
<ClCompile Include="..\encoder\basisu_astc_hdr_common.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_astc_ldr_common.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_astc_ldr_encode.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_xbc7_encode.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_astc_ldr_fencode.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_tinyexr.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_uastc_hdr_4x4_enc.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_backend.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_basis_file.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_bc7enc.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_comp.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_bc15_spmd.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_bc15_spmd_sse.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_enc.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_etc.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_frontend.cpp" />
|
||||
@@ -49,6 +53,8 @@
|
||||
<ClCompile Include="..\encoder\basisu_resample_filters.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_ssim.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_uastc_enc.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_bc7e_scalar.cpp" />
|
||||
<ClCompile Include="..\encoder\basisu_dds_export.cpp" />
|
||||
<ClCompile Include="..\encoder\jpgd.cpp" />
|
||||
<ClCompile Include="..\encoder\pvpngreader.cpp" />
|
||||
<ClCompile Include="..\transcoder\basisu_transcoder.cpp" />
|
||||
@@ -62,9 +68,13 @@
|
||||
<ClInclude Include="..\encoder\basisu_astc_hdr_common.h" />
|
||||
<ClInclude Include="..\encoder\basisu_astc_ldr_common.h" />
|
||||
<ClInclude Include="..\encoder\basisu_astc_ldr_encode.h" />
|
||||
<ClInclude Include="..\encoder\basisu_xbc7_encode.h" />
|
||||
<ClInclude Include="..\encoder\basisu_astc_ldr_fencode.h" />
|
||||
<ClInclude Include="..\encoder\basisu_uastc_hdr_4x4_enc.h" />
|
||||
<ClInclude Include="..\encoder\basisu_backend.h" />
|
||||
<ClInclude Include="..\encoder\basisu_basis_file.h" />
|
||||
<ClInclude Include="..\encoder\basisu_bc15_spmd.h" />
|
||||
<ClInclude Include="..\encoder\basisu_bc15_spmd_kernels.inl" />
|
||||
<ClInclude Include="..\encoder\basisu_bc7enc.h" />
|
||||
<ClInclude Include="..\encoder\basisu_comp.h" />
|
||||
<ClInclude Include="..\encoder\basisu_enc.h" />
|
||||
@@ -82,6 +92,8 @@
|
||||
<ClInclude Include="..\encoder\basisu_resampler_filters.h" />
|
||||
<ClInclude Include="..\encoder\basisu_ssim.h" />
|
||||
<ClInclude Include="..\encoder\basisu_uastc_enc.h" />
|
||||
<ClInclude Include="..\encoder\basisu_bc7e_scalar.h" />
|
||||
<ClInclude Include="..\encoder\basisu_dds_export.h" />
|
||||
<ClInclude Include="..\encoder\cppspmd_flow.h" />
|
||||
<ClInclude Include="..\encoder\cppspmd_math.h" />
|
||||
<ClInclude Include="..\encoder\cppspmd_math_declares.h" />
|
||||
@@ -99,6 +111,7 @@
|
||||
<ClInclude Include="..\transcoder\basisu_transcoder.h" />
|
||||
<ClInclude Include="..\transcoder\basisu_transcoder_internal.h" />
|
||||
<ClInclude Include="..\transcoder\basisu_transcoder_uastc.h" />
|
||||
<ClInclude Include="..\transcoder\basisu_xbc7_decoder.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\bin\ocl_kernels.cl" />
|
||||
@@ -111,6 +124,8 @@
|
||||
<None Include="..\transcoder\basisu_transcoder_tables_bc7_m5_color.inc" />
|
||||
<None Include="..\transcoder\basisu_transcoder_tables_dxt1_5.inc" />
|
||||
<None Include="..\transcoder\basisu_transcoder_tables_dxt1_6.inc" />
|
||||
<None Include="..\transcoder\basisu_xbc7_decoder.inl" />
|
||||
<None Include="..\transcoder\basisu_dds_transcoder.inl" />
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<VCProjectVersion>17.0</VCProjectVersion>
|
||||
@@ -228,7 +243,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1;</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1;_HAS_EXCEPTIONS=0</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
@@ -246,7 +261,7 @@
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64EC'">
|
||||
<ClCompile>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=0;BASISU_SUPPORT_OPENCL=1;</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>_DEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=0;BASISU_SUPPORT_OPENCL=1;_HAS_EXCEPTIONS=0</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
@@ -266,7 +281,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1;</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=1;BASISU_SUPPORT_OPENCL=1;_HAS_EXCEPTIONS=0</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
@@ -294,7 +309,7 @@
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<SDLCheck>false</SDLCheck>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=0;BASISU_SUPPORT_OPENCL=1;</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>NDEBUG;_LIB;%(PreprocessorDefinitions);BASISU_SUPPORT_SSE=0;BASISU_SUPPORT_OPENCL=1;_HAS_EXCEPTIONS=0</PreprocessorDefinitions>
|
||||
<ConformanceMode>true</ConformanceMode>
|
||||
<PrecompiledHeader>NotUsing</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
|
||||
|
||||
@@ -45,6 +45,12 @@
|
||||
<ClCompile Include="..\encoder\basisu_comp.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_bc15_spmd.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_bc15_spmd_sse.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_enc.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
@@ -78,6 +84,12 @@
|
||||
<ClCompile Include="..\encoder\basisu_uastc_enc.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_bc7e_scalar.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_dds_export.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\jpgd.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
@@ -102,9 +114,15 @@
|
||||
<ClCompile Include="..\encoder\basisu_astc_ldr_encode.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_xbc7_encode.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_tinyexr.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\encoder\basisu_astc_ldr_fencode.cpp">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\transcoder\basisu_astc_helpers.h">
|
||||
@@ -158,6 +176,12 @@
|
||||
<ClInclude Include="..\encoder\basisu_basis_file.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\basisu_bc15_spmd.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\basisu_bc15_spmd_kernels.inl">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\basisu_bc7enc.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
@@ -206,6 +230,12 @@
|
||||
<ClInclude Include="..\encoder\basisu_uastc_enc.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\basisu_bc7e_scalar.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\basisu_dds_export.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\jpgd.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
@@ -236,9 +266,18 @@
|
||||
<ClInclude Include="..\encoder\basisu_astc_ldr_encode.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\basisu_xbc7_encode.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\transcoder\basisu_idct.h">
|
||||
<Filter>Source Files\transcoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\encoder\basisu_astc_ldr_fencode.h">
|
||||
<Filter>Source Files\encoder</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\transcoder\basisu_xbc7_decoder.h">
|
||||
<Filter>Source Files\transcoder</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\transcoder\basisu_transcoder_tables_astc.inc">
|
||||
@@ -271,5 +310,11 @@
|
||||
<None Include="..\transcoder\basisu_astc_cfgs.inl">
|
||||
<Filter>Source Files\transcoder</Filter>
|
||||
</None>
|
||||
<None Include="..\transcoder\basisu_xbc7_decoder.inl">
|
||||
<Filter>Source Files\transcoder</Filter>
|
||||
</None>
|
||||
<None Include="..\transcoder\basisu_dds_transcoder.inl">
|
||||
<Filter>Source Files\transcoder</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user