Commit Graph

186 Commits

Author SHA1 Message Date
Stefan Boberg
8607ecb30d Copying //UE4/Dev-Core to Dev-Main (//UE4/Dev-Main)
#rb none

[CL 6815521 by Stefan Boberg in Main branch]
2019-06-03 15:32:00 -04:00
Ben Marsh
0cc6e3dca6 Copying //UE4/Dev-Build to Dev-Main (//UE4/Dev-Main)
#rb none
#rnx

[CL 6631504 by Ben Marsh in Main branch]
2019-05-24 11:51:54 -04:00
ben marsh
c3e532b195 Live Coding: Fix crashes when patching adaptive non-unity files in game modules containing static global variables.
Live++ reads object files at startup for game modules, and assigns unique ids to each compiland (used to disambiguate static variables). When compiling the patch, these compilands are modified to reference a unique id for the unity blob, causing the variables to be reconstructed.

Solution is to generate a JSON file to each output directory containing object files containing the mapping, and to use that to assign compiland ids at startup.

#rb none
#jira UE-74036

#ROBOMERGE-SOURCE: CL 6455253 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 6455273 by ben marsh in Main branch]
2019-05-14 18:12:06 -04:00
rob gay
52e89fb60a Seekable Streams Using LPCM/ADPCM
#rb aaron.mcleran
https://p4-swarm.epicgames.net/reviews/6345090


#ROBOMERGE-SOURCE: CL 6399748 via CL 6400508

[CL 6400529 by rob gay in Main branch]
2019-05-09 12:53:22 -04:00
ben marsh
86b3d2f446 Fix missing include paths in generated project files in binary builds, due to exception while generating project files due to missing module.
#rb none
#jira UE-73075

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 6017285 in //UE4/Release-4.22/... via CL 6017289
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 6020387 by ben marsh in Dev-Core branch]
2019-04-19 17:06:11 -04:00
ben marsh
b27d8a5a08 Fix missing include paths in generated project files in binary builds, due to exception while generating project files due to missing module.
#rb none
#jira UE-73075

#ROBOMERGE-SOURCE: CL 6017285 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 6017289 by ben marsh in Main branch]
2019-04-19 14:44:15 -04:00
marc audy
e732209b78 Fix non-unity
#rb
#rnx
[CODEREVIEW] Ben.Marsh
#jira

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: marc.audy
#ROBOMERGE-SOURCE: CL 6007151 via CL 6007296 via CL 6007313
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 6010574 by marc audy in Dev-Core branch]
2019-04-19 06:34:23 -04:00
marc audy
1c062e4fb2 Fix non-unity
#rb
#rnx
[CODEREVIEW] Ben.Marsh
#jira


#ROBOMERGE-SOURCE: CL 6007151 via CL 6007296

[CL 6007313 by marc audy in Main branch]
2019-04-19 00:37:07 -04:00
ben marsh
744b6cd6a0 LiveCoding: Merging fixes to resolve issues with global symbols being reconstructed when loading patch DLLs. Was causing asserts when log channels were re-registered etc...
#jira
#rb none

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5993252 via CL 5993257 via CL 5995286 via CL 5995562
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 6001814 by ben marsh in Dev-Core branch]
2019-04-18 21:38:02 -04:00
ben marsh
1ffdf73243 LiveCoding: Prevent Live Coding starting automatically when in unattended mode.
#rb none
#jira UE-72524

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5988868 in //UE4/Release-4.22/... via CL 5988908
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 5999856 by ben marsh in Dev-Core branch]
2019-04-18 21:27:16 -04:00
ben marsh
a289f6681e LiveCoding: Merging fixes to resolve issues with global symbols being reconstructed when loading patch DLLs. Was causing asserts when log channels were re-registered etc...
#jira
#rb none

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5993252 via CL 5993257 via CL 5995286

[CL 5995562 by ben marsh in Main branch]
2019-04-18 17:51:25 -04:00
ben marsh
075ce10523 LiveCoding: Prevent Live Coding starting automatically when in unattended mode.
#rb none
#jira UE-72524

#ROBOMERGE-SOURCE: CL 5988868 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5988908 by ben marsh in Main branch]
2019-04-18 14:02:02 -04:00
Johan Torp
ccd9c2597d FName optimizations and improvements
Encoding improvements
* New hash table implementation
--- Move away from 16-bit hashes since we need more than 64k buckets to hold 2M entries efficiently
--- Change to CityHash64, which is faster and stronger
--- Remove hardcoded max limit
* NAME_INDEX changed from contigouos int to monotonically increasing int
--- Opens up for future deduplication schemes that are better than number suffix dedup.
--- Saves some memory since we don't need to maintain a contiguous array
--- Typed up to cause compile errors when used as integer directly
* Avoid touching data repeatedly, normal path only does single hash of data
* New constructor that allows supplying string length up front
* Avoid dynamic allocations in string conversions >= 128 characters
* Avoid extra copying when splitting numbers
* More efficient IsPureAnsi check
* Only do one global lazy initialization call instead of multiple
* Switch to faster RW locks
* Switch from single lock to sharded hash map with separate locks
* Memory optimizations that reduces per entry overhead: 4 bytes slots, 2 byte headers and don't store null terminator

Improved API & documentation
* Document that IsValid() rarely makes sense
* Hide global state such as GetNames()
* Reduce amount of implementation details visible in header
* NameTypes.h size down by ~1/3 while adding documentation, stronger type safety and new APIs

Future possibilities
* Memory savings: Removing public NAME_INDEX and global FName array allows using the 32-bit FNameEntryId for arbitrary deduplication schemes. This can save both actual stored strings memory by deduplication and half the size of FName instances from 8B to 4B in shipping / test configs by removing the number part.
* Implementation can be tweaked further, for instance could persist 32-bit slot index hash inside slot to increase encoding performance in development / debug at the cost of memory.

Perf & mem results for internal project:
* Editor startup wall time: 12% speedup, 22.0s -> 19.5s
--- Warm disk and asset registry cache
--- Some gains from nametable serialization improvements
--- Some of these gains might be from orthogonal asset discovery optimizations
* Win64 Test Client memory usage with ~400k names: 30.3Mb -> 22.2Mb

#rb steve.robb, pj.kack
#jira UE-59973

[CL 5774657 by Johan Torp in Dev-Core branch]
2019-04-08 11:29:35 -04:00
ben marsh
dfe36e3c06 Live Coding: Fixes issue linking patch DLLs with Visual Studio Express, due to PATH environment variable not including path to mspdb140.dll.
Now stores the linker environment block in the live coding manifest, and adds it to the cache before executing the linker.

#rb none
#jira UE-72324

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5740602 in //UE4/Release-4.22/... via CL 5740765
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 5743844 by ben marsh in Dev-Core branch]
2019-04-04 13:06:53 -04:00
ben marsh
566e59e1e6 Live Coding: Fixes issue linking patch DLLs with Visual Studio Express, due to PATH environment variable not including path to mspdb140.dll.
Now stores the linker environment block in the live coding manifest, and adds it to the cache before executing the linker.

#rb none
#jira UE-72324

#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5740602 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5740765 by ben marsh in Main branch]
2019-04-04 12:02:05 -04:00
ben marsh
71c96d93e9 LiveCoding: Fix unnecessary newlines on log messages.
#jira

#ROBOMERGE-OWNER: robert.manuszewski
#ROBOMERGE-AUTHOR: ben.marsh
#ROBOMERGE-SOURCE: CL 5492012 via CL 5492936 via CL 5492937
#ROBOMERGE-BOT: CORE (Main -> Dev-Core)

[CL 5532607 by ben marsh in Dev-Core branch]
2019-03-25 06:00:16 -04:00
ben marsh
12addcdfb3 LiveCoding: Fix unnecessary newlines on log messages.
#jira


#ROBOMERGE-SOURCE: CL 5492012 via CL 5492936

[CL 5492937 by ben marsh in Main branch]
2019-03-21 11:49:46 -04:00
hongyi yu
6e46797857 Added support for per-platform mapping from chunkid to pakchunk index. Part 1
- This feature allows different chunk layout on different platforms.
- Most mapping work is done in AssetRegistryGenerator.
- Terminology of ChunkID and Pakchunk Index are now separated and they are no longer the same if chunk id to pakchunk index mapping is defined.  The ChunkIDs in FAssetData is not renamed to keep consistency, but it actually is pakchunk index.  FAssetData.ChunkIDs is used for ChunkInstall.
- Chunks with encryption key guid or unique assetregistry name are not allowed to be mapped.  There are code to filter out those chunks and log errors while initializing mapping
- CheckChunkAssetsAreNotInChild() and ResolveChunkDependencyGraph() is skipped when making build for XboxOne and PS4, since they are not needed.  If for some reason, we need chunk dependency on console builds, we need to implement per-platform dependency graph, since now we support different chunk layout on different platforms.
- Disabled a few pak file overide rules for console builds, since they should only be applied to builds with Kairos chunk layout.

#test A preflight was kicked and tested on PS4 and XboxOne.  No new issue was found.
#rb Daniel.Lamb


#ROBOMERGE-SOURCE: CL 5470414 via CL 5474050

[CL 5474308 by hongyi yu in Main branch]
2019-03-20 13:11:58 -04:00
ben marsh
583aa01bf7 LiveCoding: Add support for lazy loading modules. This lets us enable live coding for the entire engine without a large startup penalty. Project modules are still preloaded by default.
#rb none
#jira

#ROBOMERGE-SOURCE: CL 5437980 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5437990 by ben marsh in Main branch]
2019-03-18 18:07:05 -04:00
ben marsh
4b0b806b71 Fix issues related to hot-reload and LiveCoding co-existing.
* Removed code to invalidate makefiles when adding new source files. UBT should be reliable enough to make this determination itself nowadays, and ignored -invalidatemakefilesonly argument was causing modules to be recompiled.
* Fixed incorrect config section name when determining whether to allow hot reload from IDE. Now prevents hot reload from IDE when live coding is enabled.
* Added error message when trying to add a new class with Live Coding enabled.
* Added error messages when trying to start Live Coding after a hot reload has taken place.
* Added error messages when trying to hot reload with Live Coding enabled.

#jira UE-71253
#rb none

#ROBOMERGE-SOURCE: CL 5403464 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5403485 by ben marsh in Main branch]
2019-03-14 17:52:18 -04:00
ben marsh
81efe5710b LiveCoding: Fix determination of whether a module is part of a project plugin. Such modules report "false" for FModuleStatus.bIsGamePlugin.
#rb none
#jira UE-71399

#ROBOMERGE-SOURCE: CL 5365389 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368509 by ben marsh in Main branch]
2019-03-12 10:10:07 -04:00
ben marsh
e55b45ea0d LiveCoding: Fix the "Show Console" button being disabled until the first compile.
#rb none
#jira UE-71379

#ROBOMERGE-SOURCE: CL 5362145 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368489 by ben marsh in Main branch]
2019-03-12 10:09:35 -04:00
ben marsh
558a57ba3e LiveCoding: Allow editor thread to keep running while server is processing modules.
#rb none
#jira UE-71269

#ROBOMERGE-SOURCE: CL 5361379 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368488 by ben marsh in Main branch]
2019-03-12 10:09:33 -04:00
ben marsh
6597e1e8ee LiveCoding: Explicitly batch all EnableModules() commands, to prevent user command thread preempting the editor thread before it's finished adding everything. Prevents "Live coding ready" messages being spammed in the console window.
#rb none
#jira UE-71270

#ROBOMERGE-SOURCE: CL 5361279 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368485 by ben marsh in Main branch]
2019-03-12 10:09:28 -04:00
ben marsh
d695b8a97d Fix "Compile" button in toolbar using legacy hot reload when live coding startup is set to manual.
#rb none
#jira UE-71359

#ROBOMERGE-SOURCE: CL 5361201 in //UE4/Release-4.22/...
#ROBOMERGE-BOT: RELEASE (Release-4.22 -> Main)

[CL 5368484 by ben marsh in Main branch]
2019-03-12 10:09:26 -04:00