25#include "Containers/HashTable.h"
33#include "ShaderCompiler.generated.h"
107 void HandlePrintStats();
117class FGlobalShaderTypeCompiler
158 double WorkerStateChangeTimestamp;
183 return TEXT(
"ShaderCompilingThread");
244 double LastCheckForWorkersTime = 0.0;
247 bool bParallelizeIO =
false;
252 struct FMemoryMonitoringState
254 double LastTimeOfMemoryLimitPoll = 0.0;
255 double LastTimeOfSuspeningOrResumingWorkers = 0.0;
256 bool bHasFailedToSuspendWorkers =
false;
257 bool bHasSuspendedWorkers =
false;
259 MemoryMonitoringState;
280 int32 PullTasksFromQueue();
285 void PushCompletedJobsToManager();
288 void WriteNewTasks();
291 bool LaunchWorkersIfNeeded();
294 int32 ReadAvailableResults();
297 void CompileDirectlyThroughDll();
300 virtual int32 CompilingLoop()
override;
302 virtual void OnMachineResourcesChanged()
override;
306 void PrintWorkerMemoryUsageWithLockTaken();
309 int32 GetNumberOfWorkers()
const;
312 int32 GetNumberOfAvailableWorkersUnsafe()
const;
313 int32 GetNumberOfAvailableWorkers()
const;
316 int32 GetNumberOfSuspendedWorkersUnsafe()
const;
328 int32 ResumeSuspendedWorkers(
int32 NumWorkers);
331 void DiscardWorkerOutputFile(
int32 WorkerIndex);
334 FString GetWorkingDirectoryForWorker(
int32 WorkerIndex,
bool bRelativePath =
false)
const;
337 void CheckMemoryLimitViolation();
353 static void MoveFileHelper(
const FString& To,
const FString& From);
410 virtual const TCHAR* GetThreadName()
const override;
427 double AccumulatedLocalWorkerIdleTime = 0.0;
431 double TimesLocalWorkersWereIdle = 0;
443 double AccumulatedPendingTime = 0;
447 double MaxPendingTime = 0;
451 double AccumulatedJobExecutionTime = 0;
455 double MaxJobExecutionTime = 0;
459 double AccumulatedJobLifeTime = 0;
463 double MaxJobLifeTime = 0;
467 double AccumulatedTaskSubmitJobs = 0.0;
469 double AccumulatedTaskSubmitJobsStall = 0.0;
477 int64 TotalJobsReportedInLocalJobBatches = 0;
481 int64 DistributedJobBatchesSeen = 0;
485 int64 TotalJobsReportedInDistributedJobBatches = 0;
560 TimesLocalWorkersWereIdle +=
Other.TimesLocalWorkersWereIdle;
561 JobsAssigned +=
Other.JobsAssigned;
562 JobsCompleted +=
Other.JobsCompleted;
563 AccumulatedPendingTime +=
Other.AccumulatedPendingTime;
564 MaxPendingTime = FMath::Max(
Other.MaxPendingTime, MaxPendingTime);
565 AccumulatedJobExecutionTime +=
Other.AccumulatedJobExecutionTime;
566 MaxJobExecutionTime = FMath::Max(
Other.MaxJobExecutionTime, MaxJobExecutionTime);
567 AccumulatedJobLifeTime +=
Other.AccumulatedJobLifeTime;
568 MaxJobLifeTime = FMath::Max(
Other.MaxJobLifeTime, MaxJobLifeTime);
569 AccumulatedTaskSubmitJobs +=
Other.AccumulatedTaskSubmitJobs;
570 AccumulatedTaskSubmitJobsStall +=
Other.AccumulatedTaskSubmitJobsStall;
571 LocalJobBatchesSeen +=
Other.LocalJobBatchesSeen;
572 TotalJobsReportedInLocalJobBatches +=
Other.TotalJobsReportedInLocalJobBatches;
573 DistributedJobBatchesSeen +=
Other.DistributedJobBatchesSeen;
574 TotalJobsReportedInDistributedJobBatches +=
Other.TotalJobsReportedInDistributedJobBatches;
575 if (
Other.MinShaderCodeSize > 0)
577 MinShaderCodeSize = (MinShaderCodeSize > 0 ? FMath::Min(MinShaderCodeSize,
Other.MinShaderCodeSize) :
Other.MinShaderCodeSize);
579 MaxShaderCodeSize = FMath::Max(
Other.MaxShaderCodeSize, MaxShaderCodeSize);
580 AccumulatedShaderCodeSize +=
Other.AccumulatedShaderCodeSize;
581 NumAccumulatedShaderCodes +=
Other.NumAccumulatedShaderCodes;
582 ShaderMapDDCMisses +=
Other.ShaderMapDDCMisses;
583 ShaderMapDDCHits +=
Other.ShaderMapDDCHits;
584 TotalCacheSearchAttempts +=
Other.TotalCacheSearchAttempts;
585 TotalCacheHits +=
Other.TotalCacheHits;
586 TotalCacheDuplicates +=
Other.TotalCacheDuplicates;
587 TotalCacheDDCQueries +=
Other.TotalCacheDDCQueries;
588 TotalCacheDDCHits +=
Other.TotalCacheDDCHits;
589 UniqueCacheInputHashes +=
Other.UniqueCacheInputHashes;
590 UniqueCacheOutputs +=
Other.UniqueCacheOutputs;
591 CacheMemUsed +=
Other.CacheMemUsed;
592 CacheMemBudget +=
Other.CacheMemBudget;
593 MaxRemoteAgents +=
Other.MaxRemoteAgents;
594 MaxActiveAgentCores +=
Other.MaxActiveAgentCores;
613 double MaterialTranslateTotalTimeSec = 0.0;
617 double MaterialTranslateTranslationOnlyTimeSec = 0.0;
621 double MaterialTranslateSerializationOnlyTimeSec = 0.0;
630 MaterialTranslateCalls +=
Other.MaterialTranslateCalls;
631 MaterialTranslateTotalTimeSec +=
Other.MaterialTranslateTotalTimeSec;
632 MaterialTranslateTranslationOnlyTimeSec +=
Other.MaterialTranslateTranslationOnlyTimeSec;
633 MaterialTranslateSerializationOnlyTimeSec +=
Other.MaterialTranslateSerializationOnlyTimeSec;
634 MaterialCacheHits +=
Other.MaterialCacheHits;
653 float MaxCompileTime = 0.0f;
655 float TotalCompileTime = 0.0f;
657 float TotalPreprocessTime = 0.0f;
661 float AverageCompileTime = 0.0f;
665 MinCompileTime = FMath::Min(MinCompileTime,
Other.MinCompileTime);
666 MaxCompileTime = FMath::Max(MaxCompileTime,
Other.MaxCompileTime);
667 TotalCompileTime +=
Other.TotalCompileTime;
668 TotalPreprocessTime +=
Other.TotalPreprocessTime;
669 NumCompiled +=
Other.NumCompiled;
672 AverageCompileTime = TotalCompileTime /
static_cast<float>(NumCompiled);
691 UE_DEPRECATED(5.6,
"Use constructor accepting a u64 permutationstring hash instead of a string")
699 PermutationHash = GetPermutationHash(PermutationString);
703 : PermutationHash(PermutationHash)
722 return CityHash64(
reinterpret_cast<const char*
>(*PermutationString), PermutationString.Len() *
sizeof(
TCHAR));
766 float CompileTime = 0.f;
776 Compiled +=
Other.Compiled;
781 CookedDouble +=
Other.Cooked;
788 CompiledDouble +=
Other.CompiledDouble;
789 CookedDouble +=
Other.CookedDouble;
790 CompileTime +=
Other.CompileTime;
792 PermutationCompilations.Append(
Other.PermutationCompilations);
880 bool bMultiProcessAggregated =
false;
909 FName GetAssetTypeName()
const override;
912 int32 GetNumRemainingAssets()
const override;
913 void ProcessAsyncTasks(
bool bLimitExecutionTime =
false)
override;
920 bool bCompilingDuringGame;
926 int32 NumExternalJobs;
950 uint32 NumShaderCompilingThreads;
952 uint32 NumShaderCompilingThreadsDuringGame;
954 int32 MaxShaderJobBatchSize;
956 int32 NumSingleThreadedRunsBeforeRetry;
959 std::atomic<int32> NumDumpedShaderSources = 0;
963 bool bAllowCompilingThroughWorkers;
965 bool bAllowAsynchronousShaderCompiling;
967 bool bUseOnlyDistributedCompilationThread =
false;
969 bool bPromptToRetryFailedShaderCompiles;
971 bool bDebugBreakOnPromptToRetryShaderCompile =
false;
973 bool bLogJobCompletionTimes;
975 float ProcessGameThreadTargetTime;
977 FString ShaderBaseWorkingDirectory;
979 FString AbsoluteShaderBaseWorkingDirectory;
981 FString AbsoluteShaderDebugInfoDirectory;
983 FString ShaderCompileWorkerName;
985 int32 LastNumRemainingAssets = 0;
987 FString WorkerCrashLogBaseDirectory;
993 double WorkersBusyTime;
998 uint64 SuppressedShaderPlatforms;
1001 bool bIsEngineLoopInitialized;
1007 bool bNoShaderCompilation;
1010 bool bAllowForIncompleteShaderMaps;
1023 void CalculateNumberOfCompilingThreads(
int32 NumberOfCores,
int32 NumberOfCoresIncludingHyperthreads);
1050 bool AllTargetPlatformSupportsRemoteShaderCompiling();
1053 void UpdateNumRemainingAssets();
1059 void ReportMemoryUsage();
1102 return bAllowAsynchronousShaderCompiling;
1121 return BuildDistributionController !=
nullptr;
1130 return bUseOnlyDistributedCompilationThread;
1139 return !bIsEngineLoopInitialized;
1149 return ShaderMapJobs.Num() > 0 || PendingFinalizeShaderMaps.Num() > 0;
1166 return bCompilingDuringGame ? NumShaderCompilingThreadsDuringGame : NumShaderCompilingThreads;
1191 NumDumpedShaderSources++;
1201 return (SuppressedShaderPlatforms & (
static_cast<uint64>(1) <<
Platform)) != 0;
1211 return bNoShaderCompilation;
1218 bNoShaderCompilation =
toggle;
1224 bAllowForIncompleteShaderMaps =
toggle;
1236 UE_DEPRECATED(5.6,
"ProcessFinishedJob must now be passed an EShaderCompileJobStatus")
1316 const FString& DebugGroupName,
1320 int32 PermutationId,
1321 const TCHAR* SourceFilename,
1322 const TCHAR* FunctionName,
1325 bool bAllowDevelopmentShaderCompile,
1326 const FString& DebugDescription,
1327 const FString& DebugExtension
1332 const FString& DebugGroupName,
1336 int32 PermutationId,
1337 const TCHAR* SourceFilename,
1338 const TCHAR* FunctionName,
1341 bool bAllowDevelopmentShaderCompile =
true,
1342 const TCHAR* DebugDescription =
nullptr,
1343 const TCHAR* DebugExtension =
nullptr
1356#if WITH_EDITORONLY_DATA
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
uint64 CityHash64(const char *s, uint32 len)
Definition CityHash.cpp:388
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
EGBufferLayout
Definition GBufferInfo.h:107
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
EShaderDebugInfoFlags
Definition ShaderCompilerCore.h:188
EShaderCompilerWorkerType
Definition ShaderCompilerCore.h:780
EShaderCompileJobStatus
Definition ShaderCompilerJobTypes.h:77
ENGINE_API void CompileGlobalShaderMap(bool bRefreshShaderMap=false)
Definition ShaderCompiler.cpp:5533
ENGINE_API void FinishRecompileGlobalShaders()
Definition ShaderCompiler.cpp:5708
ENGINE_API void GetShaderCompilerCurrentMemoryLimits(FShaderCompilerMemoryLimits &limits)
Definition ShaderCompilerThreadRunnable.cpp:61
ENGINE_API const FGuid & GetMaterialShaderMapDDCGuid()
Definition ShaderCompiler.cpp:248
ENGINE_API bool IsShaderJobCacheDDCEnabled()
Definition ShaderCompilerJobCache.cpp:159
ENGINE_API FString SaveGlobalShaderFile(EShaderPlatform Platform, FString SavePath, class ITargetPlatform *TargetPlatform=nullptr)
Definition ShaderCompiler.cpp:5100
ODSCRecompileCommand
Definition ShaderCompiler.h:1469
bool CreateShadersOnLoad()
Definition ShaderCompiler.cpp:529
bool RecompileShaders(const TCHAR *Cmd, FOutputDevice &Ar)
Definition ShaderCompiler.cpp:4515
ENGINE_API bool RecompileChangedShadersForPlatform(const FString &PlatformName)
Definition ShaderCompiler.cpp:5607
bool AreShaderErrorsFatal()
Definition ShaderCompiler.cpp:188
ENGINE_API FShaderCompilerStats * GShaderCompilerStats
Definition ShaderCompilerStats.cpp:51
ENGINE_API bool IsMaterialMapDDCEnabled()
Definition ShaderCompilerJobCache.cpp:181
ENGINE_API void LoadGlobalShadersForRemoteRecompile(FArchive &Ar, EShaderPlatform ShaderPlatform)
Definition ShaderCompiler.cpp:5714
ENGINE_API FShaderCompilingManager * GShaderCompilingManager
Definition ShaderCompiler.cpp:617
ENGINE_API void ShutdownGlobalShaderMap()
Definition ShaderCompiler.cpp:5538
ENGINE_API void RecompileGlobalShaders()
Definition ShaderCompiler.cpp:4467
ENGINE_API void PrecacheComputePipelineStatesForGlobalShaders(ERHIFeatureLevel::Type FeatureLevel, const ITargetPlatform *TargetPlatform)
Definition ShaderCompiler.cpp:4932
void GetOutdatedShaderTypes(TArray< const FShaderType * > &OutdatedShaderTypes, TArray< const FShaderPipelineType * > &OutdatedShaderPipelineTypes, TArray< const FVertexFactoryType * > &OutdatedFactoryTypes)
Definition ShaderCompiler.cpp:4486
ENGINE_API const FGuid & GetGlobalShaderMapDDCGuid()
Definition ShaderCompiler.cpp:242
ENGINE_API void BeginRecompileGlobalShaders(const TArray< const FShaderType * > &OutdatedShaderTypes, const TArray< const FShaderPipelineType * > &OutdatedShaderPipelineTypes, EShaderPlatform ShaderPlatform, const ITargetPlatform *TargetPlatform=nullptr, const FShaderCompilerFlags &InExtraCompilerFlags={})
Definition ShaderCompiler.cpp:5687
ENGINE_API bool ShouldDumpShaderDDCKeys()
Definition ShaderCompiler.cpp:254
ENGINE_API void SetShaderCompilerTargetMemoryLimitInMiB(int32 NewLimit)
Definition ShaderCompilerThreadRunnable.cpp:69
ENGINE_API void VerifyGlobalShaders(EShaderPlatform Platform, bool bLoadedFromCacheFile, const TArray< const FShaderType * > *OutdatedShaderTypes=nullptr, const TArray< const FShaderPipelineType * > *OutdatedShaderPipelineTypes=nullptr)
Definition ShaderCompiler.cpp:4927
ENGINE_API bool ShouldCompileODSCOnlyShaders()
Definition ShaderCompilerJobCache.cpp:188
ENGINE_API const TCHAR * ODSCCmdEnumToString(ODSCRecompileCommand Cmd)
Definition ShaderCompiler.cpp:5666
ENGINE_API bool IsGlobalShaderMapComplete(const TCHAR *TypeNameSubstring=nullptr)
Definition ShaderCompiler.cpp:5230
ENGINE_API void ProcessCookOnTheFlyShaders(bool bReloadGlobalShaders, const TArray< uint8 > &MeshMaterialMaps, const TArray< FString > &MaterialsToLoad, const TArray< uint8 > &GlobalShaderMap)
Definition ShaderCompiler.cpp:4384
ENGINE_API void DumpShaderDDCKeyToFile(const EShaderPlatform InPlatform, bool bWithEditor, const TCHAR *DebugGroupName, const FString &DDCKey)
Definition ShaderCompiler.cpp:273
bool AllowShaderCompiling()
Definition ShaderCore.cpp:1020
const FString & GetShaderDebugInfoPath()
Definition ShaderCore.cpp:908
EShaderCompileJobPriority
Definition ShaderCore.h:803
EShaderPermutationFlags
Definition ShaderPermutation.h:19
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
Definition Archive.h:1208
Definition AsyncCompilationHelpers.h:14
Definition CompactBinary.h:1025
Definition CompactBinaryWriter.h:68
Definition IDelegateInstance.h:14
Definition GlobalShader.h:87
Definition JsonObject.h:23
Definition MaterialShared.h:1518
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition RunnableThread.h:20
virtual void WaitForCompletion()=0
Definition ShaderCompilerJobTypes.h:152
Definition ShaderCompiler.h:375
virtual ~FShaderCompileDistributedThreadRunnable_Interface()
Definition ShaderCompilerDistributed.cpp:76
virtual EShaderCompilerWorkerType GetWorkerType() const override final
Definition ShaderCompiler.h:388
static bool IsSupported()
Definition ShaderCompilerDistributed.cpp:45
TMap< EShaderPlatform, TArray< FString > > PlatformShaderInputFilesCache
Definition ShaderCompiler.h:403
IDistributedBuildController & CachedController
Definition ShaderCompiler.h:402
virtual int32 CompilingLoop() override
Definition ShaderCompilerDistributed.cpp:358
virtual void ForEachPendingJob(const FShaderCompileJobCallback &PendingJobCallback) const override
Definition ShaderCompilerDistributed.cpp:617
Definition ShaderCompiler.h:73
void SubmitJobs(const TArray< FShaderCommonCompileJobPtr > &InJobs)
Definition ShaderCompilerJobCache.cpp:1076
int32 GetPendingJobs(EShaderCompilerWorkerType InWorkerType, EShaderCompileJobPriority InPriority, int32 MinNumJobs, int32 MaxNumJobs, TArray< FShaderCommonCompileJobPtr > &OutJobs)
Definition ShaderCompilerJobCache.cpp:1111
int32 GetNumPendingJobs() const
Definition ShaderCompilerJobCache.cpp:1106
int32 GetNumOutstandingJobs() const
Definition ShaderCompilerJobCache.cpp:1101
void ProcessFinishedJob(FShaderCommonCompileJob *FinishedJob, EShaderCompileJobStatus Status)
Definition ShaderCompilerJobCache.cpp:1081
void RemoveJob(FShaderCommonCompileJob *InJob)
Definition ShaderCompilerJobCache.cpp:1066
int32 RemoveAllPendingJobsWithId(uint32 InId)
Definition ShaderCompilerJobCache.cpp:1071
FShaderCompileJob * PrepareJob(uint32 InId, const FShaderCompileJobKey &InKey, EShaderCompileJobPriority InPriority)
Definition ShaderCompilerJobCache.cpp:1056
void GetCachingStats(FShaderCompilerStats &OutStats) const
Definition ShaderCompilerJobCache.cpp:1091
void AddToCacheAndProcessPending(FShaderCommonCompileJob *FinishedJob)
Definition ShaderCompilerJobCache.cpp:1086
Definition ShaderCompilerJobTypes.h:331
Definition ShaderCompiler.h:151
virtual void OnMachineResourcesChanged()
Definition ShaderCompiler.h:219
virtual bool PrintWorkerMemoryUsage(bool bAllowToWaitForLock=true)
Definition ShaderCompiler.h:176
void WaitForCompletion() const
Definition ShaderCompiler.h:204
void SetPriorityRange(EShaderCompileJobPriority MinPriority, EShaderCompileJobPriority MaxPriority)
Definition ShaderCompilerThreadRunnable.cpp:208
virtual int32 CompilingLoop()=0
bool WorkerStateHeartbeat(uint64 InWorkerStateHash)
Definition ShaderCompilerThreadRunnable.cpp:178
virtual ~FShaderCompileThreadRunnableBase()
Definition ShaderCompiler.h:194
void StartThread()
Definition ShaderCompilerThreadRunnable.cpp:200
int32 MaxPriorityIndex
Definition ShaderCompiler.h:167
virtual void Stop()
Definition ShaderCompiler.h:202
class FShaderCompilingManager * Manager
Definition ShaderCompiler.h:162
FRunnableThread * Thread
Definition ShaderCompiler.h:164
TAtomic< bool > bForceFinish
Definition ShaderCompiler.h:169
virtual void ForEachPendingJob(const FShaderCompileJobCallback &PendingJobCallback) const
Definition ShaderCompiler.h:227
virtual EShaderCompilerWorkerType GetWorkerType() const =0
virtual const TCHAR * GetThreadName() const
Definition ShaderCompiler.h:181
int32 MinPriorityIndex
Definition ShaderCompiler.h:166
virtual FShaderCompileMemoryUsage GetExternalWorkerMemoryUsage()
Definition ShaderCompiler.h:178
virtual uint32 Run()
Definition ShaderCompilerThreadRunnable.cpp:317
Definition ShaderCompiler.h:235
virtual bool PrintWorkerMemoryUsage(bool bAllowToWaitForLock=true) override
Definition ShaderCompilerThreadRunnable.cpp:1168
virtual ~FShaderCompileThreadRunnable()
Definition ShaderCompilerThreadRunnable.cpp:224
virtual FShaderCompileMemoryUsage GetExternalWorkerMemoryUsage() override
Definition ShaderCompilerThreadRunnable.cpp:1188
virtual EShaderCompilerWorkerType GetWorkerType() const override final
Definition ShaderCompiler.h:266
Definition ShaderCompiler.h:347
static void ApplyFetchEnvironment(FShaderMaterialPropertyDefines &DefineData, const FShaderCompilerEnvironment &Environment)
static void ApplyFetchEnvironment(FShaderCompilerDefines &DefineData, const FShaderCompilerEnvironment &Environment)
static ENGINE_API EGBufferLayout FetchGBufferLayout(const FShaderCompilerEnvironment &Environment)
static void MoveFileHelper(const FString &To, const FString &From)
Definition ShaderCompilerUtil.cpp:89
static void ApplyDerivedDefines(FShaderCompilerEnvironment &OutEnvironment, FShaderCompilerEnvironment *SharedEnvironment, const EShaderPlatform Platform)
static void AppendGBufferDDCKeyString(const EShaderPlatform Platform, FString &KeyString)
static void AppendGBufferDDCKey(const EShaderPlatform Platform, FShaderKeyGenerator &KeyGen)
static void ApplyFetchEnvironment(FShaderLightmapPropertyDefines &DefineData, const FShaderCompilerEnvironment &Environment)
static ENGINE_API FGBufferParams FetchGBufferParamsRuntime(EShaderPlatform Platform, EGBufferLayout Layout)
Definition ShaderGenerationUtil.cpp:2293
static ENGINE_API void GenerateBrdfHeaders(const FName &ShaderFormat)
static FGBufferParams FetchGBufferParamsPipeline(EShaderPlatform Platform, EGBufferLayout Layout)
static ENGINE_API void WriteGBufferInfoAutogen(EShaderPlatform TargetPlatform, ERHIFeatureLevel::Type FeatureLevel)
static class FArchive * CreateFileHelper(const FString &Filename)
Definition ShaderCompilerUtil.cpp:63
static void ApplyFetchEnvironment(FShaderGlobalDefines &DefineData, const FShaderCompilerEnvironment &Environment, const EShaderPlatform Platform)
static ENGINE_API void GenerateBrdfHeaders(const EShaderPlatform Platform)
static void DeleteFileHelper(const FString &Filename)
Definition ShaderCompilerUtil.cpp:131
static void ExecuteShaderCompileJob(FShaderCommonCompileJob &Job)
Definition ShaderCompilerUtil.cpp:20
Definition ShaderCore.h:402
Definition ShaderCompiler.h:894
const FString & GetAbsoluteShaderDebugInfoDirectory() const
Definition ShaderCompiler.h:1194
friend class FShaderCompileFASTBuildThreadRunnable
Definition ShaderCompiler.h:902
bool ShouldDisplayCompilingNotification() const
Definition ShaderCompiler.h:1094
ENGINE_API ~FShaderCompilingManager()
Definition ShaderCompiler.cpp:1112
ENGINE_API int32 GetNumOutstandingJobs() const
Definition ShaderCompiler.cpp:1346
bool HasShaderJobs() const
Definition ShaderCompiler.h:1147
EDumpShaderDebugInfo
Definition ShaderCompiler.h:1175
ENGINE_API void GetLocalStats(FShaderCompilerStats &OutStats) const
Definition ShaderCompiler.cpp:2369
bool IsCompiling() const
Definition ShaderCompiler.h:1109
void SetAllowForIncompleteShaderMaps(bool toggle)
Definition ShaderCompiler.h:1222
ENGINE_API FShaderCompileJob * PrepareShaderCompileJob(uint32 Id, const FShaderCompileJobKey &Key, EShaderCompileJobPriority Priority)
Definition ShaderCompiler.cpp:1519
ENGINE_API void SubmitJobs(TArray< FShaderCommonCompileJobPtr > &NewJobs, const FString MaterialBasePath, FString PermutationString=FString(""))
Definition ShaderCompiler.cpp:1444
static ENGINE_API FName GetStaticAssetTypeName()
Definition ShaderCompiler.cpp:1286
ENGINE_API void FinishCompilation(const TCHAR *MaterialName, const TArray< int32 > &ShaderMapIdsToFinishCompiling)
Definition ShaderCompiler.cpp:2678
ENGINE_API FString CreateShaderDebugInfoPath(const FShaderCompilerInput &ShaderCompilerInput) const
Definition ShaderCompiler.cpp:1393
int32 GetNumLocalWorkers() const
Definition ShaderCompiler.h:1164
bool AllowAsynchronousShaderCompiling() const
Definition ShaderCompiler.h:1100
ENGINE_API void OnMachineResourcesChanged(int32 NumberOfCores, int32 NumberOfCoresIncludingHyperthreads)
Definition ShaderCompiler.cpp:1254
void SkipShaderCompilation(bool toggle)
Definition ShaderCompiler.h:1214
ENGINE_API int32 GetNumPendingJobs() const
Definition ShaderCompiler.cpp:1341
ENGINE_API FShaderCompilerMemoryLimits GetCurrentMemoryLimits() const
ENGINE_API EDumpShaderDebugInfo GetDumpShaderDebugInfo() const
Definition ShaderCompiler.cpp:1351
void SuppressWarnings(const EShaderPlatform Platform)
Definition ShaderCompiler.h:1204
void ProcessFinishedJob(FShaderCommonCompileJob *FinishedJob)
Definition ShaderCompiler.h:1237
ENGINE_API void FinishAllCompilation() override
Definition ShaderCompiler.cpp:2727
bool IgnoreAllThrottling() const
Definition ShaderCompiler.h:1137
ENGINE_API bool ShouldRecompileToDumpShaderDebugInfo(const FShaderCompileJob &Job) const
Definition ShaderCompiler.cpp:1398
ENGINE_API FShaderCompileMemoryUsage GetExternalMemoryUsage()
Definition ShaderCompiler.cpp:2378
bool AreWarningsSuppressed(const EShaderPlatform Platform) const
Definition ShaderCompiler.h:1199
void SetExternalJobs(int32 NumJobs)
Definition ShaderCompiler.h:1169
ENGINE_API FShaderPipelineCompileJob * PreparePipelineCompileJob(uint32 Id, const FShaderPipelineCompileJobKey &Key, EShaderCompileJobPriority Priority)
Definition ShaderCompiler.cpp:1537
bool IsShaderCompilationSkipped() const
Definition ShaderCompiler.h:1209
ENGINE_API void ProcessAsyncResults(float TimeSlice, bool bBlockOnGlobalShaderCompletion)
Definition ShaderCompiler.cpp:2783
bool IsRemoteCompilingEnabled() const
Definition ShaderCompiler.h:1119
ENGINE_API EShaderDebugInfoFlags GetDumpShaderDebugInfoFlags() const
Definition ShaderCompiler.cpp:1361
bool IsExclusiveDistributedCompilingEnabled() const
Definition ShaderCompiler.h:1128
ENGINE_API void Shutdown() override
Definition ShaderCompiler.cpp:2356
ENGINE_API void DumpDebugInfoForEachPendingJob(const FShaderCompileJobCallback &PendingJobCallback) const
Definition ShaderCompiler.cpp:2765
ENGINE_API void SetTargetMemoryLimitInMiB(int32 NewLimit)
ENGINE_API void CancelCompilation(const TCHAR *MaterialName, const TArray< int32 > &ShaderMapIdsToCancel)
Definition ShaderCompiler.cpp:2629
ENGINE_API FShaderCompilingManager()
Definition ShaderCompiler.cpp:727
int32 GetNumRemainingJobs() const
Definition ShaderCompiler.h:1156
static bool IsShaderCompilerWorkerRunning(FProcHandle &WorkerHandle)
Definition ShaderCompiler.cpp:2909
ENGINE_API void OnDistributedShaderCompilingChanged()
Definition ShaderCompiler.cpp:1269
ENGINE_API void PrintStats()
Definition ShaderCompiler.cpp:2362
void IncrementNumDumpedShaderSources()
Definition ShaderCompiler.h:1189
ENGINE_API bool IsCompilingShaderMap(uint32 Id)
Definition ShaderCompiler.cpp:1499
Definition ShaderCompilerJobCache.cpp:581
Definition ShaderKeyGenerator.h:29
Definition ShaderCompilerJobTypes.h:419
Definition VertexFactory.h:314
Definition IConsoleManager.h:387
Definition ArrayView.h:139
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SparseArray.h:524
Definition UniquePtr.h:107
Definition MaterialInterface.h:296
Type
Definition SceneTypes.h:132
@ High
Definition SceneTypes.h:134
Type
Definition RHIFeatureLevel.h:20
@ SM5
Definition RHIFeatureLevel.h:42
Definition IAssetCompilingManager.h:15
Definition AnalyticsEventAttribute.h:48
Definition GBufferInfo.h:294
Definition ShaderCompiler.h:1417
TArray< FString > ShaderTypeNames
Definition ShaderCompiler.h:1437
FString RequestHash
Definition ShaderCompiler.h:1443
FString PipelineName
Definition ShaderCompiler.h:1434
int32 PermutationId
Definition ShaderCompiler.h:1440
ERHIFeatureLevel::Type FeatureLevel
Definition ShaderCompiler.h:1422
FODSCRequestPayload()
Definition ShaderCompiler.h:1445
FString MaterialName
Definition ShaderCompiler.h:1428
EMaterialQualityLevel::Type QualityLevel
Definition ShaderCompiler.h:1425
EShaderPlatform ShaderPlatform
Definition ShaderCompiler.h:1419
ENGINE_API friend FArchive & operator<<(FArchive &Ar, FODSCRequestPayload &Elem)
Definition ODSCThread.cpp:46
FString VertexFactoryName
Definition ShaderCompiler.h:1431
Definition AndroidPlatformProcess.h:13
Definition ShaderCompilerJobTypes.h:308
Definition ShaderCompiler.h:136
uint64 PhysicalMemory
Definition ShaderCompiler.h:144
uint64 VirtualMemory
Definition ShaderCompiler.h:140
Definition ShaderCompilerCore.h:637
Definition ShaderCompiler.h:420
double AccumulatedLocalWorkerIdleTime
Definition ShaderCompiler.h:427
Definition ShaderMaterial.h:307
Definition ShaderCore.h:544
Definition ShaderCompilerThreadRunnable.cpp:76
Definition ShaderCompiler.h:602
int32 NumMaterialsCooked
Definition ShaderCompiler.h:605
Definition ShaderCompiler.h:884
uint64 CurrentLimit
Definition ShaderCompiler.h:885
uint64 BaseLimit
Definition ShaderCompiler.h:886
Definition ShaderCompilerCore.h:491
Definition ShaderCompiler.h:680
static PRAGMA_ENABLE_DEPRECATION_WARNINGS uint64 GetPermutationHash(const FString &PermutationString)
Definition ShaderCompiler.h:720
FShaderCompilerSinglePermutationStat & operator=(FShaderCompilerSinglePermutationStat &&)=default
FShaderCompilerSinglePermutationStat & operator=(const FShaderCompilerSinglePermutationStat &)=default
FShaderCompilerSinglePermutationStat(uint64 PermutationHash, uint32 Compiled, uint32 Cooked)
Definition ShaderCompiler.h:702
PRAGMA_DISABLE_DEPRECATION_WARNINGS FShaderCompilerSinglePermutationStat(FShaderCompilerSinglePermutationStat &&)=default
FShaderCompilerSinglePermutationStat(const FShaderCompilerSinglePermutationStat &)=default
Definition ShaderCompiler.h:833
FString BatchLabel
Definition ShaderCompiler.h:835
int32 BatchSize
Definition ShaderCompiler.h:836
uint32 WorkerId
Definition ShaderCompiler.h:837
FShaderCompileWorkerDiagnostics WorkerDiagnosticsOutput
Definition ShaderCompiler.h:834
Definition ShaderCompiler.h:799
ENGINE_API void RegisterCookedShaders(uint32 NumCooked, float CompileTime, EShaderPlatform Platform, const FString MaterialPath, FString PermutationString=FString(""))
Definition ShaderCompilerStats.cpp:1087
void AddDDCHit(uint32 NumHits)
Definition ShaderCompilerStats.cpp:1178
uint32 GetDDCHits() const
Definition ShaderCompilerStats.cpp:1183
void RegisterAssignedJob(FShaderCommonCompileJob &InOutJob)
Definition ShaderCompilerStats.cpp:904
void IncrementMaterialTranslated(double InTotalTime, double InTranslationOnlyTime, double InSerializeTime)
Definition ShaderCompilerStats.cpp:1072
EExecutionType
Definition ShaderCompiler.h:827
void RegisterWorkerDiagnostics(const FShaderCompileWorkerDiagnostics &InDiagnostics, FString &&InBatchLabel, int32 InBatchSize, uint32 InWorkerId)
Definition ShaderCompilerStats.cpp:1029
const TSparseArray< ShaderCompilerStats > & GetShaderCompilerStats()
Definition ShaderCompiler.h:809
void RegisterJobBatch(int32 NumJobs, EExecutionType ExecType)
Definition ShaderCompilerStats.cpp:1002
ENGINE_API void GatherAnalytics(const FString &BaseName, TArray< FAnalyticsEventAttribute > &Attributes)
Definition ShaderCompilerStats.cpp:471
void RegisterLocalWorkerIdleTime(double IdleTime)
Definition ShaderCompilerStats.cpp:886
void RegisterNewPendingJob(FShaderCommonCompileJob &InOutJob)
Definition ShaderCompilerStats.cpp:894
void IncrementMaterialCacheHit()
Definition ShaderCompilerStats.cpp:1081
ENGINE_API uint32 GetTotalShadersCompiled()
Definition ShaderCompilerStats.cpp:552
void SetMultiProcessAggregated()
Definition ShaderCompiler.h:818
void AddDDCMiss(uint32 NumMisses)
Definition ShaderCompilerStats.cpp:1168
ENGINE_API void ReadFromCompactBinary(FCbObjectView &Reader)
Definition ShaderCompilerStats.cpp:788
uint32 GetDDCMisses() const
Definition ShaderCompilerStats.cpp:1173
ENGINE_API void WriteStatSummary()
Definition ShaderCompilerStats.cpp:258
ENGINE_API void WriteToCompactBinary(FCbWriter &Writer)
Definition ShaderCompilerStats.cpp:703
ENGINE_API TSharedPtr< FJsonObject > ToJson()
Definition ShaderCompilerStats.cpp:659
double GetTimeShaderCompilationWasActive()
Definition ShaderCompilerStats.cpp:1188
void IncrementMaterialCook()
Definition ShaderCompilerStats.cpp:1066
void RegisterDistributedBuildStats(const FDistributedBuildStats &InStats)
Definition ShaderCompilerStats.cpp:1022
void RegisterFinishedJob(FShaderCommonCompileJob &InOutJob)
Definition ShaderCompilerStats.cpp:917
ENGINE_API void RegisterCompiledShaders(uint32 NumPermutations, EShaderPlatform Platform, const FString MaterialPath, FString PermutationString=FString(""))
Definition ShaderCompilerStats.cpp:1127
ENGINE_API void WriteStats(class FOutputDevice *Ar=nullptr)
Definition ShaderCompilerStats.cpp:53
Definition ShaderMaterial.h:17
Definition ShaderCompilerJobCache.cpp:378
Definition ShaderMaterial.h:72
Definition ShaderCompilerJobTypes.h:23
Definition ShaderMaterial.h:95
Definition ShaderCompilerJobTypes.h:397
Definition ShaderCompiler.h:1481
ENGINE_API FShaderRecompileData(const FString &InPlatformName, TArray< FString > *OutModifiedFiles, TArray< uint8 > *OutMeshMaterialMaps, TArray< uint8 > *OutGlobalShaderMap)
TArray< FString > MaterialsToLoad
Definition ShaderCompiler.h:1502
ENGINE_API FShaderRecompileData(const FString &InPlatformName, EShaderPlatform InShaderPlatform, ODSCRecompileCommand InCommandType, TArray< FString > *OutModifiedFiles, TArray< uint8 > *OutMeshMaterialMaps, TArray< uint8 > *OutGlobalShaderMap)
TArray< FODSCRequestPayload > ShadersToRecompile
Definition ShaderCompiler.h:1514
TArray< uint8 > * MeshMaterialMaps
Definition ShaderCompiler.h:1499
TArray< FString > * ModifiedFiles
Definition ShaderCompiler.h:1496
FShaderRecompileData()
Definition ShaderCompiler.h:1524
FString ShaderTypesToLoad
Definition ShaderCompiler.h:1505
ENGINE_API friend FArchive & operator<<(FArchive &Ar, FShaderRecompileData &Elem)
ERHIFeatureLevel::Type FeatureLevel
Definition ShaderCompiler.h:1488
ODSCRecompileCommand CommandType
Definition ShaderCompiler.h:1508
EMaterialQualityLevel::Type QualityLevel
Definition ShaderCompiler.h:1490
FString PlatformName
Definition ShaderCompiler.h:1483
TArray< uint8 > * GlobalShaderMap
Definition ShaderCompiler.h:1511
EShaderPlatform ShaderPlatform
Definition ShaderCompiler.h:1486
FShaderCompilerFlags ExtraCompilerFlags
Definition ShaderCompiler.h:1493
TArray< TStrongObjectPtr< UMaterialInterface > > * LoadedMaterialsToRecompile
Definition ShaderCompiler.h:1517
Definition ShaderCompiler.h:747
uint32 Compiled
Definition ShaderCompiler.h:754
Definition ShaderCore.h:186
Definition ShaderCompiler.h:647
Definition IAssetCompilingManager.h:25