18#define PIPELINE_CACHE_DEFAULT_ENABLED (!WITH_EDITOR)
26#define PSO_COOKONLY_DATA (WITH_EDITOR || IS_PROGRAM)
62 KeyHash ^= (Key.FillMode << 8);
63 KeyHash ^= Key.CullMode;
65 KeyHash ^= Key.bAllowMSAA ? 0x694ea601 : 0;
358 UE_DEPRECATED(5.6,
"Do not call this function, please instead use the OutStats parameter in CacheGraphicsPSO/CacheComputePSO")
415 static void ClearOSPipelineCache();
416 static bool ShouldEnableFileCache();
436 static FString UserCacheKey;
438 static class FPipelineCacheFile* GetPipelineCacheFileFromKey(
const FString& PSOCacheKey)
453 static bool FileCacheEnabled;
456 RHI_API static bool GameUsageMaskSet;
459 RHI_API static bool LogNewPSOsToConsoleAndCSV;
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define DECLARE_STATS_GROUP(GroupDesc, GroupId, GroupCat)
Definition Stats.h:689
#define DECLARE_DWORD_ACCUMULATOR_STAT_EXTERN(CounterName, StatId, GroupId, API)
Definition Stats.h:684
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
void Init()
Definition LockFreeList.h:4
const bool
Definition NetworkReplayStreaming.h:178
RHI_API const uint32 FPipelineCacheFileFormatCurrentVersion
Definition PipelineFileCache.cpp:94
bool(* FPSOMaskComparisonFn)(uint64 ReferenceMask, uint64 PSOMask)
Definition PipelineFileCache.h:295
ERayTracingPipelineCacheFlags
Definition PipelineStateCache.h:40
EShaderFrequency
Definition RHIDefinitions.h:202
@ SF_RayGen
Definition RHIDefinitions.h:209
@ MaxSimultaneousRenderTargets
Definition RHIDefinitions.h:287
ERasterizerDepthClipMode
Definition RHIDefinitions.h:380
ERenderTargetStoreAction
Definition RHIDefinitions.h:1272
ETextureCreateFlags
Definition RHIDefinitions.h:1091
ERenderTargetLoadAction
Definition RHIDefinitions.h:1253
EPrimitiveType
Definition RHIDefinitions.h:822
EVRSShadingRate
Definition RHIDefinitions.h:860
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
Definition Archive.h:1208
Definition RHIResources.h:4572
Definition PipelineFileCache.cpp:1855
Definition PipelineFileCache.h:313
static RHI_API void Shutdown()
Definition PipelineFileCache.cpp:3282
static void SetNewPSOConsoleAndCSVLogging(bool bEnabled)
Definition PipelineFileCache.h:411
static RHI_API void CacheComputePSO(uint32 RunTimeHash, FRHIComputeShader const *Initializer, bool bWasPSOPrecached, FPipelineStateStats **OutStats=nullptr)
Definition PipelineFileCache.cpp:3634
PSOOrder
Definition PipelineFileCache.h:323
static RHI_API bool LoadPipelineFileCacheInto(FString const &Path, TSet< FPipelineCacheFileFormatPSO > &PSOs)
Definition PipelineFileCache.cpp:4099
static RHI_API bool LogPSODetails()
Definition PipelineFileCache.cpp:3103
static RHI_API FPipelineStateLoggedEvent & OnPipelineStateLogged()
Definition PipelineFileCache.cpp:4094
static bool IsGameUsageMaskSet()
Definition PipelineFileCache.h:404
static RHI_API bool ReportNewPSOs()
Definition PipelineFileCache.cpp:3090
static RHI_API void FetchPSODescriptors(const FString &PSOCacheKey, TDoubleLinkedList< FPipelineCacheFileFormatPSORead * > &LoadedBatch)
Definition PipelineFileCache.cpp:3911
static RHI_API bool SavePipelineFileCache(SaveMode Mode)
Definition PipelineFileCache.cpp:3421
SaveMode
Definition PipelineFileCache.h:317
static uint64 GetGameUsageMask()
Definition PipelineFileCache.h:403
static RHI_API void RegisterPSOCompileFailure(uint32 RunTimeHash, FGraphicsPipelineStateInitializer const &Initializer)
Definition PipelineFileCache.cpp:3810
static RHI_API int32 GetTotalPSOCount(const FString &PSOCacheKey)
Definition PipelineFileCache.cpp:3248
static RHI_API bool IsPipelineFileCacheEnabled()
Definition PipelineFileCache.cpp:3064
static RHI_API uint64 SetGameUsageMaskWithComparison(uint64 GameUsageMask, FPSOMaskComparisonFn InComparisonFnPtr)
Definition PipelineFileCache.cpp:3260
static RHI_API void CacheRayTracingPSO(const FRayTracingPipelineStateInitializer &Initializer, ERayTracingPipelineCacheFlags Flags)
Definition PipelineFileCache.cpp:3716
static RHI_API bool LogPSOtoFileCache()
Definition PipelineFileCache.cpp:3077
static RHI_API bool OpenUserPipelineFileCache(const FString &Key, const FString &CacheName, EShaderPlatform Platform, FGuid &OutGameFileGuid)
Definition PipelineFileCache.cpp:3344
static RHI_API void CloseUserPipelineFileCache()
Definition PipelineFileCache.cpp:3378
static RHI_API void BroadcastNewPSOsDelegate()
Definition PipelineFileCache.cpp:3516
static RHI_API FPipelineStateStats * RegisterPSOStats(uint32 RunTimeHash)
Definition PipelineFileCache.cpp:3853
static RHI_API bool OpenPipelineFileCache(const FString &Key, const FString &CacheName, EShaderPlatform Platform, FGuid &OutGameFileGuid)
Definition PipelineFileCache.cpp:3310
static RHI_API bool MergePipelineFileCaches(FString const &PathA, FString const &PathB, FPipelineFileCacheManager::PSOOrder Order, FString const &OutputPath)
Definition PipelineFileCache.cpp:4229
static RHI_API uint32 NumPSOsLogged()
Definition PipelineFileCache.cpp:4056
static RHI_API void PreCompileComplete()
Definition PipelineFileCache.cpp:3158
static RHI_API bool HasPipelineFileCache(const FString &PSOCacheKey)
Definition PipelineFileCache.cpp:3304
static RHI_API void CacheGraphicsPSO(uint32 RunTimeHash, FGraphicsPipelineStateInitializer const &Initializer, bool bWasPSOPrecached, FPipelineStateStats **OutStats=nullptr)
Definition PipelineFileCache.cpp:3543
static RHI_API void GetOrderedPSOHashes(const FString &PSOCacheKey, TArray< FPipelineCachePSOHeader > &PSOHashes, PSOOrder Order, int64 MinBindCount, TSet< uint32 > const &AlreadyCompiledHashes)
Definition PipelineFileCache.cpp:3894
static RHI_API bool SavePipelineFileCacheFrom(uint32 GameVersion, EShaderPlatform Platform, FString const &Path, const TSet< FPipelineCacheFileFormatPSO > &PSOs)
Definition PipelineFileCache.cpp:4111
Definition RHIResources.h:1018
Definition RHIResources.h:984
Definition RHIShaderBindingLayout.h:72
Definition ScopeRWLock.h:199
Definition RHIResources.h:5023
Definition SecureHash.h:226
Definition EnumAsByte.h:22
Definition UnrealString.h.inl:34
Definition MpscQueue.h:18
Definition SharedPointer.h:692
Definition StringBuilder.h:509
Definition UniquePtr.h:107
Definition SceneManagement.h:73
@ false
Definition radaudio_common.h:23
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition PipelineFileCache.h:304
FPSOUsageData()
Definition PipelineFileCache.h:305
uint64 UsageMask
Definition PipelineFileCache.h:307
uint16 EngineFlags
Definition PipelineFileCache.h:309
uint32 PSOHash
Definition PipelineFileCache.h:308
FPSOUsageData(uint32 InPSOHash, uint64 InUsageMask, uint16 InEngineFlags)
Definition PipelineFileCache.h:306
Definition PipelineFileCache.h:29
float SlopeScaleDepthBias
Definition PipelineFileCache.h:34
TEnumAsByte< ERasterizerCullMode > CullMode
Definition PipelineFileCache.h:36
FPipelineFileCacheRasterizerState()
Definition PipelineFileCache.h:30
friend uint32 GetTypeHash(const FPipelineFileCacheRasterizerState &Key)
Definition PipelineFileCache.h:59
FPipelineFileCacheRasterizerState & operator=(FRasterizerStateInitializerRHI const &Other)
Definition PipelineFileCache.h:40
bool bAllowMSAA
Definition PipelineFileCache.h:38
float DepthBias
Definition PipelineFileCache.h:33
RHI_API FString ToString() const
Definition PipelineFileCache.cpp:431
RHI_API void FromString(const FStringView &Src)
Definition PipelineFileCache.cpp:443
friend RHI_API FArchive & operator<<(FArchive &Ar, FPipelineFileCacheRasterizerState &RasterizerStateInitializer)
Definition PipelineFileCache.cpp:414
FPipelineFileCacheRasterizerState(FRasterizerStateInitializerRHI const &Other)
Definition PipelineFileCache.h:31
ERasterizerDepthClipMode DepthClipMode
Definition PipelineFileCache.h:37
TEnumAsByte< ERasterizerFillMode > FillMode
Definition PipelineFileCache.h:35
Definition PipelineFileCache.h:80
~FPipelineStateStats()
Definition PipelineFileCache.h:90
int64 FirstFrameUsed
Definition PipelineFileCache.h:98
FPipelineStateStats()
Definition PipelineFileCache.h:81
static RHI_API void UpdateStats(FPipelineStateStats *Stats)
Definition PipelineFileCache.cpp:244
int64 LastFrameUsed
Definition PipelineFileCache.h:99
friend FArchive & operator<<(FArchive &Ar, FPipelineStateStats &Info)
Definition PipelineFileCache.cpp:282
uint64 CreateCount
Definition PipelineFileCache.h:100
int64 TotalBindCount
Definition PipelineFileCache.h:101
uint32 PSOHash
Definition PipelineFileCache.h:102