Commit Graph

258 Commits

Author SHA1 Message Date
pj kack
5e49316bc4 AsyncLoading2: Fix incorrect check in ToPackageImport
#jira none
#rb none


#ushell-cherrypick of 12997588 by PJ.Kack

#ROBOMERGE-SOURCE: CL 12997796 in //UE4/Release-4.25Plus/... via CL 12997808
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)

[CL 12997823 by pj kack in Main branch]
2020-04-23 02:54:37 -04:00
carlmagnus nordin
373fd671f7 Copying //UE4/Release-4.25Plus-Dev to Release-4.25Plus (//UE4/Release-4.25Plus)
#rnx
#jira none
#rb none

#ROBOMERGE-OWNER: carlmagnus.nordin
#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 12973630 in //UE4/Release-4.25Plus/... via CL 12973644
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)

[CL 12973696 by carlmagnus nordin in Main branch]
2020-04-22 06:25:12 -04:00
paul chipchase
1773b3a77d Fix a typo in a newly added API method (IsInSeperateFile -> IsInSeparateFile) before the 4.25 release to avoid future issues.
#jira none
#rb devin.doucette, stefan.boberg
#lockdown stefan.boberg


#ushell-cherrypick of 12918250 by paul.chipchase

#ROBOMERGE-SOURCE: CL 12919209 in //UE4/Release-4.25Plus/... via CL 12919222
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v682-12900288)

[CL 12919263 by paul chipchase in Main branch]
2020-04-20 07:36:36 -04:00
carlmagnus nordin
1f16ffb0a7 Fixed static analysis warnings
#rnx
#robomerge[BOT1] Main-For-EngineMerge
#rb none
#jira UE-91433,UE-91436
#lockdown stefan.boberg

#ROBOMERGE-SOURCE: CL 12507055 in //UE4/Release-4.25Plus/... via CL 12507070
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)

[CL 12507091 by carlmagnus nordin in Main branch]
2020-04-01 11:48:27 -04:00
carlmagnus nordin
25e8b4dd7d Copying //UE4/Release-4.25Plus-Dev to Release-4.25Plus (//UE4/Release-4.25Plus)
#rnx
#robomerge[BOT1] Main-For-EngineMerge
#rb none
#jira none
#lockdown stefan.boberg

#ROBOMERGE-OWNER: carlmagnus.nordin
#ROBOMERGE-AUTHOR: carlmagnus.nordin
#ROBOMERGE-SOURCE: CL 12504704 in //UE4/Release-4.25Plus/... via CL 12504720
#ROBOMERGE-BOT: RELEASE (Release-Engine-Staging -> Main) (v673-12478461)

[CL 12504759 by carlmagnus nordin in Main branch]
2020-04-01 05:00:26 -04:00
Eric Knapik
0b1dd07075 #Jira: none
Sets ArIsError and ArIsCriticalError to private

[at]Graeme.Thornton [at]Johan.Torp [at]Steve.Robb [at]Carlos.Cuello

#rb Steve.Robb
#ROBOMERGE-OWNER: Eric.Knapik
#ROBOMERGE-AUTHOR: eric.knapik
#ROBOMERGE-SOURCE: CL 11949030 via CL 11949058 via CL 11949116 via CL 11949174
#ROBOMERGE-BOT: (v656-11643781)

[CL 11953024 by Eric Knapik in Main branch]
2020-03-05 14:43:10 -05:00
Rolando Caloca
5b82f15def Copying //UE4/Dev-RenderPlat-Staging@11388153 to //UE4/Main
#rb none
#rnx

[CL 11388545 by Rolando Caloca in Main branch]
2020-02-12 13:27:19 -05:00
robert manuszewski
b938e59c9b Reimplementing FProperty changes from //UE4/Main
+ Reimplemented FProperty related fixed from //UE4/Main:
CL#10791312, 10804850, 10851666, 10855122, 10855198, 10942138, 11030611, 11030639, 11032261, 11061515, 11136964,11138881, 11214238, 11214865

#rb none (previously reviewed in Dev-Core)
[FYI] Chris.Bunnner, Daniel.Lamb


#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 11302985 via CL 11303011 via CL 11303019
#ROBOMERGE-BOT: (v0-11244347)

[CL 11303183 by robert manuszewski in Main branch]
2020-02-10 08:06:56 -05:00
Josh Adams
aa9705149b Copying Private-LoadTimes-4.24 stream to Main. Biggest changes are in Materials/Shader memory freezing.
#rb none

[CL 11282608 by Josh Adams in Main branch]
2020-02-06 13:13:41 -05:00
Stefan Boberg
55a8b15f1f Copying //UE4/Dev-Core to Main (//UE4/Main)
#rb none

[CL 11258477 by Stefan Boberg in Main branch]
2020-02-05 14:26:36 -05:00
steve robb
0f03ba4bc4 Simplification of DiffMap checking code.
#rb trivial
#rnx


#ROBOMERGE-SOURCE: CL 11197857 via CL 11197864
#ROBOMERGE-BOT: (v640-11091645)

[CL 11198225 by steve robb in Main branch]
2020-01-31 14:02:50 -05:00
Rolando Caloca
f63a3e857e Merging //UE4/Main@11178322 to Dev-RenderPlat-Staging
#rnx
#rb none

[CL 11195678 by Rolando Caloca in Dev-RenderPlat-Staging branch]
2020-01-31 10:34:10 -05:00
paul chipchase
c68d8f8c43 Add support for memory mapped files to BulKData2 which will fix a crash when memory mapped animations have been enabled.
- Attempting to memory map inline data will give a log error(as the original implementation did but will not attempt to actually memory map it as it is very unlikely that inline data would have the correct alignment requirements for the operation to succeed so to keep the code simple we just serialize the inline data which was the existing fallback behaviour anyway.
- Added the memory mapping implementation as it's own method (MemoryMapBulkData) since we only need to support the non-inline case.
- Added a flag (bShouldForceLoad) that when true will force the BulkData2 data to be streamed in immediately. Currently used as a fallback if the memory mapping fails (all callers assume 100% success) but I made it generic enough that we could use it for something else if the use case occurs.
- This is a fairly quick fix to unblock testing, future work includes:
  - Reduce the added memory bloat (adding 2 additional pointers to BulkData2)
  - Implement copy/assignment of memory mapped BulkData (based on the above work)

#jira UE-85974
#rnx
#rb Per.Larsson

[CL 11194361 by paul chipchase in Main branch]
2020-01-31 06:51:54 -05:00
graeme thornton
139d9ec0bf Added COREUOBJECT_API to FJsonArchiveInputFormatter so it can be used outside of CoreUObject
#ROBOMERGE-SOURCE: CL 11176102 via CL 11176104 via CL 11176105
#ROBOMERGE-BOT: (v640-11091645)

[CL 11176106 by graeme thornton in Main branch]
2020-01-30 09:39:37 -05:00
paul chipchase
c39c736841 Fix non optional duplicated bulkdata serialization when running with the IoDispatcher.
I was using the original FIoChunkId (ie the non optional data) to check if the duplicate optional data existed, to fix this I now load the duplicate data values first then use them to create the potential FIoChunkId then apply them if we pass the correct existance check.
I also moved the code to it's own method to hide the implementation a bit since most project/platforms don't use this path and so people don't need to worry about it.

#rnx
#rb none

[CL 11128432 by paul chipchase in Dev-Core branch]
2020-01-28 08:24:36 -05:00
paul chipchase
abc34053b7 Remove BULKDATA_NOT_IMPLEMENTED_FOR_RUNTIME now that it is no longer used.
#rnx
#rb trivial

[CL 11104025 by paul chipchase in Dev-Core branch]
2020-01-24 06:30:33 -05:00
Per Larsson
7b8fb88163 IoStoreUtilities: Refactored custom serialization to use standard serialization and added parallel parsing of uasset files
#rb CarlMagnus.Nordin

[CL 11103704 by Per Larsson in Dev-Core branch]
2020-01-24 03:50:37 -05:00
paul chipchase
b3a5680e6d Fixed an issue where runtime created BulkData objects would incorrectly return ::CanLoadFromDisk as true.
- Was caused by a special case check to allow inline data to unload when using the IoDispatcher since technically it cannot be loaded from disk which was blocking it from being discarded. However runtime created  bulkdata would often class as 'inline' which although having no file reference, started returning true when ::CanLoadFromDisk was called
- ::GetCopy now uses ::CanDiscardInternalData to determine if we can discard the internal data (we should probably change ::Unlock to do this as well but that is a different work item)
- Moved the special case code for inline data when running with the IoDispatcher from ::CanLoadFromDisk to ::CanDiscardInternalData.



#rb none
#rnx
#jira UE-87296

[CL 11091798 by paul chipchase in Dev-Core branch]
2020-01-23 07:30:43 -05:00
Juan Canada
f396f56a0b Merging //UE4/Dev-Main@11042002 to Dev-RenderPlat-Staging(//UE4/Dev-Rendering)
#rnx
#rb none

[CL 11075443 by Juan Canada in Dev-RenderPlat-Staging branch]
2020-01-21 14:54:20 -05:00
paul chipchase
81e837af05 The BulkData manifest can no longer be broken by changing the values of EIoChunkType.
Note that this will invalidating existing manifests and require a new cook!

- We have had several cases of EIoChunkType having new entries inserted at the start causing the values for bulkdata to change which in turn would invalidate the contents of the BulkData manifest, so to avoid issues in the future the manifest will now save out its own values and we only convert them to EIoChunkType at the last possible moment when building the ucas files.
- Added a custom version to the manifests file archive, this will make it safer to edit the format in the future as we will be able to avoid invalidating the entire file.
 - Unfortunatly adding the version does not help with existing files which are now invalid.

#rb CarlMagnus.Nordin
#rnx

[CL 11042093 by paul chipchase in Dev-Core branch]
2020-01-17 08:18:31 -05:00
paul chipchase
46aa59430f Fix some coding standards mistakes I made when originally submitted FPackageStoreBulkDataManifest.
#rb trivial
#rnx

[CL 11028252 by paul chipchase in Dev-Core branch]
2020-01-16 07:28:59 -05:00
paul chipchase
7631481031 Move FPackageStoreBulkDataManifest to its own code files to help cut down on the complexity of SavePackage.cpp
#rb trivial
#rnx

[CL 11027753 by paul chipchase in Dev-Core branch]
2020-01-16 05:06:40 -05:00
CarlMagnus Nordin
fab9e500ad AsyncLoading2: Common header for loader and IoStoreUtils
#rb PJ.Kack


#ushell-cherrypick of 10950326 by Per.Larsson

[CL 10994443 by CarlMagnus Nordin in Dev-Core branch]
2020-01-15 12:28:12 -05:00
paul chipchase
e489cce39e The virtual texturing system now works when running with the IoDispatcher.
The VT system already has its own very specialised file handling so rather than try to refactor that it seemed safer to implement a version of IAsyncReadFileHandle that can handle reading via the IoDispatcher.
At some point we we might want to move this to a header file so other system can use it but for now it is local to the new BulkData api.

Add an accessor FBulkDataBase::GettIODispatcher so that FBulkDataIoDispatcherRequest no longer needs to be a friend class.

#rb CarlMagnus.Nordin

[CL 10927048 by paul chipchase in Dev-Core branch]
2020-01-09 10:41:01 -05:00
paul chipchase
53ffceb3d4 Fixed a threading issue which could cause StaticMesh mip streaming to assert and eventually crash.
FBulkDataIORequest was only returning a valid size if its IAsyncReadRequest polled as completed, but the request would only be counted as 'completed' once it's callback had finished, meaning that calling ::GetSize during the callback would not work.

However in the case of the StaticMesh, the callback would schedule ::SerializeLODData to be called on the task graph, which if processed immediately could occur before the request was marked as completed.

Removed the unused constructor for FBulkDataIORequest and set the Size to INDEX_NONE by default and move the constructor to the cpp.
To fix the actual problem we now set Size to the number of bytes in the buffer int he internal callback (ie the moment the buffer becomes valid) and then always just return Size so it will work properly before the request is marked as completed.

Remove the work around for the original issue (a check to wait for the request to finish before the request is used by the StaticMesh streaming system)

#jira UE-85675
#rb brian.white, jian.ru


#ushell-cherrypick of 10906085 by paul.chipchase

[CL 10906181 by paul chipchase in Main branch]
2020-01-08 13:19:42 -05:00