Updating FVirtualizedUntypedBulkData and textures to use the BulkDataRegistry.
BulkDataRegistry: Add get/put accessors for the cached BulkDataList of packages.
EditorDomain: Move ClassDigests into a global variable that can be shared with BulkDataRegistry.
EditorDomain: Improve performance of GetFileSize by fetching metadata only.
Tickable Cook Objects, for systems used by the cooker that need to be ticked.
Implementation of the the BulkDataRegistry that uses the DDC cache for persistent storage of the BulkDataList.
#rb Devin.Doucette, Paul.Chipchase, Zousar.Shaker
[CL 16768772 by Matt Peters in ue5-main branch]
This saves a considerable amount of time when UContentBrowserAssetDataSource::CreateAssetFilter builds a compiled filter.
#rb francis.hurteau
[CL 16222546 by Richard Malo in ue5-main branch]
* Texture Work
- When importing a jpeg we will now check the config file to see if we should try and keep the data in compressed JPEG format and decompress it as it is requested rather than returning the data in raw uncompressed format.
- If the data is kept in jpeg compressed format we can initialize the texture via the new method InitWithCompressedSourceData instead. (note that we can probably merge ::InitWithCompressedSourceData and ::Init but that introduces further risk, this way we know that ONLY textures that were originally jpeg can be going through ::InitWithCompressedSourceData for now)
- We now record the compression format of the bulkdata in FTextureSource via 'CompressionFormat' an enum rather than a single bool 'bPNGCompressed' which only wqorked for png format.
- We should deprecate bPNGCompressed at some point and loading existing textures off disk will not have 'bPNGCompressed' and 'CompressionFormat' in sync, fixing this is out of scope for EA work.
- Note that when PNG compression is used we can decompress the data, use that, then recompress it without loss in quality, the same is not to be said for JPEG so if the data is modified by a call to ::LockMip/::Unlock mip the data will end up falling back to being stored as a compressed PNG or raw data. If this occurs we will log a warning.
- To reduce the number of places where this happens a new ::LockMipReadOnly method has been added, locking the texture source as read only will not replace the stored data when unlocked (as read only means no changes)
- Attempting to lock a texture for a different mode than it is currently locked for is considered a programming error and will raise an assert.
- Updated the 'SourceCompression' asset registry tag. This can be seen when hovering the mouse over the asset in the content browser and will show which compression is being used on the source data, png, jpeg or none.
* NormalMapIdentification/PaperAtlasTextureHelpers
- Switched to use LockMipReadOnly as we never modify the locked mip data.
- Every other remaining place in code that I could find that used LockMip() is actually calling that to edit the data.
* JPEG Decompression
- Worth noting that in early access the jpeg compression is slower than decompressing the same data if it was stored in compressed png format.
- On main the jpeg decompressor has been upgraded and the data ends up being smaller AND faster to decode, so wins all around.
- For early access we are willing to take the increase decoding cost to reduce the risk of the submit.
#rb Mark.Lintott, PJ.Kack, Danny.Couture
#[fyi] Jonathan.Bard
#lockdown Nick.Whiting
#jira UE-113796
#ushell-cherrypick of 16051246 by paul.chipchase
#preflight 607dcf0de7a5ac0001985d44
[CL 16054157 by paul chipchase in ue5-main branch]
Add CookSettings MemoryMinFreeVirtual to garbage collect when AvailableVirtual is too low.
Normalize the names of the 4 CookSettings.Memory settings variables.
Change boolean expression of the 4 memory values to be (freevirtual OR freephysical) AND (usedvirtual OR usedphysical), which seems like the most useful way to combine them.
#rnx
#rb Daniel.Lamb, Zousar.Shaker
#ROBOMERGE-SOURCE: CL 13120351 via CL 13120373 via CL 13120383 via CL 13120389
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v687-13115495)
[CL 13120395 by matt peters in Main branch]
#jira UE-1949
#rb matt.kuhlenschmidt
#ROBOMERGE-SOURCE: CL 11206603 via CL 11206604
#ROBOMERGE-BOT: (v643-11205221)
[CL 11206607 by christina tempelaarl in Main branch]
- Download and run the VS2019 installer from the editor
- Update the preferred VC++ toolchains to choose a VS2019 toolchain if possible
- Update the AppLocalPrerequisites folder to include redist files from VS2019
- Update the UE4 prerequisites installer to include VS2019 redist
- Update the installed engine build script to build with VS2017 for backwards compatibility, since VS2019 object files are not compatible with it (only vice versa).
#rb none
#jira
[FYI] Bob.Tellez
#ROBOMERGE-SOURCE: CL 11205672 via CL 11205674
#ROBOMERGE-BOT: (v643-11205221)
[CL 11205680 by ben marsh in Main branch]