Files
UnrealEngineUWP/Engine/Source/Editor/StatsViewer/Private/StatsPages/TextureStatsPage.cpp

410 lines
13 KiB
C++
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#include "StatsPages/TextureStatsPage.h"
#include "GameFramework/Actor.h"
#include "Materials/MaterialInterface.h"
#include "Engine/Texture.h"
#include "Misc/App.h"
#include "UObject/UObjectIterator.h"
#include "Components/PrimitiveComponent.h"
#include "Engine/Texture2D.h"
#include "Engine/Selection.h"
#include "Engine/TextureCube.h"
#include "EngineUtils.h"
#include "Editor.h"
#include "ReferencedAssetsUtils.h"
#include "AssetSelection.h"
#define LOCTEXT_NAMESPACE "Editor.StatsViewer.TextureStats"
FTextureStatsPage& FTextureStatsPage::Get()
{
static FTextureStatsPage* Instance = NULL;
if( Instance == NULL )
{
Instance = new FTextureStatsPage;
}
return *Instance;
}
/** Helper class to generate statistics */
struct TextureStatsGenerator : public FFindReferencedAssets
{
TextureStatsGenerator(UWorld* InWorld)
{
World = InWorld != nullptr ? InWorld : GWorld;
}
UWorld* World;
/** Textures that should be ignored when taking stats */
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3805092) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3623004 by Ben.Marsh Fix RemoteExecutor not taking the remote machine specs into account. Change 3623172 by Ben.Marsh UGS: Fix "More Info..." button not using P4 server override. Change 3628820 by Ben.Marsh PR #3979: Get working directory from task element, not tool node (Contributed by nullbus) Change 3630424 by Graeme.Thornton Make the AES key parameter const in FAES::EncryptData() Change 3632786 by Steve.Robb FString constructor fixed to not take an ignored void* parameter, which can be misleading. Change 3639534 by Ben.Marsh Remove old P4.NET library. Doesn't seem to be used by anything. Change 3640536 by Steve.Robb GitHub #4007 : Delete unnecessary specialization of MakeArrayView #jira UE-49617 Change 3641155 by Gil.Gribb UE4 - Speculative fix for problem with summary reading in FAsyncArchive2. Change 3643932 by Ben.Marsh Add an example build script for updating the version number, then compiling and staging the editor and tools to an output directory. Optionally submits at the end (requires -Submit argument). Change 3644825 by Ben.Marsh Use VSWHERE to find the location of MsBuild.exe, if available. https://github.com/EpicGames/UnrealEngine/pull/3879#issuecomment-329688645 Change 3647395 by Ben.Marsh Allow compiling of monolithic binaries from BuildEditorAndTools.xml, using the -set:GameTarget=FooGame -set:TargetPlatforms=Win32;Win64 options. Change 3650300 by Ben.Marsh UAT: Remove code that deletes cooked data on a failed cook. The engine should write packages out transactionally now (by writing to a temporary file and moving into place), and deleting the cooked data just prevents post-mortem analysis. Change 3650856 by Robert.Manuszewski Adding checks to prevent FlushAsyncLoading and LoadObject/LoadPackage from being called from any threads other than the game thread Change 3651022 by Gil.Gribb UE4 - Possible fix for mysterious ensure indicating problematic recursion in the pak precacher. Change 3658331 by Steve.Robb Fix for the parsing of large integer values. Change 3661958 by Gil.Gribb UE4 - Fixed rare hang in task graph. Change 3664021 by Robert.Manuszewski Fix for a potential GC crash caused by stale pointer in AnimInstanceProxy See https://udn.unrealengine.com/questions/392432/gc-issue-uaniminstancemontageinstances-empty-but-u.html Change 3664254 by Steve.Robb Use ANSI allocator when thread sanitizer is enabled. This allows the generation of more accurate and meaningful reports. Change 3664436 by Steve.Robb Use TUniquePtr instead of a thread-unsafe TSharedPtr to move data between threads. Change 3666461 by Graeme.Thornton Improvements to signing/encryption key embedding and runtime access - Changed method of embedding key into the executable to make it more secure - Added FAESKey class to wrap a 32 byte key Change 3666462 by Graeme.Thornton Cut ShooterGame AES key down to 32 characters Change 3677560 by Ben.Marsh PR #4074: UBT: Add include and library-related fields to module JSON output (Contributed by adamrehn) Change 3683534 by Steve.Robb Refactoring of enum/struct lookup during hot reload. Change 3683754 by Steve.Robb Alignment fixes to allow int64 on 32-bit platforms Support for integral types in IsAligned. Static asserts so that alignment functions will no longer be called with non-intergal, non-pointer types. Some fixes to existing code. Change 3686670 by Steve.Robb Fix for thread-unsafe modification of static array in FString::ParseIntoArrayWS. Change 3687540 by Ben.Marsh Fix all UBT/UAT output going to stderr rather than stdout. Change 3688931 by Gil.Gribb UE4 - Critical fix for a rare race condition in the pak file async IO layer. Change 3690000 by Graeme.Thornton Manual copy of 4.18 CL 3687869 Make UBT include the destination INI file for a given hierarchy if it exists Renamed VSCode enum value to VisualStudioCode, so it matches the source accessor plugin name Change 3690030 by Graeme.Thornton VSCode fixes - Source Code Accessor plugin changes. Add new interface method to open a solution at a given path - GameProjectUtils now uses the source navigation API to open solutions rather than hardcoding which solution file types to look for - Various fixes for vscode project file generation #jira UE-50554 Change 3690885 by Steve.Robb Atomic reads in FReferenceControllerOps<ESPMode::ThreadSafe>. Change 3691052 by Steve.Robb Free stats thread on shutdown. Change 3695138 by Steve.Robb AsConst helper function added. Change 3696627 by James.Hopkin Changed player controller iterator typedefs to use TWeakObjectPtr rather than the deprecated TAutoWeakObjectPtr (review-3606695) Change 3697099 by Steve.Robb GitHub #4105 : Removed redundant class access modifier Change 3697154 by Steve.Robb Removal of deprecated functions in delegates. Mutable lambdas to can now be bound to delegates. Change 3697180 by Steve.Robb GitHub #4115 : Incorrect CPPMacroType used for USoftClassProperty Change 3697239 by Steve.Robb Allow TArray::Insert to take an array with any allocator type. Change 3697269 by Steve.Robb RelocateConstructItems instead of MoveConstructItems. Change 3697558 by Steve.Robb New _GetRef functions for TArray, which return a reference to the newly-added element. Unit tests for these functions. Change 3699776 by Steve.Robb TSAN warning suppression around IAsyncReadRequest::bCompleteAndCallbackCalled. Change 3702397 by Steve.Robb TIsTrivial type trait. Change 3702569 by Steve.Robb Allow a TGuardValue to be assigned to a different type from the one being guarded. Change 3706644 by Robert.Manuszewski Different stack ingore count for development builds for FArchiveStackTrace Change 3709272 by Steve.Robb Removal of redundant UpdateVertices, which causes a race condition on the renderer thread. Change 3709452 by Robert.Manuszewski Fixed a bug where with async time limit set to a low value the async loading could hang because the linker would keep reloading the preload dependencies Change 3709454 by Robert.Manuszewski Added command line option -NOEDL to disable EDL Change 3709487 by Steve.Robb Remove use of PLATFORM_HAS_64BIT_ATOMICS, which is always 1. Change 3709645 by Ben.Marsh Fix race condition between multiple instances of UBT trying to write out the XML config cache. Change 3711193 by Ben.Marsh Add an editor setting for the shared DDC location to use. #jira UE-51487 Change 3713811 by Steve.Robb Update .modules files after a hot reload. Don't check for directory timestamp changes as a way of detecting new files if hot reloading with a makefile, as this is already done during makefile invalidation checks. Pass hotreload flags around in UBT instead of relying on global state. This fixes the hot reload iteration speed regression without also regressing the fix to UE-42205. #jira UE-51472 Change 3715654 by Steve.Robb GitHub #4156 : Fixed not compiling template function Algo::UpperBoundBy. Change 3718782 by Steve.Robb TSharedPtr, TSharedRef and TWeakPtr assignment are now implemented as copy-and-swap to avoid an invalid smart pointer state being visible to any destructors being called. Change 3720830 by Steve.Robb Initial import of TAtomic object wrapper, which guarantees atomic access to an object. Change 3720881 by Steve.Robb FCompression ThreadSanitizer data race fixes. Change 3722640 by Graeme.Thornton Guard network platform file heartbeat function with the socket critical section. Stop heartbeat from causing a crash when firing during async loading. #jira UE-51463 Change 3722655 by Steve.Robb Don't null name table because it's already zeroed at startup. Some tidy-ups. Change 3722754 by Steve.Robb Thread sanitizer fix. Small typo fix. Change 3722849 by Graeme.Thornton Improve "caching file" message in networkplatformfile so it says "Requesting file..." and is only output when we actually request the file from the server Change 3723081 by Steve.Robb TAtomic is now aligned to the underlying integer type. TAtomic will now static assert with a better error message when given an unsupported type. Define added for the maximum platform-supported atomic type, and used instead of a (wrong) hardcoded number. Misc renames. Change 3723270 by Ben.Marsh Include /d2cgsummary argument when running UBT with -Timing. Change 3723683 by Ben.Marsh Do not include documentation in the generated project files by default. Suspect that the 30,000 UDN files that get added to the solution take up memory and degrate performance. Change 3725422 by Robert.Manuszewski When serializing compressed archive with multithreaded compression enabled, wait for the oldest async task instead of spinning. Change 3725735 by Robert.Manuszewski Making all CheckDefaultSubobjects related functions const Change 3726167 by Steve.Robb FMinimalName::IsNone added. Change 3726458 by Steve.Robb TAtomic will no longer instantiate for types which are not exactly a size supported by the platform layer. Change 3726542 by Ben.Marsh UGS: Always include the project filename in the editor build command. The project may not be in one of the .uprojectdirs paths. Change 3726595 by Ben.Marsh Allow building multiple game targets in the example BuildEditorAndTools.xml script. Change 3726724 by Ben.Marsh Fix ambiguities in calculating root directory. (GitHub #4172) Change 3726959 by Ben.Marsh Make sure that AutomationTool uses the same list of preprocessor definitions when compiling *.target.cs files as UnrealBuildTool does. Change 3728437 by Steve.Robb VisitTupleElements now supports invocation of a functor taking arguments from multiple tuples in parallel. Some improved documentation. NOTE: This is a backward-incompatible change to VisitTupleElements. Any existing calls will need their arguments swapping. Change 3732262 by Gil.Gribb UE4 - Fixed rare hangs in the task graph. Change 3732755 by Steve.Robb Stats TSAN fixes. Optimizations to FCycleCounter::Start() to only read the stat name once. Change 3735000 by Robert.Manuszewski Always preload the AssetRegistry module on startup. even if EDL is disabled. Even without EDL, if the async loading thread is enabled the AssetRegistryModule will otherwise be loaded from the ASL thread and that will assert. Change 3735292 by Robert.Manuszewski Made sure component visualizer is removed from VisualizersForSelection when UnregisterComponentVisualizer() is called otherwise it may cause crashes when the engine terminates. Change 3735332 by Steve.Robb Refactoring of UDelegateProperty::Identical() to clarify logic. Fixed UMulticastDelegateProperty::Identical() to compare the bound function names. PPF_DeltaComparison removed, as it doesn't seem useful. Change 3737960 by Graeme.Thornton VSCode - Add launch task for generating project files for the given folder Change 3738398 by Graeme.Thornton Make Visual Studio source code accessor's module hotreload handler pass the 'save all files' message to the current accesor, rather than direct to the visual studio accessor #jira UE-51451 Change 3738405 by Graeme.Thornton VSCode: Format c/cpp settings strings using comment path formatting function Change 3738928 by Steve.Robb Fix for lack of null conditional operators in some older Monos. (replicated from CL# 3729574 in Release-4.18) #jira UE-51842 Change 3739135 by Ben.Marsh Fix being unable to package projects in a folder called "Wolf". This is only a restricted folder for Epic's Perforce history. #jira UE-51855 Change 3739360 by Ben.Marsh UAT: Fix issue with P4PORT setting not being parsed correctly. Change 3745959 by James.Hopkin #core Added ImplicitConv for safe upcasts to a specific required type, e.g. deduced delegate payload types Change 3746125 by Steve.Robb FName ThreadSanitizer fixes. Change 3747274 by Steve.Robb TSAN fix for FMediaTicker::Stopping. Change 3747618 by Steve.Robb ThreadSanitizer data race fix for FShaderCompileThreadRunnableBase::bForceFinish. Change 3747720 by Steve.Robb ThreadSanitizer fix for FMessageRouter::Stopping. Change 3749207 by Graeme.Thornton First pass of CryptoKeys plugin. Allows creation/editing/cycling of AES/RSA keys. Change 3749323 by Graeme.Thornton Fix UAT crash when only -targetplatform is specifiied Change 3749349 by Steve.Robb TSAN_SAFE guards around LockFreeList to silence ThreadSanitizer. Change 3749617 by Steve.Robb Logf static_assert for formatting string enabled. Change 3749897 by Steve.Robb FDebug::LogAssertFailedMessage static assert for formatting string enabled. Change 3754011 by Steve.Robb Static asserts that the allocator supports move. Move-enabled our allocators which don't support move. Change 3754227 by Ben.Marsh Fix build command line in generated projects missing a space before the compiler version override. #jira UE-52226 Change 3754562 by Ben.Marsh PR #4206: Replace deprecated wsprintf with secure swprintf for Bootstrap executable (Contributed by jessicafalk) Change 3755616 by Graeme.Thornton Runtime code for using the new crypto ini files to define signing/encryption keys #jira UE-46580 Change 3755666 by James.Hopkin Used ImplicitConv to remove Casts being used for up-casts #review-3745965 Change 3755671 by Graeme.Thornton Add log message in unrealpak to say which config file system it is using for crypto keys Change 3755672 by Graeme.Thornton Updating ShooterGame with new CryptoKeys based security setup Change 3756778 by Ben.Marsh Add support for running multiple jobs simultaneously on a single builder. When running job or agent setup, the --num-slots=X parameter defines the number of steps that can run simultaneously (EC procedures pass in the resource step limit). A lock file is created under the workspace root (D:\Build) and a reservation file is created for the first slot that can be allocated (slot-1, slot-2, etc...). The slot number is used to define the workspace name that should be used. Change 3758498 by Ben.Marsh Re-throw exceptions when a file cannot be deleted when cleaning a target. Change 3758921 by Steve.Robb ThreadSanitizer fix to FThreadSafeStaticStatBase::HighPerformanceEnable to do a relaxed atomic load on access. DoSetup() now returns the newly-allocated pointer, instead of reloading it from memory. Change 3760599 by Graeme.Thornton Added missing epic header comment to some new source files Change 3760642 by Steve.Robb ThreadSanitizer fix for concurrent access to GMainThreadBlockedOnRenderThread. Change 3760669 by Graeme.Thornton Improvement to OpenSSL based signing key generator. Generate a full RSA key then steal the primes from it, rather than generating the primes manually. Added a test mode to the cryptokeys commandlet to test signing key generation Change 3760711 by Steve.Robb ThreadSanitizer fixes to GIsRenderingThreadSuspended. Change 3760739 by Steve.Robb ThreadSanitizer fix for FQueuedThread::TimeToDie. Change 3760763 by Steve.Robb ThreadSanitizer fix for GRunRenderingThreadHeartbeat. Removal of unnecessary/dangerous initializer for GMainThreadBlockedOnRenderThread. Change 3760793 by Steve.Robb Some simple refactoring to remove some volatile reads of BufferStartPos and BufferEndPos. Change 3760817 by Steve.Robb ThreadSanitizer fixes for FAsyncWriter::BufferStartPos and BufferEndPos. Change 3761331 by Josh.Engebretson UnrealBuildTool enforcement of Development and Debug configurations in existing .csproj #jira UE-52416 Change 3761521 by Steve.Robb ThreadSanitizer fixes for FEvent::EventStartCycles and EventUniqueId. Change 3763117 by Graeme.Thornton PR #3722: Optimising FPaths::IsRelative() (Contributed by jovisgCL) Change 3763358 by Graeme.Thornton Ensure that all branches within FGenericPlatformMisc::RootDir() produce an absolute path with no duplicate slashes Remove relative->abs conversion of root dir from FPaths::MakeStandardFilename(), now that we know RootDir() always returns an absolute path Derived from the content of this PR: PR #3742: Treat RootDirectory the same way as Standardized (Contributed by TroutZhang) Change 3764058 by Graeme.Thornton Generate a .code-workspace file for the current workspace. Allows foreign projects to "mount" the UE4 folder so that the engine tasks are avaible, and all engine source is visible to VSCode for searching purposes #jira UE-52359 Change 3764705 by Steve.Robb Better handling of whitespace in ImportText_Internal() for set and map properties. Containers are now emptied upon import failure, to avoid leaving bad container states (unhashed, partial data). Fix to USetProperty's temp buffer size to avoid buffer overruns. Duplicate map keys are now skipped during import, same as USetProperty's behavior. Change 3764731 by Steve.Robb Don't re-run UHT if only source files have changed in the same folder as headers. This was already done for hot reload, but there's no reason why it should be limited to that. Change 3765923 by Graeme.Thornton VSCode - "taskName" -> "label" for C# build tasks Change 3766018 by Steve.Robb constexpr constructor for TAtomic. Change 3766037 by Steve.Robb Misc tidyings in HotReload.cpp. Change 3766046 by Steve.Robb ThreadSanitizer fixes to ENamedThreads::RenderThread and ENamedThreads::ENamedThreads_Local. Change 3766288 by Steve.Robb Improved efficiency of adding/removing elements to UGCObjectReferencer::ReferencedObjects. Change 3766374 by Josh.Engebretson Fix issue with ini quoted value comparison #jira UE-52066 Change 3766532 by Josh.Engebretson PR #3680: Added NetSerialize to FDateTime fixing UE-22533 (Contributed by druhasu) #jira UE-46156 Change 3766740 by Steve.Robb TMultiMap::Append added. Change 3767523 by Steve.Robb ThreadSanitizer fix for UE4Delegates_Private::GNextID. Change 3767601 by Steve.Robb ThreadSanitizer fix for FStats::GameThreadStatsFrame. Change 3770567 by Ben.Marsh Add a FAnnotatedArchiveFormatter interface which allows querying structural type information that may not be in binary archives. Change 3770826 by Ben.Marsh Move StructuredArchive implementation into Core, so primitive types can implement serialization overloads for it. Change 3770875 by Steve.Robb Redundant UScriptStruct::PostLoad removed, which was causing a race condition in async loading. This was re-establishing the CppStructOps, but that is unnecessary because native classes cannot change as a result of a load - only BP structs can, and they don't have CppStructOps. Change 3772167 by Ben.Marsh Add a context-free binary formatter that can serialize tagged data. This functions as a lower-overhead binary intermediate format for JSON data. Change 3772248 by Steve.Robb ThreadSanitizer fixes to FMalloc call counters. Change 3772383 by Ben.Marsh Separate archive metadata from FArchive into FArchiveContext, so it can be safely exposed to consumers of FStructuredArchive. Change 3772906 by Graeme.Thornton TextAssetCommandlet - Utility commandlet for testing/converting to text asset format Change 3772932 by Ben.Marsh Fix "String:" prefix not being stripped from escaped string values. Change 3772942 by Graeme.Thornton Add experimental setting to enable in-editor text asset format functionality Add "export to text" option into the content browser asset actions context menu Change 3772955 by Ben.Marsh Add a new "stream" compound type to FStructuredArchive, which allows serializing a sequence of elements similarly to an array, but without serializing an explicit size. Allows passing through data to an underlying binary archive without breaking compatibility. Change 3772963 by Ben.Marsh Allow querying record keys and stream lengths from annotated archive formatters, since these archives have markup for field boundaries. Change 3773010 by Graeme.Thornton Added CORE_API to FArchiveFromStructuredArchive Gave text asset format experimental option a slightly less random tooltip comment Change 3773057 by Ben.Marsh Add a flag to FArchive to determine whether the archive is text (IsTextFormat()). Add support for seeking within FArchiveFromStructuredArchive. For text formats, data is serialized to an in-memory buffer, with names and objects serialized as indices into an array. For non-text formats, data is serialized directly to the underlying archive. Also rename FStructuredArchive::TryEnterSlot() to TryEnterField(). Change 3773118 by Steve.Robb TSignedIntType and TUnsignedIntType type traits for getting an integer type of a given size. Change 3773122 by Steve.Robb TAtomic fixes for pointer arithmetic. TSignedIntType used instead of reimplementing its own trait. Change 3773123 by Steve.Robb Unit tests for TAtomic. Change 3773138 by Steve.Robb Run numeric tests on integer types instead of basic tests. Fix for compiler warnings when subtracting from unsigned atomics. Change 3773166 by Steve.Robb Refactoring of arithmetic operations into its own class, then basing the pointer and integral versions on that. Change 3774216 by Gil.Gribb UE4 - Fix rare crash in the pak precacher immediately after unmounting a pak file. Change 3774426 by Ben.Marsh Copy all C# tools to a staging directory before compiling them. This prevents access violations when compiling tools like iPhonePackager that reference DotNETCommon, and ensures we strip NotForLicensees folders out of them all. See: https://answers.unrealengine.com/questions/726010/418-will-not-build-from-source.html Change 3774658 by Ben.Marsh Improve error reporting while generating intellisense for project files. Include the name of the target being compiled, and allow project file generation to continue without it. Change 3775141 by Ben.Marsh Always output HTML5 diagnostics at "information" verbosity, to avoid every line being prefixed with "WARNING:" and screwing up the EC postprocessor. Change 3775459 by Ben.Marsh Removing .NET Framework Perforce DLL as runtime dependency of engine third party library. The actual library is linked statically. Change 3775522 by Ben.Marsh UGS: Treat .uproject and .uplugin files as code changes. Change 3775597 by Ben.Marsh Fix post-build steps for plugins not being executed. #jira UE-52754 Change 3777895 by Graeme.Thornton StructuredArchiveFromArchive - An adapter class for wrapping an existing FArchive with a structured archive Change 3777931 by Graeme.Thornton Refactored FArchiveUObjects serialization code into some static helpers Added FArchiveUObjectFromStructuredArchive which allows the adaption of a structured archive into an FArchive that supports the extra UObect serialization functions for weak/soft pointers Change 3777942 by Graeme.Thornton Added missing CORE_API to FStructuredArchive::FStream Added FStructuredArchive::FSlot insertion operator for char Added specialization of TArray<uint8> serializer for structured archives which serializes the contents as one value Change 3778084 by Graeme.Thornton Adding FPackageName::GetTextAssetPackageExtension() to access the file extension we use for text asset files Change 3778096 by Graeme.Thornton Add a constructor to FArchiveUObjectFromStructuredArchive that takes a slot and passes it to the base class Change 3778389 by Josh.Engebretson Fix an optimization issue with CPU benchmarking Add better support for debugging/testing local rocket builds UDN Link: https://udn.unrealengine.com/questions/400909/command-scalability-auto-gives-inaccurate-cpu-benc.html #jira UE-52192 Change 3778701 by Josh.Engebretson Ensure plugin content folders are mounted consistently. Fixes TryConvertFilenameToLongPackageName failing to work on plugin assets UDN Link: https://udn.unrealengine.com/questions/276386/tryconvertfilenametolongpackagename-fails-for-plug.html #jira UE-40317 Change 3778832 by Chad.Garyet Adding enterprise path support for PCB's for UGS Change 3780258 by Graeme.Thornton TextAssetCommandlet - Accumulate timings for loading packages and saving packages Change 3780463 by Graeme.Thornton CryptoKeys improvements - Enable CryptoKeys plugin by default - Attempt to inherit settings from the old system by default - Hide ini/index encryption settings from packaging settings and just inherit previous values into new system Minor UBT change to remove a trailing comma from the end of encryption/signing key binary strings Change 3780557 by Ben.Marsh Fix LoginFlow module not being precompiled for the binary release. Change 3780846 by Josh.Engebretson Improve filename to long package name resolution when provided a relative path Change 3780863 by Ben.Marsh UAT: Add a better error message when a C# project has an invalid reference. Change 3780911 by Ben.Marsh Update the BuildEditorAndTools.xml script to allow submitting archived binaries to Perforce. The "Submit To Perforce For UGS" node creates a zip of all the binaries that have been built, and submits it to the stream specified by the 'ArchiveStream' argument. Change 3780956 by Josh.Engebretson Add support for ! (RemoveKey) config command to UBT UDN Link: https://udn.unrealengine.com/questions/397267/index.html #jira UE-52033 Change 3782957 by Robert.Manuszewski UE4 - Fixed a linear search in EDL that caused performance problems for very large maps. Change 3784503 by Ben.Marsh Optimizations for FStructuredArchive: * Store the depth explicitly in element objects, to avoid having to loop through the scope stack to find it. * Prevent shrinking of arrays when removing elements. * Add an inline allocator to the scope and container stacks. Change 3784700 by Ben.Marsh Remove the inline allocator from FStructuredArchive; checking whether the inline or backup allocator is being used is slower than just allocating up-front. Change 3784989 by Ben.Marsh Compile out all the FStructuredArchive validation code when WITH_TEXT_ARCHIVE_SUPPORT = 0. Change 3786860 by Gil.Gribb UE4 - Remove no buffering flag from windows async IO because it disabled the disk cache entirely. Change 3787159 by Ben.Marsh Guard against UE4.0 backwards compatibility path when determining if an engine is a source distribution. Change 3787493 by Josh.Engebretson Parallel pak generation now uses MaxDegreeOfParallelism option which is now set to the number of CPU cores Moved cryptography settings parsing out of threaded CreatePak method to avoid concurrency issue in ConfigCache.TryReadFile Fix for multiple threads parsing ini keys (PR 3995) #PR 3995 #jira 52913 #jira 49503 Change 3787773 by Steve.Robb Fix for missing final values from FOREACH_ENUM_ macros. Change 3788287 by Ben.Marsh TBA: Add checks in debug builds that key names in maps and records for FStructuredArchive are unique. Change 3788678 by Ben.Marsh Fix compile error due to inability to instantiate TArray<> of forward declared struct. Convert set of key names to an array to avoid including Set.h in public header for FStructuredArchive. Change 3789353 by Graeme.Thornton Removed unused/rotten modes from TextAsset commandlet. Used existing "-iterations=n" switch to control a global iteration over the given command. Useful for performance testing. Change 3789396 by Ben.Marsh Move code to validate container keys/sizes into DO_GUARD_SLOW checks, and allocate container metadata instances dynamically to fix problems with references to things not declared in headers that can't be included from StructuredArchive.h Change 3789772 by Ben.Marsh Always strip trailing slashes from the end of paths specified by .build.cs files; they can cause quoted paths to be escaped on the command line. Change 3790003 by Ben.Marsh TBA: Rename FStructuredArchive::EElementType::Object to FStructuredArchive::EElementType::Record. Change 3790051 by Steve.Robb PIE is disabled during a hot reload. Hot reload in editor is disabled during PIE. Hot reload from IDE is deferred until after PIE is exited. Compiling multiple times before a hot reload (e.g. compiling multiple times in PIE) will now load the most recent change. #jira UE-20357 #jira UE-52137 Change 3790709 by Steve.Robb Better move support for TVariant. EVariantTypes switched over to using an enum class to aid debugger visualization. Change 3791422 by Ben.Marsh TBA: Return the type of a field from an annotated archive formatter at the point that we enter it, rather than querying all the time. Change 3791489 by Graeme.Thornton TBA: Change StructuredArchiveFromArchive adapter to use the archive.Open() result directly, now that it's a slot and not a record Change 3792344 by Ben.Marsh Improvements to base64 encoding library. * Now supports encoding and decoding with ANSICHAR and WIDECHAR implementations. * Added support for decoding base-64 blobs without padding marks. * Added support for decoding into pre-allocated buffer. * Added constexpr functions for determining the encoded and maximum decoded size of an input buffer. * Prevent writes past the end of allocated buffer (no longer need to manually remove padding bytes). Change 3792949 by Ben.Marsh TBA: Rename FAnnotatedArchiveFormatter to FAnnotatedStructuredArchiveFormatter. Change 3794078 by Robert.Manuszewski Fixing a crash that could happen when FGCObjects were constructed and destructed when shutting down the engine #jira UE-52392 Change 3794413 by Ben.Marsh TBA: Remove the element type parameter to SetScope(). It isn't really needed; we can just assume the element ID correctly identifies the item on the stack. Change 3794731 by Ben.Marsh TBA: Optimize creation of stack elements for empty slots in FStructuredArchive. This saves a lot of bookkeeping when serializing a large number of individual fields. Since only one slot can be active at a time (and it only exists temporarily, until we write into it), we can just store the element ID assigned to it in a member variable. Change 3795081 by Ben.Marsh UBT: Move LinuxCommon.cs into Platform/Linux folder. Change 3795137 by Ben.Marsh UBT: Allow modules to specify private compiler definitions from the build.cs file, only visible within that module (via the "PrivateDefinitions" property). Change 3795247 by Ben.Marsh Fix missing header when creating a new interface from the editor new code wizard. #jira UE-53174 Change 3796025 by Graeme.Thornton Fixed some deprecated "Definitions" warnings in OpenCV build files Change 3796103 by Graeme.Thornton Disable experimental text asset option - it does nothing useful yet. Change 3796157 by Graeme.Thornton Fix path type mismatch in visual studio source code accessor meaning that the DTE comms wouldn't identify a running instance of VS as having the current solution open. #jira UE-53206 Change 3796315 by Ben.Marsh Move Formatter to the correct position for initializer. #jira UE-53208 Change 3797082 by Ben.Marsh UAT: Work around for exception thrown by launching cook with "-platform=Android_ETC1 -targetplatform=Android -cookflavor=ETC1". Anrdoid_ETC1 is not a valid platform (it's a cook platform), and can't be parsed by UAT. #jira UE-53232 Change 3799050 by Ben.Marsh Make UnrealPak.version files writable for Mac and Linux. Change 3801012 by Graeme.Thornton VSCode - Update source accessor to use code workspace as it's target, rather than just the project directory Change 3801214 by Gil.Gribb UE4 - Remove assert to work around minor problem with lock free lists. #jira UE-49600 Change 3801219 by Steve.Robb WeakObjectPtrs now warn when casting away const. Change 3801299 by Graeme.Thornton Fix quote issue with foreign project build tasks on PC Change 3803292 by Graeme.Thornton Fix crash on startup when using cook-on-the-side. Force a flush of the asset registry background scanning when creating the cook-on-the-side platform registries Change 3803559 by Steve.Robb TSAN fix for FMalloc::MaxSingleAlloc. Change 3803735 by Graeme.Thornton Last set of cryptokeys changes - Added some comments for editor exposed settings - Split "encrypt assets" option into "encrypt uassets" and "encrypt all assets" Change 3803929 by Ben.Marsh UGS: Show an in-place error panel when a project fails to open, allowing the user to retry and have their tabs saved instead of creating a modal dialog. Change 3624590 by Steve.Robb AddReferencedObjects now generates a compile error with containers of UObject*s where the UObjectType is forward-declared, as these which won't be added to the reference collector. Tidy-up of existing calls to AddReferencedObjects. Change 3629473 by Ben.Marsh Build: Rename the option for embedding source server information in PDB files for installed engine builds. Change 3632894 by Steve.Robb VARARG* macros deprecated and usage replaced with variadic templates. Change 3640704 by Steve.Robb MakeWeakObjectPtr added, which deduces a TWeakObjectPtr type from a raw pointer type. Fix to TWeakObjectPtr's constructor which implicitly removed const. Fixes to everything which didn't compile as a result. Change 3650813 by Graeme.Thornton Removed FStartupPackages and associated code Change 3651000 by Ben.Marsh Return the stack size from FPlatformStackWalk::CaptureStackBacktrace() rather than checking for the first null pointer, to prevent truncated callstacks if parts of the stack are zeroed out. #jira UE-49980 Change 3690842 by Steve.Robb FPlatformAtomics::AtomicRead added - needs optimizing. AtomicRead() used in FThreadSafeCounter::GetValue(). Change 3699416 by Steve.Robb Fix to debugger visualization of TArray with a TInlineAllocator or TFixedAllocator. Improved readability of TSparseArray visualization. Change 3720812 by Steve.Robb Atomic functions for 8-bit and 16-bit. Android, Linux and Switch implementations now just use the Clang implementation. AtomicRead64 deprecated in favor of the int64* AtomicRead overload. Change 3722698 by Steve.Robb VS debugger visualizers for TAtomic. Change 3732270 by Steve.Robb Relaxed stores and loads. Change 3749315 by Graeme.Thornton If UAT is invoked with platforms in both the -platform and -targetplatform command line switches, build using all of them rather than just the ones in -targetplatform #jira UE-52034 Change 3750657 by Josh.Engebretson Fixed issue when debugging editor cook/package and project launch operations #jira UE-52207 Change 3758514 by Steve.Robb Fixes to FString::Printf having non-literals being passed as its formatting string. Change 3763356 by Steve.Robb ENamedThreads::RenderThread and ENamedThreads::RenderThread_Local encapsulated by getters and setters. Change 3770549 by Steve.Robb Removal of obsolete PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS and PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES. Tidy up of existing code which uses it. Change 3770553 by Ben.Marsh Adding structured serialization API to Core/CoreUObject for use with text-based assets. * FStructuredArchive abstracts an archive which is made up of compound types (records, arrays, and maps). Values are stored in slots within these types. * Records are string -> value dictionaries where the key names can be compiled out in non-editor builds or when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Maps are string -> value dictionaries where the key names are present regardless of the build type. * Proxy objects are defined to express the context for serialization (FStructuredArchive::FRecord, FStructuredArchive::FArray, FStructuredArchive::FMap, FStructuredArchive::FSlot) which allows basic validation through static typing. These objects act as lightweight handles, and can be cheaply constructed and passed around on the stack. Most serialization to and from the archive is done through these objects. * Runtime checks perform additional validation to ensure that serialized data is well formed and written in a forward-only manner, regardless of the underlying archive type. * The actual input/output format is determined by a separate interface (FArchiveFormatter). Context validation (always causing matching LeaveArray for every EnterArray, etc...) is done by FStructuredArchive, so implementing these classes is fairly trivial. FArchiveFormatter can be de-virtualized in non-editor builds, where WITH_TEXT_ARCHIVE_SUPPORT = 0. * Includes implementations of FArchiveFormatter for binary and JSON formats. Change 3771105 by Steve.Robb Deprecation warnings for PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES and PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS. Fix for incorrect warning formatting on Clang platforms. Change 3771520 by Steve.Robb Start moving Clang-using platforms' pre-setup stuff into a Clang-specific header. Change 3771564 by Steve.Robb More common macros moved to the Clang pre-setup header. Change 3771613 by Steve.Robb EMIT_CUSTOM_WARNING_AT_LINE moved to ClangPlatformCompilerPreSetup.h. Change 3772881 by Ben.Marsh Add support for serializing FName and UObject through FStructuredArchive. In order to allow custom linker behavior when serializing objects: * The constructor to JSON input formatter now takes a delegate to convert a string object name into a UObject pointer. * The constructor to tagged binary formatter takes a delegate to serialize a UObject pointer into any form it chooses (likely an integer index into the import table) Object and name types are stored as strings in JSON, using an "Object:" or "Name:" prefix to differentiate them from regular strings. Any strings that already contain one of these prefixes are prepended with a "String:" prefix (as is any string that already has a "String:" prefix). Change 3772941 by Graeme.Thornton Make build work when including StructuredArchive.h from core container types Added standard header to new files Add structured archive serializer for TArray Fix bug in structured archive where containers weren't being popped from the scope stack Change 3772972 by Ben.Marsh Add an adapter which presents a legacy FArchive interface to a FStructuredArchive slot. Data is serialized into this slot as a stream of elements; raw data is buffered up into fixed size chunks, names and objects are serialized separately. When used with FBinaryArchiveFormatter, this should result in all data being passed through to the underlying archive in a backwards compatible way, wiith no additional bookkeeping fields. Change 3773006 by Ben.Marsh Rename FStructuredArchive::FRecord::EnterSlot() to EnterField(). Change 3773013 by Steve.Robb bUseInlining target rule added to UnrealBuildTool, which defaults to true, to allow inlining to be disabled for debugging purposes. Change 3774499 by Ben.Marsh Minor fixes for FStructuredArchive related classes: * Text-based archive formats are now compiled out when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Fixed issue with FTaggedBinaryArchiveFormatter state becoming corrupted when looking ahead at field types. * FArchiveFieldName constructor is now explicit, to fix cases where strings were being passed directly to serialize functions. Change 3774600 by Ben.Marsh Add CopyFormattedData() function, which can copy data from one formatter to another. Add a test case to SerializationAPI that converts from data -> JSON -> binary -> JSON -> data. This function can be used to implement a generic visitor pattern, by implementing a FArchiveFormatter which receives the deserialized data. Change 3789721 by Ben.Marsh TBA: Split FTaggedBinaryArchiveFormatter into separate classes for reading and writing. Change 3789920 by Ben.Marsh TBA: Support automatic coercion between any numeric types in tagged binary archives. Also report the smallest type that can contain a value, rather than just in32/double. #jira UECORE-364 Change 3789982 by Ben.Marsh TBA: Change FStructuredArchive::Open() to return a slot, rather than a record, to make it easier to implement a raw FArchive adapter. Change 3792466 by Ben.Marsh TBA: Better handling of raw data in text based assets. Short sequences of binary data are Base64 encoded as a single string. Longer sequences are stored as an array of Base64 encoded lines, push a SHA1 hash to detect cases where the data was merged incorrectly. In order to allow inference of the correct type for a field, other fields called "Base64" will be escaped to "_Base64", and any field beginning with "_" will have an additional underscore inserted. Reading files back in reverses these transformations. Change 3792935 by Ben.Marsh TBA: Rename FArchiveFormatter to FStructuredArchiveFormatter for consistency with FStructuredArchive. Change 3795100 by Ben.Marsh UBT: Rename the ModuleRules Definitions property to PublicDefinitions, to make its semantics clearer. Change 3795106 by Ben.Marsh Replace all internal usages of ModuleRules.Definitions, and replace it with ModuleRules.PublicDefinitions. Change 3796275 by Ben.Marsh Fix paths to Version.h includes from resource files. Change 3800683 by Josh.Engebretson Remove WER from Mac and Linux crash reports in favor of unified runtime-xml format #jira UE-50073 Change 3803545 by Steve.Robb TWeakObjPtr const-dropping assignment fix. Fixes to change. [CL 3805231 by Ben Marsh in Main branch]
2017-12-12 18:32:45 -05:00
TArray<TWeakObjectPtr<const UTexture>> TexturesToIgnore;
/** Map so we can track usage per-actor */
TMap<FString, UTextureStats*> EntryMap;
void GetObjectsForListMode( const ETextureObjectSets InObjectSet, TArray<UObject*>& OutObjectsToSearch )
{
if( InObjectSet == TextureObjectSet_SelectedActors )
{
// In this mode only get selected actors
for( AActor* Actor : FSelectedActorRange(World) )
{
OutObjectsToSearch.Add( Actor );
}
}
else if( InObjectSet == TextureObjectSet_SelectedMaterials )
{
TArray<FAssetData> SelectedAssets;
AssetSelectionUtils::GetSelectedAssets( SelectedAssets );
// In this mode only get selected materials
for ( auto It = SelectedAssets.CreateConstIterator(); It; ++It )
{
if ((*It).IsAssetLoaded())
{
UMaterialInterface* Material = Cast<UMaterialInterface>((*It).GetAsset());
if( Material )
{
OutObjectsToSearch.Add( Material );
}
}
}
}
else if( InObjectSet == TextureObjectSet_CurrentStreamingLevel )
{
// In this mode get all actors in the current level
for (int32 ActorIdx = 0; ActorIdx < World->GetCurrentLevel()->Actors.Num(); ++ActorIdx )
{
OutObjectsToSearch.Add( World->GetCurrentLevel()->Actors[ActorIdx] );
}
}
else if( InObjectSet == TextureObjectSet_AllStreamingLevels )
{
// In this mode get all actors in all levels
for( int32 LevelIdx = 0; LevelIdx < World->GetNumLevels(); ++LevelIdx )
{
const ULevel* CurrentLevel = World->GetLevel( LevelIdx );
for (int32 ActorIdx = 0; ActorIdx < CurrentLevel->Actors.Num(); ++ActorIdx )
{
OutObjectsToSearch.Add( CurrentLevel->Actors[ActorIdx] );
}
}
}
}
bool IsTextureValidForStats( const UTexture* Texture )
{
const bool bIsValid = Texture && // texture must exist
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3805092) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3623004 by Ben.Marsh Fix RemoteExecutor not taking the remote machine specs into account. Change 3623172 by Ben.Marsh UGS: Fix "More Info..." button not using P4 server override. Change 3628820 by Ben.Marsh PR #3979: Get working directory from task element, not tool node (Contributed by nullbus) Change 3630424 by Graeme.Thornton Make the AES key parameter const in FAES::EncryptData() Change 3632786 by Steve.Robb FString constructor fixed to not take an ignored void* parameter, which can be misleading. Change 3639534 by Ben.Marsh Remove old P4.NET library. Doesn't seem to be used by anything. Change 3640536 by Steve.Robb GitHub #4007 : Delete unnecessary specialization of MakeArrayView #jira UE-49617 Change 3641155 by Gil.Gribb UE4 - Speculative fix for problem with summary reading in FAsyncArchive2. Change 3643932 by Ben.Marsh Add an example build script for updating the version number, then compiling and staging the editor and tools to an output directory. Optionally submits at the end (requires -Submit argument). Change 3644825 by Ben.Marsh Use VSWHERE to find the location of MsBuild.exe, if available. https://github.com/EpicGames/UnrealEngine/pull/3879#issuecomment-329688645 Change 3647395 by Ben.Marsh Allow compiling of monolithic binaries from BuildEditorAndTools.xml, using the -set:GameTarget=FooGame -set:TargetPlatforms=Win32;Win64 options. Change 3650300 by Ben.Marsh UAT: Remove code that deletes cooked data on a failed cook. The engine should write packages out transactionally now (by writing to a temporary file and moving into place), and deleting the cooked data just prevents post-mortem analysis. Change 3650856 by Robert.Manuszewski Adding checks to prevent FlushAsyncLoading and LoadObject/LoadPackage from being called from any threads other than the game thread Change 3651022 by Gil.Gribb UE4 - Possible fix for mysterious ensure indicating problematic recursion in the pak precacher. Change 3658331 by Steve.Robb Fix for the parsing of large integer values. Change 3661958 by Gil.Gribb UE4 - Fixed rare hang in task graph. Change 3664021 by Robert.Manuszewski Fix for a potential GC crash caused by stale pointer in AnimInstanceProxy See https://udn.unrealengine.com/questions/392432/gc-issue-uaniminstancemontageinstances-empty-but-u.html Change 3664254 by Steve.Robb Use ANSI allocator when thread sanitizer is enabled. This allows the generation of more accurate and meaningful reports. Change 3664436 by Steve.Robb Use TUniquePtr instead of a thread-unsafe TSharedPtr to move data between threads. Change 3666461 by Graeme.Thornton Improvements to signing/encryption key embedding and runtime access - Changed method of embedding key into the executable to make it more secure - Added FAESKey class to wrap a 32 byte key Change 3666462 by Graeme.Thornton Cut ShooterGame AES key down to 32 characters Change 3677560 by Ben.Marsh PR #4074: UBT: Add include and library-related fields to module JSON output (Contributed by adamrehn) Change 3683534 by Steve.Robb Refactoring of enum/struct lookup during hot reload. Change 3683754 by Steve.Robb Alignment fixes to allow int64 on 32-bit platforms Support for integral types in IsAligned. Static asserts so that alignment functions will no longer be called with non-intergal, non-pointer types. Some fixes to existing code. Change 3686670 by Steve.Robb Fix for thread-unsafe modification of static array in FString::ParseIntoArrayWS. Change 3687540 by Ben.Marsh Fix all UBT/UAT output going to stderr rather than stdout. Change 3688931 by Gil.Gribb UE4 - Critical fix for a rare race condition in the pak file async IO layer. Change 3690000 by Graeme.Thornton Manual copy of 4.18 CL 3687869 Make UBT include the destination INI file for a given hierarchy if it exists Renamed VSCode enum value to VisualStudioCode, so it matches the source accessor plugin name Change 3690030 by Graeme.Thornton VSCode fixes - Source Code Accessor plugin changes. Add new interface method to open a solution at a given path - GameProjectUtils now uses the source navigation API to open solutions rather than hardcoding which solution file types to look for - Various fixes for vscode project file generation #jira UE-50554 Change 3690885 by Steve.Robb Atomic reads in FReferenceControllerOps<ESPMode::ThreadSafe>. Change 3691052 by Steve.Robb Free stats thread on shutdown. Change 3695138 by Steve.Robb AsConst helper function added. Change 3696627 by James.Hopkin Changed player controller iterator typedefs to use TWeakObjectPtr rather than the deprecated TAutoWeakObjectPtr (review-3606695) Change 3697099 by Steve.Robb GitHub #4105 : Removed redundant class access modifier Change 3697154 by Steve.Robb Removal of deprecated functions in delegates. Mutable lambdas to can now be bound to delegates. Change 3697180 by Steve.Robb GitHub #4115 : Incorrect CPPMacroType used for USoftClassProperty Change 3697239 by Steve.Robb Allow TArray::Insert to take an array with any allocator type. Change 3697269 by Steve.Robb RelocateConstructItems instead of MoveConstructItems. Change 3697558 by Steve.Robb New _GetRef functions for TArray, which return a reference to the newly-added element. Unit tests for these functions. Change 3699776 by Steve.Robb TSAN warning suppression around IAsyncReadRequest::bCompleteAndCallbackCalled. Change 3702397 by Steve.Robb TIsTrivial type trait. Change 3702569 by Steve.Robb Allow a TGuardValue to be assigned to a different type from the one being guarded. Change 3706644 by Robert.Manuszewski Different stack ingore count for development builds for FArchiveStackTrace Change 3709272 by Steve.Robb Removal of redundant UpdateVertices, which causes a race condition on the renderer thread. Change 3709452 by Robert.Manuszewski Fixed a bug where with async time limit set to a low value the async loading could hang because the linker would keep reloading the preload dependencies Change 3709454 by Robert.Manuszewski Added command line option -NOEDL to disable EDL Change 3709487 by Steve.Robb Remove use of PLATFORM_HAS_64BIT_ATOMICS, which is always 1. Change 3709645 by Ben.Marsh Fix race condition between multiple instances of UBT trying to write out the XML config cache. Change 3711193 by Ben.Marsh Add an editor setting for the shared DDC location to use. #jira UE-51487 Change 3713811 by Steve.Robb Update .modules files after a hot reload. Don't check for directory timestamp changes as a way of detecting new files if hot reloading with a makefile, as this is already done during makefile invalidation checks. Pass hotreload flags around in UBT instead of relying on global state. This fixes the hot reload iteration speed regression without also regressing the fix to UE-42205. #jira UE-51472 Change 3715654 by Steve.Robb GitHub #4156 : Fixed not compiling template function Algo::UpperBoundBy. Change 3718782 by Steve.Robb TSharedPtr, TSharedRef and TWeakPtr assignment are now implemented as copy-and-swap to avoid an invalid smart pointer state being visible to any destructors being called. Change 3720830 by Steve.Robb Initial import of TAtomic object wrapper, which guarantees atomic access to an object. Change 3720881 by Steve.Robb FCompression ThreadSanitizer data race fixes. Change 3722640 by Graeme.Thornton Guard network platform file heartbeat function with the socket critical section. Stop heartbeat from causing a crash when firing during async loading. #jira UE-51463 Change 3722655 by Steve.Robb Don't null name table because it's already zeroed at startup. Some tidy-ups. Change 3722754 by Steve.Robb Thread sanitizer fix. Small typo fix. Change 3722849 by Graeme.Thornton Improve "caching file" message in networkplatformfile so it says "Requesting file..." and is only output when we actually request the file from the server Change 3723081 by Steve.Robb TAtomic is now aligned to the underlying integer type. TAtomic will now static assert with a better error message when given an unsupported type. Define added for the maximum platform-supported atomic type, and used instead of a (wrong) hardcoded number. Misc renames. Change 3723270 by Ben.Marsh Include /d2cgsummary argument when running UBT with -Timing. Change 3723683 by Ben.Marsh Do not include documentation in the generated project files by default. Suspect that the 30,000 UDN files that get added to the solution take up memory and degrate performance. Change 3725422 by Robert.Manuszewski When serializing compressed archive with multithreaded compression enabled, wait for the oldest async task instead of spinning. Change 3725735 by Robert.Manuszewski Making all CheckDefaultSubobjects related functions const Change 3726167 by Steve.Robb FMinimalName::IsNone added. Change 3726458 by Steve.Robb TAtomic will no longer instantiate for types which are not exactly a size supported by the platform layer. Change 3726542 by Ben.Marsh UGS: Always include the project filename in the editor build command. The project may not be in one of the .uprojectdirs paths. Change 3726595 by Ben.Marsh Allow building multiple game targets in the example BuildEditorAndTools.xml script. Change 3726724 by Ben.Marsh Fix ambiguities in calculating root directory. (GitHub #4172) Change 3726959 by Ben.Marsh Make sure that AutomationTool uses the same list of preprocessor definitions when compiling *.target.cs files as UnrealBuildTool does. Change 3728437 by Steve.Robb VisitTupleElements now supports invocation of a functor taking arguments from multiple tuples in parallel. Some improved documentation. NOTE: This is a backward-incompatible change to VisitTupleElements. Any existing calls will need their arguments swapping. Change 3732262 by Gil.Gribb UE4 - Fixed rare hangs in the task graph. Change 3732755 by Steve.Robb Stats TSAN fixes. Optimizations to FCycleCounter::Start() to only read the stat name once. Change 3735000 by Robert.Manuszewski Always preload the AssetRegistry module on startup. even if EDL is disabled. Even without EDL, if the async loading thread is enabled the AssetRegistryModule will otherwise be loaded from the ASL thread and that will assert. Change 3735292 by Robert.Manuszewski Made sure component visualizer is removed from VisualizersForSelection when UnregisterComponentVisualizer() is called otherwise it may cause crashes when the engine terminates. Change 3735332 by Steve.Robb Refactoring of UDelegateProperty::Identical() to clarify logic. Fixed UMulticastDelegateProperty::Identical() to compare the bound function names. PPF_DeltaComparison removed, as it doesn't seem useful. Change 3737960 by Graeme.Thornton VSCode - Add launch task for generating project files for the given folder Change 3738398 by Graeme.Thornton Make Visual Studio source code accessor's module hotreload handler pass the 'save all files' message to the current accesor, rather than direct to the visual studio accessor #jira UE-51451 Change 3738405 by Graeme.Thornton VSCode: Format c/cpp settings strings using comment path formatting function Change 3738928 by Steve.Robb Fix for lack of null conditional operators in some older Monos. (replicated from CL# 3729574 in Release-4.18) #jira UE-51842 Change 3739135 by Ben.Marsh Fix being unable to package projects in a folder called "Wolf". This is only a restricted folder for Epic's Perforce history. #jira UE-51855 Change 3739360 by Ben.Marsh UAT: Fix issue with P4PORT setting not being parsed correctly. Change 3745959 by James.Hopkin #core Added ImplicitConv for safe upcasts to a specific required type, e.g. deduced delegate payload types Change 3746125 by Steve.Robb FName ThreadSanitizer fixes. Change 3747274 by Steve.Robb TSAN fix for FMediaTicker::Stopping. Change 3747618 by Steve.Robb ThreadSanitizer data race fix for FShaderCompileThreadRunnableBase::bForceFinish. Change 3747720 by Steve.Robb ThreadSanitizer fix for FMessageRouter::Stopping. Change 3749207 by Graeme.Thornton First pass of CryptoKeys plugin. Allows creation/editing/cycling of AES/RSA keys. Change 3749323 by Graeme.Thornton Fix UAT crash when only -targetplatform is specifiied Change 3749349 by Steve.Robb TSAN_SAFE guards around LockFreeList to silence ThreadSanitizer. Change 3749617 by Steve.Robb Logf static_assert for formatting string enabled. Change 3749897 by Steve.Robb FDebug::LogAssertFailedMessage static assert for formatting string enabled. Change 3754011 by Steve.Robb Static asserts that the allocator supports move. Move-enabled our allocators which don't support move. Change 3754227 by Ben.Marsh Fix build command line in generated projects missing a space before the compiler version override. #jira UE-52226 Change 3754562 by Ben.Marsh PR #4206: Replace deprecated wsprintf with secure swprintf for Bootstrap executable (Contributed by jessicafalk) Change 3755616 by Graeme.Thornton Runtime code for using the new crypto ini files to define signing/encryption keys #jira UE-46580 Change 3755666 by James.Hopkin Used ImplicitConv to remove Casts being used for up-casts #review-3745965 Change 3755671 by Graeme.Thornton Add log message in unrealpak to say which config file system it is using for crypto keys Change 3755672 by Graeme.Thornton Updating ShooterGame with new CryptoKeys based security setup Change 3756778 by Ben.Marsh Add support for running multiple jobs simultaneously on a single builder. When running job or agent setup, the --num-slots=X parameter defines the number of steps that can run simultaneously (EC procedures pass in the resource step limit). A lock file is created under the workspace root (D:\Build) and a reservation file is created for the first slot that can be allocated (slot-1, slot-2, etc...). The slot number is used to define the workspace name that should be used. Change 3758498 by Ben.Marsh Re-throw exceptions when a file cannot be deleted when cleaning a target. Change 3758921 by Steve.Robb ThreadSanitizer fix to FThreadSafeStaticStatBase::HighPerformanceEnable to do a relaxed atomic load on access. DoSetup() now returns the newly-allocated pointer, instead of reloading it from memory. Change 3760599 by Graeme.Thornton Added missing epic header comment to some new source files Change 3760642 by Steve.Robb ThreadSanitizer fix for concurrent access to GMainThreadBlockedOnRenderThread. Change 3760669 by Graeme.Thornton Improvement to OpenSSL based signing key generator. Generate a full RSA key then steal the primes from it, rather than generating the primes manually. Added a test mode to the cryptokeys commandlet to test signing key generation Change 3760711 by Steve.Robb ThreadSanitizer fixes to GIsRenderingThreadSuspended. Change 3760739 by Steve.Robb ThreadSanitizer fix for FQueuedThread::TimeToDie. Change 3760763 by Steve.Robb ThreadSanitizer fix for GRunRenderingThreadHeartbeat. Removal of unnecessary/dangerous initializer for GMainThreadBlockedOnRenderThread. Change 3760793 by Steve.Robb Some simple refactoring to remove some volatile reads of BufferStartPos and BufferEndPos. Change 3760817 by Steve.Robb ThreadSanitizer fixes for FAsyncWriter::BufferStartPos and BufferEndPos. Change 3761331 by Josh.Engebretson UnrealBuildTool enforcement of Development and Debug configurations in existing .csproj #jira UE-52416 Change 3761521 by Steve.Robb ThreadSanitizer fixes for FEvent::EventStartCycles and EventUniqueId. Change 3763117 by Graeme.Thornton PR #3722: Optimising FPaths::IsRelative() (Contributed by jovisgCL) Change 3763358 by Graeme.Thornton Ensure that all branches within FGenericPlatformMisc::RootDir() produce an absolute path with no duplicate slashes Remove relative->abs conversion of root dir from FPaths::MakeStandardFilename(), now that we know RootDir() always returns an absolute path Derived from the content of this PR: PR #3742: Treat RootDirectory the same way as Standardized (Contributed by TroutZhang) Change 3764058 by Graeme.Thornton Generate a .code-workspace file for the current workspace. Allows foreign projects to "mount" the UE4 folder so that the engine tasks are avaible, and all engine source is visible to VSCode for searching purposes #jira UE-52359 Change 3764705 by Steve.Robb Better handling of whitespace in ImportText_Internal() for set and map properties. Containers are now emptied upon import failure, to avoid leaving bad container states (unhashed, partial data). Fix to USetProperty's temp buffer size to avoid buffer overruns. Duplicate map keys are now skipped during import, same as USetProperty's behavior. Change 3764731 by Steve.Robb Don't re-run UHT if only source files have changed in the same folder as headers. This was already done for hot reload, but there's no reason why it should be limited to that. Change 3765923 by Graeme.Thornton VSCode - "taskName" -> "label" for C# build tasks Change 3766018 by Steve.Robb constexpr constructor for TAtomic. Change 3766037 by Steve.Robb Misc tidyings in HotReload.cpp. Change 3766046 by Steve.Robb ThreadSanitizer fixes to ENamedThreads::RenderThread and ENamedThreads::ENamedThreads_Local. Change 3766288 by Steve.Robb Improved efficiency of adding/removing elements to UGCObjectReferencer::ReferencedObjects. Change 3766374 by Josh.Engebretson Fix issue with ini quoted value comparison #jira UE-52066 Change 3766532 by Josh.Engebretson PR #3680: Added NetSerialize to FDateTime fixing UE-22533 (Contributed by druhasu) #jira UE-46156 Change 3766740 by Steve.Robb TMultiMap::Append added. Change 3767523 by Steve.Robb ThreadSanitizer fix for UE4Delegates_Private::GNextID. Change 3767601 by Steve.Robb ThreadSanitizer fix for FStats::GameThreadStatsFrame. Change 3770567 by Ben.Marsh Add a FAnnotatedArchiveFormatter interface which allows querying structural type information that may not be in binary archives. Change 3770826 by Ben.Marsh Move StructuredArchive implementation into Core, so primitive types can implement serialization overloads for it. Change 3770875 by Steve.Robb Redundant UScriptStruct::PostLoad removed, which was causing a race condition in async loading. This was re-establishing the CppStructOps, but that is unnecessary because native classes cannot change as a result of a load - only BP structs can, and they don't have CppStructOps. Change 3772167 by Ben.Marsh Add a context-free binary formatter that can serialize tagged data. This functions as a lower-overhead binary intermediate format for JSON data. Change 3772248 by Steve.Robb ThreadSanitizer fixes to FMalloc call counters. Change 3772383 by Ben.Marsh Separate archive metadata from FArchive into FArchiveContext, so it can be safely exposed to consumers of FStructuredArchive. Change 3772906 by Graeme.Thornton TextAssetCommandlet - Utility commandlet for testing/converting to text asset format Change 3772932 by Ben.Marsh Fix "String:" prefix not being stripped from escaped string values. Change 3772942 by Graeme.Thornton Add experimental setting to enable in-editor text asset format functionality Add "export to text" option into the content browser asset actions context menu Change 3772955 by Ben.Marsh Add a new "stream" compound type to FStructuredArchive, which allows serializing a sequence of elements similarly to an array, but without serializing an explicit size. Allows passing through data to an underlying binary archive without breaking compatibility. Change 3772963 by Ben.Marsh Allow querying record keys and stream lengths from annotated archive formatters, since these archives have markup for field boundaries. Change 3773010 by Graeme.Thornton Added CORE_API to FArchiveFromStructuredArchive Gave text asset format experimental option a slightly less random tooltip comment Change 3773057 by Ben.Marsh Add a flag to FArchive to determine whether the archive is text (IsTextFormat()). Add support for seeking within FArchiveFromStructuredArchive. For text formats, data is serialized to an in-memory buffer, with names and objects serialized as indices into an array. For non-text formats, data is serialized directly to the underlying archive. Also rename FStructuredArchive::TryEnterSlot() to TryEnterField(). Change 3773118 by Steve.Robb TSignedIntType and TUnsignedIntType type traits for getting an integer type of a given size. Change 3773122 by Steve.Robb TAtomic fixes for pointer arithmetic. TSignedIntType used instead of reimplementing its own trait. Change 3773123 by Steve.Robb Unit tests for TAtomic. Change 3773138 by Steve.Robb Run numeric tests on integer types instead of basic tests. Fix for compiler warnings when subtracting from unsigned atomics. Change 3773166 by Steve.Robb Refactoring of arithmetic operations into its own class, then basing the pointer and integral versions on that. Change 3774216 by Gil.Gribb UE4 - Fix rare crash in the pak precacher immediately after unmounting a pak file. Change 3774426 by Ben.Marsh Copy all C# tools to a staging directory before compiling them. This prevents access violations when compiling tools like iPhonePackager that reference DotNETCommon, and ensures we strip NotForLicensees folders out of them all. See: https://answers.unrealengine.com/questions/726010/418-will-not-build-from-source.html Change 3774658 by Ben.Marsh Improve error reporting while generating intellisense for project files. Include the name of the target being compiled, and allow project file generation to continue without it. Change 3775141 by Ben.Marsh Always output HTML5 diagnostics at "information" verbosity, to avoid every line being prefixed with "WARNING:" and screwing up the EC postprocessor. Change 3775459 by Ben.Marsh Removing .NET Framework Perforce DLL as runtime dependency of engine third party library. The actual library is linked statically. Change 3775522 by Ben.Marsh UGS: Treat .uproject and .uplugin files as code changes. Change 3775597 by Ben.Marsh Fix post-build steps for plugins not being executed. #jira UE-52754 Change 3777895 by Graeme.Thornton StructuredArchiveFromArchive - An adapter class for wrapping an existing FArchive with a structured archive Change 3777931 by Graeme.Thornton Refactored FArchiveUObjects serialization code into some static helpers Added FArchiveUObjectFromStructuredArchive which allows the adaption of a structured archive into an FArchive that supports the extra UObect serialization functions for weak/soft pointers Change 3777942 by Graeme.Thornton Added missing CORE_API to FStructuredArchive::FStream Added FStructuredArchive::FSlot insertion operator for char Added specialization of TArray<uint8> serializer for structured archives which serializes the contents as one value Change 3778084 by Graeme.Thornton Adding FPackageName::GetTextAssetPackageExtension() to access the file extension we use for text asset files Change 3778096 by Graeme.Thornton Add a constructor to FArchiveUObjectFromStructuredArchive that takes a slot and passes it to the base class Change 3778389 by Josh.Engebretson Fix an optimization issue with CPU benchmarking Add better support for debugging/testing local rocket builds UDN Link: https://udn.unrealengine.com/questions/400909/command-scalability-auto-gives-inaccurate-cpu-benc.html #jira UE-52192 Change 3778701 by Josh.Engebretson Ensure plugin content folders are mounted consistently. Fixes TryConvertFilenameToLongPackageName failing to work on plugin assets UDN Link: https://udn.unrealengine.com/questions/276386/tryconvertfilenametolongpackagename-fails-for-plug.html #jira UE-40317 Change 3778832 by Chad.Garyet Adding enterprise path support for PCB's for UGS Change 3780258 by Graeme.Thornton TextAssetCommandlet - Accumulate timings for loading packages and saving packages Change 3780463 by Graeme.Thornton CryptoKeys improvements - Enable CryptoKeys plugin by default - Attempt to inherit settings from the old system by default - Hide ini/index encryption settings from packaging settings and just inherit previous values into new system Minor UBT change to remove a trailing comma from the end of encryption/signing key binary strings Change 3780557 by Ben.Marsh Fix LoginFlow module not being precompiled for the binary release. Change 3780846 by Josh.Engebretson Improve filename to long package name resolution when provided a relative path Change 3780863 by Ben.Marsh UAT: Add a better error message when a C# project has an invalid reference. Change 3780911 by Ben.Marsh Update the BuildEditorAndTools.xml script to allow submitting archived binaries to Perforce. The "Submit To Perforce For UGS" node creates a zip of all the binaries that have been built, and submits it to the stream specified by the 'ArchiveStream' argument. Change 3780956 by Josh.Engebretson Add support for ! (RemoveKey) config command to UBT UDN Link: https://udn.unrealengine.com/questions/397267/index.html #jira UE-52033 Change 3782957 by Robert.Manuszewski UE4 - Fixed a linear search in EDL that caused performance problems for very large maps. Change 3784503 by Ben.Marsh Optimizations for FStructuredArchive: * Store the depth explicitly in element objects, to avoid having to loop through the scope stack to find it. * Prevent shrinking of arrays when removing elements. * Add an inline allocator to the scope and container stacks. Change 3784700 by Ben.Marsh Remove the inline allocator from FStructuredArchive; checking whether the inline or backup allocator is being used is slower than just allocating up-front. Change 3784989 by Ben.Marsh Compile out all the FStructuredArchive validation code when WITH_TEXT_ARCHIVE_SUPPORT = 0. Change 3786860 by Gil.Gribb UE4 - Remove no buffering flag from windows async IO because it disabled the disk cache entirely. Change 3787159 by Ben.Marsh Guard against UE4.0 backwards compatibility path when determining if an engine is a source distribution. Change 3787493 by Josh.Engebretson Parallel pak generation now uses MaxDegreeOfParallelism option which is now set to the number of CPU cores Moved cryptography settings parsing out of threaded CreatePak method to avoid concurrency issue in ConfigCache.TryReadFile Fix for multiple threads parsing ini keys (PR 3995) #PR 3995 #jira 52913 #jira 49503 Change 3787773 by Steve.Robb Fix for missing final values from FOREACH_ENUM_ macros. Change 3788287 by Ben.Marsh TBA: Add checks in debug builds that key names in maps and records for FStructuredArchive are unique. Change 3788678 by Ben.Marsh Fix compile error due to inability to instantiate TArray<> of forward declared struct. Convert set of key names to an array to avoid including Set.h in public header for FStructuredArchive. Change 3789353 by Graeme.Thornton Removed unused/rotten modes from TextAsset commandlet. Used existing "-iterations=n" switch to control a global iteration over the given command. Useful for performance testing. Change 3789396 by Ben.Marsh Move code to validate container keys/sizes into DO_GUARD_SLOW checks, and allocate container metadata instances dynamically to fix problems with references to things not declared in headers that can't be included from StructuredArchive.h Change 3789772 by Ben.Marsh Always strip trailing slashes from the end of paths specified by .build.cs files; they can cause quoted paths to be escaped on the command line. Change 3790003 by Ben.Marsh TBA: Rename FStructuredArchive::EElementType::Object to FStructuredArchive::EElementType::Record. Change 3790051 by Steve.Robb PIE is disabled during a hot reload. Hot reload in editor is disabled during PIE. Hot reload from IDE is deferred until after PIE is exited. Compiling multiple times before a hot reload (e.g. compiling multiple times in PIE) will now load the most recent change. #jira UE-20357 #jira UE-52137 Change 3790709 by Steve.Robb Better move support for TVariant. EVariantTypes switched over to using an enum class to aid debugger visualization. Change 3791422 by Ben.Marsh TBA: Return the type of a field from an annotated archive formatter at the point that we enter it, rather than querying all the time. Change 3791489 by Graeme.Thornton TBA: Change StructuredArchiveFromArchive adapter to use the archive.Open() result directly, now that it's a slot and not a record Change 3792344 by Ben.Marsh Improvements to base64 encoding library. * Now supports encoding and decoding with ANSICHAR and WIDECHAR implementations. * Added support for decoding base-64 blobs without padding marks. * Added support for decoding into pre-allocated buffer. * Added constexpr functions for determining the encoded and maximum decoded size of an input buffer. * Prevent writes past the end of allocated buffer (no longer need to manually remove padding bytes). Change 3792949 by Ben.Marsh TBA: Rename FAnnotatedArchiveFormatter to FAnnotatedStructuredArchiveFormatter. Change 3794078 by Robert.Manuszewski Fixing a crash that could happen when FGCObjects were constructed and destructed when shutting down the engine #jira UE-52392 Change 3794413 by Ben.Marsh TBA: Remove the element type parameter to SetScope(). It isn't really needed; we can just assume the element ID correctly identifies the item on the stack. Change 3794731 by Ben.Marsh TBA: Optimize creation of stack elements for empty slots in FStructuredArchive. This saves a lot of bookkeeping when serializing a large number of individual fields. Since only one slot can be active at a time (and it only exists temporarily, until we write into it), we can just store the element ID assigned to it in a member variable. Change 3795081 by Ben.Marsh UBT: Move LinuxCommon.cs into Platform/Linux folder. Change 3795137 by Ben.Marsh UBT: Allow modules to specify private compiler definitions from the build.cs file, only visible within that module (via the "PrivateDefinitions" property). Change 3795247 by Ben.Marsh Fix missing header when creating a new interface from the editor new code wizard. #jira UE-53174 Change 3796025 by Graeme.Thornton Fixed some deprecated "Definitions" warnings in OpenCV build files Change 3796103 by Graeme.Thornton Disable experimental text asset option - it does nothing useful yet. Change 3796157 by Graeme.Thornton Fix path type mismatch in visual studio source code accessor meaning that the DTE comms wouldn't identify a running instance of VS as having the current solution open. #jira UE-53206 Change 3796315 by Ben.Marsh Move Formatter to the correct position for initializer. #jira UE-53208 Change 3797082 by Ben.Marsh UAT: Work around for exception thrown by launching cook with "-platform=Android_ETC1 -targetplatform=Android -cookflavor=ETC1". Anrdoid_ETC1 is not a valid platform (it's a cook platform), and can't be parsed by UAT. #jira UE-53232 Change 3799050 by Ben.Marsh Make UnrealPak.version files writable for Mac and Linux. Change 3801012 by Graeme.Thornton VSCode - Update source accessor to use code workspace as it's target, rather than just the project directory Change 3801214 by Gil.Gribb UE4 - Remove assert to work around minor problem with lock free lists. #jira UE-49600 Change 3801219 by Steve.Robb WeakObjectPtrs now warn when casting away const. Change 3801299 by Graeme.Thornton Fix quote issue with foreign project build tasks on PC Change 3803292 by Graeme.Thornton Fix crash on startup when using cook-on-the-side. Force a flush of the asset registry background scanning when creating the cook-on-the-side platform registries Change 3803559 by Steve.Robb TSAN fix for FMalloc::MaxSingleAlloc. Change 3803735 by Graeme.Thornton Last set of cryptokeys changes - Added some comments for editor exposed settings - Split "encrypt assets" option into "encrypt uassets" and "encrypt all assets" Change 3803929 by Ben.Marsh UGS: Show an in-place error panel when a project fails to open, allowing the user to retry and have their tabs saved instead of creating a modal dialog. Change 3624590 by Steve.Robb AddReferencedObjects now generates a compile error with containers of UObject*s where the UObjectType is forward-declared, as these which won't be added to the reference collector. Tidy-up of existing calls to AddReferencedObjects. Change 3629473 by Ben.Marsh Build: Rename the option for embedding source server information in PDB files for installed engine builds. Change 3632894 by Steve.Robb VARARG* macros deprecated and usage replaced with variadic templates. Change 3640704 by Steve.Robb MakeWeakObjectPtr added, which deduces a TWeakObjectPtr type from a raw pointer type. Fix to TWeakObjectPtr's constructor which implicitly removed const. Fixes to everything which didn't compile as a result. Change 3650813 by Graeme.Thornton Removed FStartupPackages and associated code Change 3651000 by Ben.Marsh Return the stack size from FPlatformStackWalk::CaptureStackBacktrace() rather than checking for the first null pointer, to prevent truncated callstacks if parts of the stack are zeroed out. #jira UE-49980 Change 3690842 by Steve.Robb FPlatformAtomics::AtomicRead added - needs optimizing. AtomicRead() used in FThreadSafeCounter::GetValue(). Change 3699416 by Steve.Robb Fix to debugger visualization of TArray with a TInlineAllocator or TFixedAllocator. Improved readability of TSparseArray visualization. Change 3720812 by Steve.Robb Atomic functions for 8-bit and 16-bit. Android, Linux and Switch implementations now just use the Clang implementation. AtomicRead64 deprecated in favor of the int64* AtomicRead overload. Change 3722698 by Steve.Robb VS debugger visualizers for TAtomic. Change 3732270 by Steve.Robb Relaxed stores and loads. Change 3749315 by Graeme.Thornton If UAT is invoked with platforms in both the -platform and -targetplatform command line switches, build using all of them rather than just the ones in -targetplatform #jira UE-52034 Change 3750657 by Josh.Engebretson Fixed issue when debugging editor cook/package and project launch operations #jira UE-52207 Change 3758514 by Steve.Robb Fixes to FString::Printf having non-literals being passed as its formatting string. Change 3763356 by Steve.Robb ENamedThreads::RenderThread and ENamedThreads::RenderThread_Local encapsulated by getters and setters. Change 3770549 by Steve.Robb Removal of obsolete PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS and PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES. Tidy up of existing code which uses it. Change 3770553 by Ben.Marsh Adding structured serialization API to Core/CoreUObject for use with text-based assets. * FStructuredArchive abstracts an archive which is made up of compound types (records, arrays, and maps). Values are stored in slots within these types. * Records are string -> value dictionaries where the key names can be compiled out in non-editor builds or when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Maps are string -> value dictionaries where the key names are present regardless of the build type. * Proxy objects are defined to express the context for serialization (FStructuredArchive::FRecord, FStructuredArchive::FArray, FStructuredArchive::FMap, FStructuredArchive::FSlot) which allows basic validation through static typing. These objects act as lightweight handles, and can be cheaply constructed and passed around on the stack. Most serialization to and from the archive is done through these objects. * Runtime checks perform additional validation to ensure that serialized data is well formed and written in a forward-only manner, regardless of the underlying archive type. * The actual input/output format is determined by a separate interface (FArchiveFormatter). Context validation (always causing matching LeaveArray for every EnterArray, etc...) is done by FStructuredArchive, so implementing these classes is fairly trivial. FArchiveFormatter can be de-virtualized in non-editor builds, where WITH_TEXT_ARCHIVE_SUPPORT = 0. * Includes implementations of FArchiveFormatter for binary and JSON formats. Change 3771105 by Steve.Robb Deprecation warnings for PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES and PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS. Fix for incorrect warning formatting on Clang platforms. Change 3771520 by Steve.Robb Start moving Clang-using platforms' pre-setup stuff into a Clang-specific header. Change 3771564 by Steve.Robb More common macros moved to the Clang pre-setup header. Change 3771613 by Steve.Robb EMIT_CUSTOM_WARNING_AT_LINE moved to ClangPlatformCompilerPreSetup.h. Change 3772881 by Ben.Marsh Add support for serializing FName and UObject through FStructuredArchive. In order to allow custom linker behavior when serializing objects: * The constructor to JSON input formatter now takes a delegate to convert a string object name into a UObject pointer. * The constructor to tagged binary formatter takes a delegate to serialize a UObject pointer into any form it chooses (likely an integer index into the import table) Object and name types are stored as strings in JSON, using an "Object:" or "Name:" prefix to differentiate them from regular strings. Any strings that already contain one of these prefixes are prepended with a "String:" prefix (as is any string that already has a "String:" prefix). Change 3772941 by Graeme.Thornton Make build work when including StructuredArchive.h from core container types Added standard header to new files Add structured archive serializer for TArray Fix bug in structured archive where containers weren't being popped from the scope stack Change 3772972 by Ben.Marsh Add an adapter which presents a legacy FArchive interface to a FStructuredArchive slot. Data is serialized into this slot as a stream of elements; raw data is buffered up into fixed size chunks, names and objects are serialized separately. When used with FBinaryArchiveFormatter, this should result in all data being passed through to the underlying archive in a backwards compatible way, wiith no additional bookkeeping fields. Change 3773006 by Ben.Marsh Rename FStructuredArchive::FRecord::EnterSlot() to EnterField(). Change 3773013 by Steve.Robb bUseInlining target rule added to UnrealBuildTool, which defaults to true, to allow inlining to be disabled for debugging purposes. Change 3774499 by Ben.Marsh Minor fixes for FStructuredArchive related classes: * Text-based archive formats are now compiled out when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Fixed issue with FTaggedBinaryArchiveFormatter state becoming corrupted when looking ahead at field types. * FArchiveFieldName constructor is now explicit, to fix cases where strings were being passed directly to serialize functions. Change 3774600 by Ben.Marsh Add CopyFormattedData() function, which can copy data from one formatter to another. Add a test case to SerializationAPI that converts from data -> JSON -> binary -> JSON -> data. This function can be used to implement a generic visitor pattern, by implementing a FArchiveFormatter which receives the deserialized data. Change 3789721 by Ben.Marsh TBA: Split FTaggedBinaryArchiveFormatter into separate classes for reading and writing. Change 3789920 by Ben.Marsh TBA: Support automatic coercion between any numeric types in tagged binary archives. Also report the smallest type that can contain a value, rather than just in32/double. #jira UECORE-364 Change 3789982 by Ben.Marsh TBA: Change FStructuredArchive::Open() to return a slot, rather than a record, to make it easier to implement a raw FArchive adapter. Change 3792466 by Ben.Marsh TBA: Better handling of raw data in text based assets. Short sequences of binary data are Base64 encoded as a single string. Longer sequences are stored as an array of Base64 encoded lines, push a SHA1 hash to detect cases where the data was merged incorrectly. In order to allow inference of the correct type for a field, other fields called "Base64" will be escaped to "_Base64", and any field beginning with "_" will have an additional underscore inserted. Reading files back in reverses these transformations. Change 3792935 by Ben.Marsh TBA: Rename FArchiveFormatter to FStructuredArchiveFormatter for consistency with FStructuredArchive. Change 3795100 by Ben.Marsh UBT: Rename the ModuleRules Definitions property to PublicDefinitions, to make its semantics clearer. Change 3795106 by Ben.Marsh Replace all internal usages of ModuleRules.Definitions, and replace it with ModuleRules.PublicDefinitions. Change 3796275 by Ben.Marsh Fix paths to Version.h includes from resource files. Change 3800683 by Josh.Engebretson Remove WER from Mac and Linux crash reports in favor of unified runtime-xml format #jira UE-50073 Change 3803545 by Steve.Robb TWeakObjPtr const-dropping assignment fix. Fixes to change. [CL 3805231 by Ben Marsh in Main branch]
2017-12-12 18:32:45 -05:00
TexturesToIgnore.Find( MakeWeakObjectPtr( Texture ) ) == INDEX_NONE && // texture is not one that should be ignored
( Texture->IsA( UTexture2D::StaticClass() ) || Texture->IsA( UTextureCube::StaticClass() ) ); // texture is valid texture class for stat purposes
#if 0 // @todo TextureInfoInUE UTextureCube::GetFace doesn't exist
UTextureCube* CubeTex = Cast<UTextureCube>( Texture );
if( CubeTex )
{
// If the passed in texture is a cube, add all faces of the cube to the ignore list since the cube will account for those
for( int32 FaceIdx = 0; FaceIdx < 6; ++FaceIdx )
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3805092) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3623004 by Ben.Marsh Fix RemoteExecutor not taking the remote machine specs into account. Change 3623172 by Ben.Marsh UGS: Fix "More Info..." button not using P4 server override. Change 3628820 by Ben.Marsh PR #3979: Get working directory from task element, not tool node (Contributed by nullbus) Change 3630424 by Graeme.Thornton Make the AES key parameter const in FAES::EncryptData() Change 3632786 by Steve.Robb FString constructor fixed to not take an ignored void* parameter, which can be misleading. Change 3639534 by Ben.Marsh Remove old P4.NET library. Doesn't seem to be used by anything. Change 3640536 by Steve.Robb GitHub #4007 : Delete unnecessary specialization of MakeArrayView #jira UE-49617 Change 3641155 by Gil.Gribb UE4 - Speculative fix for problem with summary reading in FAsyncArchive2. Change 3643932 by Ben.Marsh Add an example build script for updating the version number, then compiling and staging the editor and tools to an output directory. Optionally submits at the end (requires -Submit argument). Change 3644825 by Ben.Marsh Use VSWHERE to find the location of MsBuild.exe, if available. https://github.com/EpicGames/UnrealEngine/pull/3879#issuecomment-329688645 Change 3647395 by Ben.Marsh Allow compiling of monolithic binaries from BuildEditorAndTools.xml, using the -set:GameTarget=FooGame -set:TargetPlatforms=Win32;Win64 options. Change 3650300 by Ben.Marsh UAT: Remove code that deletes cooked data on a failed cook. The engine should write packages out transactionally now (by writing to a temporary file and moving into place), and deleting the cooked data just prevents post-mortem analysis. Change 3650856 by Robert.Manuszewski Adding checks to prevent FlushAsyncLoading and LoadObject/LoadPackage from being called from any threads other than the game thread Change 3651022 by Gil.Gribb UE4 - Possible fix for mysterious ensure indicating problematic recursion in the pak precacher. Change 3658331 by Steve.Robb Fix for the parsing of large integer values. Change 3661958 by Gil.Gribb UE4 - Fixed rare hang in task graph. Change 3664021 by Robert.Manuszewski Fix for a potential GC crash caused by stale pointer in AnimInstanceProxy See https://udn.unrealengine.com/questions/392432/gc-issue-uaniminstancemontageinstances-empty-but-u.html Change 3664254 by Steve.Robb Use ANSI allocator when thread sanitizer is enabled. This allows the generation of more accurate and meaningful reports. Change 3664436 by Steve.Robb Use TUniquePtr instead of a thread-unsafe TSharedPtr to move data between threads. Change 3666461 by Graeme.Thornton Improvements to signing/encryption key embedding and runtime access - Changed method of embedding key into the executable to make it more secure - Added FAESKey class to wrap a 32 byte key Change 3666462 by Graeme.Thornton Cut ShooterGame AES key down to 32 characters Change 3677560 by Ben.Marsh PR #4074: UBT: Add include and library-related fields to module JSON output (Contributed by adamrehn) Change 3683534 by Steve.Robb Refactoring of enum/struct lookup during hot reload. Change 3683754 by Steve.Robb Alignment fixes to allow int64 on 32-bit platforms Support for integral types in IsAligned. Static asserts so that alignment functions will no longer be called with non-intergal, non-pointer types. Some fixes to existing code. Change 3686670 by Steve.Robb Fix for thread-unsafe modification of static array in FString::ParseIntoArrayWS. Change 3687540 by Ben.Marsh Fix all UBT/UAT output going to stderr rather than stdout. Change 3688931 by Gil.Gribb UE4 - Critical fix for a rare race condition in the pak file async IO layer. Change 3690000 by Graeme.Thornton Manual copy of 4.18 CL 3687869 Make UBT include the destination INI file for a given hierarchy if it exists Renamed VSCode enum value to VisualStudioCode, so it matches the source accessor plugin name Change 3690030 by Graeme.Thornton VSCode fixes - Source Code Accessor plugin changes. Add new interface method to open a solution at a given path - GameProjectUtils now uses the source navigation API to open solutions rather than hardcoding which solution file types to look for - Various fixes for vscode project file generation #jira UE-50554 Change 3690885 by Steve.Robb Atomic reads in FReferenceControllerOps<ESPMode::ThreadSafe>. Change 3691052 by Steve.Robb Free stats thread on shutdown. Change 3695138 by Steve.Robb AsConst helper function added. Change 3696627 by James.Hopkin Changed player controller iterator typedefs to use TWeakObjectPtr rather than the deprecated TAutoWeakObjectPtr (review-3606695) Change 3697099 by Steve.Robb GitHub #4105 : Removed redundant class access modifier Change 3697154 by Steve.Robb Removal of deprecated functions in delegates. Mutable lambdas to can now be bound to delegates. Change 3697180 by Steve.Robb GitHub #4115 : Incorrect CPPMacroType used for USoftClassProperty Change 3697239 by Steve.Robb Allow TArray::Insert to take an array with any allocator type. Change 3697269 by Steve.Robb RelocateConstructItems instead of MoveConstructItems. Change 3697558 by Steve.Robb New _GetRef functions for TArray, which return a reference to the newly-added element. Unit tests for these functions. Change 3699776 by Steve.Robb TSAN warning suppression around IAsyncReadRequest::bCompleteAndCallbackCalled. Change 3702397 by Steve.Robb TIsTrivial type trait. Change 3702569 by Steve.Robb Allow a TGuardValue to be assigned to a different type from the one being guarded. Change 3706644 by Robert.Manuszewski Different stack ingore count for development builds for FArchiveStackTrace Change 3709272 by Steve.Robb Removal of redundant UpdateVertices, which causes a race condition on the renderer thread. Change 3709452 by Robert.Manuszewski Fixed a bug where with async time limit set to a low value the async loading could hang because the linker would keep reloading the preload dependencies Change 3709454 by Robert.Manuszewski Added command line option -NOEDL to disable EDL Change 3709487 by Steve.Robb Remove use of PLATFORM_HAS_64BIT_ATOMICS, which is always 1. Change 3709645 by Ben.Marsh Fix race condition between multiple instances of UBT trying to write out the XML config cache. Change 3711193 by Ben.Marsh Add an editor setting for the shared DDC location to use. #jira UE-51487 Change 3713811 by Steve.Robb Update .modules files after a hot reload. Don't check for directory timestamp changes as a way of detecting new files if hot reloading with a makefile, as this is already done during makefile invalidation checks. Pass hotreload flags around in UBT instead of relying on global state. This fixes the hot reload iteration speed regression without also regressing the fix to UE-42205. #jira UE-51472 Change 3715654 by Steve.Robb GitHub #4156 : Fixed not compiling template function Algo::UpperBoundBy. Change 3718782 by Steve.Robb TSharedPtr, TSharedRef and TWeakPtr assignment are now implemented as copy-and-swap to avoid an invalid smart pointer state being visible to any destructors being called. Change 3720830 by Steve.Robb Initial import of TAtomic object wrapper, which guarantees atomic access to an object. Change 3720881 by Steve.Robb FCompression ThreadSanitizer data race fixes. Change 3722640 by Graeme.Thornton Guard network platform file heartbeat function with the socket critical section. Stop heartbeat from causing a crash when firing during async loading. #jira UE-51463 Change 3722655 by Steve.Robb Don't null name table because it's already zeroed at startup. Some tidy-ups. Change 3722754 by Steve.Robb Thread sanitizer fix. Small typo fix. Change 3722849 by Graeme.Thornton Improve "caching file" message in networkplatformfile so it says "Requesting file..." and is only output when we actually request the file from the server Change 3723081 by Steve.Robb TAtomic is now aligned to the underlying integer type. TAtomic will now static assert with a better error message when given an unsupported type. Define added for the maximum platform-supported atomic type, and used instead of a (wrong) hardcoded number. Misc renames. Change 3723270 by Ben.Marsh Include /d2cgsummary argument when running UBT with -Timing. Change 3723683 by Ben.Marsh Do not include documentation in the generated project files by default. Suspect that the 30,000 UDN files that get added to the solution take up memory and degrate performance. Change 3725422 by Robert.Manuszewski When serializing compressed archive with multithreaded compression enabled, wait for the oldest async task instead of spinning. Change 3725735 by Robert.Manuszewski Making all CheckDefaultSubobjects related functions const Change 3726167 by Steve.Robb FMinimalName::IsNone added. Change 3726458 by Steve.Robb TAtomic will no longer instantiate for types which are not exactly a size supported by the platform layer. Change 3726542 by Ben.Marsh UGS: Always include the project filename in the editor build command. The project may not be in one of the .uprojectdirs paths. Change 3726595 by Ben.Marsh Allow building multiple game targets in the example BuildEditorAndTools.xml script. Change 3726724 by Ben.Marsh Fix ambiguities in calculating root directory. (GitHub #4172) Change 3726959 by Ben.Marsh Make sure that AutomationTool uses the same list of preprocessor definitions when compiling *.target.cs files as UnrealBuildTool does. Change 3728437 by Steve.Robb VisitTupleElements now supports invocation of a functor taking arguments from multiple tuples in parallel. Some improved documentation. NOTE: This is a backward-incompatible change to VisitTupleElements. Any existing calls will need their arguments swapping. Change 3732262 by Gil.Gribb UE4 - Fixed rare hangs in the task graph. Change 3732755 by Steve.Robb Stats TSAN fixes. Optimizations to FCycleCounter::Start() to only read the stat name once. Change 3735000 by Robert.Manuszewski Always preload the AssetRegistry module on startup. even if EDL is disabled. Even without EDL, if the async loading thread is enabled the AssetRegistryModule will otherwise be loaded from the ASL thread and that will assert. Change 3735292 by Robert.Manuszewski Made sure component visualizer is removed from VisualizersForSelection when UnregisterComponentVisualizer() is called otherwise it may cause crashes when the engine terminates. Change 3735332 by Steve.Robb Refactoring of UDelegateProperty::Identical() to clarify logic. Fixed UMulticastDelegateProperty::Identical() to compare the bound function names. PPF_DeltaComparison removed, as it doesn't seem useful. Change 3737960 by Graeme.Thornton VSCode - Add launch task for generating project files for the given folder Change 3738398 by Graeme.Thornton Make Visual Studio source code accessor's module hotreload handler pass the 'save all files' message to the current accesor, rather than direct to the visual studio accessor #jira UE-51451 Change 3738405 by Graeme.Thornton VSCode: Format c/cpp settings strings using comment path formatting function Change 3738928 by Steve.Robb Fix for lack of null conditional operators in some older Monos. (replicated from CL# 3729574 in Release-4.18) #jira UE-51842 Change 3739135 by Ben.Marsh Fix being unable to package projects in a folder called "Wolf". This is only a restricted folder for Epic's Perforce history. #jira UE-51855 Change 3739360 by Ben.Marsh UAT: Fix issue with P4PORT setting not being parsed correctly. Change 3745959 by James.Hopkin #core Added ImplicitConv for safe upcasts to a specific required type, e.g. deduced delegate payload types Change 3746125 by Steve.Robb FName ThreadSanitizer fixes. Change 3747274 by Steve.Robb TSAN fix for FMediaTicker::Stopping. Change 3747618 by Steve.Robb ThreadSanitizer data race fix for FShaderCompileThreadRunnableBase::bForceFinish. Change 3747720 by Steve.Robb ThreadSanitizer fix for FMessageRouter::Stopping. Change 3749207 by Graeme.Thornton First pass of CryptoKeys plugin. Allows creation/editing/cycling of AES/RSA keys. Change 3749323 by Graeme.Thornton Fix UAT crash when only -targetplatform is specifiied Change 3749349 by Steve.Robb TSAN_SAFE guards around LockFreeList to silence ThreadSanitizer. Change 3749617 by Steve.Robb Logf static_assert for formatting string enabled. Change 3749897 by Steve.Robb FDebug::LogAssertFailedMessage static assert for formatting string enabled. Change 3754011 by Steve.Robb Static asserts that the allocator supports move. Move-enabled our allocators which don't support move. Change 3754227 by Ben.Marsh Fix build command line in generated projects missing a space before the compiler version override. #jira UE-52226 Change 3754562 by Ben.Marsh PR #4206: Replace deprecated wsprintf with secure swprintf for Bootstrap executable (Contributed by jessicafalk) Change 3755616 by Graeme.Thornton Runtime code for using the new crypto ini files to define signing/encryption keys #jira UE-46580 Change 3755666 by James.Hopkin Used ImplicitConv to remove Casts being used for up-casts #review-3745965 Change 3755671 by Graeme.Thornton Add log message in unrealpak to say which config file system it is using for crypto keys Change 3755672 by Graeme.Thornton Updating ShooterGame with new CryptoKeys based security setup Change 3756778 by Ben.Marsh Add support for running multiple jobs simultaneously on a single builder. When running job or agent setup, the --num-slots=X parameter defines the number of steps that can run simultaneously (EC procedures pass in the resource step limit). A lock file is created under the workspace root (D:\Build) and a reservation file is created for the first slot that can be allocated (slot-1, slot-2, etc...). The slot number is used to define the workspace name that should be used. Change 3758498 by Ben.Marsh Re-throw exceptions when a file cannot be deleted when cleaning a target. Change 3758921 by Steve.Robb ThreadSanitizer fix to FThreadSafeStaticStatBase::HighPerformanceEnable to do a relaxed atomic load on access. DoSetup() now returns the newly-allocated pointer, instead of reloading it from memory. Change 3760599 by Graeme.Thornton Added missing epic header comment to some new source files Change 3760642 by Steve.Robb ThreadSanitizer fix for concurrent access to GMainThreadBlockedOnRenderThread. Change 3760669 by Graeme.Thornton Improvement to OpenSSL based signing key generator. Generate a full RSA key then steal the primes from it, rather than generating the primes manually. Added a test mode to the cryptokeys commandlet to test signing key generation Change 3760711 by Steve.Robb ThreadSanitizer fixes to GIsRenderingThreadSuspended. Change 3760739 by Steve.Robb ThreadSanitizer fix for FQueuedThread::TimeToDie. Change 3760763 by Steve.Robb ThreadSanitizer fix for GRunRenderingThreadHeartbeat. Removal of unnecessary/dangerous initializer for GMainThreadBlockedOnRenderThread. Change 3760793 by Steve.Robb Some simple refactoring to remove some volatile reads of BufferStartPos and BufferEndPos. Change 3760817 by Steve.Robb ThreadSanitizer fixes for FAsyncWriter::BufferStartPos and BufferEndPos. Change 3761331 by Josh.Engebretson UnrealBuildTool enforcement of Development and Debug configurations in existing .csproj #jira UE-52416 Change 3761521 by Steve.Robb ThreadSanitizer fixes for FEvent::EventStartCycles and EventUniqueId. Change 3763117 by Graeme.Thornton PR #3722: Optimising FPaths::IsRelative() (Contributed by jovisgCL) Change 3763358 by Graeme.Thornton Ensure that all branches within FGenericPlatformMisc::RootDir() produce an absolute path with no duplicate slashes Remove relative->abs conversion of root dir from FPaths::MakeStandardFilename(), now that we know RootDir() always returns an absolute path Derived from the content of this PR: PR #3742: Treat RootDirectory the same way as Standardized (Contributed by TroutZhang) Change 3764058 by Graeme.Thornton Generate a .code-workspace file for the current workspace. Allows foreign projects to "mount" the UE4 folder so that the engine tasks are avaible, and all engine source is visible to VSCode for searching purposes #jira UE-52359 Change 3764705 by Steve.Robb Better handling of whitespace in ImportText_Internal() for set and map properties. Containers are now emptied upon import failure, to avoid leaving bad container states (unhashed, partial data). Fix to USetProperty's temp buffer size to avoid buffer overruns. Duplicate map keys are now skipped during import, same as USetProperty's behavior. Change 3764731 by Steve.Robb Don't re-run UHT if only source files have changed in the same folder as headers. This was already done for hot reload, but there's no reason why it should be limited to that. Change 3765923 by Graeme.Thornton VSCode - "taskName" -> "label" for C# build tasks Change 3766018 by Steve.Robb constexpr constructor for TAtomic. Change 3766037 by Steve.Robb Misc tidyings in HotReload.cpp. Change 3766046 by Steve.Robb ThreadSanitizer fixes to ENamedThreads::RenderThread and ENamedThreads::ENamedThreads_Local. Change 3766288 by Steve.Robb Improved efficiency of adding/removing elements to UGCObjectReferencer::ReferencedObjects. Change 3766374 by Josh.Engebretson Fix issue with ini quoted value comparison #jira UE-52066 Change 3766532 by Josh.Engebretson PR #3680: Added NetSerialize to FDateTime fixing UE-22533 (Contributed by druhasu) #jira UE-46156 Change 3766740 by Steve.Robb TMultiMap::Append added. Change 3767523 by Steve.Robb ThreadSanitizer fix for UE4Delegates_Private::GNextID. Change 3767601 by Steve.Robb ThreadSanitizer fix for FStats::GameThreadStatsFrame. Change 3770567 by Ben.Marsh Add a FAnnotatedArchiveFormatter interface which allows querying structural type information that may not be in binary archives. Change 3770826 by Ben.Marsh Move StructuredArchive implementation into Core, so primitive types can implement serialization overloads for it. Change 3770875 by Steve.Robb Redundant UScriptStruct::PostLoad removed, which was causing a race condition in async loading. This was re-establishing the CppStructOps, but that is unnecessary because native classes cannot change as a result of a load - only BP structs can, and they don't have CppStructOps. Change 3772167 by Ben.Marsh Add a context-free binary formatter that can serialize tagged data. This functions as a lower-overhead binary intermediate format for JSON data. Change 3772248 by Steve.Robb ThreadSanitizer fixes to FMalloc call counters. Change 3772383 by Ben.Marsh Separate archive metadata from FArchive into FArchiveContext, so it can be safely exposed to consumers of FStructuredArchive. Change 3772906 by Graeme.Thornton TextAssetCommandlet - Utility commandlet for testing/converting to text asset format Change 3772932 by Ben.Marsh Fix "String:" prefix not being stripped from escaped string values. Change 3772942 by Graeme.Thornton Add experimental setting to enable in-editor text asset format functionality Add "export to text" option into the content browser asset actions context menu Change 3772955 by Ben.Marsh Add a new "stream" compound type to FStructuredArchive, which allows serializing a sequence of elements similarly to an array, but without serializing an explicit size. Allows passing through data to an underlying binary archive without breaking compatibility. Change 3772963 by Ben.Marsh Allow querying record keys and stream lengths from annotated archive formatters, since these archives have markup for field boundaries. Change 3773010 by Graeme.Thornton Added CORE_API to FArchiveFromStructuredArchive Gave text asset format experimental option a slightly less random tooltip comment Change 3773057 by Ben.Marsh Add a flag to FArchive to determine whether the archive is text (IsTextFormat()). Add support for seeking within FArchiveFromStructuredArchive. For text formats, data is serialized to an in-memory buffer, with names and objects serialized as indices into an array. For non-text formats, data is serialized directly to the underlying archive. Also rename FStructuredArchive::TryEnterSlot() to TryEnterField(). Change 3773118 by Steve.Robb TSignedIntType and TUnsignedIntType type traits for getting an integer type of a given size. Change 3773122 by Steve.Robb TAtomic fixes for pointer arithmetic. TSignedIntType used instead of reimplementing its own trait. Change 3773123 by Steve.Robb Unit tests for TAtomic. Change 3773138 by Steve.Robb Run numeric tests on integer types instead of basic tests. Fix for compiler warnings when subtracting from unsigned atomics. Change 3773166 by Steve.Robb Refactoring of arithmetic operations into its own class, then basing the pointer and integral versions on that. Change 3774216 by Gil.Gribb UE4 - Fix rare crash in the pak precacher immediately after unmounting a pak file. Change 3774426 by Ben.Marsh Copy all C# tools to a staging directory before compiling them. This prevents access violations when compiling tools like iPhonePackager that reference DotNETCommon, and ensures we strip NotForLicensees folders out of them all. See: https://answers.unrealengine.com/questions/726010/418-will-not-build-from-source.html Change 3774658 by Ben.Marsh Improve error reporting while generating intellisense for project files. Include the name of the target being compiled, and allow project file generation to continue without it. Change 3775141 by Ben.Marsh Always output HTML5 diagnostics at "information" verbosity, to avoid every line being prefixed with "WARNING:" and screwing up the EC postprocessor. Change 3775459 by Ben.Marsh Removing .NET Framework Perforce DLL as runtime dependency of engine third party library. The actual library is linked statically. Change 3775522 by Ben.Marsh UGS: Treat .uproject and .uplugin files as code changes. Change 3775597 by Ben.Marsh Fix post-build steps for plugins not being executed. #jira UE-52754 Change 3777895 by Graeme.Thornton StructuredArchiveFromArchive - An adapter class for wrapping an existing FArchive with a structured archive Change 3777931 by Graeme.Thornton Refactored FArchiveUObjects serialization code into some static helpers Added FArchiveUObjectFromStructuredArchive which allows the adaption of a structured archive into an FArchive that supports the extra UObect serialization functions for weak/soft pointers Change 3777942 by Graeme.Thornton Added missing CORE_API to FStructuredArchive::FStream Added FStructuredArchive::FSlot insertion operator for char Added specialization of TArray<uint8> serializer for structured archives which serializes the contents as one value Change 3778084 by Graeme.Thornton Adding FPackageName::GetTextAssetPackageExtension() to access the file extension we use for text asset files Change 3778096 by Graeme.Thornton Add a constructor to FArchiveUObjectFromStructuredArchive that takes a slot and passes it to the base class Change 3778389 by Josh.Engebretson Fix an optimization issue with CPU benchmarking Add better support for debugging/testing local rocket builds UDN Link: https://udn.unrealengine.com/questions/400909/command-scalability-auto-gives-inaccurate-cpu-benc.html #jira UE-52192 Change 3778701 by Josh.Engebretson Ensure plugin content folders are mounted consistently. Fixes TryConvertFilenameToLongPackageName failing to work on plugin assets UDN Link: https://udn.unrealengine.com/questions/276386/tryconvertfilenametolongpackagename-fails-for-plug.html #jira UE-40317 Change 3778832 by Chad.Garyet Adding enterprise path support for PCB's for UGS Change 3780258 by Graeme.Thornton TextAssetCommandlet - Accumulate timings for loading packages and saving packages Change 3780463 by Graeme.Thornton CryptoKeys improvements - Enable CryptoKeys plugin by default - Attempt to inherit settings from the old system by default - Hide ini/index encryption settings from packaging settings and just inherit previous values into new system Minor UBT change to remove a trailing comma from the end of encryption/signing key binary strings Change 3780557 by Ben.Marsh Fix LoginFlow module not being precompiled for the binary release. Change 3780846 by Josh.Engebretson Improve filename to long package name resolution when provided a relative path Change 3780863 by Ben.Marsh UAT: Add a better error message when a C# project has an invalid reference. Change 3780911 by Ben.Marsh Update the BuildEditorAndTools.xml script to allow submitting archived binaries to Perforce. The "Submit To Perforce For UGS" node creates a zip of all the binaries that have been built, and submits it to the stream specified by the 'ArchiveStream' argument. Change 3780956 by Josh.Engebretson Add support for ! (RemoveKey) config command to UBT UDN Link: https://udn.unrealengine.com/questions/397267/index.html #jira UE-52033 Change 3782957 by Robert.Manuszewski UE4 - Fixed a linear search in EDL that caused performance problems for very large maps. Change 3784503 by Ben.Marsh Optimizations for FStructuredArchive: * Store the depth explicitly in element objects, to avoid having to loop through the scope stack to find it. * Prevent shrinking of arrays when removing elements. * Add an inline allocator to the scope and container stacks. Change 3784700 by Ben.Marsh Remove the inline allocator from FStructuredArchive; checking whether the inline or backup allocator is being used is slower than just allocating up-front. Change 3784989 by Ben.Marsh Compile out all the FStructuredArchive validation code when WITH_TEXT_ARCHIVE_SUPPORT = 0. Change 3786860 by Gil.Gribb UE4 - Remove no buffering flag from windows async IO because it disabled the disk cache entirely. Change 3787159 by Ben.Marsh Guard against UE4.0 backwards compatibility path when determining if an engine is a source distribution. Change 3787493 by Josh.Engebretson Parallel pak generation now uses MaxDegreeOfParallelism option which is now set to the number of CPU cores Moved cryptography settings parsing out of threaded CreatePak method to avoid concurrency issue in ConfigCache.TryReadFile Fix for multiple threads parsing ini keys (PR 3995) #PR 3995 #jira 52913 #jira 49503 Change 3787773 by Steve.Robb Fix for missing final values from FOREACH_ENUM_ macros. Change 3788287 by Ben.Marsh TBA: Add checks in debug builds that key names in maps and records for FStructuredArchive are unique. Change 3788678 by Ben.Marsh Fix compile error due to inability to instantiate TArray<> of forward declared struct. Convert set of key names to an array to avoid including Set.h in public header for FStructuredArchive. Change 3789353 by Graeme.Thornton Removed unused/rotten modes from TextAsset commandlet. Used existing "-iterations=n" switch to control a global iteration over the given command. Useful for performance testing. Change 3789396 by Ben.Marsh Move code to validate container keys/sizes into DO_GUARD_SLOW checks, and allocate container metadata instances dynamically to fix problems with references to things not declared in headers that can't be included from StructuredArchive.h Change 3789772 by Ben.Marsh Always strip trailing slashes from the end of paths specified by .build.cs files; they can cause quoted paths to be escaped on the command line. Change 3790003 by Ben.Marsh TBA: Rename FStructuredArchive::EElementType::Object to FStructuredArchive::EElementType::Record. Change 3790051 by Steve.Robb PIE is disabled during a hot reload. Hot reload in editor is disabled during PIE. Hot reload from IDE is deferred until after PIE is exited. Compiling multiple times before a hot reload (e.g. compiling multiple times in PIE) will now load the most recent change. #jira UE-20357 #jira UE-52137 Change 3790709 by Steve.Robb Better move support for TVariant. EVariantTypes switched over to using an enum class to aid debugger visualization. Change 3791422 by Ben.Marsh TBA: Return the type of a field from an annotated archive formatter at the point that we enter it, rather than querying all the time. Change 3791489 by Graeme.Thornton TBA: Change StructuredArchiveFromArchive adapter to use the archive.Open() result directly, now that it's a slot and not a record Change 3792344 by Ben.Marsh Improvements to base64 encoding library. * Now supports encoding and decoding with ANSICHAR and WIDECHAR implementations. * Added support for decoding base-64 blobs without padding marks. * Added support for decoding into pre-allocated buffer. * Added constexpr functions for determining the encoded and maximum decoded size of an input buffer. * Prevent writes past the end of allocated buffer (no longer need to manually remove padding bytes). Change 3792949 by Ben.Marsh TBA: Rename FAnnotatedArchiveFormatter to FAnnotatedStructuredArchiveFormatter. Change 3794078 by Robert.Manuszewski Fixing a crash that could happen when FGCObjects were constructed and destructed when shutting down the engine #jira UE-52392 Change 3794413 by Ben.Marsh TBA: Remove the element type parameter to SetScope(). It isn't really needed; we can just assume the element ID correctly identifies the item on the stack. Change 3794731 by Ben.Marsh TBA: Optimize creation of stack elements for empty slots in FStructuredArchive. This saves a lot of bookkeeping when serializing a large number of individual fields. Since only one slot can be active at a time (and it only exists temporarily, until we write into it), we can just store the element ID assigned to it in a member variable. Change 3795081 by Ben.Marsh UBT: Move LinuxCommon.cs into Platform/Linux folder. Change 3795137 by Ben.Marsh UBT: Allow modules to specify private compiler definitions from the build.cs file, only visible within that module (via the "PrivateDefinitions" property). Change 3795247 by Ben.Marsh Fix missing header when creating a new interface from the editor new code wizard. #jira UE-53174 Change 3796025 by Graeme.Thornton Fixed some deprecated "Definitions" warnings in OpenCV build files Change 3796103 by Graeme.Thornton Disable experimental text asset option - it does nothing useful yet. Change 3796157 by Graeme.Thornton Fix path type mismatch in visual studio source code accessor meaning that the DTE comms wouldn't identify a running instance of VS as having the current solution open. #jira UE-53206 Change 3796315 by Ben.Marsh Move Formatter to the correct position for initializer. #jira UE-53208 Change 3797082 by Ben.Marsh UAT: Work around for exception thrown by launching cook with "-platform=Android_ETC1 -targetplatform=Android -cookflavor=ETC1". Anrdoid_ETC1 is not a valid platform (it's a cook platform), and can't be parsed by UAT. #jira UE-53232 Change 3799050 by Ben.Marsh Make UnrealPak.version files writable for Mac and Linux. Change 3801012 by Graeme.Thornton VSCode - Update source accessor to use code workspace as it's target, rather than just the project directory Change 3801214 by Gil.Gribb UE4 - Remove assert to work around minor problem with lock free lists. #jira UE-49600 Change 3801219 by Steve.Robb WeakObjectPtrs now warn when casting away const. Change 3801299 by Graeme.Thornton Fix quote issue with foreign project build tasks on PC Change 3803292 by Graeme.Thornton Fix crash on startup when using cook-on-the-side. Force a flush of the asset registry background scanning when creating the cook-on-the-side platform registries Change 3803559 by Steve.Robb TSAN fix for FMalloc::MaxSingleAlloc. Change 3803735 by Graeme.Thornton Last set of cryptokeys changes - Added some comments for editor exposed settings - Split "encrypt assets" option into "encrypt uassets" and "encrypt all assets" Change 3803929 by Ben.Marsh UGS: Show an in-place error panel when a project fails to open, allowing the user to retry and have their tabs saved instead of creating a modal dialog. Change 3624590 by Steve.Robb AddReferencedObjects now generates a compile error with containers of UObject*s where the UObjectType is forward-declared, as these which won't be added to the reference collector. Tidy-up of existing calls to AddReferencedObjects. Change 3629473 by Ben.Marsh Build: Rename the option for embedding source server information in PDB files for installed engine builds. Change 3632894 by Steve.Robb VARARG* macros deprecated and usage replaced with variadic templates. Change 3640704 by Steve.Robb MakeWeakObjectPtr added, which deduces a TWeakObjectPtr type from a raw pointer type. Fix to TWeakObjectPtr's constructor which implicitly removed const. Fixes to everything which didn't compile as a result. Change 3650813 by Graeme.Thornton Removed FStartupPackages and associated code Change 3651000 by Ben.Marsh Return the stack size from FPlatformStackWalk::CaptureStackBacktrace() rather than checking for the first null pointer, to prevent truncated callstacks if parts of the stack are zeroed out. #jira UE-49980 Change 3690842 by Steve.Robb FPlatformAtomics::AtomicRead added - needs optimizing. AtomicRead() used in FThreadSafeCounter::GetValue(). Change 3699416 by Steve.Robb Fix to debugger visualization of TArray with a TInlineAllocator or TFixedAllocator. Improved readability of TSparseArray visualization. Change 3720812 by Steve.Robb Atomic functions for 8-bit and 16-bit. Android, Linux and Switch implementations now just use the Clang implementation. AtomicRead64 deprecated in favor of the int64* AtomicRead overload. Change 3722698 by Steve.Robb VS debugger visualizers for TAtomic. Change 3732270 by Steve.Robb Relaxed stores and loads. Change 3749315 by Graeme.Thornton If UAT is invoked with platforms in both the -platform and -targetplatform command line switches, build using all of them rather than just the ones in -targetplatform #jira UE-52034 Change 3750657 by Josh.Engebretson Fixed issue when debugging editor cook/package and project launch operations #jira UE-52207 Change 3758514 by Steve.Robb Fixes to FString::Printf having non-literals being passed as its formatting string. Change 3763356 by Steve.Robb ENamedThreads::RenderThread and ENamedThreads::RenderThread_Local encapsulated by getters and setters. Change 3770549 by Steve.Robb Removal of obsolete PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS and PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES. Tidy up of existing code which uses it. Change 3770553 by Ben.Marsh Adding structured serialization API to Core/CoreUObject for use with text-based assets. * FStructuredArchive abstracts an archive which is made up of compound types (records, arrays, and maps). Values are stored in slots within these types. * Records are string -> value dictionaries where the key names can be compiled out in non-editor builds or when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Maps are string -> value dictionaries where the key names are present regardless of the build type. * Proxy objects are defined to express the context for serialization (FStructuredArchive::FRecord, FStructuredArchive::FArray, FStructuredArchive::FMap, FStructuredArchive::FSlot) which allows basic validation through static typing. These objects act as lightweight handles, and can be cheaply constructed and passed around on the stack. Most serialization to and from the archive is done through these objects. * Runtime checks perform additional validation to ensure that serialized data is well formed and written in a forward-only manner, regardless of the underlying archive type. * The actual input/output format is determined by a separate interface (FArchiveFormatter). Context validation (always causing matching LeaveArray for every EnterArray, etc...) is done by FStructuredArchive, so implementing these classes is fairly trivial. FArchiveFormatter can be de-virtualized in non-editor builds, where WITH_TEXT_ARCHIVE_SUPPORT = 0. * Includes implementations of FArchiveFormatter for binary and JSON formats. Change 3771105 by Steve.Robb Deprecation warnings for PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES and PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS. Fix for incorrect warning formatting on Clang platforms. Change 3771520 by Steve.Robb Start moving Clang-using platforms' pre-setup stuff into a Clang-specific header. Change 3771564 by Steve.Robb More common macros moved to the Clang pre-setup header. Change 3771613 by Steve.Robb EMIT_CUSTOM_WARNING_AT_LINE moved to ClangPlatformCompilerPreSetup.h. Change 3772881 by Ben.Marsh Add support for serializing FName and UObject through FStructuredArchive. In order to allow custom linker behavior when serializing objects: * The constructor to JSON input formatter now takes a delegate to convert a string object name into a UObject pointer. * The constructor to tagged binary formatter takes a delegate to serialize a UObject pointer into any form it chooses (likely an integer index into the import table) Object and name types are stored as strings in JSON, using an "Object:" or "Name:" prefix to differentiate them from regular strings. Any strings that already contain one of these prefixes are prepended with a "String:" prefix (as is any string that already has a "String:" prefix). Change 3772941 by Graeme.Thornton Make build work when including StructuredArchive.h from core container types Added standard header to new files Add structured archive serializer for TArray Fix bug in structured archive where containers weren't being popped from the scope stack Change 3772972 by Ben.Marsh Add an adapter which presents a legacy FArchive interface to a FStructuredArchive slot. Data is serialized into this slot as a stream of elements; raw data is buffered up into fixed size chunks, names and objects are serialized separately. When used with FBinaryArchiveFormatter, this should result in all data being passed through to the underlying archive in a backwards compatible way, wiith no additional bookkeeping fields. Change 3773006 by Ben.Marsh Rename FStructuredArchive::FRecord::EnterSlot() to EnterField(). Change 3773013 by Steve.Robb bUseInlining target rule added to UnrealBuildTool, which defaults to true, to allow inlining to be disabled for debugging purposes. Change 3774499 by Ben.Marsh Minor fixes for FStructuredArchive related classes: * Text-based archive formats are now compiled out when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Fixed issue with FTaggedBinaryArchiveFormatter state becoming corrupted when looking ahead at field types. * FArchiveFieldName constructor is now explicit, to fix cases where strings were being passed directly to serialize functions. Change 3774600 by Ben.Marsh Add CopyFormattedData() function, which can copy data from one formatter to another. Add a test case to SerializationAPI that converts from data -> JSON -> binary -> JSON -> data. This function can be used to implement a generic visitor pattern, by implementing a FArchiveFormatter which receives the deserialized data. Change 3789721 by Ben.Marsh TBA: Split FTaggedBinaryArchiveFormatter into separate classes for reading and writing. Change 3789920 by Ben.Marsh TBA: Support automatic coercion between any numeric types in tagged binary archives. Also report the smallest type that can contain a value, rather than just in32/double. #jira UECORE-364 Change 3789982 by Ben.Marsh TBA: Change FStructuredArchive::Open() to return a slot, rather than a record, to make it easier to implement a raw FArchive adapter. Change 3792466 by Ben.Marsh TBA: Better handling of raw data in text based assets. Short sequences of binary data are Base64 encoded as a single string. Longer sequences are stored as an array of Base64 encoded lines, push a SHA1 hash to detect cases where the data was merged incorrectly. In order to allow inference of the correct type for a field, other fields called "Base64" will be escaped to "_Base64", and any field beginning with "_" will have an additional underscore inserted. Reading files back in reverses these transformations. Change 3792935 by Ben.Marsh TBA: Rename FArchiveFormatter to FStructuredArchiveFormatter for consistency with FStructuredArchive. Change 3795100 by Ben.Marsh UBT: Rename the ModuleRules Definitions property to PublicDefinitions, to make its semantics clearer. Change 3795106 by Ben.Marsh Replace all internal usages of ModuleRules.Definitions, and replace it with ModuleRules.PublicDefinitions. Change 3796275 by Ben.Marsh Fix paths to Version.h includes from resource files. Change 3800683 by Josh.Engebretson Remove WER from Mac and Linux crash reports in favor of unified runtime-xml format #jira UE-50073 Change 3803545 by Steve.Robb TWeakObjPtr const-dropping assignment fix. Fixes to change. [CL 3805231 by Ben Marsh in Main branch]
2017-12-12 18:32:45 -05:00
TexturesToIgnore.Add( MakeWeakObjectPtr( CubeTex->GetFace( FaceIdx ) ) );
}
}
#endif
return bIsValid;
}
void BuildReferencingData( ETextureObjectSets InObjectSet )
{
// Don't check for BSP mats if the list mode needs something to be selected
if( InObjectSet != TextureObjectSet_SelectedActors && InObjectSet != TextureObjectSet_SelectedMaterials )
{
TSet<UObject*> BspMats;
// materials to a temp list
for (int32 Index = 0; Index < World->GetModel()->Surfs.Num(); Index++)
{
// No point showing the default material
if (World->GetModel()->Surfs[Index].Material != NULL)
{
BspMats.Add(World->GetModel()->Surfs[Index].Material);
}
}
// If any BSP surfaces are selected
if (BspMats.Num() > 0)
{
FReferencedAssets* Referencer = new(Referencers) FReferencedAssets(World->GetModel());
// Now copy the array
Referencer->AssetList = BspMats;
ReferenceGraph.Add(World->GetModel(), BspMats);
}
}
if (World->GetOutermost() == GetTransientPackage())
{
// Do not ignore the transient package as our world lives there.
IgnorePackages.Remove(GetTransientPackage());
}
// this is the maximum depth to use when searching for references
const int32 MaxRecursionDepth = 0;
// Mark all objects so we don't get into an endless recursion
for (FThreadSafeObjectIterator It; It; ++It)
{
// Skip the level, world, and any packages that should be ignored
if ( ShouldSearchForAssets(*It,IgnoreClasses,IgnorePackages,false) )
{
It->Mark(OBJECTMARK_TagExp);
}
else
{
It->UnMark(OBJECTMARK_TagExp);
}
}
// Get the objects to search for texture references
TArray< UObject* > ObjectsToSearch;
GetObjectsForListMode( InObjectSet, ObjectsToSearch );
TArray<UObject*> ObjectsToSkip;
for( int32 ObjIdx = 0; ObjIdx < ObjectsToSearch.Num(); ++ObjIdx )
{
UObject* CurrentObject = ObjectsToSearch[ ObjIdx ];
if ( !ObjectsToSkip.Contains(CurrentObject) )
{
// Create a new entry for this actor
FReferencedAssets* Referencer = new(Referencers) FReferencedAssets(CurrentObject);
// Add to the list of referenced assets
FFindAssetsArchive(CurrentObject,Referencer->AssetList,&ReferenceGraph,MaxRecursionDepth,false,false);
}
}
}
FString GetTexturePath(const FString &FullyQualifiedPath)
{
const int32 Index = FullyQualifiedPath.Find(TEXT(".") );
if(Index == INDEX_NONE)
{
return TEXT("");
}
else
{
return FullyQualifiedPath.Left(Index);
}
}
void AddEntry( const UTexture* InTexture, const AActor* InActorUsingTexture, TArray< TWeakObjectPtr<UObject> >& OutObjects )
{
UTextureStats* Entry = NULL;
UTextureStats** EntryPtr = EntryMap.Find(InTexture->GetPathName());
if(EntryPtr == NULL)
{
Entry = NewObject<UTextureStats>();
Entry->AddToRoot();
OutObjects.Add(Entry);
EntryMap.Add(InTexture->GetPathName(), Entry);
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3805092) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3623004 by Ben.Marsh Fix RemoteExecutor not taking the remote machine specs into account. Change 3623172 by Ben.Marsh UGS: Fix "More Info..." button not using P4 server override. Change 3628820 by Ben.Marsh PR #3979: Get working directory from task element, not tool node (Contributed by nullbus) Change 3630424 by Graeme.Thornton Make the AES key parameter const in FAES::EncryptData() Change 3632786 by Steve.Robb FString constructor fixed to not take an ignored void* parameter, which can be misleading. Change 3639534 by Ben.Marsh Remove old P4.NET library. Doesn't seem to be used by anything. Change 3640536 by Steve.Robb GitHub #4007 : Delete unnecessary specialization of MakeArrayView #jira UE-49617 Change 3641155 by Gil.Gribb UE4 - Speculative fix for problem with summary reading in FAsyncArchive2. Change 3643932 by Ben.Marsh Add an example build script for updating the version number, then compiling and staging the editor and tools to an output directory. Optionally submits at the end (requires -Submit argument). Change 3644825 by Ben.Marsh Use VSWHERE to find the location of MsBuild.exe, if available. https://github.com/EpicGames/UnrealEngine/pull/3879#issuecomment-329688645 Change 3647395 by Ben.Marsh Allow compiling of monolithic binaries from BuildEditorAndTools.xml, using the -set:GameTarget=FooGame -set:TargetPlatforms=Win32;Win64 options. Change 3650300 by Ben.Marsh UAT: Remove code that deletes cooked data on a failed cook. The engine should write packages out transactionally now (by writing to a temporary file and moving into place), and deleting the cooked data just prevents post-mortem analysis. Change 3650856 by Robert.Manuszewski Adding checks to prevent FlushAsyncLoading and LoadObject/LoadPackage from being called from any threads other than the game thread Change 3651022 by Gil.Gribb UE4 - Possible fix for mysterious ensure indicating problematic recursion in the pak precacher. Change 3658331 by Steve.Robb Fix for the parsing of large integer values. Change 3661958 by Gil.Gribb UE4 - Fixed rare hang in task graph. Change 3664021 by Robert.Manuszewski Fix for a potential GC crash caused by stale pointer in AnimInstanceProxy See https://udn.unrealengine.com/questions/392432/gc-issue-uaniminstancemontageinstances-empty-but-u.html Change 3664254 by Steve.Robb Use ANSI allocator when thread sanitizer is enabled. This allows the generation of more accurate and meaningful reports. Change 3664436 by Steve.Robb Use TUniquePtr instead of a thread-unsafe TSharedPtr to move data between threads. Change 3666461 by Graeme.Thornton Improvements to signing/encryption key embedding and runtime access - Changed method of embedding key into the executable to make it more secure - Added FAESKey class to wrap a 32 byte key Change 3666462 by Graeme.Thornton Cut ShooterGame AES key down to 32 characters Change 3677560 by Ben.Marsh PR #4074: UBT: Add include and library-related fields to module JSON output (Contributed by adamrehn) Change 3683534 by Steve.Robb Refactoring of enum/struct lookup during hot reload. Change 3683754 by Steve.Robb Alignment fixes to allow int64 on 32-bit platforms Support for integral types in IsAligned. Static asserts so that alignment functions will no longer be called with non-intergal, non-pointer types. Some fixes to existing code. Change 3686670 by Steve.Robb Fix for thread-unsafe modification of static array in FString::ParseIntoArrayWS. Change 3687540 by Ben.Marsh Fix all UBT/UAT output going to stderr rather than stdout. Change 3688931 by Gil.Gribb UE4 - Critical fix for a rare race condition in the pak file async IO layer. Change 3690000 by Graeme.Thornton Manual copy of 4.18 CL 3687869 Make UBT include the destination INI file for a given hierarchy if it exists Renamed VSCode enum value to VisualStudioCode, so it matches the source accessor plugin name Change 3690030 by Graeme.Thornton VSCode fixes - Source Code Accessor plugin changes. Add new interface method to open a solution at a given path - GameProjectUtils now uses the source navigation API to open solutions rather than hardcoding which solution file types to look for - Various fixes for vscode project file generation #jira UE-50554 Change 3690885 by Steve.Robb Atomic reads in FReferenceControllerOps<ESPMode::ThreadSafe>. Change 3691052 by Steve.Robb Free stats thread on shutdown. Change 3695138 by Steve.Robb AsConst helper function added. Change 3696627 by James.Hopkin Changed player controller iterator typedefs to use TWeakObjectPtr rather than the deprecated TAutoWeakObjectPtr (review-3606695) Change 3697099 by Steve.Robb GitHub #4105 : Removed redundant class access modifier Change 3697154 by Steve.Robb Removal of deprecated functions in delegates. Mutable lambdas to can now be bound to delegates. Change 3697180 by Steve.Robb GitHub #4115 : Incorrect CPPMacroType used for USoftClassProperty Change 3697239 by Steve.Robb Allow TArray::Insert to take an array with any allocator type. Change 3697269 by Steve.Robb RelocateConstructItems instead of MoveConstructItems. Change 3697558 by Steve.Robb New _GetRef functions for TArray, which return a reference to the newly-added element. Unit tests for these functions. Change 3699776 by Steve.Robb TSAN warning suppression around IAsyncReadRequest::bCompleteAndCallbackCalled. Change 3702397 by Steve.Robb TIsTrivial type trait. Change 3702569 by Steve.Robb Allow a TGuardValue to be assigned to a different type from the one being guarded. Change 3706644 by Robert.Manuszewski Different stack ingore count for development builds for FArchiveStackTrace Change 3709272 by Steve.Robb Removal of redundant UpdateVertices, which causes a race condition on the renderer thread. Change 3709452 by Robert.Manuszewski Fixed a bug where with async time limit set to a low value the async loading could hang because the linker would keep reloading the preload dependencies Change 3709454 by Robert.Manuszewski Added command line option -NOEDL to disable EDL Change 3709487 by Steve.Robb Remove use of PLATFORM_HAS_64BIT_ATOMICS, which is always 1. Change 3709645 by Ben.Marsh Fix race condition between multiple instances of UBT trying to write out the XML config cache. Change 3711193 by Ben.Marsh Add an editor setting for the shared DDC location to use. #jira UE-51487 Change 3713811 by Steve.Robb Update .modules files after a hot reload. Don't check for directory timestamp changes as a way of detecting new files if hot reloading with a makefile, as this is already done during makefile invalidation checks. Pass hotreload flags around in UBT instead of relying on global state. This fixes the hot reload iteration speed regression without also regressing the fix to UE-42205. #jira UE-51472 Change 3715654 by Steve.Robb GitHub #4156 : Fixed not compiling template function Algo::UpperBoundBy. Change 3718782 by Steve.Robb TSharedPtr, TSharedRef and TWeakPtr assignment are now implemented as copy-and-swap to avoid an invalid smart pointer state being visible to any destructors being called. Change 3720830 by Steve.Robb Initial import of TAtomic object wrapper, which guarantees atomic access to an object. Change 3720881 by Steve.Robb FCompression ThreadSanitizer data race fixes. Change 3722640 by Graeme.Thornton Guard network platform file heartbeat function with the socket critical section. Stop heartbeat from causing a crash when firing during async loading. #jira UE-51463 Change 3722655 by Steve.Robb Don't null name table because it's already zeroed at startup. Some tidy-ups. Change 3722754 by Steve.Robb Thread sanitizer fix. Small typo fix. Change 3722849 by Graeme.Thornton Improve "caching file" message in networkplatformfile so it says "Requesting file..." and is only output when we actually request the file from the server Change 3723081 by Steve.Robb TAtomic is now aligned to the underlying integer type. TAtomic will now static assert with a better error message when given an unsupported type. Define added for the maximum platform-supported atomic type, and used instead of a (wrong) hardcoded number. Misc renames. Change 3723270 by Ben.Marsh Include /d2cgsummary argument when running UBT with -Timing. Change 3723683 by Ben.Marsh Do not include documentation in the generated project files by default. Suspect that the 30,000 UDN files that get added to the solution take up memory and degrate performance. Change 3725422 by Robert.Manuszewski When serializing compressed archive with multithreaded compression enabled, wait for the oldest async task instead of spinning. Change 3725735 by Robert.Manuszewski Making all CheckDefaultSubobjects related functions const Change 3726167 by Steve.Robb FMinimalName::IsNone added. Change 3726458 by Steve.Robb TAtomic will no longer instantiate for types which are not exactly a size supported by the platform layer. Change 3726542 by Ben.Marsh UGS: Always include the project filename in the editor build command. The project may not be in one of the .uprojectdirs paths. Change 3726595 by Ben.Marsh Allow building multiple game targets in the example BuildEditorAndTools.xml script. Change 3726724 by Ben.Marsh Fix ambiguities in calculating root directory. (GitHub #4172) Change 3726959 by Ben.Marsh Make sure that AutomationTool uses the same list of preprocessor definitions when compiling *.target.cs files as UnrealBuildTool does. Change 3728437 by Steve.Robb VisitTupleElements now supports invocation of a functor taking arguments from multiple tuples in parallel. Some improved documentation. NOTE: This is a backward-incompatible change to VisitTupleElements. Any existing calls will need their arguments swapping. Change 3732262 by Gil.Gribb UE4 - Fixed rare hangs in the task graph. Change 3732755 by Steve.Robb Stats TSAN fixes. Optimizations to FCycleCounter::Start() to only read the stat name once. Change 3735000 by Robert.Manuszewski Always preload the AssetRegistry module on startup. even if EDL is disabled. Even without EDL, if the async loading thread is enabled the AssetRegistryModule will otherwise be loaded from the ASL thread and that will assert. Change 3735292 by Robert.Manuszewski Made sure component visualizer is removed from VisualizersForSelection when UnregisterComponentVisualizer() is called otherwise it may cause crashes when the engine terminates. Change 3735332 by Steve.Robb Refactoring of UDelegateProperty::Identical() to clarify logic. Fixed UMulticastDelegateProperty::Identical() to compare the bound function names. PPF_DeltaComparison removed, as it doesn't seem useful. Change 3737960 by Graeme.Thornton VSCode - Add launch task for generating project files for the given folder Change 3738398 by Graeme.Thornton Make Visual Studio source code accessor's module hotreload handler pass the 'save all files' message to the current accesor, rather than direct to the visual studio accessor #jira UE-51451 Change 3738405 by Graeme.Thornton VSCode: Format c/cpp settings strings using comment path formatting function Change 3738928 by Steve.Robb Fix for lack of null conditional operators in some older Monos. (replicated from CL# 3729574 in Release-4.18) #jira UE-51842 Change 3739135 by Ben.Marsh Fix being unable to package projects in a folder called "Wolf". This is only a restricted folder for Epic's Perforce history. #jira UE-51855 Change 3739360 by Ben.Marsh UAT: Fix issue with P4PORT setting not being parsed correctly. Change 3745959 by James.Hopkin #core Added ImplicitConv for safe upcasts to a specific required type, e.g. deduced delegate payload types Change 3746125 by Steve.Robb FName ThreadSanitizer fixes. Change 3747274 by Steve.Robb TSAN fix for FMediaTicker::Stopping. Change 3747618 by Steve.Robb ThreadSanitizer data race fix for FShaderCompileThreadRunnableBase::bForceFinish. Change 3747720 by Steve.Robb ThreadSanitizer fix for FMessageRouter::Stopping. Change 3749207 by Graeme.Thornton First pass of CryptoKeys plugin. Allows creation/editing/cycling of AES/RSA keys. Change 3749323 by Graeme.Thornton Fix UAT crash when only -targetplatform is specifiied Change 3749349 by Steve.Robb TSAN_SAFE guards around LockFreeList to silence ThreadSanitizer. Change 3749617 by Steve.Robb Logf static_assert for formatting string enabled. Change 3749897 by Steve.Robb FDebug::LogAssertFailedMessage static assert for formatting string enabled. Change 3754011 by Steve.Robb Static asserts that the allocator supports move. Move-enabled our allocators which don't support move. Change 3754227 by Ben.Marsh Fix build command line in generated projects missing a space before the compiler version override. #jira UE-52226 Change 3754562 by Ben.Marsh PR #4206: Replace deprecated wsprintf with secure swprintf for Bootstrap executable (Contributed by jessicafalk) Change 3755616 by Graeme.Thornton Runtime code for using the new crypto ini files to define signing/encryption keys #jira UE-46580 Change 3755666 by James.Hopkin Used ImplicitConv to remove Casts being used for up-casts #review-3745965 Change 3755671 by Graeme.Thornton Add log message in unrealpak to say which config file system it is using for crypto keys Change 3755672 by Graeme.Thornton Updating ShooterGame with new CryptoKeys based security setup Change 3756778 by Ben.Marsh Add support for running multiple jobs simultaneously on a single builder. When running job or agent setup, the --num-slots=X parameter defines the number of steps that can run simultaneously (EC procedures pass in the resource step limit). A lock file is created under the workspace root (D:\Build) and a reservation file is created for the first slot that can be allocated (slot-1, slot-2, etc...). The slot number is used to define the workspace name that should be used. Change 3758498 by Ben.Marsh Re-throw exceptions when a file cannot be deleted when cleaning a target. Change 3758921 by Steve.Robb ThreadSanitizer fix to FThreadSafeStaticStatBase::HighPerformanceEnable to do a relaxed atomic load on access. DoSetup() now returns the newly-allocated pointer, instead of reloading it from memory. Change 3760599 by Graeme.Thornton Added missing epic header comment to some new source files Change 3760642 by Steve.Robb ThreadSanitizer fix for concurrent access to GMainThreadBlockedOnRenderThread. Change 3760669 by Graeme.Thornton Improvement to OpenSSL based signing key generator. Generate a full RSA key then steal the primes from it, rather than generating the primes manually. Added a test mode to the cryptokeys commandlet to test signing key generation Change 3760711 by Steve.Robb ThreadSanitizer fixes to GIsRenderingThreadSuspended. Change 3760739 by Steve.Robb ThreadSanitizer fix for FQueuedThread::TimeToDie. Change 3760763 by Steve.Robb ThreadSanitizer fix for GRunRenderingThreadHeartbeat. Removal of unnecessary/dangerous initializer for GMainThreadBlockedOnRenderThread. Change 3760793 by Steve.Robb Some simple refactoring to remove some volatile reads of BufferStartPos and BufferEndPos. Change 3760817 by Steve.Robb ThreadSanitizer fixes for FAsyncWriter::BufferStartPos and BufferEndPos. Change 3761331 by Josh.Engebretson UnrealBuildTool enforcement of Development and Debug configurations in existing .csproj #jira UE-52416 Change 3761521 by Steve.Robb ThreadSanitizer fixes for FEvent::EventStartCycles and EventUniqueId. Change 3763117 by Graeme.Thornton PR #3722: Optimising FPaths::IsRelative() (Contributed by jovisgCL) Change 3763358 by Graeme.Thornton Ensure that all branches within FGenericPlatformMisc::RootDir() produce an absolute path with no duplicate slashes Remove relative->abs conversion of root dir from FPaths::MakeStandardFilename(), now that we know RootDir() always returns an absolute path Derived from the content of this PR: PR #3742: Treat RootDirectory the same way as Standardized (Contributed by TroutZhang) Change 3764058 by Graeme.Thornton Generate a .code-workspace file for the current workspace. Allows foreign projects to "mount" the UE4 folder so that the engine tasks are avaible, and all engine source is visible to VSCode for searching purposes #jira UE-52359 Change 3764705 by Steve.Robb Better handling of whitespace in ImportText_Internal() for set and map properties. Containers are now emptied upon import failure, to avoid leaving bad container states (unhashed, partial data). Fix to USetProperty's temp buffer size to avoid buffer overruns. Duplicate map keys are now skipped during import, same as USetProperty's behavior. Change 3764731 by Steve.Robb Don't re-run UHT if only source files have changed in the same folder as headers. This was already done for hot reload, but there's no reason why it should be limited to that. Change 3765923 by Graeme.Thornton VSCode - "taskName" -> "label" for C# build tasks Change 3766018 by Steve.Robb constexpr constructor for TAtomic. Change 3766037 by Steve.Robb Misc tidyings in HotReload.cpp. Change 3766046 by Steve.Robb ThreadSanitizer fixes to ENamedThreads::RenderThread and ENamedThreads::ENamedThreads_Local. Change 3766288 by Steve.Robb Improved efficiency of adding/removing elements to UGCObjectReferencer::ReferencedObjects. Change 3766374 by Josh.Engebretson Fix issue with ini quoted value comparison #jira UE-52066 Change 3766532 by Josh.Engebretson PR #3680: Added NetSerialize to FDateTime fixing UE-22533 (Contributed by druhasu) #jira UE-46156 Change 3766740 by Steve.Robb TMultiMap::Append added. Change 3767523 by Steve.Robb ThreadSanitizer fix for UE4Delegates_Private::GNextID. Change 3767601 by Steve.Robb ThreadSanitizer fix for FStats::GameThreadStatsFrame. Change 3770567 by Ben.Marsh Add a FAnnotatedArchiveFormatter interface which allows querying structural type information that may not be in binary archives. Change 3770826 by Ben.Marsh Move StructuredArchive implementation into Core, so primitive types can implement serialization overloads for it. Change 3770875 by Steve.Robb Redundant UScriptStruct::PostLoad removed, which was causing a race condition in async loading. This was re-establishing the CppStructOps, but that is unnecessary because native classes cannot change as a result of a load - only BP structs can, and they don't have CppStructOps. Change 3772167 by Ben.Marsh Add a context-free binary formatter that can serialize tagged data. This functions as a lower-overhead binary intermediate format for JSON data. Change 3772248 by Steve.Robb ThreadSanitizer fixes to FMalloc call counters. Change 3772383 by Ben.Marsh Separate archive metadata from FArchive into FArchiveContext, so it can be safely exposed to consumers of FStructuredArchive. Change 3772906 by Graeme.Thornton TextAssetCommandlet - Utility commandlet for testing/converting to text asset format Change 3772932 by Ben.Marsh Fix "String:" prefix not being stripped from escaped string values. Change 3772942 by Graeme.Thornton Add experimental setting to enable in-editor text asset format functionality Add "export to text" option into the content browser asset actions context menu Change 3772955 by Ben.Marsh Add a new "stream" compound type to FStructuredArchive, which allows serializing a sequence of elements similarly to an array, but without serializing an explicit size. Allows passing through data to an underlying binary archive without breaking compatibility. Change 3772963 by Ben.Marsh Allow querying record keys and stream lengths from annotated archive formatters, since these archives have markup for field boundaries. Change 3773010 by Graeme.Thornton Added CORE_API to FArchiveFromStructuredArchive Gave text asset format experimental option a slightly less random tooltip comment Change 3773057 by Ben.Marsh Add a flag to FArchive to determine whether the archive is text (IsTextFormat()). Add support for seeking within FArchiveFromStructuredArchive. For text formats, data is serialized to an in-memory buffer, with names and objects serialized as indices into an array. For non-text formats, data is serialized directly to the underlying archive. Also rename FStructuredArchive::TryEnterSlot() to TryEnterField(). Change 3773118 by Steve.Robb TSignedIntType and TUnsignedIntType type traits for getting an integer type of a given size. Change 3773122 by Steve.Robb TAtomic fixes for pointer arithmetic. TSignedIntType used instead of reimplementing its own trait. Change 3773123 by Steve.Robb Unit tests for TAtomic. Change 3773138 by Steve.Robb Run numeric tests on integer types instead of basic tests. Fix for compiler warnings when subtracting from unsigned atomics. Change 3773166 by Steve.Robb Refactoring of arithmetic operations into its own class, then basing the pointer and integral versions on that. Change 3774216 by Gil.Gribb UE4 - Fix rare crash in the pak precacher immediately after unmounting a pak file. Change 3774426 by Ben.Marsh Copy all C# tools to a staging directory before compiling them. This prevents access violations when compiling tools like iPhonePackager that reference DotNETCommon, and ensures we strip NotForLicensees folders out of them all. See: https://answers.unrealengine.com/questions/726010/418-will-not-build-from-source.html Change 3774658 by Ben.Marsh Improve error reporting while generating intellisense for project files. Include the name of the target being compiled, and allow project file generation to continue without it. Change 3775141 by Ben.Marsh Always output HTML5 diagnostics at "information" verbosity, to avoid every line being prefixed with "WARNING:" and screwing up the EC postprocessor. Change 3775459 by Ben.Marsh Removing .NET Framework Perforce DLL as runtime dependency of engine third party library. The actual library is linked statically. Change 3775522 by Ben.Marsh UGS: Treat .uproject and .uplugin files as code changes. Change 3775597 by Ben.Marsh Fix post-build steps for plugins not being executed. #jira UE-52754 Change 3777895 by Graeme.Thornton StructuredArchiveFromArchive - An adapter class for wrapping an existing FArchive with a structured archive Change 3777931 by Graeme.Thornton Refactored FArchiveUObjects serialization code into some static helpers Added FArchiveUObjectFromStructuredArchive which allows the adaption of a structured archive into an FArchive that supports the extra UObect serialization functions for weak/soft pointers Change 3777942 by Graeme.Thornton Added missing CORE_API to FStructuredArchive::FStream Added FStructuredArchive::FSlot insertion operator for char Added specialization of TArray<uint8> serializer for structured archives which serializes the contents as one value Change 3778084 by Graeme.Thornton Adding FPackageName::GetTextAssetPackageExtension() to access the file extension we use for text asset files Change 3778096 by Graeme.Thornton Add a constructor to FArchiveUObjectFromStructuredArchive that takes a slot and passes it to the base class Change 3778389 by Josh.Engebretson Fix an optimization issue with CPU benchmarking Add better support for debugging/testing local rocket builds UDN Link: https://udn.unrealengine.com/questions/400909/command-scalability-auto-gives-inaccurate-cpu-benc.html #jira UE-52192 Change 3778701 by Josh.Engebretson Ensure plugin content folders are mounted consistently. Fixes TryConvertFilenameToLongPackageName failing to work on plugin assets UDN Link: https://udn.unrealengine.com/questions/276386/tryconvertfilenametolongpackagename-fails-for-plug.html #jira UE-40317 Change 3778832 by Chad.Garyet Adding enterprise path support for PCB's for UGS Change 3780258 by Graeme.Thornton TextAssetCommandlet - Accumulate timings for loading packages and saving packages Change 3780463 by Graeme.Thornton CryptoKeys improvements - Enable CryptoKeys plugin by default - Attempt to inherit settings from the old system by default - Hide ini/index encryption settings from packaging settings and just inherit previous values into new system Minor UBT change to remove a trailing comma from the end of encryption/signing key binary strings Change 3780557 by Ben.Marsh Fix LoginFlow module not being precompiled for the binary release. Change 3780846 by Josh.Engebretson Improve filename to long package name resolution when provided a relative path Change 3780863 by Ben.Marsh UAT: Add a better error message when a C# project has an invalid reference. Change 3780911 by Ben.Marsh Update the BuildEditorAndTools.xml script to allow submitting archived binaries to Perforce. The "Submit To Perforce For UGS" node creates a zip of all the binaries that have been built, and submits it to the stream specified by the 'ArchiveStream' argument. Change 3780956 by Josh.Engebretson Add support for ! (RemoveKey) config command to UBT UDN Link: https://udn.unrealengine.com/questions/397267/index.html #jira UE-52033 Change 3782957 by Robert.Manuszewski UE4 - Fixed a linear search in EDL that caused performance problems for very large maps. Change 3784503 by Ben.Marsh Optimizations for FStructuredArchive: * Store the depth explicitly in element objects, to avoid having to loop through the scope stack to find it. * Prevent shrinking of arrays when removing elements. * Add an inline allocator to the scope and container stacks. Change 3784700 by Ben.Marsh Remove the inline allocator from FStructuredArchive; checking whether the inline or backup allocator is being used is slower than just allocating up-front. Change 3784989 by Ben.Marsh Compile out all the FStructuredArchive validation code when WITH_TEXT_ARCHIVE_SUPPORT = 0. Change 3786860 by Gil.Gribb UE4 - Remove no buffering flag from windows async IO because it disabled the disk cache entirely. Change 3787159 by Ben.Marsh Guard against UE4.0 backwards compatibility path when determining if an engine is a source distribution. Change 3787493 by Josh.Engebretson Parallel pak generation now uses MaxDegreeOfParallelism option which is now set to the number of CPU cores Moved cryptography settings parsing out of threaded CreatePak method to avoid concurrency issue in ConfigCache.TryReadFile Fix for multiple threads parsing ini keys (PR 3995) #PR 3995 #jira 52913 #jira 49503 Change 3787773 by Steve.Robb Fix for missing final values from FOREACH_ENUM_ macros. Change 3788287 by Ben.Marsh TBA: Add checks in debug builds that key names in maps and records for FStructuredArchive are unique. Change 3788678 by Ben.Marsh Fix compile error due to inability to instantiate TArray<> of forward declared struct. Convert set of key names to an array to avoid including Set.h in public header for FStructuredArchive. Change 3789353 by Graeme.Thornton Removed unused/rotten modes from TextAsset commandlet. Used existing "-iterations=n" switch to control a global iteration over the given command. Useful for performance testing. Change 3789396 by Ben.Marsh Move code to validate container keys/sizes into DO_GUARD_SLOW checks, and allocate container metadata instances dynamically to fix problems with references to things not declared in headers that can't be included from StructuredArchive.h Change 3789772 by Ben.Marsh Always strip trailing slashes from the end of paths specified by .build.cs files; they can cause quoted paths to be escaped on the command line. Change 3790003 by Ben.Marsh TBA: Rename FStructuredArchive::EElementType::Object to FStructuredArchive::EElementType::Record. Change 3790051 by Steve.Robb PIE is disabled during a hot reload. Hot reload in editor is disabled during PIE. Hot reload from IDE is deferred until after PIE is exited. Compiling multiple times before a hot reload (e.g. compiling multiple times in PIE) will now load the most recent change. #jira UE-20357 #jira UE-52137 Change 3790709 by Steve.Robb Better move support for TVariant. EVariantTypes switched over to using an enum class to aid debugger visualization. Change 3791422 by Ben.Marsh TBA: Return the type of a field from an annotated archive formatter at the point that we enter it, rather than querying all the time. Change 3791489 by Graeme.Thornton TBA: Change StructuredArchiveFromArchive adapter to use the archive.Open() result directly, now that it's a slot and not a record Change 3792344 by Ben.Marsh Improvements to base64 encoding library. * Now supports encoding and decoding with ANSICHAR and WIDECHAR implementations. * Added support for decoding base-64 blobs without padding marks. * Added support for decoding into pre-allocated buffer. * Added constexpr functions for determining the encoded and maximum decoded size of an input buffer. * Prevent writes past the end of allocated buffer (no longer need to manually remove padding bytes). Change 3792949 by Ben.Marsh TBA: Rename FAnnotatedArchiveFormatter to FAnnotatedStructuredArchiveFormatter. Change 3794078 by Robert.Manuszewski Fixing a crash that could happen when FGCObjects were constructed and destructed when shutting down the engine #jira UE-52392 Change 3794413 by Ben.Marsh TBA: Remove the element type parameter to SetScope(). It isn't really needed; we can just assume the element ID correctly identifies the item on the stack. Change 3794731 by Ben.Marsh TBA: Optimize creation of stack elements for empty slots in FStructuredArchive. This saves a lot of bookkeeping when serializing a large number of individual fields. Since only one slot can be active at a time (and it only exists temporarily, until we write into it), we can just store the element ID assigned to it in a member variable. Change 3795081 by Ben.Marsh UBT: Move LinuxCommon.cs into Platform/Linux folder. Change 3795137 by Ben.Marsh UBT: Allow modules to specify private compiler definitions from the build.cs file, only visible within that module (via the "PrivateDefinitions" property). Change 3795247 by Ben.Marsh Fix missing header when creating a new interface from the editor new code wizard. #jira UE-53174 Change 3796025 by Graeme.Thornton Fixed some deprecated "Definitions" warnings in OpenCV build files Change 3796103 by Graeme.Thornton Disable experimental text asset option - it does nothing useful yet. Change 3796157 by Graeme.Thornton Fix path type mismatch in visual studio source code accessor meaning that the DTE comms wouldn't identify a running instance of VS as having the current solution open. #jira UE-53206 Change 3796315 by Ben.Marsh Move Formatter to the correct position for initializer. #jira UE-53208 Change 3797082 by Ben.Marsh UAT: Work around for exception thrown by launching cook with "-platform=Android_ETC1 -targetplatform=Android -cookflavor=ETC1". Anrdoid_ETC1 is not a valid platform (it's a cook platform), and can't be parsed by UAT. #jira UE-53232 Change 3799050 by Ben.Marsh Make UnrealPak.version files writable for Mac and Linux. Change 3801012 by Graeme.Thornton VSCode - Update source accessor to use code workspace as it's target, rather than just the project directory Change 3801214 by Gil.Gribb UE4 - Remove assert to work around minor problem with lock free lists. #jira UE-49600 Change 3801219 by Steve.Robb WeakObjectPtrs now warn when casting away const. Change 3801299 by Graeme.Thornton Fix quote issue with foreign project build tasks on PC Change 3803292 by Graeme.Thornton Fix crash on startup when using cook-on-the-side. Force a flush of the asset registry background scanning when creating the cook-on-the-side platform registries Change 3803559 by Steve.Robb TSAN fix for FMalloc::MaxSingleAlloc. Change 3803735 by Graeme.Thornton Last set of cryptokeys changes - Added some comments for editor exposed settings - Split "encrypt assets" option into "encrypt uassets" and "encrypt all assets" Change 3803929 by Ben.Marsh UGS: Show an in-place error panel when a project fails to open, allowing the user to retry and have their tabs saved instead of creating a modal dialog. Change 3624590 by Steve.Robb AddReferencedObjects now generates a compile error with containers of UObject*s where the UObjectType is forward-declared, as these which won't be added to the reference collector. Tidy-up of existing calls to AddReferencedObjects. Change 3629473 by Ben.Marsh Build: Rename the option for embedding source server information in PDB files for installed engine builds. Change 3632894 by Steve.Robb VARARG* macros deprecated and usage replaced with variadic templates. Change 3640704 by Steve.Robb MakeWeakObjectPtr added, which deduces a TWeakObjectPtr type from a raw pointer type. Fix to TWeakObjectPtr's constructor which implicitly removed const. Fixes to everything which didn't compile as a result. Change 3650813 by Graeme.Thornton Removed FStartupPackages and associated code Change 3651000 by Ben.Marsh Return the stack size from FPlatformStackWalk::CaptureStackBacktrace() rather than checking for the first null pointer, to prevent truncated callstacks if parts of the stack are zeroed out. #jira UE-49980 Change 3690842 by Steve.Robb FPlatformAtomics::AtomicRead added - needs optimizing. AtomicRead() used in FThreadSafeCounter::GetValue(). Change 3699416 by Steve.Robb Fix to debugger visualization of TArray with a TInlineAllocator or TFixedAllocator. Improved readability of TSparseArray visualization. Change 3720812 by Steve.Robb Atomic functions for 8-bit and 16-bit. Android, Linux and Switch implementations now just use the Clang implementation. AtomicRead64 deprecated in favor of the int64* AtomicRead overload. Change 3722698 by Steve.Robb VS debugger visualizers for TAtomic. Change 3732270 by Steve.Robb Relaxed stores and loads. Change 3749315 by Graeme.Thornton If UAT is invoked with platforms in both the -platform and -targetplatform command line switches, build using all of them rather than just the ones in -targetplatform #jira UE-52034 Change 3750657 by Josh.Engebretson Fixed issue when debugging editor cook/package and project launch operations #jira UE-52207 Change 3758514 by Steve.Robb Fixes to FString::Printf having non-literals being passed as its formatting string. Change 3763356 by Steve.Robb ENamedThreads::RenderThread and ENamedThreads::RenderThread_Local encapsulated by getters and setters. Change 3770549 by Steve.Robb Removal of obsolete PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS and PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES. Tidy up of existing code which uses it. Change 3770553 by Ben.Marsh Adding structured serialization API to Core/CoreUObject for use with text-based assets. * FStructuredArchive abstracts an archive which is made up of compound types (records, arrays, and maps). Values are stored in slots within these types. * Records are string -> value dictionaries where the key names can be compiled out in non-editor builds or when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Maps are string -> value dictionaries where the key names are present regardless of the build type. * Proxy objects are defined to express the context for serialization (FStructuredArchive::FRecord, FStructuredArchive::FArray, FStructuredArchive::FMap, FStructuredArchive::FSlot) which allows basic validation through static typing. These objects act as lightweight handles, and can be cheaply constructed and passed around on the stack. Most serialization to and from the archive is done through these objects. * Runtime checks perform additional validation to ensure that serialized data is well formed and written in a forward-only manner, regardless of the underlying archive type. * The actual input/output format is determined by a separate interface (FArchiveFormatter). Context validation (always causing matching LeaveArray for every EnterArray, etc...) is done by FStructuredArchive, so implementing these classes is fairly trivial. FArchiveFormatter can be de-virtualized in non-editor builds, where WITH_TEXT_ARCHIVE_SUPPORT = 0. * Includes implementations of FArchiveFormatter for binary and JSON formats. Change 3771105 by Steve.Robb Deprecation warnings for PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES and PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS. Fix for incorrect warning formatting on Clang platforms. Change 3771520 by Steve.Robb Start moving Clang-using platforms' pre-setup stuff into a Clang-specific header. Change 3771564 by Steve.Robb More common macros moved to the Clang pre-setup header. Change 3771613 by Steve.Robb EMIT_CUSTOM_WARNING_AT_LINE moved to ClangPlatformCompilerPreSetup.h. Change 3772881 by Ben.Marsh Add support for serializing FName and UObject through FStructuredArchive. In order to allow custom linker behavior when serializing objects: * The constructor to JSON input formatter now takes a delegate to convert a string object name into a UObject pointer. * The constructor to tagged binary formatter takes a delegate to serialize a UObject pointer into any form it chooses (likely an integer index into the import table) Object and name types are stored as strings in JSON, using an "Object:" or "Name:" prefix to differentiate them from regular strings. Any strings that already contain one of these prefixes are prepended with a "String:" prefix (as is any string that already has a "String:" prefix). Change 3772941 by Graeme.Thornton Make build work when including StructuredArchive.h from core container types Added standard header to new files Add structured archive serializer for TArray Fix bug in structured archive where containers weren't being popped from the scope stack Change 3772972 by Ben.Marsh Add an adapter which presents a legacy FArchive interface to a FStructuredArchive slot. Data is serialized into this slot as a stream of elements; raw data is buffered up into fixed size chunks, names and objects are serialized separately. When used with FBinaryArchiveFormatter, this should result in all data being passed through to the underlying archive in a backwards compatible way, wiith no additional bookkeeping fields. Change 3773006 by Ben.Marsh Rename FStructuredArchive::FRecord::EnterSlot() to EnterField(). Change 3773013 by Steve.Robb bUseInlining target rule added to UnrealBuildTool, which defaults to true, to allow inlining to be disabled for debugging purposes. Change 3774499 by Ben.Marsh Minor fixes for FStructuredArchive related classes: * Text-based archive formats are now compiled out when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Fixed issue with FTaggedBinaryArchiveFormatter state becoming corrupted when looking ahead at field types. * FArchiveFieldName constructor is now explicit, to fix cases where strings were being passed directly to serialize functions. Change 3774600 by Ben.Marsh Add CopyFormattedData() function, which can copy data from one formatter to another. Add a test case to SerializationAPI that converts from data -> JSON -> binary -> JSON -> data. This function can be used to implement a generic visitor pattern, by implementing a FArchiveFormatter which receives the deserialized data. Change 3789721 by Ben.Marsh TBA: Split FTaggedBinaryArchiveFormatter into separate classes for reading and writing. Change 3789920 by Ben.Marsh TBA: Support automatic coercion between any numeric types in tagged binary archives. Also report the smallest type that can contain a value, rather than just in32/double. #jira UECORE-364 Change 3789982 by Ben.Marsh TBA: Change FStructuredArchive::Open() to return a slot, rather than a record, to make it easier to implement a raw FArchive adapter. Change 3792466 by Ben.Marsh TBA: Better handling of raw data in text based assets. Short sequences of binary data are Base64 encoded as a single string. Longer sequences are stored as an array of Base64 encoded lines, push a SHA1 hash to detect cases where the data was merged incorrectly. In order to allow inference of the correct type for a field, other fields called "Base64" will be escaped to "_Base64", and any field beginning with "_" will have an additional underscore inserted. Reading files back in reverses these transformations. Change 3792935 by Ben.Marsh TBA: Rename FArchiveFormatter to FStructuredArchiveFormatter for consistency with FStructuredArchive. Change 3795100 by Ben.Marsh UBT: Rename the ModuleRules Definitions property to PublicDefinitions, to make its semantics clearer. Change 3795106 by Ben.Marsh Replace all internal usages of ModuleRules.Definitions, and replace it with ModuleRules.PublicDefinitions. Change 3796275 by Ben.Marsh Fix paths to Version.h includes from resource files. Change 3800683 by Josh.Engebretson Remove WER from Mac and Linux crash reports in favor of unified runtime-xml format #jira UE-50073 Change 3803545 by Steve.Robb TWeakObjPtr const-dropping assignment fix. Fixes to change. [CL 3805231 by Ben Marsh in Main branch]
2017-12-12 18:32:45 -05:00
Entry->Texture = MakeWeakObjectPtr(const_cast<UTexture*>(InTexture));
Entry->Path = GetTexturePath(InTexture->GetPathName());
Entry->Group = (TextureGroup)InTexture->LODGroup;
Entry->CurrentKB = InTexture->CalcTextureMemorySizeEnum( TMC_ResidentMips ) / 1024.0f;
Entry->FullyLoadedKB = InTexture->CalcTextureMemorySizeEnum( TMC_AllMipsBiased ) / 1024.0f;
Entry->LODBias = InTexture->GetCachedLODBias();
const FTexture* Resource = InTexture->GetResource();
if(Resource)
{
Entry->LastTimeRendered = (float)FMath::Max( FApp::GetLastTime() - Resource->LastRenderTime, 0.0 );
}
Entry->Virtual = InTexture->IsCurrentlyVirtualTextured() ? TEXT("YES") : TEXT("NO");
const UTexture2D* Texture2D = Cast<const UTexture2D>(InTexture);
if( Texture2D )
{
Entry->Format = Texture2D->GetPixelFormat();
Entry->Type = TEXT("2D");
// Calculate in game current dimensions
Copying //UE4/Dev-Rendering to //UE4/Dev-Main (Source: //UE4/Dev-Rendering @ 3635055) #lockdown Nick.Penwarden ============================ MAJOR FEATURES & CHANGES ============================ Change 3503468 by Marcus.Wassmer Fix merge conflicts Change 3537059 by Ben.Marsh Fixing case of iOS directories, pt1 Change 3537060 by Ben.Marsh Fixing case of iOS directories, pt2 Change 3608300 by Chris.Bunner Added post process material to preview compile cache set to allow post process volume preview scene improvements. Change 3608302 by Chris.Bunner Fixed decal lifetime fading. #jira UE-48400 Change 3608303 by Chris.Bunner Updated default WritesAllPixels input to ignore dithering (as intended, was disabled due to isues at the time). Fixed material instances returning their local data when not overridden. #jira UE-48254 Change 3608455 by Mark.Satterthwaite Enabling WorldPositionOffset requires disabling fast-math on Metal because the manually specified FMA's are not respected if one or more arguments is a literal which then leads to very different compiler optimisation between the depth-only shader and the base-pass shader. This change will only affect the way Metal compiles shaders. #jira UE-47372 Change 3608462 by Rolando.Caloca DR - Cloth vertex buffers no longer generate dummy vertices Copy from 3608349 and 3608407 Change 3608491 by Rolando.Caloca DR - hlsl - Fix crash when type was not found Change 3608513 by Rolando.Caloca DR - Default to real uniform buffers for Vulkan SM4 & SM5 Change 3608794 by Mark.Satterthwaite Implement SV_DepthLessEqual (maybe right?) for Metal - seems to work in the ParallaxOcclusionMapping test map. #jira UE-47614 Change 3608929 by Mark.Satterthwaite Fix ambiguous expression compile error. Change 3608991 by Mark.Satterthwaite Fix a dumb bug when parsing the Metal compiler version that breaks Metal shader PCH generation on HFS+ volumes. Change 3609090 by Uriel.Doyon StaticMeshComponent and LandscapeComponent now register AO material mask and sky occlusion texture in the texture streamer. Changing the current lighting scenario now triggers an update of the texture streamer, and a refresh of lighting data for instanced static meshes. Added an option to the "liststreamingtextures" named UNKOWNREF allowing to inspect texture without references in the texture streamer. BUILDMATERIALTEXTURESTREAMINGDATA now rebuild every shader in memory and mark for save those with different data. MipBias now behaves the same way in shipping than in other builds. Fixed texture resolution logic for editor tooltips and in game stats. Change 3609659 by Richard.Wallis Remove Eye Adaption Pixel Shader Workaround for macOS 10.11 (El Cap) Nividia. #jira UE-48642 Change 3610552 by Mark.Satterthwaite Optimise the constant-propagation pass in hlslcc by using a hash-table to reduce the cost of looking up the existing constant assignment instructions. The get_assignment_entry drops from 25% of runtime to 2.2% of runtime on a 4.2Ghz Quad i7 2017 iMac. Change 3610662 by Rolando.Caloca DR - hlsl - Fix for rwstructured buffer Fix for floats printed as ints Change 3610830 by Michael.Lentine ByteAddressBuffer does not have a subtype. Change 3610869 by Rolando.Caloca DR - hlsl - Fix disambiguation between 1.r and 1.0.r Change 3610982 by Mark.Satterthwaite Use the correct code to dump Metal shader text for debugging at runtime. Change 3610996 by Rolando.Caloca DR - hlsl - Actual fix for 0.r Change 3611312 by Rolando.Caloca DR - Integrate: Improve performance of bokeh depth of field. * Fewer instances with more work (higher quad count) per instance. * Improves performance on RX 480 in the Infiltrator demo by 0.37 ms at 1080p and 0.50 ms at 1440p (average frame time over the beginning of the demo, including the hallway confrontation between the guard and the infiltrator, where heavy DOF is used). * Similar optimizations may be possible for other systems that perform similar "instanced draws of quads" (e.g. virtual texture page table updates, lens blur, and velocity scatter). Change 3611345 by Mark.Satterthwaite Missed the hash-table destructor in previous change. Change 3611372 by Rolando.Caloca DR - vk - New barrier/layout api Change 3611445 by Mark.Satterthwaite Fix stupid bugs in MetalBackend's LoadRWBuffer helper function where the wrong type was being used - won't fix problems in the LinearTexture case though. Change 3611686 by Mark.Satterthwaite Remove the sampler from the Metal Linear Texture SRV path as for reasons so far unknown it doesn?╟╓t work with the light grid culling. #jira UE-48881 Change 3611743 by Mark.Satterthwaite Implement early depth test for Metal - it is implemented such that manual specification of the SV_Depth* outputs will elide the early_fragment_test qualifier as Metal does not permit both at present. Change 3611746 by Mark.Satterthwaite Use early fragment tests implicitly unless we perform a direct resource write or use discard - explicit depth writes always disable early fragment tests as Metal doesn?╟╓t allow both. This should better match D3D driver behaviour. Change 3611756 by Mark.Satterthwaite Missed a header file in last commit. Change 3611836 by Mark.Satterthwaite Fixed the use of Metal?╟╓s capture manager so that it doesn?╟╓t capture more frames than intended. Change 3611843 by Mark.Satterthwaite Tidy up the handling of when to increment the frame count for the Metal capture manager. Change 3612279 by Michael.Lentine Move FP16 Math to Public so that it can be included as part of platform which is where the other float/half defines happen. Change 3612595 by Rolando.Caloca DR - hlslcc - Rebuilt with CL 3611345 Change 3612665 by Rolando.Caloca DR - Make cubemap mip barrier consistent with HZB mip barriers Change 3612758 by Daniel.Wright FColor usage comment Change 3612980 by Rolando.Caloca DR - hlsl - Do not overflow ints Change 3613068 by Rolando.Caloca DR - vk - Initial fix for transition validation warnings Change 3613115 by Daniel.Wright Volumetric lightmap voxels are now always cubes Bricks outside of any Lightmass Importance Volume will never be refined Change 3613124 by zachary.wilson Enabling Eye-Adaptation in TM-ShaderModels. Change 3613205 by Mark.Satterthwaite Fully disable linear textures in Metal - they simply aren't performant. Instead we'll have to use helper functions to dynamically type-cast appropriately within the shader. This is currently only configured for a handful of UAV types and will need to be extended. Change 3613208 by Mark.Satterthwaite Add code to MetalBackend to promote half types to float for math operations to avoid compiler errors. Change 3613354 by zachary.wilson Fixing up the Bloom_FFT map. Renaming to fit qa conventions, updating content and improving workflow. Change 3613409 by Rolando.Caloca DR - vk - Layout as part of descriptor writes Some access flag warning fixes Change 3613518 by Daniel.Wright Added 'Render Unbuilt Preview Shadows in game' rendering project setting and r.Shadow.UnbuiltPreviewInGame cvar Change 3613610 by Daniel.Wright Volumetric lightmap visualization sphere size is now a fraction of the corresponding brick world size Change 3613651 by Daniel.Wright [Copy] Fixed landscape in the Global Distance field on PS4. Multiple updates to a vertex buffer using BUF_Dynamic cause a race condition on PS4 with no assert. Also added shrinking for GDistanceFieldUploadData which saved 15Mb. Change 3613696 by Mark.Satterthwaite Add the Metal SRV format for Index buffers so that they can be properly type-cast inside the shader. Fixes recompute tangents with latest changes. Change 3613697 by Rolando.Caloca DR - vk - Fix missing layout Change 3613922 by Rolando.Caloca DR - vk - Some fixes for layout/transitions - Disable GSupportsDepthFetchDuringDepthTest on desktop as the deferred renderer is not copying the aux depth in the right spot and will be removed Change 3614009 by Mark.Satterthwaite TPS Approved: Integrating the MIT-licensed mtlpp C++ Metal wrapper from Nikolay Aleksiev which will slowly replace previous Metal API wrappers in MetalRHI. Change 3614015 by Mark.Satterthwaite Initial extensions to mtlpp: - Fixed over retention of alloc-init'd objects. - Added 10_13 & 11_0 availablity macros. - Started, but have not yet finished adding new Metal API function wrappers. Change 3614909 by Rolando.Caloca DR - Fix static analysis Change 3614916 by Michael.Lentine Add function to convert FP32 to FP16 Change 3614957 by Mark.Satterthwaite mtlpp declarations for macOS 10.13 & iOS 11 Metal features - no matching definitions yet. Change 3614995 by Mark.Satterthwaite Revert all changes to project config's from Rhino that should not have come back to Dev-Rendering, keeping only the solitary change to Metal shader standard necessary for ShowdownDemo. Change 3615035 by Rolando.Caloca DR - Generate mips using shader for HZB Change 3615561 by Rolando.Caloca DR - Fix deprecation warning Change 3615787 by Mark.Satterthwaite Only emit min. OS version specification into the Metal shader bytecode for macOS as we share shaders between iOS & tvOS and this option inhibts that. #jira UE-48919 Change 3616317 by Mark.Satterthwaite Make TonemapperConfBitmaskPC the proper size so we dn't attempt to access uninitialized memory. Change 3616357 by Mark.Satterthwaite And fix some compile errors... Change 3616473 by Rolando.Caloca DR - Render pass api minor changes Change 3616518 by Mark.Satterthwaite Fix a merge snafu where dead code was retained where it shouldn't be. #jira UE-48472 Change 3616706 by Rolando.Caloca DR - Vulkan fixes (integration from Vulkan working branch) - Fix for editor outline - Fix for profilegpu Change 3616770 by Rolando.Caloca DR - vk - Mark GIsGPUCrashed on device lost Change 3616993 by Daniel.Wright IndirectLightingCacheQuality respects VolumetricLightingMethod Change 3616996 by Daniel.Wright Volumetric Lightmap show flag is respected by Volumetric Fog Change 3616999 by Daniel.Wright Fixed ObjectRadius in Volume domain materials Change 3617777 by Rolando.Caloca DR - Fix static analysis warning Change 3617863 by Guillaume.Abadie PR #3875: Removed Duplicated "RHI" Module Dependency (Contributed by DavidNSilva) #jira UE-48159 Change 3618133 by Rolando.Caloca DR - vk - Set general layout for compute shader resources - Assume transitions to writable imply end render pass Change 3618292 by Michael.Lentine Add support for Expressions, Jump Statments, and Structs. Change 3618326 by Rolando.Caloca DR - vk - Fix transition flags Change 3618408 by Daniel.Wright Lightmass skylight solver improvements * Lightmass uses a filtered cubemap to represent the skylight instead of a 3rd order Spherical Harmonic. Directionality in shadowed areas is improved. Mip level is chosen based on the ray differential for anti-aliasing. * Multiple skylight and emissive bounces are now supported with a radiosity solver, controlled by NumSkyLightingBounces in Lightmass WorldSettings. More bounces results in longer build times, and the radiosity time is not distributable. * The mapping surface cache is now rasterized with supersampling, reduces incorrect darkness in corners * Combined direct lighting, photon irradiance, skylight radiosity and diffuse in the mapping surface cache so final gather rays only have to do one memory fetch, speeds up lighting builds by 7%. * Added support for Embree packet tracing although no solver algorithms use it yet Change 3618413 by Daniel.Wright Swarm hands out the most expensive tasks in roughly a round robin ordering among distribution agents. Lightmass processing of a single task is multithreaded, so ideally the most expensive tasks are evenly distributed among active agents. This has the biggest impact in small scenes with 10's of high resolution lightmaps, and with a distribution farm. Build time in one scene went from to 113s -> 47s. Change 3618439 by Mark.Satterthwaite Fix the assert in hlslcc when we have saturate(int) and the shader language spec. supports a native saturate intrinsic. Change 3618468 by Rolando.Caloca DR - vk - Fix copy to non render target surface Change 3618696 by Daniel.Wright Worked around Lightmass crash callstacks not getting reported back to the editor Change 3618779 by Mark.Satterthwaite mtlpp definitions for a few of the new calls & fixing the max. number of samplers it assumes. Change 3618789 by Daniel.Wright Added missing file Change 3618816 by Daniel.Wright Another missing file Change 3618855 by Rolando.Caloca DR - vk - Show user debug markers when using dump layers - Remove old defines Change 3618887 by Rolando.Caloca DR - Fix for missing transition to readable for blur widget. Was causing corruption on Vulkan. Change 3618999 by Mark.Satterthwaite Definitions for Metal's new CaptureManager & CaptureScope classes. Change 3619790 by Jian.Ru Add some debug info #jira UE-48710 Change 3619834 by Rolando.Caloca DR - vk - static analysis fix Change 3619952 by Rolando.Caloca DR - vk - Static analysis not smart enough... Change 3620191 by Jian.Ru Revert 3584245 to prevent focus stealing #jira UE-49044 Change 3620402 by Mark.Satterthwaite Remaining Metal definitions for mtlpp. Change 3620803 by Brian.Karis Removed faceting bug I introduced to Dither Opacity Mask. Removes the attempt to make opacity stack properly. Change 3620904 by Michael.Lentine Change the order of static and const Change 3620975 by Rolando.Caloca DR - Updated Vulkan headers to SDK 1.0.57.0 Change 3621026 by Rolando.Caloca DR - Remove unused type - Force recompile with new Vulkan headers Change 3621070 by Rolando.Caloca DR - glslang - Fix pdb option Change 3621157 by Arciel.Rekman Added files to cross-build glslang on Windows. (Edigrating //UE4/Main/...@3621127 to //UE4/Dev-Rendering/...) Change 3621194 by Rolando.Caloca DR - glslang - Update to 1.0.57.0 - Fix some tab/whitespace mismatch Change 3621225 by Rolando.Caloca DR - Revert glslang (Back out changelist 3621194) Change 3621254 by Mark.Satterthwaite Duplicate 3610656 and revert the incorrect merge from the Rhino task stream. Fixes EyeAdaptation on all clang platforms properly thanks to RCL. Change 3621261 by Mark.Satterthwaite Trivial FMetalStateCache optimisations - won't help much but equally they shouldn't hurt. Change 3621262 by Mark.Satterthwaite Correct the handling of MSAA target in Desktop Forward for iOS - now the problem is that iOS always creates an internal resolve target so which texture to bind depends on the shader parameter type. Not sure (yet) how best to solve that. Change 3621263 by Mark.Satterthwaite Don't mandate Mobile Metal for projects that have Metal MRT enabled. Change 3621301 by Rolando.Caloca DR - Unity build fix Change 3621349 by Mark.Satterthwaite Fix a bug in MetalBackend that was omitting the depth-output variable from the hlslcc signature if the semantic was SV_DepthLessEqual rather than SV_Depth. Change 3621546 by Uriel.Doyon Refactor of the texture 2D mip update logic to offload more work on the async thread. #jira UE-45332 #jira UE-45789 Change 3622210 by Rolando.Caloca DR - Do not store DDC data if static mesh failed to build #jira UE-48358 Change 3622349 by Arciel.Rekman Better build script for Linux glslang and a bugfix. (Edigrating CL 3622235 from //UE4/Main/... to //UE4/Dev-Rendering/...) Change 3622401 by Rolando.Caloca DR - vk - Integration - Support for r.Vulkan.ProfileCmdBuffers Change 3622506 by Rolando.Caloca DR - vk - Back out changelist 3622401 Change 3622521 by Mark.Satterthwaite Support disabling V-Sync in MetalRHI on macOS 10.13+. Change 3622910 by Rolando.Caloca DR - static analysis fix Change 3622964 by Mark.Satterthwaite Fix generation of .metallib on local Macs and exclude .metallib files from the pak - they must always be loaded from disk. #jira UE-48193 Change 3622986 by Mark.Satterthwaite A couple more trivial optimisations to MetalRHI for iOS: - Metal page size is 4k but only buffers under 512 bytes should go through set*Bytes on iOS to balance CPU cost. - On iOS the minimum buffer size should therefore be 1k and on Mac 4k as nothing else makes much sense. - No need to rebind uniform buffers if to the same slot - it just wastes cycles. Change 3623266 by Rolando.Caloca DR - Fix GL4 rendering #jira UE-49187 Change 3623377 by Daniel.Wright Volume materials applied to static meshes operate on the object's bounding sphere Change 3623427 by Mark.Satterthwaite Fix MetalViewport compile errors on Xode 8.3. #jira UE-49231 Change 3623443 by Daniel.Wright Fixed out of bounds crash in lightmass Change 3623751 by Daniel.Wright Volume materials on static meshes now voxelize the mesh's Object space bounding box Change 3625142 by Guillaume.Abadie PR #2992: Fixing aspect ratio issue of SceneCapture2D rendering in "Ortho" camera mode (Contributed by monsieurgustav) Change 3625983 by Jian.Ru Fix a LPV race condtion due to parallel RSM draw-call submission #jira UE-48247 Change 3626015 by Jian.Ru Small fix to 3625983 Change 3626294 by Michael.Trepka Copy of CL 3535792 and 3576637 Added support for changing monitor's display mode on Mac in fullscreen mode. This greatly improves performance on Retina screens when playing in resolutions lower than native. Fixed a problem with incorrect viewport size being set in windowed fullscreen in some cases. Also, slightly improved screen fades for fullscreen mode transitions on Mac. #jira UE-48018 Change 3626532 by Marcus.Wassmer Fix divide by 0 crash when GPU timing frequency not available for whatever reason. Change 3626548 by Ryan.Brucks KismetRenderingLibrary: Added EditorOnly function for creating static textures from Render Targets. Has options for Mip and Compression Settings Change 3626874 by Mark.Satterthwaite Fix Metal 2.0 compilation. Change 3626997 by Rolando.Caloca DR - vk - cis fix - Initial RGBA16 readback Change 3627016 by Mark.Satterthwaite Workaround more of Metal's unfortunate tendency to re-associate float mul/add/sub operations - this time from Metal's own standard-library. Change 3627040 by Brian.Karis Removed old rasterized deferred reflection env path. Removed reflection compute shader. Replaced with PS. Small perf gain. Change 3627055 by Mark.Satterthwaite No MSAA support on Intel Metal or iOS Desktop Forward for the moment as neitehr work and I don't want to have lots of crashes out in the wild until we have a solution. Change 3627057 by Mark.Satterthwaite Make SCW's directcompile not fall over with Metal when there are compilation errors. Change 3627083 by Mark.Satterthwaite Invalidate Metal shaders so QA testing picks up the most recent changes. Change 3627788 by Chris.Bunner [Duplicate, CL 3627751] - VisibleExpressions static switch value evaluation needs to handle reroute nodes rather than only verify first expression. Change 3627834 by Rolando.Caloca DR - cis fix Change 3627847 by Rolando.Caloca DR - 4th try to fix static analysis Change 3627877 by Guillaume.Abadie Works arround a HLSLCC bug in a SimpleComposure project's material where x != x does not work for an unknown reason yet. #jira UE-48063 Change 3628035 by Marcus.Wassmer Duplicate 3620990 Smarter scenecapture allocation behavior. Change 3628204 by Daniel.Wright Fixed denormalization scale on one of the 2nd SH band of volumetric lightmaps Change 3628217 by Mark.Satterthwaite Fix InfiltratorForward project defaults so that iOS will package. Change 3628515 by Arne.Schober DR - [UE-49213] - Fix case where HZB was not generated for SSR and SSAO when Occlusion culling was disabled. #RB Marcus.Wassmer Change 3628550 by Chris.Bunner Merge fixes. Change 3628597 by Chris.Bunner Merge fixes. Change 3628656 by Michael.Trepka One more workaround for a bug in StandardPlatformString.cpp. It doesn't handle %lf format correctly, parsing it as long double instead of ignoring the 'l' format sub-specifier. Change 3628685 by Daniel.Wright CPU interpolation of Volumetric Lightmaps for the mobile renderer. They use a scene cache based on interpolation position, since the precomputed lighting buffer for movable objects is recreated every frame. Change 3629094 by Ryan.Brucks Fixes to RenderTargetCreateStaticTexture2DEditorOnly with additional error checks #RB none Change 3629223 by Rolando.Caloca DR - Rollback //UE4/Dev-Rendering/Engine/Source/Runtime/VulkanRHI to changelist 3627847 Change 3629491 by Rolando.Caloca DR - Revert back to emulated uniform buffers on SM4/SM5 Change 3629663 by Daniel.Wright Fixed NaN when capsule shadow direction is derived from volumetric lightmap with completely black lighting Change 3629664 by Daniel.Wright Don't render dynamic indirect occlusion from mesh distance fields when operating on a movable skylight, since DFAO fills that role Change 3629708 by Rolando.Caloca DR - vk - Redo some changes from DevMobile 3601439 3604186 3606672 3617383 3617474 3617483 Change 3629770 by Mark.Satterthwaite Fix a mobile Metal shader compilation error when using the FMA workaround for "cross" which should only be applied if the min. Metal version is 1.2 (as FMA is not known to work prior to this). Change 3629793 by Daniel.Wright Fixed VolumetricLightmapDetailCellSize not being respected in small levels, causing too much volumetric lightmap density and memory Change 3629859 by Mark.Satterthwaite macOS 10.12 also had problems with MSAA in forward rendering - so only permit it to work on macOS 10.13 and above. Change 3630790 by Mark.Satterthwaite Move RHISupportsMSAA so that the Metal related complications for when it is viable can be hidden within. Change 3630990 by Rolando.Caloca DR - vk - Redid CL 3617437 (optimize number of Buffer Views, eg 165 to 58) Change 3631071 by Mark.Satterthwaite Fix a small gotcha in a change from Dev-Mobile: for MetalRHI we need to explicitly configure the ShaderCacheContext for the immediate/device context after initialising the shader-cache. #jira UE-49431 Change 3631076 by Rolando.Caloca DR - vk - Redo 3617574, reduce number of render pass objects created Change 3631250 by Mark.Satterthwaite Make another Metal warning a Verbose log instead as it isn't interesting unless you are me. Change 3631911 by Chris.Bunner Back out changelist 3628035. #jira UE-49364, UE-49365 Change 3632041 by Mark.Satterthwaite Fix cloth rendering on Metal - some of the data in FClothVertex is uint but we load it from a float buffer. This could be due to a bug in Metal's as_type<uint4>() or it could be that Xcode 9's compiler is now finally enforcing Metal's official flush-to-zero-on-load semantics for denorms - it isn't immediately obvious. #jira UE-49439 Change 3632261 by Brian.Karis SM4 fallback for reflection captures. Change 3632281 by Mark.Satterthwaite Fix an intermittent assert on startup when the AVFoundation movie player gets the QAGame TM-ShaderModels video ready to play prior to the rendering thread being back online when resizing the window. This is done by deferring the processing of AVFoundation events to the game-thread where it won't cause a threading violation. Change 3632382 by Rolando.Caloca DR - vk - Fix clang warning Change 3633338 by Chris.Bunner Static analysis/Linux compile fix. #jira UE-49502 Change 3633616 by Jian.Ru Force alpha to 0xff for functional UI screenshot tests #jira UE-48266 Change 3633818 by Daniel.Wright Better indirection texture clamping and asserts Change 3634319 by Mark.Satterthwaite Stop FVolumetricLightmapDataLayer ::Discard which is invoked by the Editor RHI during texture-upload from chucking the backing data when in the Editor - because if we do that then cooking will serialise an empty array. This was only apparent on Mac because Metal always invokes Discard on BulkDataInterfaces and D3D11 never does. #jira UE-49381 Change 3634613 by Rolando.Caloca DR - Call discard on bulk data for textures #jira UE-49533 Change 3634654 by Mark.Satterthwaite Fixes for broken iOS builds: - Fix RHIGetShaderLanguageVersion returning the wrong version for iOS Metal if the Mac version had already been queried - this has been wrong for a long while. - Remove the precise:: qualifier for Metal's fma intrinsic - it isn't necessary and breaks on older OSes. #jira UE-49381 Change 3634820 by Mark.Satterthwaite Change the hash-function for the preprocessed HLSL source in FMetalShaderOutputCooker to reduce risk of hash-collisions. Fixes one cause of UE-49381 and reveals an underlying driver bug on iOS 9 with runtime-compiled text shaders *only*. #jira UE-49381 Change 3634821 by Mark.Satterthwaite Force Metal shaders only to recompile by incrementing the format version. [CL 3635058 by Chris Bunner in Main branch]
2017-09-09 16:29:11 -04:00
const int32 DroppedMips = Texture2D->GetNumMips() - Texture2D->GetNumResidentMips();
Entry->CurrentDim.X = Texture2D->GetSizeX() >> DroppedMips;
Entry->CurrentDim.Y = Texture2D->GetSizeY() >> DroppedMips;
// Calculate the max dimensions
Entry->MaxDim.X = Texture2D->GetSizeX() >> Entry->LODBias;
Entry->MaxDim.Y = Texture2D->GetSizeY() >> Entry->LODBias;
}
else
{
// Check if the texture is a TextureCube
const UTextureCube* TextureCube = Cast<const UTextureCube>(InTexture);
if(TextureCube)
{
Entry->Format = TextureCube->GetPixelFormat();
Entry->Type = TEXT("Cube");
#if 0 // @todo TextureInfoInUE UTextureCube::GetFace doesn't exist.
// Calculate in game current dimensions
// Use one face of the texture cube to calculate in game size
UTexture2D* Face = TextureCube->GetFace(0);
const int32 DroppedMips = Face->GetNumMips() - Face->ResidentMips;
Entry->CurrentDim.X = Face->GetSizeX() >> DroppedMips;
Entry->CurrentDim.Y = Face->GetSizeY() >> DroppedMips;
// Calculate the max dimensions
Entry->MaxDim.X = Face->GetSizeX() >> Entry->LODBias;
Entry->MaxDim.Y = Face->GetSizeY() >> Entry->LODBias;
#else
// Calculate in game current dimensions
Entry->CurrentDim.X = TextureCube->GetSizeX() >> Entry->LODBias;
Entry->CurrentDim.Y = TextureCube->GetSizeY() >> Entry->LODBias;
// Calculate the max dimensions
Entry->MaxDim.X = TextureCube->GetSizeX() >> Entry->LODBias;
Entry->MaxDim.Y = TextureCube->GetSizeY() >> Entry->LODBias;
#endif
}
}
}
else
{
Entry = *EntryPtr;
}
if( InActorUsingTexture != NULL && !Entry->Actors.Contains(InActorUsingTexture) )
{
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3805092) #lockdown Nick.Penwarden #rb none ============================ MAJOR FEATURES & CHANGES ============================ Change 3623004 by Ben.Marsh Fix RemoteExecutor not taking the remote machine specs into account. Change 3623172 by Ben.Marsh UGS: Fix "More Info..." button not using P4 server override. Change 3628820 by Ben.Marsh PR #3979: Get working directory from task element, not tool node (Contributed by nullbus) Change 3630424 by Graeme.Thornton Make the AES key parameter const in FAES::EncryptData() Change 3632786 by Steve.Robb FString constructor fixed to not take an ignored void* parameter, which can be misleading. Change 3639534 by Ben.Marsh Remove old P4.NET library. Doesn't seem to be used by anything. Change 3640536 by Steve.Robb GitHub #4007 : Delete unnecessary specialization of MakeArrayView #jira UE-49617 Change 3641155 by Gil.Gribb UE4 - Speculative fix for problem with summary reading in FAsyncArchive2. Change 3643932 by Ben.Marsh Add an example build script for updating the version number, then compiling and staging the editor and tools to an output directory. Optionally submits at the end (requires -Submit argument). Change 3644825 by Ben.Marsh Use VSWHERE to find the location of MsBuild.exe, if available. https://github.com/EpicGames/UnrealEngine/pull/3879#issuecomment-329688645 Change 3647395 by Ben.Marsh Allow compiling of monolithic binaries from BuildEditorAndTools.xml, using the -set:GameTarget=FooGame -set:TargetPlatforms=Win32;Win64 options. Change 3650300 by Ben.Marsh UAT: Remove code that deletes cooked data on a failed cook. The engine should write packages out transactionally now (by writing to a temporary file and moving into place), and deleting the cooked data just prevents post-mortem analysis. Change 3650856 by Robert.Manuszewski Adding checks to prevent FlushAsyncLoading and LoadObject/LoadPackage from being called from any threads other than the game thread Change 3651022 by Gil.Gribb UE4 - Possible fix for mysterious ensure indicating problematic recursion in the pak precacher. Change 3658331 by Steve.Robb Fix for the parsing of large integer values. Change 3661958 by Gil.Gribb UE4 - Fixed rare hang in task graph. Change 3664021 by Robert.Manuszewski Fix for a potential GC crash caused by stale pointer in AnimInstanceProxy See https://udn.unrealengine.com/questions/392432/gc-issue-uaniminstancemontageinstances-empty-but-u.html Change 3664254 by Steve.Robb Use ANSI allocator when thread sanitizer is enabled. This allows the generation of more accurate and meaningful reports. Change 3664436 by Steve.Robb Use TUniquePtr instead of a thread-unsafe TSharedPtr to move data between threads. Change 3666461 by Graeme.Thornton Improvements to signing/encryption key embedding and runtime access - Changed method of embedding key into the executable to make it more secure - Added FAESKey class to wrap a 32 byte key Change 3666462 by Graeme.Thornton Cut ShooterGame AES key down to 32 characters Change 3677560 by Ben.Marsh PR #4074: UBT: Add include and library-related fields to module JSON output (Contributed by adamrehn) Change 3683534 by Steve.Robb Refactoring of enum/struct lookup during hot reload. Change 3683754 by Steve.Robb Alignment fixes to allow int64 on 32-bit platforms Support for integral types in IsAligned. Static asserts so that alignment functions will no longer be called with non-intergal, non-pointer types. Some fixes to existing code. Change 3686670 by Steve.Robb Fix for thread-unsafe modification of static array in FString::ParseIntoArrayWS. Change 3687540 by Ben.Marsh Fix all UBT/UAT output going to stderr rather than stdout. Change 3688931 by Gil.Gribb UE4 - Critical fix for a rare race condition in the pak file async IO layer. Change 3690000 by Graeme.Thornton Manual copy of 4.18 CL 3687869 Make UBT include the destination INI file for a given hierarchy if it exists Renamed VSCode enum value to VisualStudioCode, so it matches the source accessor plugin name Change 3690030 by Graeme.Thornton VSCode fixes - Source Code Accessor plugin changes. Add new interface method to open a solution at a given path - GameProjectUtils now uses the source navigation API to open solutions rather than hardcoding which solution file types to look for - Various fixes for vscode project file generation #jira UE-50554 Change 3690885 by Steve.Robb Atomic reads in FReferenceControllerOps<ESPMode::ThreadSafe>. Change 3691052 by Steve.Robb Free stats thread on shutdown. Change 3695138 by Steve.Robb AsConst helper function added. Change 3696627 by James.Hopkin Changed player controller iterator typedefs to use TWeakObjectPtr rather than the deprecated TAutoWeakObjectPtr (review-3606695) Change 3697099 by Steve.Robb GitHub #4105 : Removed redundant class access modifier Change 3697154 by Steve.Robb Removal of deprecated functions in delegates. Mutable lambdas to can now be bound to delegates. Change 3697180 by Steve.Robb GitHub #4115 : Incorrect CPPMacroType used for USoftClassProperty Change 3697239 by Steve.Robb Allow TArray::Insert to take an array with any allocator type. Change 3697269 by Steve.Robb RelocateConstructItems instead of MoveConstructItems. Change 3697558 by Steve.Robb New _GetRef functions for TArray, which return a reference to the newly-added element. Unit tests for these functions. Change 3699776 by Steve.Robb TSAN warning suppression around IAsyncReadRequest::bCompleteAndCallbackCalled. Change 3702397 by Steve.Robb TIsTrivial type trait. Change 3702569 by Steve.Robb Allow a TGuardValue to be assigned to a different type from the one being guarded. Change 3706644 by Robert.Manuszewski Different stack ingore count for development builds for FArchiveStackTrace Change 3709272 by Steve.Robb Removal of redundant UpdateVertices, which causes a race condition on the renderer thread. Change 3709452 by Robert.Manuszewski Fixed a bug where with async time limit set to a low value the async loading could hang because the linker would keep reloading the preload dependencies Change 3709454 by Robert.Manuszewski Added command line option -NOEDL to disable EDL Change 3709487 by Steve.Robb Remove use of PLATFORM_HAS_64BIT_ATOMICS, which is always 1. Change 3709645 by Ben.Marsh Fix race condition between multiple instances of UBT trying to write out the XML config cache. Change 3711193 by Ben.Marsh Add an editor setting for the shared DDC location to use. #jira UE-51487 Change 3713811 by Steve.Robb Update .modules files after a hot reload. Don't check for directory timestamp changes as a way of detecting new files if hot reloading with a makefile, as this is already done during makefile invalidation checks. Pass hotreload flags around in UBT instead of relying on global state. This fixes the hot reload iteration speed regression without also regressing the fix to UE-42205. #jira UE-51472 Change 3715654 by Steve.Robb GitHub #4156 : Fixed not compiling template function Algo::UpperBoundBy. Change 3718782 by Steve.Robb TSharedPtr, TSharedRef and TWeakPtr assignment are now implemented as copy-and-swap to avoid an invalid smart pointer state being visible to any destructors being called. Change 3720830 by Steve.Robb Initial import of TAtomic object wrapper, which guarantees atomic access to an object. Change 3720881 by Steve.Robb FCompression ThreadSanitizer data race fixes. Change 3722640 by Graeme.Thornton Guard network platform file heartbeat function with the socket critical section. Stop heartbeat from causing a crash when firing during async loading. #jira UE-51463 Change 3722655 by Steve.Robb Don't null name table because it's already zeroed at startup. Some tidy-ups. Change 3722754 by Steve.Robb Thread sanitizer fix. Small typo fix. Change 3722849 by Graeme.Thornton Improve "caching file" message in networkplatformfile so it says "Requesting file..." and is only output when we actually request the file from the server Change 3723081 by Steve.Robb TAtomic is now aligned to the underlying integer type. TAtomic will now static assert with a better error message when given an unsupported type. Define added for the maximum platform-supported atomic type, and used instead of a (wrong) hardcoded number. Misc renames. Change 3723270 by Ben.Marsh Include /d2cgsummary argument when running UBT with -Timing. Change 3723683 by Ben.Marsh Do not include documentation in the generated project files by default. Suspect that the 30,000 UDN files that get added to the solution take up memory and degrate performance. Change 3725422 by Robert.Manuszewski When serializing compressed archive with multithreaded compression enabled, wait for the oldest async task instead of spinning. Change 3725735 by Robert.Manuszewski Making all CheckDefaultSubobjects related functions const Change 3726167 by Steve.Robb FMinimalName::IsNone added. Change 3726458 by Steve.Robb TAtomic will no longer instantiate for types which are not exactly a size supported by the platform layer. Change 3726542 by Ben.Marsh UGS: Always include the project filename in the editor build command. The project may not be in one of the .uprojectdirs paths. Change 3726595 by Ben.Marsh Allow building multiple game targets in the example BuildEditorAndTools.xml script. Change 3726724 by Ben.Marsh Fix ambiguities in calculating root directory. (GitHub #4172) Change 3726959 by Ben.Marsh Make sure that AutomationTool uses the same list of preprocessor definitions when compiling *.target.cs files as UnrealBuildTool does. Change 3728437 by Steve.Robb VisitTupleElements now supports invocation of a functor taking arguments from multiple tuples in parallel. Some improved documentation. NOTE: This is a backward-incompatible change to VisitTupleElements. Any existing calls will need their arguments swapping. Change 3732262 by Gil.Gribb UE4 - Fixed rare hangs in the task graph. Change 3732755 by Steve.Robb Stats TSAN fixes. Optimizations to FCycleCounter::Start() to only read the stat name once. Change 3735000 by Robert.Manuszewski Always preload the AssetRegistry module on startup. even if EDL is disabled. Even without EDL, if the async loading thread is enabled the AssetRegistryModule will otherwise be loaded from the ASL thread and that will assert. Change 3735292 by Robert.Manuszewski Made sure component visualizer is removed from VisualizersForSelection when UnregisterComponentVisualizer() is called otherwise it may cause crashes when the engine terminates. Change 3735332 by Steve.Robb Refactoring of UDelegateProperty::Identical() to clarify logic. Fixed UMulticastDelegateProperty::Identical() to compare the bound function names. PPF_DeltaComparison removed, as it doesn't seem useful. Change 3737960 by Graeme.Thornton VSCode - Add launch task for generating project files for the given folder Change 3738398 by Graeme.Thornton Make Visual Studio source code accessor's module hotreload handler pass the 'save all files' message to the current accesor, rather than direct to the visual studio accessor #jira UE-51451 Change 3738405 by Graeme.Thornton VSCode: Format c/cpp settings strings using comment path formatting function Change 3738928 by Steve.Robb Fix for lack of null conditional operators in some older Monos. (replicated from CL# 3729574 in Release-4.18) #jira UE-51842 Change 3739135 by Ben.Marsh Fix being unable to package projects in a folder called "Wolf". This is only a restricted folder for Epic's Perforce history. #jira UE-51855 Change 3739360 by Ben.Marsh UAT: Fix issue with P4PORT setting not being parsed correctly. Change 3745959 by James.Hopkin #core Added ImplicitConv for safe upcasts to a specific required type, e.g. deduced delegate payload types Change 3746125 by Steve.Robb FName ThreadSanitizer fixes. Change 3747274 by Steve.Robb TSAN fix for FMediaTicker::Stopping. Change 3747618 by Steve.Robb ThreadSanitizer data race fix for FShaderCompileThreadRunnableBase::bForceFinish. Change 3747720 by Steve.Robb ThreadSanitizer fix for FMessageRouter::Stopping. Change 3749207 by Graeme.Thornton First pass of CryptoKeys plugin. Allows creation/editing/cycling of AES/RSA keys. Change 3749323 by Graeme.Thornton Fix UAT crash when only -targetplatform is specifiied Change 3749349 by Steve.Robb TSAN_SAFE guards around LockFreeList to silence ThreadSanitizer. Change 3749617 by Steve.Robb Logf static_assert for formatting string enabled. Change 3749897 by Steve.Robb FDebug::LogAssertFailedMessage static assert for formatting string enabled. Change 3754011 by Steve.Robb Static asserts that the allocator supports move. Move-enabled our allocators which don't support move. Change 3754227 by Ben.Marsh Fix build command line in generated projects missing a space before the compiler version override. #jira UE-52226 Change 3754562 by Ben.Marsh PR #4206: Replace deprecated wsprintf with secure swprintf for Bootstrap executable (Contributed by jessicafalk) Change 3755616 by Graeme.Thornton Runtime code for using the new crypto ini files to define signing/encryption keys #jira UE-46580 Change 3755666 by James.Hopkin Used ImplicitConv to remove Casts being used for up-casts #review-3745965 Change 3755671 by Graeme.Thornton Add log message in unrealpak to say which config file system it is using for crypto keys Change 3755672 by Graeme.Thornton Updating ShooterGame with new CryptoKeys based security setup Change 3756778 by Ben.Marsh Add support for running multiple jobs simultaneously on a single builder. When running job or agent setup, the --num-slots=X parameter defines the number of steps that can run simultaneously (EC procedures pass in the resource step limit). A lock file is created under the workspace root (D:\Build) and a reservation file is created for the first slot that can be allocated (slot-1, slot-2, etc...). The slot number is used to define the workspace name that should be used. Change 3758498 by Ben.Marsh Re-throw exceptions when a file cannot be deleted when cleaning a target. Change 3758921 by Steve.Robb ThreadSanitizer fix to FThreadSafeStaticStatBase::HighPerformanceEnable to do a relaxed atomic load on access. DoSetup() now returns the newly-allocated pointer, instead of reloading it from memory. Change 3760599 by Graeme.Thornton Added missing epic header comment to some new source files Change 3760642 by Steve.Robb ThreadSanitizer fix for concurrent access to GMainThreadBlockedOnRenderThread. Change 3760669 by Graeme.Thornton Improvement to OpenSSL based signing key generator. Generate a full RSA key then steal the primes from it, rather than generating the primes manually. Added a test mode to the cryptokeys commandlet to test signing key generation Change 3760711 by Steve.Robb ThreadSanitizer fixes to GIsRenderingThreadSuspended. Change 3760739 by Steve.Robb ThreadSanitizer fix for FQueuedThread::TimeToDie. Change 3760763 by Steve.Robb ThreadSanitizer fix for GRunRenderingThreadHeartbeat. Removal of unnecessary/dangerous initializer for GMainThreadBlockedOnRenderThread. Change 3760793 by Steve.Robb Some simple refactoring to remove some volatile reads of BufferStartPos and BufferEndPos. Change 3760817 by Steve.Robb ThreadSanitizer fixes for FAsyncWriter::BufferStartPos and BufferEndPos. Change 3761331 by Josh.Engebretson UnrealBuildTool enforcement of Development and Debug configurations in existing .csproj #jira UE-52416 Change 3761521 by Steve.Robb ThreadSanitizer fixes for FEvent::EventStartCycles and EventUniqueId. Change 3763117 by Graeme.Thornton PR #3722: Optimising FPaths::IsRelative() (Contributed by jovisgCL) Change 3763358 by Graeme.Thornton Ensure that all branches within FGenericPlatformMisc::RootDir() produce an absolute path with no duplicate slashes Remove relative->abs conversion of root dir from FPaths::MakeStandardFilename(), now that we know RootDir() always returns an absolute path Derived from the content of this PR: PR #3742: Treat RootDirectory the same way as Standardized (Contributed by TroutZhang) Change 3764058 by Graeme.Thornton Generate a .code-workspace file for the current workspace. Allows foreign projects to "mount" the UE4 folder so that the engine tasks are avaible, and all engine source is visible to VSCode for searching purposes #jira UE-52359 Change 3764705 by Steve.Robb Better handling of whitespace in ImportText_Internal() for set and map properties. Containers are now emptied upon import failure, to avoid leaving bad container states (unhashed, partial data). Fix to USetProperty's temp buffer size to avoid buffer overruns. Duplicate map keys are now skipped during import, same as USetProperty's behavior. Change 3764731 by Steve.Robb Don't re-run UHT if only source files have changed in the same folder as headers. This was already done for hot reload, but there's no reason why it should be limited to that. Change 3765923 by Graeme.Thornton VSCode - "taskName" -> "label" for C# build tasks Change 3766018 by Steve.Robb constexpr constructor for TAtomic. Change 3766037 by Steve.Robb Misc tidyings in HotReload.cpp. Change 3766046 by Steve.Robb ThreadSanitizer fixes to ENamedThreads::RenderThread and ENamedThreads::ENamedThreads_Local. Change 3766288 by Steve.Robb Improved efficiency of adding/removing elements to UGCObjectReferencer::ReferencedObjects. Change 3766374 by Josh.Engebretson Fix issue with ini quoted value comparison #jira UE-52066 Change 3766532 by Josh.Engebretson PR #3680: Added NetSerialize to FDateTime fixing UE-22533 (Contributed by druhasu) #jira UE-46156 Change 3766740 by Steve.Robb TMultiMap::Append added. Change 3767523 by Steve.Robb ThreadSanitizer fix for UE4Delegates_Private::GNextID. Change 3767601 by Steve.Robb ThreadSanitizer fix for FStats::GameThreadStatsFrame. Change 3770567 by Ben.Marsh Add a FAnnotatedArchiveFormatter interface which allows querying structural type information that may not be in binary archives. Change 3770826 by Ben.Marsh Move StructuredArchive implementation into Core, so primitive types can implement serialization overloads for it. Change 3770875 by Steve.Robb Redundant UScriptStruct::PostLoad removed, which was causing a race condition in async loading. This was re-establishing the CppStructOps, but that is unnecessary because native classes cannot change as a result of a load - only BP structs can, and they don't have CppStructOps. Change 3772167 by Ben.Marsh Add a context-free binary formatter that can serialize tagged data. This functions as a lower-overhead binary intermediate format for JSON data. Change 3772248 by Steve.Robb ThreadSanitizer fixes to FMalloc call counters. Change 3772383 by Ben.Marsh Separate archive metadata from FArchive into FArchiveContext, so it can be safely exposed to consumers of FStructuredArchive. Change 3772906 by Graeme.Thornton TextAssetCommandlet - Utility commandlet for testing/converting to text asset format Change 3772932 by Ben.Marsh Fix "String:" prefix not being stripped from escaped string values. Change 3772942 by Graeme.Thornton Add experimental setting to enable in-editor text asset format functionality Add "export to text" option into the content browser asset actions context menu Change 3772955 by Ben.Marsh Add a new "stream" compound type to FStructuredArchive, which allows serializing a sequence of elements similarly to an array, but without serializing an explicit size. Allows passing through data to an underlying binary archive without breaking compatibility. Change 3772963 by Ben.Marsh Allow querying record keys and stream lengths from annotated archive formatters, since these archives have markup for field boundaries. Change 3773010 by Graeme.Thornton Added CORE_API to FArchiveFromStructuredArchive Gave text asset format experimental option a slightly less random tooltip comment Change 3773057 by Ben.Marsh Add a flag to FArchive to determine whether the archive is text (IsTextFormat()). Add support for seeking within FArchiveFromStructuredArchive. For text formats, data is serialized to an in-memory buffer, with names and objects serialized as indices into an array. For non-text formats, data is serialized directly to the underlying archive. Also rename FStructuredArchive::TryEnterSlot() to TryEnterField(). Change 3773118 by Steve.Robb TSignedIntType and TUnsignedIntType type traits for getting an integer type of a given size. Change 3773122 by Steve.Robb TAtomic fixes for pointer arithmetic. TSignedIntType used instead of reimplementing its own trait. Change 3773123 by Steve.Robb Unit tests for TAtomic. Change 3773138 by Steve.Robb Run numeric tests on integer types instead of basic tests. Fix for compiler warnings when subtracting from unsigned atomics. Change 3773166 by Steve.Robb Refactoring of arithmetic operations into its own class, then basing the pointer and integral versions on that. Change 3774216 by Gil.Gribb UE4 - Fix rare crash in the pak precacher immediately after unmounting a pak file. Change 3774426 by Ben.Marsh Copy all C# tools to a staging directory before compiling them. This prevents access violations when compiling tools like iPhonePackager that reference DotNETCommon, and ensures we strip NotForLicensees folders out of them all. See: https://answers.unrealengine.com/questions/726010/418-will-not-build-from-source.html Change 3774658 by Ben.Marsh Improve error reporting while generating intellisense for project files. Include the name of the target being compiled, and allow project file generation to continue without it. Change 3775141 by Ben.Marsh Always output HTML5 diagnostics at "information" verbosity, to avoid every line being prefixed with "WARNING:" and screwing up the EC postprocessor. Change 3775459 by Ben.Marsh Removing .NET Framework Perforce DLL as runtime dependency of engine third party library. The actual library is linked statically. Change 3775522 by Ben.Marsh UGS: Treat .uproject and .uplugin files as code changes. Change 3775597 by Ben.Marsh Fix post-build steps for plugins not being executed. #jira UE-52754 Change 3777895 by Graeme.Thornton StructuredArchiveFromArchive - An adapter class for wrapping an existing FArchive with a structured archive Change 3777931 by Graeme.Thornton Refactored FArchiveUObjects serialization code into some static helpers Added FArchiveUObjectFromStructuredArchive which allows the adaption of a structured archive into an FArchive that supports the extra UObect serialization functions for weak/soft pointers Change 3777942 by Graeme.Thornton Added missing CORE_API to FStructuredArchive::FStream Added FStructuredArchive::FSlot insertion operator for char Added specialization of TArray<uint8> serializer for structured archives which serializes the contents as one value Change 3778084 by Graeme.Thornton Adding FPackageName::GetTextAssetPackageExtension() to access the file extension we use for text asset files Change 3778096 by Graeme.Thornton Add a constructor to FArchiveUObjectFromStructuredArchive that takes a slot and passes it to the base class Change 3778389 by Josh.Engebretson Fix an optimization issue with CPU benchmarking Add better support for debugging/testing local rocket builds UDN Link: https://udn.unrealengine.com/questions/400909/command-scalability-auto-gives-inaccurate-cpu-benc.html #jira UE-52192 Change 3778701 by Josh.Engebretson Ensure plugin content folders are mounted consistently. Fixes TryConvertFilenameToLongPackageName failing to work on plugin assets UDN Link: https://udn.unrealengine.com/questions/276386/tryconvertfilenametolongpackagename-fails-for-plug.html #jira UE-40317 Change 3778832 by Chad.Garyet Adding enterprise path support for PCB's for UGS Change 3780258 by Graeme.Thornton TextAssetCommandlet - Accumulate timings for loading packages and saving packages Change 3780463 by Graeme.Thornton CryptoKeys improvements - Enable CryptoKeys plugin by default - Attempt to inherit settings from the old system by default - Hide ini/index encryption settings from packaging settings and just inherit previous values into new system Minor UBT change to remove a trailing comma from the end of encryption/signing key binary strings Change 3780557 by Ben.Marsh Fix LoginFlow module not being precompiled for the binary release. Change 3780846 by Josh.Engebretson Improve filename to long package name resolution when provided a relative path Change 3780863 by Ben.Marsh UAT: Add a better error message when a C# project has an invalid reference. Change 3780911 by Ben.Marsh Update the BuildEditorAndTools.xml script to allow submitting archived binaries to Perforce. The "Submit To Perforce For UGS" node creates a zip of all the binaries that have been built, and submits it to the stream specified by the 'ArchiveStream' argument. Change 3780956 by Josh.Engebretson Add support for ! (RemoveKey) config command to UBT UDN Link: https://udn.unrealengine.com/questions/397267/index.html #jira UE-52033 Change 3782957 by Robert.Manuszewski UE4 - Fixed a linear search in EDL that caused performance problems for very large maps. Change 3784503 by Ben.Marsh Optimizations for FStructuredArchive: * Store the depth explicitly in element objects, to avoid having to loop through the scope stack to find it. * Prevent shrinking of arrays when removing elements. * Add an inline allocator to the scope and container stacks. Change 3784700 by Ben.Marsh Remove the inline allocator from FStructuredArchive; checking whether the inline or backup allocator is being used is slower than just allocating up-front. Change 3784989 by Ben.Marsh Compile out all the FStructuredArchive validation code when WITH_TEXT_ARCHIVE_SUPPORT = 0. Change 3786860 by Gil.Gribb UE4 - Remove no buffering flag from windows async IO because it disabled the disk cache entirely. Change 3787159 by Ben.Marsh Guard against UE4.0 backwards compatibility path when determining if an engine is a source distribution. Change 3787493 by Josh.Engebretson Parallel pak generation now uses MaxDegreeOfParallelism option which is now set to the number of CPU cores Moved cryptography settings parsing out of threaded CreatePak method to avoid concurrency issue in ConfigCache.TryReadFile Fix for multiple threads parsing ini keys (PR 3995) #PR 3995 #jira 52913 #jira 49503 Change 3787773 by Steve.Robb Fix for missing final values from FOREACH_ENUM_ macros. Change 3788287 by Ben.Marsh TBA: Add checks in debug builds that key names in maps and records for FStructuredArchive are unique. Change 3788678 by Ben.Marsh Fix compile error due to inability to instantiate TArray<> of forward declared struct. Convert set of key names to an array to avoid including Set.h in public header for FStructuredArchive. Change 3789353 by Graeme.Thornton Removed unused/rotten modes from TextAsset commandlet. Used existing "-iterations=n" switch to control a global iteration over the given command. Useful for performance testing. Change 3789396 by Ben.Marsh Move code to validate container keys/sizes into DO_GUARD_SLOW checks, and allocate container metadata instances dynamically to fix problems with references to things not declared in headers that can't be included from StructuredArchive.h Change 3789772 by Ben.Marsh Always strip trailing slashes from the end of paths specified by .build.cs files; they can cause quoted paths to be escaped on the command line. Change 3790003 by Ben.Marsh TBA: Rename FStructuredArchive::EElementType::Object to FStructuredArchive::EElementType::Record. Change 3790051 by Steve.Robb PIE is disabled during a hot reload. Hot reload in editor is disabled during PIE. Hot reload from IDE is deferred until after PIE is exited. Compiling multiple times before a hot reload (e.g. compiling multiple times in PIE) will now load the most recent change. #jira UE-20357 #jira UE-52137 Change 3790709 by Steve.Robb Better move support for TVariant. EVariantTypes switched over to using an enum class to aid debugger visualization. Change 3791422 by Ben.Marsh TBA: Return the type of a field from an annotated archive formatter at the point that we enter it, rather than querying all the time. Change 3791489 by Graeme.Thornton TBA: Change StructuredArchiveFromArchive adapter to use the archive.Open() result directly, now that it's a slot and not a record Change 3792344 by Ben.Marsh Improvements to base64 encoding library. * Now supports encoding and decoding with ANSICHAR and WIDECHAR implementations. * Added support for decoding base-64 blobs without padding marks. * Added support for decoding into pre-allocated buffer. * Added constexpr functions for determining the encoded and maximum decoded size of an input buffer. * Prevent writes past the end of allocated buffer (no longer need to manually remove padding bytes). Change 3792949 by Ben.Marsh TBA: Rename FAnnotatedArchiveFormatter to FAnnotatedStructuredArchiveFormatter. Change 3794078 by Robert.Manuszewski Fixing a crash that could happen when FGCObjects were constructed and destructed when shutting down the engine #jira UE-52392 Change 3794413 by Ben.Marsh TBA: Remove the element type parameter to SetScope(). It isn't really needed; we can just assume the element ID correctly identifies the item on the stack. Change 3794731 by Ben.Marsh TBA: Optimize creation of stack elements for empty slots in FStructuredArchive. This saves a lot of bookkeeping when serializing a large number of individual fields. Since only one slot can be active at a time (and it only exists temporarily, until we write into it), we can just store the element ID assigned to it in a member variable. Change 3795081 by Ben.Marsh UBT: Move LinuxCommon.cs into Platform/Linux folder. Change 3795137 by Ben.Marsh UBT: Allow modules to specify private compiler definitions from the build.cs file, only visible within that module (via the "PrivateDefinitions" property). Change 3795247 by Ben.Marsh Fix missing header when creating a new interface from the editor new code wizard. #jira UE-53174 Change 3796025 by Graeme.Thornton Fixed some deprecated "Definitions" warnings in OpenCV build files Change 3796103 by Graeme.Thornton Disable experimental text asset option - it does nothing useful yet. Change 3796157 by Graeme.Thornton Fix path type mismatch in visual studio source code accessor meaning that the DTE comms wouldn't identify a running instance of VS as having the current solution open. #jira UE-53206 Change 3796315 by Ben.Marsh Move Formatter to the correct position for initializer. #jira UE-53208 Change 3797082 by Ben.Marsh UAT: Work around for exception thrown by launching cook with "-platform=Android_ETC1 -targetplatform=Android -cookflavor=ETC1". Anrdoid_ETC1 is not a valid platform (it's a cook platform), and can't be parsed by UAT. #jira UE-53232 Change 3799050 by Ben.Marsh Make UnrealPak.version files writable for Mac and Linux. Change 3801012 by Graeme.Thornton VSCode - Update source accessor to use code workspace as it's target, rather than just the project directory Change 3801214 by Gil.Gribb UE4 - Remove assert to work around minor problem with lock free lists. #jira UE-49600 Change 3801219 by Steve.Robb WeakObjectPtrs now warn when casting away const. Change 3801299 by Graeme.Thornton Fix quote issue with foreign project build tasks on PC Change 3803292 by Graeme.Thornton Fix crash on startup when using cook-on-the-side. Force a flush of the asset registry background scanning when creating the cook-on-the-side platform registries Change 3803559 by Steve.Robb TSAN fix for FMalloc::MaxSingleAlloc. Change 3803735 by Graeme.Thornton Last set of cryptokeys changes - Added some comments for editor exposed settings - Split "encrypt assets" option into "encrypt uassets" and "encrypt all assets" Change 3803929 by Ben.Marsh UGS: Show an in-place error panel when a project fails to open, allowing the user to retry and have their tabs saved instead of creating a modal dialog. Change 3624590 by Steve.Robb AddReferencedObjects now generates a compile error with containers of UObject*s where the UObjectType is forward-declared, as these which won't be added to the reference collector. Tidy-up of existing calls to AddReferencedObjects. Change 3629473 by Ben.Marsh Build: Rename the option for embedding source server information in PDB files for installed engine builds. Change 3632894 by Steve.Robb VARARG* macros deprecated and usage replaced with variadic templates. Change 3640704 by Steve.Robb MakeWeakObjectPtr added, which deduces a TWeakObjectPtr type from a raw pointer type. Fix to TWeakObjectPtr's constructor which implicitly removed const. Fixes to everything which didn't compile as a result. Change 3650813 by Graeme.Thornton Removed FStartupPackages and associated code Change 3651000 by Ben.Marsh Return the stack size from FPlatformStackWalk::CaptureStackBacktrace() rather than checking for the first null pointer, to prevent truncated callstacks if parts of the stack are zeroed out. #jira UE-49980 Change 3690842 by Steve.Robb FPlatformAtomics::AtomicRead added - needs optimizing. AtomicRead() used in FThreadSafeCounter::GetValue(). Change 3699416 by Steve.Robb Fix to debugger visualization of TArray with a TInlineAllocator or TFixedAllocator. Improved readability of TSparseArray visualization. Change 3720812 by Steve.Robb Atomic functions for 8-bit and 16-bit. Android, Linux and Switch implementations now just use the Clang implementation. AtomicRead64 deprecated in favor of the int64* AtomicRead overload. Change 3722698 by Steve.Robb VS debugger visualizers for TAtomic. Change 3732270 by Steve.Robb Relaxed stores and loads. Change 3749315 by Graeme.Thornton If UAT is invoked with platforms in both the -platform and -targetplatform command line switches, build using all of them rather than just the ones in -targetplatform #jira UE-52034 Change 3750657 by Josh.Engebretson Fixed issue when debugging editor cook/package and project launch operations #jira UE-52207 Change 3758514 by Steve.Robb Fixes to FString::Printf having non-literals being passed as its formatting string. Change 3763356 by Steve.Robb ENamedThreads::RenderThread and ENamedThreads::RenderThread_Local encapsulated by getters and setters. Change 3770549 by Steve.Robb Removal of obsolete PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS and PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES. Tidy up of existing code which uses it. Change 3770553 by Ben.Marsh Adding structured serialization API to Core/CoreUObject for use with text-based assets. * FStructuredArchive abstracts an archive which is made up of compound types (records, arrays, and maps). Values are stored in slots within these types. * Records are string -> value dictionaries where the key names can be compiled out in non-editor builds or when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Maps are string -> value dictionaries where the key names are present regardless of the build type. * Proxy objects are defined to express the context for serialization (FStructuredArchive::FRecord, FStructuredArchive::FArray, FStructuredArchive::FMap, FStructuredArchive::FSlot) which allows basic validation through static typing. These objects act as lightweight handles, and can be cheaply constructed and passed around on the stack. Most serialization to and from the archive is done through these objects. * Runtime checks perform additional validation to ensure that serialized data is well formed and written in a forward-only manner, regardless of the underlying archive type. * The actual input/output format is determined by a separate interface (FArchiveFormatter). Context validation (always causing matching LeaveArray for every EnterArray, etc...) is done by FStructuredArchive, so implementing these classes is fairly trivial. FArchiveFormatter can be de-virtualized in non-editor builds, where WITH_TEXT_ARCHIVE_SUPPORT = 0. * Includes implementations of FArchiveFormatter for binary and JSON formats. Change 3771105 by Steve.Robb Deprecation warnings for PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES and PLATFORM_COMPILER_HAS_DEFAULTED_FUNCTIONS. Fix for incorrect warning formatting on Clang platforms. Change 3771520 by Steve.Robb Start moving Clang-using platforms' pre-setup stuff into a Clang-specific header. Change 3771564 by Steve.Robb More common macros moved to the Clang pre-setup header. Change 3771613 by Steve.Robb EMIT_CUSTOM_WARNING_AT_LINE moved to ClangPlatformCompilerPreSetup.h. Change 3772881 by Ben.Marsh Add support for serializing FName and UObject through FStructuredArchive. In order to allow custom linker behavior when serializing objects: * The constructor to JSON input formatter now takes a delegate to convert a string object name into a UObject pointer. * The constructor to tagged binary formatter takes a delegate to serialize a UObject pointer into any form it chooses (likely an integer index into the import table) Object and name types are stored as strings in JSON, using an "Object:" or "Name:" prefix to differentiate them from regular strings. Any strings that already contain one of these prefixes are prepended with a "String:" prefix (as is any string that already has a "String:" prefix). Change 3772941 by Graeme.Thornton Make build work when including StructuredArchive.h from core container types Added standard header to new files Add structured archive serializer for TArray Fix bug in structured archive where containers weren't being popped from the scope stack Change 3772972 by Ben.Marsh Add an adapter which presents a legacy FArchive interface to a FStructuredArchive slot. Data is serialized into this slot as a stream of elements; raw data is buffered up into fixed size chunks, names and objects are serialized separately. When used with FBinaryArchiveFormatter, this should result in all data being passed through to the underlying archive in a backwards compatible way, wiith no additional bookkeeping fields. Change 3773006 by Ben.Marsh Rename FStructuredArchive::FRecord::EnterSlot() to EnterField(). Change 3773013 by Steve.Robb bUseInlining target rule added to UnrealBuildTool, which defaults to true, to allow inlining to be disabled for debugging purposes. Change 3774499 by Ben.Marsh Minor fixes for FStructuredArchive related classes: * Text-based archive formats are now compiled out when WITH_TEXT_ARCHIVE_SUPPORT = 0. * Fixed issue with FTaggedBinaryArchiveFormatter state becoming corrupted when looking ahead at field types. * FArchiveFieldName constructor is now explicit, to fix cases where strings were being passed directly to serialize functions. Change 3774600 by Ben.Marsh Add CopyFormattedData() function, which can copy data from one formatter to another. Add a test case to SerializationAPI that converts from data -> JSON -> binary -> JSON -> data. This function can be used to implement a generic visitor pattern, by implementing a FArchiveFormatter which receives the deserialized data. Change 3789721 by Ben.Marsh TBA: Split FTaggedBinaryArchiveFormatter into separate classes for reading and writing. Change 3789920 by Ben.Marsh TBA: Support automatic coercion between any numeric types in tagged binary archives. Also report the smallest type that can contain a value, rather than just in32/double. #jira UECORE-364 Change 3789982 by Ben.Marsh TBA: Change FStructuredArchive::Open() to return a slot, rather than a record, to make it easier to implement a raw FArchive adapter. Change 3792466 by Ben.Marsh TBA: Better handling of raw data in text based assets. Short sequences of binary data are Base64 encoded as a single string. Longer sequences are stored as an array of Base64 encoded lines, push a SHA1 hash to detect cases where the data was merged incorrectly. In order to allow inference of the correct type for a field, other fields called "Base64" will be escaped to "_Base64", and any field beginning with "_" will have an additional underscore inserted. Reading files back in reverses these transformations. Change 3792935 by Ben.Marsh TBA: Rename FArchiveFormatter to FStructuredArchiveFormatter for consistency with FStructuredArchive. Change 3795100 by Ben.Marsh UBT: Rename the ModuleRules Definitions property to PublicDefinitions, to make its semantics clearer. Change 3795106 by Ben.Marsh Replace all internal usages of ModuleRules.Definitions, and replace it with ModuleRules.PublicDefinitions. Change 3796275 by Ben.Marsh Fix paths to Version.h includes from resource files. Change 3800683 by Josh.Engebretson Remove WER from Mac and Linux crash reports in favor of unified runtime-xml format #jira UE-50073 Change 3803545 by Steve.Robb TWeakObjPtr const-dropping assignment fix. Fixes to change. [CL 3805231 by Ben Marsh in Main branch]
2017-12-12 18:32:45 -05:00
Entry->Actors.Add(MakeWeakObjectPtr(const_cast<AActor*>(InActorUsingTexture)));
Entry->NumUses++;
}
}
void Generate( TArray< TWeakObjectPtr<UObject> >& OutObjects )
{
for (int32 RefIndex = 0; RefIndex < Referencers.Num(); RefIndex++)
{
const TSet<UObject*> &AssetList = Referencers[RefIndex].AssetList;
// Look at each referenced asset
for(TSet<UObject*>::TConstIterator SetIt(AssetList); SetIt; ++SetIt)
{
const UObject* Asset = *SetIt;
const UTexture* CurrentTexture = Cast<const UTexture>(Asset);
if(IsTextureValidForStats(CurrentTexture))
{
AActor* ActorUsingTexture = Cast<AActor>(Referencers[RefIndex].Referencer);
// referenced by an actor
AddEntry(CurrentTexture, ActorUsingTexture, OutObjects);
}
const UPrimitiveComponent* ReferencedComponent = Cast<const UPrimitiveComponent>(Asset);
if (ReferencedComponent)
{
// If the referenced asset is a primitive component get the materials used by the component
TArray<UMaterialInterface*> UsedMaterials;
ReferencedComponent->GetUsedMaterials( UsedMaterials );
for(int32 MaterialIndex = 0; MaterialIndex < UsedMaterials.Num(); MaterialIndex++)
{
// For each material, find the textures used by that material and add it to the stat list
const UMaterialInterface* CurrentMaterial = UsedMaterials[MaterialIndex];
if(CurrentMaterial)
{
TArray<UTexture*> UsedTextures;
CurrentMaterial->GetUsedTextures(UsedTextures, EMaterialQualityLevel::Num, false, GMaxRHIFeatureLevel, true);
for(int32 TextureIndex = 0; TextureIndex < UsedTextures.Num(); TextureIndex++)
{
UTexture* CurrentUsedTexture = UsedTextures[TextureIndex];
if(IsTextureValidForStats(CurrentUsedTexture))
{
AActor* ActorUsingTexture = Cast<AActor>(Referencers[RefIndex].Referencer);
// referenced by an material
AddEntry(CurrentUsedTexture, ActorUsingTexture, OutObjects);
}
}
}
}
}
}
}
}
};
void FTextureStatsPage::Generate( TArray< TWeakObjectPtr<UObject> >& OutObjects ) const
{
TextureStatsGenerator Generator( GetWorld() );
Generator.BuildReferencingData( (ETextureObjectSets)ObjectSetIndex );
Generator.Generate( OutObjects );
}
void FTextureStatsPage::GenerateTotals( const TArray< TWeakObjectPtr<UObject> >& InObjects, TMap<FString, FText>& OutTotals ) const
{
if(InObjects.Num())
{
UTextureStats* TotalEntry = NewObject<UTextureStats>();
for( auto It = InObjects.CreateConstIterator(); It; ++It )
{
UTextureStats* StatsEntry = Cast<UTextureStats>( It->Get() );
TotalEntry->CurrentKB += StatsEntry->CurrentKB;
TotalEntry->FullyLoadedKB += StatsEntry->FullyLoadedKB;
TotalEntry->NumUses += StatsEntry->NumUses;
}
OutTotals.Add( TEXT("CurrentKB"), FText::AsNumber( TotalEntry->CurrentKB ) );
OutTotals.Add( TEXT("FullyLoadedKB"), FText::AsNumber( TotalEntry->FullyLoadedKB ) );
OutTotals.Add( TEXT("NumUses"), FText::AsNumber( TotalEntry->NumUses ) );
}
}
void FTextureStatsPage::OnEditorSelectionChanged( UObject* NewSelection, TWeakPtr< IStatsViewer > InParentStatsViewer )
{
if(InParentStatsViewer.IsValid())
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2945310 on 2016/04/15 by Jon.Nabozny Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked. #JIRA UE-29368 Change 2945490 on 2016/04/15 by Jon.Nabozny Remove extraneous changes introduced in CL-2945310. Change 2946706 on 2016/04/18 by James.Golding Checkin of slice test assets Change 2947895 on 2016/04/19 by Benn.Gallagher PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom) #jira UE-29567 Change 2947944 on 2016/04/19 by Benn.Gallagher Fixed a few extra needless bone container copies Change 2948279 on 2016/04/19 by Marc.Audy Add well defined Map and Set Property names Change 2948280 on 2016/04/19 by Marc.Audy Properly name parameters Change 2948792 on 2016/04/19 by Marc.Audy Remove unused ini class name settings Change 2948917 on 2016/04/19 by Aaron.McLeran UE-29654 FadeIn invalidates Audio Components in 4.11 Change 2949567 on 2016/04/20 by James.Golding - Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half - Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used - Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace. - Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary - Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function Change 2950482 on 2016/04/20 by Aaron.McLeran FORT-22973 SoundMix Fade Time not fading audio properly - Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes. Change 2951102 on 2016/04/21 by Thomas.Sarkanen Un-deprecated blueprint functions for attachment/detachment Renamed functions to <FuncName> (Deprecated). Hid functions in the BP context menu so new ones cant be added. #jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled. Change 2951173 on 2016/04/21 by James.Golding Fix cap geom generation when more than one polygon is generated Fix CIS warning in KismetProceduralMeshLibrary.cpp Change 2951334 on 2016/04/21 by Osman.Tsjardiwal Add CapMaterial param to SliceProceduralMesh util Change 2951528 on 2016/04/21 by Marc.Audy Fix spelling errors in comments Change 2952933 on 2016/04/22 by Lukasz.Furman fixed behavior tree getting stuck on instantly finished gameplay tasks copy of CL# 2952930 Change 2953948 on 2016/04/24 by James.Golding Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor) Change 2954558 on 2016/04/25 by Marc.Audy Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp #jira UE-29038 Change 2954865 on 2016/04/25 by Aaron.McLeran UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types. Change 2955009 on 2016/04/25 by Zak.Middleton #ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf. Change 2955878 on 2016/04/26 by Benn.Gallagher [Epic Friday] - Added spherical constraints to anim dynamics Change 2956380 on 2016/04/26 by Lina.Halper PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance) Change 2956383 on 2016/04/26 by Lina.Halper Fixed to match coding standard Change 2957866 on 2016/04/27 by Zak.Middleton #ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log. - Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update. - "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging. #tests QA-Surfaces multiplayer, walking in to moving objects and pawns. Change 2957953 on 2016/04/27 by Aaron.McLeran UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing. Change 2958011 on 2016/04/27 by Jon.Nabozny CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results. #JIRA UE-29525 Change 2958321 on 2016/04/27 by Lukasz.Furman path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests Change 2959506 on 2016/04/28 by Aaron.McLeran PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel) Change 2959686 on 2016/04/28 by Marc.Audy Correctly handle multiple viewpoints when significance is being sorted descending Change 2959773 on 2016/04/28 by Marc.Audy Fix shadowing warning Change 2959785 on 2016/04/28 by Aaron.McLeran UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances Change 2960852 on 2016/04/29 by Marc.Audy Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738 Change 2960946 on 2016/04/29 by Marc.Audy Fix post merge compile error Change 2962501 on 2016/05/02 by Marc.Audy Remove interim GetMutableAttach accessors and use the variables directly now that they are private Change 2962535 on 2016/05/02 by Marc.Audy Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478 Change 2962578 on 2016/05/02 by Marc.Audy Switch ObjectGraphMove to using UserFlags instead of custom move data Change 2962651 on 2016/05/02 by Marc.Audy VS2015 shadow variable fixes Change 2962662 on 2016/05/02 by Lukasz.Furman deprecated old implementation of gameplay debugger #jira UE-30011 Change 2962919 on 2016/05/02 by Marc.Audy VS2015 shadow variable fixes Change 2963475 on 2016/05/02 by Mieszko.Zielinski Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4 #jira UE-30176 Change 2964098 on 2016/05/03 by Marc.Audy Spelling fix Change 2964099 on 2016/05/03 by Marc.Audy VS2015 shadow variable fixes Change 2964156 on 2016/05/03 by Marc.Audy VS2015 shadow variable fixes Change 2964272 on 2016/05/03 by Marc.Audy VS2015 Shadow Variable fixes Change 2964395 on 2016/05/03 by Marc.Audy VS2015 Shadow Variable Fixes Change 2964460 on 2016/05/03 by Marc.Audy Reschedule coolingdown tick functions during pause frames. #jira UE-30221 Change 2964666 on 2016/05/03 by Marc.Audy Fix shipping compile error [CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
const int32 ObjSetIndex = InParentStatsViewer.Pin()->GetObjectSetIndex();
if( ObjSetIndex == TextureObjectSet_SelectedActors || ObjSetIndex == TextureObjectSet_SelectedMaterials )
{
InParentStatsViewer.Pin()->Refresh();
}
}
}
void FTextureStatsPage::OnEditorNewCurrentLevel( TWeakPtr< IStatsViewer > InParentStatsViewer )
{
if(InParentStatsViewer.IsValid())
{
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 2964666) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2945310 on 2016/04/15 by Jon.Nabozny Fix UI locking Angular Rotation Offset for PhysicsConstraintComponents when the motion is for axes is Free or Locked. #JIRA UE-29368 Change 2945490 on 2016/04/15 by Jon.Nabozny Remove extraneous changes introduced in CL-2945310. Change 2946706 on 2016/04/18 by James.Golding Checkin of slice test assets Change 2947895 on 2016/04/19 by Benn.Gallagher PR #2292: Use ref instead of copy in FAnimNode_ModifyBone::EvaluateBoneTransforms (Contributed by MiKom) #jira UE-29567 Change 2947944 on 2016/04/19 by Benn.Gallagher Fixed a few extra needless bone container copies Change 2948279 on 2016/04/19 by Marc.Audy Add well defined Map and Set Property names Change 2948280 on 2016/04/19 by Marc.Audy Properly name parameters Change 2948792 on 2016/04/19 by Marc.Audy Remove unused ini class name settings Change 2948917 on 2016/04/19 by Aaron.McLeran UE-29654 FadeIn invalidates Audio Components in 4.11 Change 2949567 on 2016/04/20 by James.Golding - Add SliceProceduralMesh utility to UKismetProceduralMeshLibrary. It will slice the ProcMeshComp with a plan, including simple collision geom, and optionally create cap geometry, and create an addition ProceduralMeshComponent for the other half - Add support for simple collision on ProceduralMeshComponent, and added bUseComplexAsSimpleCollision to allow it to be used - Move GeomTools.h and .cpp from Editor to Engine module, so it can be used at runtime. Also move utils into an FGeomTools namespace. - Add GetSectionFromStaticMesh and CopyProceduralMeshFromStaticMeshComponent utilities to UKismetProceduralMeshLibrary - Expose UStaticMesh::GetNumLODs to BP, and add BP exposed UStaticMesh:: GetNumSections function Change 2950482 on 2016/04/20 by Aaron.McLeran FORT-22973 SoundMix Fade Time not fading audio properly - Bug was due to bApplyToChildren case where the FSoundClassAdjuster wasn't getting the interpolated value before calling RecursiveApplyAdjuster in the case of non-overriden sound mixes. Change 2951102 on 2016/04/21 by Thomas.Sarkanen Un-deprecated blueprint functions for attachment/detachment Renamed functions to <FuncName> (Deprecated). Hid functions in the BP context menu so new ones cant be added. #jira UE-23216 - "Snap to Target, Keep World Scale" when attaching doesn't work properly if parent is scaled. Change 2951173 on 2016/04/21 by James.Golding Fix cap geom generation when more than one polygon is generated Fix CIS warning in KismetProceduralMeshLibrary.cpp Change 2951334 on 2016/04/21 by Osman.Tsjardiwal Add CapMaterial param to SliceProceduralMesh util Change 2951528 on 2016/04/21 by Marc.Audy Fix spelling errors in comments Change 2952933 on 2016/04/22 by Lukasz.Furman fixed behavior tree getting stuck on instantly finished gameplay tasks copy of CL# 2952930 Change 2953948 on 2016/04/24 by James.Golding Put #if WITH_EDITOR back into FPoly::Triangulate to fix non-editor builds (FPoly::Finalize not available in non-editor) Change 2954558 on 2016/04/25 by Marc.Audy Make USceneComponent::Attach* members private and remove deprecation messages and pragmas disabling/enabling deprecation throughout SceneComponent.h/cpp #jira UE-29038 Change 2954865 on 2016/04/25 by Aaron.McLeran UE-29763 Use HMD audio device only in VR preview mode, not for other PIE session types. Change 2955009 on 2016/04/25 by Zak.Middleton #ue4 - Wrap call from UCharacterMovementComponent::PostPhysicsTickComponent() to UpdateBasedMovement() in a FScopedMovementUpdate to accumulate moves with better perf. Change 2955878 on 2016/04/26 by Benn.Gallagher [Epic Friday] - Added spherical constraints to anim dynamics Change 2956380 on 2016/04/26 by Lina.Halper PR #2298: Step interpolation for UAnimSequence (Contributed by douglaslassance) Change 2956383 on 2016/04/26 by Lina.Halper Fixed to match coding standard Change 2957866 on 2016/04/27 by Zak.Middleton #ue4 - Add max depenetration distance settings for CharacterMovementComponent. Add controls to throttle logging when character is stuck in geometry so it doesn't spam the log. - Depenetration settings are separated based on whether overlapping a Pawn versus other geometry, and furthermore by whether the Character is a proxy or not. Simulated proxies typically should not depenetrate a large amount because that effectively ignores the server authoritative location update. - "Stuck" logging is controlled by the console var "p.CharacterStuckWarningPeriod". Set to number of seconds between logged events, or less than zero to disable logging. #tests QA-Surfaces multiplayer, walking in to moving objects and pawns. Change 2957953 on 2016/04/27 by Aaron.McLeran UE-30018 Fixing up audio component ref-counting to prevent triggering notifications when an audio component is still active after a sound finishes playing. Change 2958011 on 2016/04/27 by Jon.Nabozny CalcAABB wasn't properly accounting for current transform on Convex elements, causing bad results. #JIRA UE-29525 Change 2958321 on 2016/04/27 by Lukasz.Furman path following update pass, added flags to request result, fixed AITask stacking vs scripted/BP move requests Change 2959506 on 2016/04/28 by Aaron.McLeran PR #2330: Fix for ambient sounds not stopping when active and told to play again (Contributed by hgamiel) Change 2959686 on 2016/04/28 by Marc.Audy Correctly handle multiple viewpoints when significance is being sorted descending Change 2959773 on 2016/04/28 by Marc.Audy Fix shadowing warning Change 2959785 on 2016/04/28 by Aaron.McLeran UE-30083 Sound concatenator node doesn't progress if child nodes don't produce wave instances Change 2960852 on 2016/04/29 by Marc.Audy Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2960738 Change 2960946 on 2016/04/29 by Marc.Audy Fix post merge compile error Change 2962501 on 2016/05/02 by Marc.Audy Remove interim GetMutableAttach accessors and use the variables directly now that they are private Change 2962535 on 2016/05/02 by Marc.Audy Merging //UE4/Dev-Main to Dev-Framework (//UE4/Dev-Framework) @ 2962478 Change 2962578 on 2016/05/02 by Marc.Audy Switch ObjectGraphMove to using UserFlags instead of custom move data Change 2962651 on 2016/05/02 by Marc.Audy VS2015 shadow variable fixes Change 2962662 on 2016/05/02 by Lukasz.Furman deprecated old implementation of gameplay debugger #jira UE-30011 Change 2962919 on 2016/05/02 by Marc.Audy VS2015 shadow variable fixes Change 2963475 on 2016/05/02 by Mieszko.Zielinski Made SimpleMoveToLocation/Actor not reset velocity if agent not already at goal #UE4 #jira UE-30176 Change 2964098 on 2016/05/03 by Marc.Audy Spelling fix Change 2964099 on 2016/05/03 by Marc.Audy VS2015 shadow variable fixes Change 2964156 on 2016/05/03 by Marc.Audy VS2015 shadow variable fixes Change 2964272 on 2016/05/03 by Marc.Audy VS2015 Shadow Variable fixes Change 2964395 on 2016/05/03 by Marc.Audy VS2015 Shadow Variable Fixes Change 2964460 on 2016/05/03 by Marc.Audy Reschedule coolingdown tick functions during pause frames. #jira UE-30221 Change 2964666 on 2016/05/03 by Marc.Audy Fix shipping compile error [CL 2964775 by Marc Audy in Main branch]
2016-05-03 15:44:33 -04:00
const int32 ObjSetIndex = InParentStatsViewer.Pin()->GetObjectSetIndex();
if( ObjSetIndex == TextureObjectSet_CurrentStreamingLevel )
{
InParentStatsViewer.Pin()->Refresh();
}
}
}
void FTextureStatsPage::OnShow( TWeakPtr< IStatsViewer > InParentStatsViewer )
{
// register delegates for scene changes we are interested in
USelection::SelectionChangedEvent.AddRaw(this, &FTextureStatsPage::OnEditorSelectionChanged, InParentStatsViewer);
FEditorDelegates::NewCurrentLevel.AddRaw(this, &FTextureStatsPage::OnEditorNewCurrentLevel, InParentStatsViewer);
}
void FTextureStatsPage::OnHide()
{
// unregister delegates
USelection::SelectionChangedEvent.RemoveAll(this);
FEditorDelegates::NewCurrentLevel.RemoveAll(this);
}
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3209340 on 2016/11/23 by Ben.Marsh Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h. Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms. * Every header now includes everything it needs to compile. * There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first. * There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h. * Every .cpp file includes its matching .h file first. * This helps validate that each header is including everything it needs to compile. * No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more. * You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there. * There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible. * No engine code explicitly includes a precompiled header any more. * We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies. * PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files. Tool used to generate this transform is at Engine\Source\Programs\IncludeTool. [CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
#undef LOCTEXT_NAMESPACE