Files
UnrealEngineUWP/Engine/Source/Developer/DerivedDataCache/Private/FileSystemDerivedDataBackend.cpp

324 lines
12 KiB
C++
Raw Normal View History

// Copyright 1998-2017 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 "CoreMinimal.h"
#include "Misc/MessageDialog.h"
#include "HAL/FileManager.h"
#include "Misc/CommandLine.h"
#include "Misc/FileHelper.h"
#include "Misc/Paths.h"
#include "Misc/Guid.h"
#include "DerivedDataBackendInterface.h"
#include "DDCCleanup.h"
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 "ProfilingDebugging/CookStats.h"
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
#include "DerivedDataCacheUsageStats.h"
#define MAX_BACKEND_KEY_LENGTH (120)
#define MAX_BACKEND_NUMBERED_SUBFOLDER_LENGTH (9)
#if PLATFORM_LINUX // PATH_MAX on Linux is 4096 (getconf PATH_MAX /, also see limits.h), so this value can be larger (note that it is still arbitrary).
// This should not affect sharing the cache between platforms as the absolute paths will be different anyway.
#define MAX_CACHE_DIR_LEN (3119)
#else
#define MAX_CACHE_DIR_LEN (119)
#endif // PLATFORM_LINUX
#define MAX_CACHE_EXTENTION_LEN (4)
/**
* Cache server that uses the OS filesystem
* The entire API should be callable from any thread (except the singleton can be assumed to be called at least once before concurrent access).
**/
class FFileSystemDerivedDataBackend : public FDerivedDataBackendInterface
{
public:
/**
* Constructor that should only be called once by the singleton, grabs the cache path from the ini
* @param InCacheDirectory directory to store the cache in
* @param bForceReadOnly if true, do not attempt to write to this cache
*/
FFileSystemDerivedDataBackend(const TCHAR* InCacheDirectory, bool bForceReadOnly, bool bTouchFiles, bool bPurgeTransientData, bool bDeleteOldFiles, int32 InDaysToDeleteUnusedFiles, int32 InMaxNumFoldersToCheck, int32 InMaxContinuousFileChecks)
: CachePath(InCacheDirectory)
, bReadOnly(bForceReadOnly)
, bFailed(true)
, bTouch(bTouchFiles)
, bPurgeTransient(bPurgeTransientData)
, DaysToDeleteUnusedFiles(InDaysToDeleteUnusedFiles)
{
// If we find a platform that has more stingent limits, this needs to be rethought.
static_assert(MAX_BACKEND_KEY_LENGTH + MAX_CACHE_DIR_LEN + MAX_BACKEND_NUMBERED_SUBFOLDER_LENGTH + MAX_CACHE_EXTENTION_LEN < PLATFORM_MAX_FILEPATH_LENGTH,
"Not enough room left for cache keys in max path.");
const double SlowInitDuration = 10.0;
double AccessDuration = 0.0;
check(CachePath.Len());
FPaths::NormalizeFilename(CachePath);
const FString AbsoluteCachePath = IFileManager::Get().ConvertToAbsolutePathForExternalAppForRead(*CachePath);
if (AbsoluteCachePath.Len() > MAX_CACHE_DIR_LEN)
{
const FText ErrorMessage = FText::Format( NSLOCTEXT("DerivedDataCache", "PathTooLong", "Cache path {0} is longer than {1} characters...please adjust [DerivedDataBackendGraph] paths to be shorter (this leaves more room for cache keys)."), FText::FromString( AbsoluteCachePath ), FText::AsNumber( MAX_CACHE_DIR_LEN ) );
FMessageDialog::Open(EAppMsgType::Ok, ErrorMessage);
UE_LOG(LogDerivedDataCache, Fatal, TEXT("%s"), *ErrorMessage.ToString());
}
if (!bReadOnly)
{
double TestStart = FPlatformTime::Seconds();
FString TempFilename = CachePath / FGuid::NewGuid().ToString() + ".tmp";
FFileHelper::SaveStringToFile(FString("TEST"),*TempFilename);
int32 TestFileSize = IFileManager::Get().FileSize(*TempFilename);
if (TestFileSize < 4)
{
UE_LOG(LogDerivedDataCache, Warning, TEXT("Fail to write to %s, derived data cache to this directory will be read only."),*CachePath);
}
else
{
bFailed = false;
}
if (TestFileSize >= 0)
{
IFileManager::Get().Delete(*TempFilename, false, false, true);
}
AccessDuration = FPlatformTime::Seconds() - TestStart;
}
if (bFailed)
{
double StartTime = FPlatformTime::Seconds();
TArray<FString> FilesAndDirectories;
IFileManager::Get().FindFiles(FilesAndDirectories,*(CachePath / TEXT("*.*")), true, true);
AccessDuration = FPlatformTime::Seconds() - StartTime;
if (FilesAndDirectories.Num() > 0)
{
bReadOnly = true;
bFailed = false;
}
}
if (FString(FCommandLine::Get()).Contains(TEXT("DerivedDataCache")) )
{
bTouch = true; // we always touch files when running the DDC commandlet
}
// The command line (-ddctouch) enables touch on all filesystem backends if specified.
bTouch = bTouch || FParse::Param(FCommandLine::Get(), TEXT("DDCTOUCH"));
if (bReadOnly)
{
bTouch = false; // we won't touch read only paths
}
if (bTouch)
{
UE_LOG(LogDerivedDataCache, Display, TEXT("Files in %s will be touched."),*CachePath);
}
if (!bFailed && AccessDuration > SlowInitDuration && !GIsBuildMachine)
{
UE_LOG(LogDerivedDataCache, Warning, TEXT("%s access is very slow (initialization took %.2f seconds), consider disabling it."), *CachePath, AccessDuration);
}
if (!bReadOnly && !bFailed && bDeleteOldFiles && !FParse::Param(FCommandLine::Get(),TEXT("NODDCCLEANUP")) && FDDCCleanup::Get())
{
FDDCCleanup::Get()->AddFilesystem( CachePath, InDaysToDeleteUnusedFiles, InMaxNumFoldersToCheck, InMaxContinuousFileChecks );
}
}
/** return true if the cache is usable **/
bool IsUsable()
{
return !bFailed;
}
/** return true if this cache is writable **/
virtual bool IsWritable() override
{
return !bReadOnly;
}
/**
* Synchronous test for the existence of a cache item
*
* @param CacheKey Alphanumeric+underscore key of this cache item
* @return true if the data probably will be found, this can't be guaranteed because of concurrency in the backends, corruption, etc
*/
virtual bool CachedDataProbablyExists(const TCHAR* CacheKey) override
{
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
COOK_STAT(auto Timer = UsageStats.TimeProbablyExists());
check(!bFailed);
FString Filename = BuildFilename(CacheKey);
FDateTime TimeStamp = IFileManager::Get().GetTimeStamp(*Filename);
bool bExists = TimeStamp > FDateTime::MinValue();
if (bExists)
{
// Update file timestamp to prevent it from being deleted by DDC Cleanup.
if (bTouch ||
(!bReadOnly && (FDateTime::UtcNow() - TimeStamp).GetDays() > (DaysToDeleteUnusedFiles / 4)))
{
IFileManager::Get().SetTimeStamp(*Filename, FDateTime::UtcNow());
}
Copying //UE4/Dev-Core to //UE4/Dev-Main (Source: //UE4/Dev-Core @ 3420477) #lockdown Nick.Penwarden #rb none ========================== MAJOR FEATURES + CHANGES ========================== Change 3386262 on 2017/04/10 by Ben.Marsh Add app-local deployment of DirectX components that are no longer included with newer versions of Windows by default (XAudio 2.7, XInput 1.3). Also add a one-click button to the packaging settings to include the default app-local dependencies, rather than having to specify the path. Change 3386999 on 2017/04/10 by Ben.Marsh Plugins: Add support for explicit dependencies from one plugin onto another. Required plugins can be configured in an identical manner to project files, by adding a "Plugins" key to the .uplugin file. Dependencies are automatically built and loaded, and the plugin browser will warn if you try to disable a plugin that something else has a dependency on. Change 3387073 on 2017/04/10 by Ben.Marsh Move FLightPropagationRuntimeSettings into the Renderer module, to remove engine dependency on a plugin. Change 3387988 on 2017/04/11 by Steve.Robb Comments added to clarify the role of DestructItem and DestructItems. Change 3388085 on 2017/04/11 by Ben.Marsh UBT: Fix bEnabled flag on plugin references being ignored. Now collect up all the plugin references in order of priority before creating plugin instances for them. Fixes CIS fail for UT. Change 3390048 on 2017/04/12 by Richard.Hinckley #jira UE-43876 Fixed description of Streaming settings (within Project Settings). Change 3390697 on 2017/04/12 by Steve.Robb CLASS_PointersDefaultToAutoWeak and CLASS_PointersDefaultToWeak removed. Change 3390711 on 2017/04/12 by Steve.Robb AGRESSIVE_ARRAY_FORCEINLINE removed. Change 3392167 on 2017/04/13 by Robert.Manuszewski UObject can be added to GC cluster only if all of its Outers can also be added to it. Fixing asserts caused by components that are added to GC clusters even if their owner actors that can't be in GC clusters. #jira UE-42948 Change 3392309 on 2017/04/13 by Robert.Manuszewski When adding objects to clusters after these clusters have been created it's possible to come across objects that are already in the cluster we're adding the object to so instead of crashing, allow it. Change 3392620 on 2017/04/13 by Ben.Marsh UGS: Only check for updates every 5 minutes. Change 3392623 on 2017/04/13 by Ben.Marsh UGS: Only poll for new changes every 60 seconds. Change 3392744 on 2017/04/13 by Ben.Marsh UGS: Query changelist descriptions individually to determine whether changes affect code or content, to hopefully reduce Perforce server load. Change 3392874 on 2017/04/13 by Ben.Marsh UGS: Allow specifying regexes in the project config file which filters which changes to be displayed. Useful for changes submitted by build machines, updates to collections, etc... Change 3392878 on 2017/04/13 by Ben.Marsh Update UGS to version 1.96 Change 3395635 on 2017/04/17 by Ben.Marsh UAT: Prefix log output from executing UAT commands through BuildGraph with the name of that command. Change 3395655 on 2017/04/17 by Ben.Marsh UAT: Add a command for syncing a DDC over the network (SyncDDC). Allows specifying a maximum size to copy, number of days worth of modified files to copy, and time limit not to be exceeded. Change 3396989 on 2017/04/17 by Wes.Hunt CrashReporter configurable tweaks. * Added QueueWaitingTimeAlertThreshold (used to be hardcoded to 1 min). - When the queue waiting time gets beyond this many seconds, trigger a slack alert message. Default is 10 min. - Zero means never alert. * Added DiskSpaceAvailableAlertInterval (used to be hardcoded to 1 day). - Interval by which to report disk space availability. - Default is never (Zero) * Updated config file to match production config. #codereview:jin.zhang Change 3397656 on 2017/04/18 by Ben.Marsh UBT: Allow modules to opt-out of getting the default include paths from being added, by setting bAddDefaultIncludePaths = false from their build.cs file. Change 3397677 on 2017/04/18 by Robert.Manuszewski PR #3167 : Adding more descriptive error text to DetatchLinker error check (by rooneym) Change 3397722 on 2017/04/18 by Robert.Manuszewski PR #2252: Increase linker reporting for failed imports (Contributed by FineRedMist) Change 3397739 on 2017/04/18 by Richard.Hinckley #jira UE-44100 Fixed SanitizePackageName() to remove double-slash, triple-slash, etc. from package names. Also updated CreatePackage() to call SanitizePackageName() before creating. Change 3398023 on 2017/04/18 by Ben.Marsh PR #3105: Cook/package with editor and debugger attached (Contributed by projectgheist) Change 3398095 on 2017/04/18 by Ben.Marsh PR #3051: Generate map file from UAT (Contributed by projectgheist) Change 3398212 on 2017/04/18 by Ben.Marsh PR #2915: UE-38232: Removed duplicate stats (Contributed by projectgheist) Change 3399304 on 2017/04/19 by Ben.Marsh UGS: Prevent editor target files being removed when running custom tools. Change 3399306 on 2017/04/19 by Robert.Manuszewski Moved InitPropertiesFromCustomList to UbLueprintGeneratedClass and made it thread safe Change 3399729 on 2017/04/19 by Steve.Robb Simple optimization to TBitArray::RemoveAt() when all removed bits are at the end of the array. RemoveAtSwap() now simply decrements the count instead of calling RemoveAt(). Checks for a positive count added to RemoveAt() and RemoveAtSwap(). Change 3399750 on 2017/04/19 by Jin.Zhang Order branch alphabetically #RB Change 3400186 on 2017/04/19 by Steve.Robb Per-header generated code. Change 3401458 on 2017/04/20 by Steve.Robb Static log categories moved out of headers to prevent duplicates when the header is included multiple times. #jira UE-37507 Change 3401657 on 2017/04/20 by Gil.Gribb UE4 - Simplified and reworked lock free lists and the task graph bringing all platforms under the same scheme. Change 3401735 on 2017/04/20 by Gil.Gribb UE4 - Updated apple platform atomics with a new clang version which is intended to be shared among all clang platforms. Change 3403362 on 2017/04/21 by Steve.Robb Algo::Sort() fixed to support C arrays. Size+count versions of Also::IsSorted() deprecated. Algo::IsSortedBy() added. Algo::FindBy() added to allow an element to be found by projection. Simplifications and generalizations. Change 3404017 on 2017/04/21 by Ben.Marsh Fix issue where referenced plugin descriptors were missing from console builds, and prevent monolithic builds from offering to disable missing plugins. Change 3405299 on 2017/04/24 by Steve.Robb Clarified the class of the incompatible function in the error message about incompatible BP event specifiers. #jira UE-35106 Change 3405302 on 2017/04/24 by Ben.Marsh UBT: Allow excluding documentation from generated project files, by setting <ProjectFileGenerator><bIncludeDocumentation>false</bIncludeDocumentation></ProjectFileGenerator> in the XML configuration file. Change 3405629 on 2017/04/24 by Ben.Marsh Rename CPPEnvironment to CppCompileEnvironment, to reflect the class name. Change 3406431 on 2017/04/24 by Ben.Marsh UAT: Fix incorrect handling of P4SubmitOptions when multiple values are present. Change 3406670 on 2017/04/24 by Ben.Marsh UBT: Enable warnings for classes with virtual functions and no virtual destructor (C4265 on Windows, -fdelete-non-virtual-dtor on Clang). Change 3407080 on 2017/04/25 by Gil.Gribb UE4 - Critical fix: Propoerly disambiguate imports with the same name and the same outer name. This fixes an assert: LocalExportIndex.IsNull. Change 3407486 on 2017/04/25 by Gil.Gribb UE4 - Made changes so that servers, programs and non-engine executables do not create background or high priority threads. Change 3407495 on 2017/04/25 by Gil.Gribb UE4 - Tweaked out XBox and Windows low level file IO. Change 3407497 on 2017/04/25 by Gil.Gribb UE4 - Fixed bug in the pak precacher that would result in blocks being discarded too soon, which, in turn, resulted in redudnant reads. Change 3407705 on 2017/04/25 by Ben.Marsh Removing most of the junk in DotNETUtilities. Change 3409701 on 2017/04/26 by Ben.Marsh Disable another static analyzer warning for third party libraries. Change 3410074 on 2017/04/26 by Daniel.Lamb Network platform file runs heart beats and responds to modified file changes. Cook on the fly server in the editor (COTS) now detects changes to content and notifies client. Fixed issue with network platform file not using correct sandbox. #test cook on the side shootergame Change 3411131 on 2017/04/27 by Steve.Robb TIsTriviallyDestructible now supports forward-declared enums. Change 3411186 on 2017/04/27 by Steve.Robb Fix for #includes in generated code for Within classes which are in a different module from the generated class. Change 3411917 on 2017/04/27 by Steve.Robb Fixes to pushing/popping the CPP macro. Change 3411966 on 2017/04/27 by Steve.Robb Include spam reduced in generated code. Change 3412155 on 2017/04/27 by Ben.Marsh Fix for PVS Studio warning: VFOVInRadians used instead of HFOVInRadians. Change 3412223 on 2017/04/27 by Ben.Marsh Fix for PVS-Studio warning: Calling SetHelperA.Num() twice. Change 3412273 on 2017/04/27 by Ben.Marsh Fix for PVS-Studio warning: Duplicated variable name. Change 3412511 on 2017/04/27 by Ben.Marsh PR #3462: Fixed PVS-Studio issues (Part 1) (Contributed by PaulEremeeff) Change 3412582 on 2017/04/27 by Ben.Marsh Fix for PVS-Studio warning: Incorrect variable name in copy/pasted code Change 3413136 on 2017/04/28 by Robert.Manuszewski Helper functions for dissolving specific GC clusters Change 3413310 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Incorrect variable name in copy/pasted code. Change 3413341 on 2017/04/28 by Gil.Gribb UE4 - Add prestream capability to allow us to preload always loaded sublevels. Only turned on for Shootergame. Change 3413351 on 2017/04/28 by Ben.Marsh Include code analysis macros directly from Platform.h, so that macros are available to everything. Change 3413352 on 2017/04/28 by Ben.Marsh Fixing a few more PVS studio warnings. Change 3413437 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Comparison is always true. Change 3413759 on 2017/04/28 by Ben.Marsh Suppressing warnings for PVS-Studio. Change 3413784 on 2017/04/28 by Ben.Marsh Fix PVS-Studio warning. Change 3413898 on 2017/04/28 by Ben.Marsh Fix PVS-Studio warning: Same conditional is checked twice. Change 3413915 on 2017/04/28 by Ben.Marsh Fix PVS-Studio warning: LHS of expression is identical to RHS. Change 3413989 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: If CurrentGraph->SubGraphs.Num() == 1, it will always enter the first conditional block. Change 3414053 on 2017/04/28 by Ben.Marsh More PVS-Studio fixes. Change 3414062 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Pointer to object goes out of scope without being freed. Change 3414070 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Fix incorrect condition. Change 3414071 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Array index is always zero. Change 3414116 on 2017/04/28 by Ben.Marsh BuildGraph: Allow marking compile tasks as unsuitable for use with the parallel executor, via an AllowParallelExecutor="false" attribute. Change 3414160 on 2017/04/28 by Ben.Marsh Add support for running PVS-Studio through UnrealBuildTool. To use, pass -StaticAnalyzer=PVSStudio to the build command line (similarly, the Visual C++ analyzer can now be invoked using -StaticAnalyzer=VisualCpp). A log file will be written to the Engine/Saved/PVS-Studio or <Project>/Saved/PVS-Studio directory containing diagnostics, which can be opened using the "unparsed output" filter in the PVS-Studio standalone application. High priority warnings are printed to stdout. Change 3414237 on 2017/04/28 by Ben.Marsh EC: Allow disabling and enabling the log preprocessor via special markers in the log. To disable: <-- Suspend Log Parsing --> To enable: <-- Resume Log Parsing --> Change 3414343 on 2017/04/28 by Ben.Marsh UBT: Exclude ThirdParty folders from PVS output. Change 3414392 on 2017/04/28 by Ben.Marsh Fix regular strings being casted to BSTRs; BSTRs have a hidden length prefix in the two bytes before the first character, so passing a regular TCHAR* is reading random memory. Change 3414459 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Object goes out of scope without being freed. Change 3414495 on 2017/04/28 by Ben.Marsh Suppress some more PVS-Studio warnings. Change 3414514 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Testing WorldType being equal to EditorPreview and not equal to Inactive is redundant; changing to match description in comment instead. Change 3414526 on 2017/04/28 by Ben.Marsh Fix for PVS-Studio warning: Variable assigned to itself has no effect. Change 3415183 on 2017/04/29 by Ben.Marsh Fix conflict in macro definitions for ENABLE_HTTP_FOR_NFS - rename the macro defined by NetworkFile to ENABLE_HTTP_FOR_NF. Hopefully fix CIS. Change 3415765 on 2017/05/01 by Ben.Marsh Suppressing PVS-Studio warning to get things building cleanly. Not sure if FContentHelper is being leaked or not. Change 3415853 on 2017/05/01 by Ben.Marsh EC: Fix jobs never completing if a "Sync & Build" step fails. Dependent jobs should evaluate their run conditions as soon as the parent step finishes, rather than waiting for child job steps to be created. Change 3416138 on 2017/05/01 by Ben.Marsh Fix Fortnite cook failures. Not sure what the exact problem is here, but my hunch is that discarded "const" causes blueprint compile failures due to not being able to connect output pins between nodes for overloaded functions, or something like that. Change 3416309 on 2017/05/01 by Ben.Marsh Build: Fix node names for static analysis. Change 3416360 on 2017/05/01 by Ben.Marsh UBT: Remove unused arguments to PrepForUATPackageOrDeploy for Windows. Change 3416398 on 2017/05/01 by Daniel.Lamb Cook on the fly NetworkFileServerConnection Remove FileModifiedCallback delegate when the connection is closed. #test Cook on the side shootergame. Change 3416826 on 2017/05/01 by Daniel.Lamb Added callback to game when files are requested reload from networkfileserver. Game will need to unload / reload effected objects. Working on simple reload capability in shootergame. #test Cook on the side shootergame with reloading Change 3417983 on 2017/05/02 by Ben.Marsh EC: Remove warning for lines not matching p4 tag syntax when running preflights; multi-line descriptions in shelved changelists break this pattern. Change 3418747 on 2017/05/02 by Steve.Robb Fix for const pointer properties. Fix for UHT debugging manifest. Test added for pointer properties. Change 3420477 on 2017/05/03 by Gil.Gribb UE4 - Removed check from windows async IO layer. [CL 3421020 by Ben Marsh in Main branch]
2017-05-03 14:18:32 -04:00
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
COOK_STAT(Timer.AddHit(0));
}
return bExists;
}
/**
* Synchronous retrieve of a cache item
*
* @param CacheKey Alphanumeric+underscore key of this cache item
* @param OutData Buffer to receive the results, if any were found
* @return true if any data was found, and in this case OutData is non-empty
*/
Copying //UE4/Dev-Platform to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2719147 on 2015/10/07 by Mark.Satterthwaite Allow the shader cache to perform some precompilation synchronously on load before falling back to asynchronous compilation to balance load times against total time spent precompiling. Added a stat to the group that reports how long the precompile has been running until it completes so it is easier to track. Change 2719182 on 2015/10/07 by Mark.Satterthwaite Refactor the ShaderCache's internal data structures and change the way we handle recording whether a particular predraw state has been submitted to try and make it more efficient. Change 2719185 on 2015/10/07 by Mark.Satterthwaite Merging CL #2717701: Try and fix random crashes on Mac when manipulating bound-shader-states caused by ShaderCache potentially providing a bogus shader state pointer on exit from predraw. Change 2719434 on 2015/10/07 by Mark.Satterthwaite Make sure that Mac ensures reports have a source context and a sane callstack when sent to the crash-reports server. Change 2724764 on 2015/10/12 by Josh.Adams [Initial AppleTV support] Merging //depot/YakBranch/... to //UE4/Dev-Platform/... Change 2726266 on 2015/10/13 by Lee.Clark PS4 - Calc reserve size required for DMA copy when using unsafe command buffers Change 2726401 on 2015/10/13 by Mark.Satterthwaite Merging CL #2716418: Fix UE-15228 'Crash Report Client doesn't restart into project editor on Mac' by reporting the original command line supplied by LaunchMac, not the modified one that strips the project name. The CRC can then relaunch as expected. #jira UE-15228 Change 2726421 on 2015/10/13 by Lee.Clark PS4 - Don't try to clear invalid targets Change 2727040 on 2015/10/13 by Michael.Trepka Merging CL 2724777 - Fixed splash screen rendering for images with DPI different than 72 Change 2729783 on 2015/10/15 by Keith.Judge Fix huge memory leak in Test/Shipping configurations, caused because I am a numpty. Change 2729847 on 2015/10/15 by Mark.Satterthwaite Merging CL #2729846: On OS X unconstrain windows from the dimension of the parent display when in Windowed mode - it is OK for them to be larger in this case. They do need to be repositioned if on the Primary display so that they don't creep under the menu bar and become unmovable/unclosable and Fullscreen windows still need to be constrained to a single display. We can now take screenshots of windows that are larger than the display & not get grey bars beyond the cutoff. #jira UE-21992 Change 2729865 on 2015/10/15 by Keith.Judge Fast semantics - Finish up resource transitions, adding resource decompression where appropriate and using non-fast clears where we can't determine the resource transition. Change 2729897 on 2015/10/15 by Keith.Judge Fast Semantics - Make sure all GetData() calls are made safe with GPU fences. Change 2729972 on 2015/10/15 by Keith.Judge Removed the last vestiges of ID3D11DeviceContext/ID3D11DeviceContext1 from the Xbox RHI. Everything now uses ID3D11DeviceContextX directly. This should be marginally quicker as it stops a double call to ClearState(). Change 2731503 on 2015/10/16 by Keith.Judge Added _XDK_VERSION to the DDC key for textures, which should solve the issue of the tiling mode changing in August XDK (and future changes Microsoft may inflict). Change 2731596 on 2015/10/16 by Keith.Judge Fast Semantics - Add deferred resource deletion queue to make deleted resources be actually deleted a number of frames later so that the GPU is definitely finished with them. Hooked up the temporary SRVs for dynamic VBs as a first step. Change 2731928 on 2015/10/16 by Michael.Trepka PR #1659: Mac/Build.sh handles additional arguments (Contributed by judgeaxl) Change 2731934 on 2015/10/16 by Michael.Trepka PR #1618: added clang 3.7.0 -Wshift-negative-value ignore in JpegImageWrapper.cpp (Contributed by bsekura) Change 2732018 on 2015/10/16 by Mark.Satterthwaite Emit a shader code cache for each platforms requested shader formats, this is separate to the targeted formats as not all can or need to be cached. - The implementation extends the ShaderCache's hooks in FShaderResource's serialisation function to capture the required shaders. - Each target platform has its own list of cached shader formats, analogous to the list of targeted RHIs. Presently only the Mac implements this. - Code cached shaders are now compressed (for size) to reduce the overhead associated with keeping all the shader code around - this works esp. well for text-based formats like GLSL. Change 2732365 on 2015/10/16 by Josh.Adams - Packaging a TVOS .ipa now works (still haven't tried any of the Editor integration like Launch On) Change 2733170 on 2015/10/18 by Terence.Burns Fix for Android IAP query not returning entire inventory. Change 2733174 on 2015/10/18 by Terence.Burns Fix Movie player issue where wait for movie to finish isnt being respected. Seems a stray bUserCanceled event flag was causing this not to be observed. Added some verbose logging to apple movie player. Change 2733488 on 2015/10/19 by Mark.Satterthwaite Added the ability to merge the .ushadercache files used by the ShaderCache to store shader & draw state information. - Fixed a bug that would cause invalid shader membership and draw state information to be logged. - Added a separate command-line tool to merge shader cache files, currently Mac-only but in theory should work on other platforms too. Change 2735226 on 2015/10/20 by Mark.Satterthwaite Fix temporal AA rendering on GL/Mac OS X - you can't rely on EyeAdaptation values unless SM5 is available so only perform that code on SM5 & we must correctly clamp saturate(NaN) to 0 as the current hlslcc won't do that for us (& is required by the HLSL spec). The latter used to be clamped in the AA_ALPHA && AA_VELOCITY_WEIGHTING code block that was removed recently. #jira UE-21214 #jira UE-19913 Change 2736722 on 2015/10/21 by Daniel.Lamb Improved performance of cooking stats system. Change 2737172 on 2015/10/21 by Daniel.Lamb Improved cooking stats performance for ddc stats.
2015-12-10 16:56:55 -05:00
virtual bool GetCachedData(const TCHAR* CacheKey, TArray<uint8>& Data) override
{
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
COOK_STAT(auto Timer = UsageStats.TimeGet());
check(!bFailed);
FString Filename = BuildFilename(CacheKey);
double StartTime = FPlatformTime::Seconds();
if (FFileHelper::LoadFileToArray(Data,*Filename,FILEREAD_Silent))
{
if(!GIsBuildMachine)
{
double ReadDuration = FPlatformTime::Seconds() - StartTime;
double ReadSpeed = ReadDuration > 5.0 ? (Data.Num() / ReadDuration) / (1024.0 * 1024.0) : 100.0;
// Slower than 0.5MB/s?
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
UE_CLOG(ReadSpeed < 0.5, LogDerivedDataCache, Warning, TEXT("%s is very slow (%.2fMB/s) when accessing %s, consider disabling it."), *CachePath, ReadSpeed, *Filename);
}
UE_LOG(LogDerivedDataCache, Verbose, TEXT("FileSystemDerivedDataBackend: Cache hit on %s"),*Filename);
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
COOK_STAT(Timer.AddHit(Data.Num()));
return true;
}
UE_LOG(LogDerivedDataCache, Verbose, TEXT("FileSystemDerivedDataBackend: Cache miss on %s"),*Filename);
Data.Empty();
return false;
}
/**
* Asynchronous, fire-and-forget placement of a cache item
*
* @param CacheKey Alphanumeric+underscore key of this cache item
* @param OutData Buffer containing the data to cache, can be destroyed after the call returns, immediately
* @param bPutEvenIfExists If true, then do not attempt skip the put even if CachedDataProbablyExists returns true
*/
Copying //UE4/Dev-Platform to //UE4/Main ========================== MAJOR FEATURES + CHANGES ========================== Change 2719147 on 2015/10/07 by Mark.Satterthwaite Allow the shader cache to perform some precompilation synchronously on load before falling back to asynchronous compilation to balance load times against total time spent precompiling. Added a stat to the group that reports how long the precompile has been running until it completes so it is easier to track. Change 2719182 on 2015/10/07 by Mark.Satterthwaite Refactor the ShaderCache's internal data structures and change the way we handle recording whether a particular predraw state has been submitted to try and make it more efficient. Change 2719185 on 2015/10/07 by Mark.Satterthwaite Merging CL #2717701: Try and fix random crashes on Mac when manipulating bound-shader-states caused by ShaderCache potentially providing a bogus shader state pointer on exit from predraw. Change 2719434 on 2015/10/07 by Mark.Satterthwaite Make sure that Mac ensures reports have a source context and a sane callstack when sent to the crash-reports server. Change 2724764 on 2015/10/12 by Josh.Adams [Initial AppleTV support] Merging //depot/YakBranch/... to //UE4/Dev-Platform/... Change 2726266 on 2015/10/13 by Lee.Clark PS4 - Calc reserve size required for DMA copy when using unsafe command buffers Change 2726401 on 2015/10/13 by Mark.Satterthwaite Merging CL #2716418: Fix UE-15228 'Crash Report Client doesn't restart into project editor on Mac' by reporting the original command line supplied by LaunchMac, not the modified one that strips the project name. The CRC can then relaunch as expected. #jira UE-15228 Change 2726421 on 2015/10/13 by Lee.Clark PS4 - Don't try to clear invalid targets Change 2727040 on 2015/10/13 by Michael.Trepka Merging CL 2724777 - Fixed splash screen rendering for images with DPI different than 72 Change 2729783 on 2015/10/15 by Keith.Judge Fix huge memory leak in Test/Shipping configurations, caused because I am a numpty. Change 2729847 on 2015/10/15 by Mark.Satterthwaite Merging CL #2729846: On OS X unconstrain windows from the dimension of the parent display when in Windowed mode - it is OK for them to be larger in this case. They do need to be repositioned if on the Primary display so that they don't creep under the menu bar and become unmovable/unclosable and Fullscreen windows still need to be constrained to a single display. We can now take screenshots of windows that are larger than the display & not get grey bars beyond the cutoff. #jira UE-21992 Change 2729865 on 2015/10/15 by Keith.Judge Fast semantics - Finish up resource transitions, adding resource decompression where appropriate and using non-fast clears where we can't determine the resource transition. Change 2729897 on 2015/10/15 by Keith.Judge Fast Semantics - Make sure all GetData() calls are made safe with GPU fences. Change 2729972 on 2015/10/15 by Keith.Judge Removed the last vestiges of ID3D11DeviceContext/ID3D11DeviceContext1 from the Xbox RHI. Everything now uses ID3D11DeviceContextX directly. This should be marginally quicker as it stops a double call to ClearState(). Change 2731503 on 2015/10/16 by Keith.Judge Added _XDK_VERSION to the DDC key for textures, which should solve the issue of the tiling mode changing in August XDK (and future changes Microsoft may inflict). Change 2731596 on 2015/10/16 by Keith.Judge Fast Semantics - Add deferred resource deletion queue to make deleted resources be actually deleted a number of frames later so that the GPU is definitely finished with them. Hooked up the temporary SRVs for dynamic VBs as a first step. Change 2731928 on 2015/10/16 by Michael.Trepka PR #1659: Mac/Build.sh handles additional arguments (Contributed by judgeaxl) Change 2731934 on 2015/10/16 by Michael.Trepka PR #1618: added clang 3.7.0 -Wshift-negative-value ignore in JpegImageWrapper.cpp (Contributed by bsekura) Change 2732018 on 2015/10/16 by Mark.Satterthwaite Emit a shader code cache for each platforms requested shader formats, this is separate to the targeted formats as not all can or need to be cached. - The implementation extends the ShaderCache's hooks in FShaderResource's serialisation function to capture the required shaders. - Each target platform has its own list of cached shader formats, analogous to the list of targeted RHIs. Presently only the Mac implements this. - Code cached shaders are now compressed (for size) to reduce the overhead associated with keeping all the shader code around - this works esp. well for text-based formats like GLSL. Change 2732365 on 2015/10/16 by Josh.Adams - Packaging a TVOS .ipa now works (still haven't tried any of the Editor integration like Launch On) Change 2733170 on 2015/10/18 by Terence.Burns Fix for Android IAP query not returning entire inventory. Change 2733174 on 2015/10/18 by Terence.Burns Fix Movie player issue where wait for movie to finish isnt being respected. Seems a stray bUserCanceled event flag was causing this not to be observed. Added some verbose logging to apple movie player. Change 2733488 on 2015/10/19 by Mark.Satterthwaite Added the ability to merge the .ushadercache files used by the ShaderCache to store shader & draw state information. - Fixed a bug that would cause invalid shader membership and draw state information to be logged. - Added a separate command-line tool to merge shader cache files, currently Mac-only but in theory should work on other platforms too. Change 2735226 on 2015/10/20 by Mark.Satterthwaite Fix temporal AA rendering on GL/Mac OS X - you can't rely on EyeAdaptation values unless SM5 is available so only perform that code on SM5 & we must correctly clamp saturate(NaN) to 0 as the current hlslcc won't do that for us (& is required by the HLSL spec). The latter used to be clamped in the AA_ALPHA && AA_VELOCITY_WEIGHTING code block that was removed recently. #jira UE-21214 #jira UE-19913 Change 2736722 on 2015/10/21 by Daniel.Lamb Improved performance of cooking stats system. Change 2737172 on 2015/10/21 by Daniel.Lamb Improved cooking stats performance for ddc stats.
2015-12-10 16:56:55 -05:00
virtual void PutCachedData(const TCHAR* CacheKey, TArray<uint8>& Data, bool bPutEvenIfExists) override
{
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
COOK_STAT(auto Timer = UsageStats.TimePut());
check(!bFailed);
if (!bReadOnly)
{
if (bPutEvenIfExists || !CachedDataProbablyExists(CacheKey))
{
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
COOK_STAT(Timer.AddHit(Data.Num()));
check(Data.Num());
FString Filename = BuildFilename(CacheKey);
FString TempFilename(TEXT("temp."));
TempFilename += FGuid::NewGuid().ToString();
TempFilename = FPaths::GetPath(Filename) / TempFilename;
bool bResult;
{
bResult = FFileHelper::SaveArrayToFile(Data, *TempFilename);
}
if (bResult)
{
if (IFileManager::Get().FileSize(*TempFilename) == Data.Num())
{
bool DoMove = !CachedDataProbablyExists(CacheKey);
if (bPutEvenIfExists && !DoMove)
{
DoMove = true;
RemoveCachedData(CacheKey, /*bTransient=*/ false);
}
if (DoMove)
{
if (!IFileManager::Get().Move(*Filename, *TempFilename, true, true, false, true))
{
UE_LOG(LogDerivedDataCache, Log, TEXT("FFileSystemDerivedDataBackend: Move collision, attempt at redundant update, OK %s."),*Filename);
}
else
{
UE_LOG(LogDerivedDataCache, Verbose, TEXT("FFileSystemDerivedDataBackend: Successful cache put to %s"),*Filename);
}
}
}
else
{
UE_LOG(LogDerivedDataCache, Warning, TEXT("FFileSystemDerivedDataBackend: Temp file is short %s!"),*TempFilename);
}
}
else
{
UE_LOG(LogDerivedDataCache, Warning, TEXT("FFileSystemDerivedDataBackend: Could not write temp file %s!"),*TempFilename);
}
// if everything worked, this is not necessary, but we will make every effort to avoid leaving junk in the cache
if (FPaths::FileExists(TempFilename))
{
IFileManager::Get().Delete(*TempFilename, false, false, true);
}
}
}
}
void RemoveCachedData(const TCHAR* CacheKey, bool bTransient) override
{
check(!bFailed);
if (!bReadOnly && (!bTransient || bPurgeTransient))
{
FString Filename = BuildFilename(CacheKey);
if (bTransient)
{
UE_LOG(LogDerivedDataCache,Verbose,TEXT("Deleting transient cached data. Key=%s Filename=%s"),CacheKey,*Filename);
}
IFileManager::Get().Delete(*Filename, false, false, true);
}
}
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
virtual void GatherUsageStats(TMap<FString, FDerivedDataCacheUsageStats>& UsageStatsMap, FString&& GraphPath) override
{
COOK_STAT(UsageStatsMap.Add(FString::Printf(TEXT("%s: %s.%s"), *GraphPath, TEXT("FileSystem"), *CachePath), UsageStats));
}
private:
Copying //UE4/Orion-Staging to //UE4/Main (Origin //Orion/Dev-General @ 2870388) #lockdown Nick.Penwarden ========================== MAJOR FEATURES + CHANGES ========================== Change 2870336 on 2016/02/17 by Marc.Audy Continued splitting up Orion Build * Restructure from platform based MakeBuild steps in to a PS4, Server, and Windows Client MakeBuild * Cook server data only once for both Windows and Linux (windows reuses Linux server data) * Split compilation of Win64 Client and Server such that MakeBuild_Server only builds Server and MakeBuild_WindowsClient only builds Client #jira UEB-580 #rb Ben.Marsh #tests Preflight and generated Windows Client and Server work to play game Change 2870026 on 2016/02/17 by Wes.Hunt Don't allow array shrinking when removing the corruption wrapper trailer. #rb none Updating CIS Counter Change 2869725 on 2016/02/17 by Dmitry.Rekman More analytics and QoS stats added for 0.19. #rb none #tests Ran Windows client and Linux server on compatible content. Change 2869705 on 2016/02/16 by Ryan.Gerleve Fix replicated properties and call RepNotifies of startup actors when scrubbing in replays. This is the engine support for fixing OR-6817, towers not respawning when rewinding replays. #rb john.pollard #tests golden path, replays, ps4 nomcp Change 2869644 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2869635 #Tests:none #RB:none Change 2869586 on 2016/02/16 by Marcus.Wassmer Fix texturestreaming RHI flushes. #rb none #test goldenpath #codereview Gil.Gribb Change 2869279 on 2016/02/16 by Lukasz.Furman fixed minion hit reaction directions #orion OR-13953 #rb Mieszko.Zielinski #tests PIE: hit minions with various abilities from different angles, checked velocity of death particles when killed by abilities and towers #codereview Dan.Youhon Change 2869277 on 2016/02/16 by Wes.Hunt During cook, when a package is not ready to save, actually early out of the saving code. Saves somewhere in the 130s to 200s range for cooks. #rb daniel.lamb #tests local windows cooks, preflight PS4 cooks Change 2869132 on 2016/02/16 by Mieszko.Zielinski Added a function to AISenseConfig allowing native-code MaxAge configuration #UE4 #rb Lukasz.Furman #test none required Change 2868981 on 2016/02/16 by Wes.Hunt remove -LogCookStats cmdline check, always log cook stats. -SendCookAnalytics flag is still used. This was requested by NickP. #rb none #tests local windows cooks Change 2868975 on 2016/02/16 by Wes.Hunt Don't submit DDC usage stats for zero-sized events. #rb none #tests local windows cook Change 2868956 on 2016/02/16 by Jason.Bestimt #ORION_DEV - Merge MAIN (0.18) at CL# 2868926 #RB:none #Tests:none Change 2868889 on 2016/02/16 by Max.Chen Sequencer: Only allow transport control binding when editing level editor sequencers. #rb none #tests none Change 2868663 on 2016/02/16 by David.Ratti downgrade warning to display #rb none #tests compile Change 2868624 on 2016/02/16 by Marcus.Wassmer Re-Enable Defrag validation for devgeneral #rb none #test none Change 2868493 on 2016/02/16 by Benn.Gallagher Added a few more stats to morph target updates to try and narrow down hitches #rb Bruce.Nesbit #tests pie, -game Win64 Change 2868445 on 2016/02/16 by Dmitry.Rekman Linux: report crashes due to stack overflow (OR-14519). - Reserve memory for alternative stack for signal handlers. Adds about 128KB memory per thread. - Force process spawning to use vfork() when no pipes are needed. - Ignore all signals except explicitly handled. - Prevent signals from being raised while another one is handled. - Added "debug threadrecurse" and "debug threadstackoverflow" to test that. [CL 2873763 by Andrew Grant in Main branch]
2016-02-19 12:03:17 -05:00
FDerivedDataCacheUsageStats UsageStats;
/**
* Threadsafe method to compute the filename from the cachekey, currently just adds a path and an extension.
*
* @param CacheKey Alphanumeric+underscore key of this cache item
* @return filename built from the cache key
*/
FString BuildFilename(const TCHAR* CacheKey)
{
FString Key = FString(CacheKey).ToUpper();
for (int32 i = 0; i < Key.Len(); i++)
{
check(FChar::IsAlnum(Key[i]) || FChar::IsUnderscore(Key[i]) || Key[i] == L'$');
}
uint32 Hash = FCrc::StrCrc_DEPRECATED(*Key);
// this creates a tree of 1000 directories
FString HashPath = FString::Printf(TEXT("%1d/%1d/%1d/"),(Hash/100)%10,(Hash/10)%10,Hash%10);
return CachePath / HashPath / Key + TEXT(".udd");
}
/** Base path we are storing the cache files in. **/
FString CachePath;
/** If true, do not attempt to write to this cache **/
bool bReadOnly;
/** If true, we failed to write to this directory and it did not contain anything so we should not be used **/
bool bFailed;
/** If true, CachedDataProbablyExists will update the file timestamps. */
bool bTouch;
/** If true, allow transient data to be removed from the cache. */
bool bPurgeTransient;
/** Age of file when it should be deleted from DDC cache. */
int32 DaysToDeleteUnusedFiles;
};
FDerivedDataBackendInterface* CreateFileSystemDerivedDataBackend(const TCHAR* CacheDirectory, bool bForceReadOnly /*= false*/, bool bTouchFiles /*= false*/, bool bPurgeTransient /*= false*/, bool bDeleteOldFiles /*= false*/, int32 InDaysToDeleteUnusedFiles /*= 60*/, int32 InMaxNumFoldersToCheck /*= -1*/, int32 InMaxContinuousFileChecks /*= -1*/)
{
FFileSystemDerivedDataBackend* FileDDB = new FFileSystemDerivedDataBackend(CacheDirectory, bForceReadOnly, bTouchFiles, bPurgeTransient, bDeleteOldFiles, InDaysToDeleteUnusedFiles, InMaxNumFoldersToCheck, InMaxContinuousFileChecks);
if (!FileDDB->IsUsable())
{
delete FileDDB;
FileDDB = NULL;
}
return FileDDB;
}