Commit Graph

625 Commits

Author SHA1 Message Date
carlmagnus nordin
0f242a77c2 Guard against recursive calls to FTaskGraphInterface::ProcessThreadUntilIdle during async loading
#rb per.larsson
#ushell-cherrypick of 11327342 by CarlMagnus.Nordin


#ROBOMERGE-SOURCE: CL 11373304 via CL 11373313 via CL 11373318
#ROBOMERGE-BOT: (v654-11333218)

[CL 11373323 by carlmagnus nordin in Main branch]
2020-02-12 02:28:06 -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
e02157586c New NDC line which reports the name of the class of the asset containing the differences.
#rb none
[FYI] ken.hawthorne


#ROBOMERGE-SOURCE: CL 11254859 via CL 11255081 via CL 11255096
#ROBOMERGE-BOT: (v647-11244347)

[CL 11255345 by steve robb in Main branch]
2020-02-05 13:05:51 -05:00
Chris Gagnon
c3f9a18841 Merge from Main in prep for Dev-Tools-Staging Copy up
#rb none

[CL 11221539 by Chris Gagnon in Dev-Tools-Staging branch]
2020-02-04 17:00:31 -05:00
steve robb
189b404b04 Scoped approach to incrementing log counts.
#rb none
#rnx


#ROBOMERGE-SOURCE: CL 11199785 via CL 11199794
#ROBOMERGE-BOT: (v640-11091645)

[CL 11199803 by steve robb in Main branch]
2020-01-31 15:38:43 -05:00
steve robb
2c23c83eeb LastDifferenceCallstackDataText updated on scope exit, no matter how that happens.
#rb none
#rnx


#ROBOMERGE-SOURCE: CL 11199712 via CL 11199717
#ROBOMERGE-BOT: (v640-11091645)

[CL 11199718 by steve robb in Main branch]
2020-01-31 15:33:55 -05:00
steve robb
489340a688 More flattening.
#rb none
#rnx


#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 11199407 via CL 11199413
#ROBOMERGE-BOT: (v640-11091645)

[CL 11199461 by steve robb in Main branch]
2020-01-31 15:14:27 -05:00
steve robb
0f11ead857 More flattening of logic.
#rb none
#rnx


#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 11198904 via CL 11198913
#ROBOMERGE-BOT: (v640-11091645)

[CL 11199047 by steve robb in Main branch]
2020-01-31 14:49:22 -05:00
steve robb
339d87f774 Use of ON_SCOPE_EXIT to clarify intended code flow.
#rb none
#rnx


#ROBOMERGE-SOURCE: CL 11198641 via CL 11198672
#ROBOMERGE-BOT: (v640-11091645)

[CL 11198687 by steve robb in Main branch]
2020-01-31 14:23:30 -05:00
steve robb
5fd8b59ec8 Simple refactoring to reduce indentation.
#rb none
#rnx


#ROBOMERGE-OWNER: steve.robb
#ROBOMERGE-AUTHOR: steve.robb
#ROBOMERGE-SOURCE: CL 11197939 via CL 11197966
#ROBOMERGE-BOT: (v640-11091645)

[CL 11198535 by steve robb in Main branch]
2020-01-31 14:19:27 -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
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
peter knepley
f96ce0349c Back out revision 3 from ArchiveStackTrace.cpp. SerializedProp isn't even saved in the cases where gameplay tag container differs so there's nothing to output.
#jira
[FYI] Steve.Robb


#ROBOMERGE-SOURCE: CL 11128612 via CL 11128617 via CL 11128620
#ROBOMERGE-BOT: (v640-11091645)

[CL 11128623 by peter knepley in Main branch]
2020-01-28 09:04:05 -05:00
paul chipchase
155d67a986 Minor optimization to reduce the number of memory allocations due to string conversions when calling FBulkDataBase::ConvertFilenameFromFlags.
#rnx
#rb trivial

[CL 11128552 by paul chipchase in Dev-Core branch]
2020-01-28 08:54:19 -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
peter knepley
305aa8d81e Opening up FArchiveStackTrace to dump all USTRUCTs on package difference and not just guids and vectors. Trying to track some some FGameplayTagContainer differences, but that's not a core type.
[FYI] Steve.Robb


#ROBOMERGE-SOURCE: CL 11118680 via CL 11118755 via CL 11118791
#ROBOMERGE-BOT: (v640-11091645)

[CL 11118983 by peter knepley in Main branch]
2020-01-27 15:35:36 -05:00
paul chipchase
bed454fa5e Clean up some Bulkdata2 logigng
#rnx
#rb trivial

[CL 11104026 by paul chipchase in Dev-Core branch]
2020-01-24 06:30:38 -05:00
paul chipchase
4a46a363b4 Allow Bulkdata2 to load data from archives that do not allow lazy loading.
- The use case is that the enterprise team want to be able to load .udsmesh files at runtime.
- If the archive has lazy loading disabled and the Bulkdata is inline OR in a different file then we don't need to treat the serialization any differently than when lazy loading is enabled.
- If lazy loading is disabled but the data is at the end of the current archive then we need to serialize the data immediately by seeking, serializing and then seeking back to the original position.
 - This is because we will not get another chance to load the data (if lazy loading is disabled then the life time of the archive is going to be limited)
- Unlike the old Bulkdata we avoid branching on the archive type and only implement the very specific behaviour we need
- This means that a nullptr linker is now a valid value so the assert has changed to an if statement
- Likewise, the filename being nulllptr is also expected so the assert has changed to an if statement.

#rnx
#rb none
#fyi Johan.Duparc

[CL 11103761 by paul chipchase in Dev-Core branch]
2020-01-24 04:26:26 -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
JeanMichel Dignard
84facd6d15 Copy from dev-enterprise cl 11097196
#rb none
#rnx

[CL 11099277 by JeanMichel Dignard in Dev-Tools-Staging branch]
2020-01-23 16:28:59 -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
paul chipchase
4d8729bef5 Fix a crash when running EngineTest with the IoDispatcher.
- LoadDataDirectly now branches to the older file system if the IoDispatcher is disabled
- Implement a direct loading path from the IoDispatcher for non-inline data
- Log an error if someone tries to directly load inline data via the IoDipatcher as we do not and will not support that (although I do have a code shelf ready for it just in case)
- Re-enabled the perf warning about reloading inline bulkdata as a start towards removing this functionality as we cannot support it in the IoDisptcher without adding memory bloat and it is not desirable in the first place.
- Removed the malloc call in GetCopy before LoadDataDirectly since that method will allocate the buffer if needed anyway, this ends up being a small optimization by reducing the number of calls to ::GetBulkDataSize

#rnx
#rb none
#jira UE-87094

[CL 11082679 by paul chipchase in Dev-Core branch]
2020-01-22 10:26:31 -05:00
PJ Kack
b685bea513 AsyncLoading2: Fix replay crash caused by keeping stale UPackage pointer due to a missing weak ptr check for IsUnreachable.
#rb none

[CL 11082528 by PJ Kack in Dev-Core branch]
2020-01-22 10:09:48 -05:00
PJ Kack
42f26d8af1 AsyncLoading2: Replay bug fixes.
Properly handle load requests for temp packages that are already completed with a simple warning log.
Add an extra call toMarkAsFullyLoaded after finish objects (just as in the old loader), not actually required but probably nice to keep that behavior if some other code relies on it.

#rb none

[CL 11080538 by PJ Kack in Dev-Core branch]
2020-01-22 07:28:42 -05:00