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]
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]
not used and should not be used
clean up some todo comments in TextureFormatOodle
#preflight 61ba4ca5055f3013459c0a02
#rb none
#ROBOMERGE-AUTHOR: charles.bloom
#ROBOMERGE-SOURCE: CL 18471288 in //UE5/Release-5.0/... via CL 18471293
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v899-18417669)
[CL 18471295 by charles bloom in ue5-release-engine-test branch]
Texture uasset stores OodleTextureSdkVersion to use
legacy assets load with None
new textures automatically set version to latest
allows updating Oodle Texture Sdk without creating patches
new prefs:
[AlternateTextureCompression]
TextureCompressionFormatWithVersion
OodleTextureSdkVersionToUseIfNone
#rb dan.thompson,devin.doucette
#ROBOMERGE-AUTHOR: charles.bloom
#ROBOMERGE-SOURCE: CL 18456277 in //UE5/Release-5.0/... via CL 18456284
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v898-18417669)
[CL 18456295 by charles bloom in ue5-release-engine-test branch]
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971
[CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
This represents UE4/Main @17774255, Release-5.0 @17791557 and Dev-PerfTest @17789485
[CL 17794212 by aurel cordonnier in ue5-release-engine-test branch]
This is necessary to support building textures independently of the UTexture, which is required by the new derived data build interface.
#rb Zousar.Shaker
#rnx
#preflight 60cbbb906092ba000158179a
#ROBOMERGE-SOURCE: CL 16714489 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v835-16672529)
[CL 16714496 by devin doucette in ue5-release-engine-test branch]
-Add mechanism for ITextureFormat to have a generic and private "FormatSettings" block that can be global, but also exported with a texture build action and applied when a texture build is executed remotely. Also ensure that ChildTextureFormat is able to split and store/read the format settings for Child & Base format as separate sub-items.
-Allow the PS5TextureBuildWorker to compile in Oodle if the plugin is present and enabled.
#rb charles.bloom
[CL 16406838 by Zousar Shaker in ue5-main branch]