change FImage passed to TextureFormat to be const, it must not be changed becausing hashing is running threaded
remove early frees of intermediate image; this increases peak memory use
#preflight https://horde.devtools.epicgames.com/job/643ff4a3090323f9a3f7695e
#rb dan.thompson
[CL 25116608 by charles bloom in ue5-main branch]
This also fixes the missing include path for TextureFormat.Build.cs
#rb fabian.giesen
#rb charles.bloom
#preflight 6421fa27974dfaa53cb188e5
[CL 24808879 by Dan Thompson in ue5-main branch]
#fyi Dan.Thompson
Original CL Desc
-----------------------------------------------------------------
Plumb the mip layout down to the child texture ddc key versions as certain child formats need to know mip dimensions in order to know if aspects of the build affect the textures.
#rb fabian.giesen
#rb charles.bloom
#preflight 641378f03f3d31c94a2e86b5
#preflight 64149d297d1280ffe750d78e
[CL 24691763 by Dan Thompson in ue5-main branch]
Certain platforms that tile textures will tile non pow2 textures with mips different than non pow2 textures without mips, so we need to plumb down information about the mip chain to the tiling texture formats.
#rb fabian.giesen
#preflight 64068553aa00423335f30765
[CL 24546549 by Dan Thompson in ue5-main branch]
TextureFormatOodle is the only format that returns true for CanAcceptNonF32Source(), which allows the build system to occasionally avoid converting to an F32 input to the compressor. However, the ChildTextureFormat for offline platform processing did not forward this function so this conversion was happening unnecessarily.
This manifested as a DDC determinism issue with the PreEncodeHash when enabling shared linear encoding, where the output mip data would be the same (as the F32 conversion would round trip without change), however the input to the convertor would change between platforms.
Since Oodle is the only format that routes this, we can invalidate only this format and avoid a worldwide rebuild.
#rb charles.bloom
#preflight 638fcd007e0feab0b77ad3f3
[CL 23419050 by Dan Thompson in ue5-main branch]
Primary Components:
DDC2 texture build input/output revamped to support future FDerivedData references where the bulk data remains in the Zen server during cooks.
Tiling code is separated out in to ITextureTiler interface so that tiling can be done without calling FChildTextureFormat::CompressImage[Ex]
Adding mip dimensions to GetMipCountForBuildSettings
#rb fabian.giesen, zousar.shaker
#preflight 6304f87f516bef57ffada18d
[CL 21511157 by Dan Thompson in ue5-main branch]
drops back to NVTT/ISPC legacy texture encoders
fixes textures failing to encode on old CPUs without SSE4
#rb fabian.giesen
#preflight 62bd0c89ed35ee71a7c856c7
[CL 20887958 by charles bloom in ue5-main branch]
but do log in editor and cook
#rb none
#preflight none
#ROBOMERGE-AUTHOR: charles.bloom
#ROBOMERGE-SOURCE: CL 19961272 via CL 19961945 via CL 19962983
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 19971604 by charles bloom in ue5-main branch]
do Invalidate in your constructor so you are valid after LoadModule
in case someone tries to Load TextureFormatManager and use it other than TargetPlatform
mutex protect thread access
fixes TBW broken by previous CL on TextureFormatManager
#preflight 6269c22f4510fc7faaf8c8aa
#rb zousar.shaker
#ROBOMERGE-AUTHOR: charles.bloom
#ROBOMERGE-SOURCE: CL 19949335 via CL 19949395 via CL 19949397
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v943-19904690)
[CL 19952589 by charles bloom in ue5-main branch]
fix RHI upload of textures that are multiple of 4 in top mip but not in lower mips
dont pad CompressedImage sizes, store true size
clean up Texture size limits and VT conditions
better default settings for texture import
clean up initialization order of TextureFormatManagerModule
#preflight 6250814a11261bc7b23d8f4b
#rb fabian.giesen,julien.stjean
[CL 19693287 by charles bloom in ue5-main branch]
also allow MaxTextureSize on non-pow2
no longer force TMGS_NoMipMaps on non-pow2
#preflight 6241f2badc6183e3f5d32332
#rb fabian.giesen
[CL 19530862 by charles bloom in ue5-main branch]