FParkingLot is a framework for building locks and other synchronization primitives, based on WTF::ParkingLot from WebKit.
FMutex is a one-byte mutex that is neither fair nor recursive, based on WTF::Lock from WebKit.
TUniqueLock and TDynamicUniqueLock are generic types to manage mutex locking, based on std::unique_lock.
#preflight 63fe76cbae54ee4ce9db2ca6
#rb Andriy.Tylychko, Phil.Pizlo
[CL 24552008 by devin doucette in ue5-main branch]
* fixed UE-166680
* refactored how task traces are used
* refactored task traces analysis
* added task size parameter
* added an ability to select which tasks to show in the tasks table: "alive", "waiting for prerequisites", "queued", "executing", "waiting for nested" and "completed"
#jira UE-166680
#preflight 63e650dd8917c5deac6fdb23
#preflight 63f36554500c05a6240f2857
[CL 24317221 by andriy tylychko in ue5-main branch]
When launching a task, the metadata stack is captured at the calling site, and reapplied as a scope as soon as the task begins to execute. The macro that performed this reapplication was misnamed and didn't imply that it was actually creating a scope. This change removes the macro and adds a custom scope type which can be embedded in the inherited context for the task.
#rb ionut.matasaru, andriy.tylychko
#jira UE-167069
#preflight 63e64e153c247ccd13e986e4
[CL 24118353 by Johan Berg in ue5-main branch]
MemQuery plugin. LLM tracking of Assets and AssetClasses if enabled.
Memory usage queries to display memory usage for assets and classes with group breakdowns amongst other uses.
Modification to LowLevelMemTracker to support asset and assetclass tracking.
#rb Matt.Peters
[CL 23599453 by simon orr in ue5-main branch]
cleaned recent removal of AudioThread
removed `StatsThread` and `AudioThread` from ENamedThreads
renamed FPlatformAffinity::GetAudioThreadMask() to GetAudioRenderThreadMask() as it's still used for AudioRenderThread
#preflight 6393383ac709c7275629d513
#rb francis.hurteau
#preflight 63970ef35624e6da5e3f4d5e
[CL 23476743 by Andriy Tylychko in ue5-main branch]
grouped inherited LLM tag, mem tag and trace metadata into FInheritedContext to simplify their usage, avoid forgetting using all of them together, and to hide the ugly conditional compilation. Added FInheritedContext to higher level tasks instead of the low-level tasks to allow batch task launch to capture the inherited context once per batch
#rb ionut.matasaru
#preflight 633c47792f4bf32d31687192
[CL 22331272 by Andriy Tylychko in ue5-main branch]
This change includes significant refactor work performed in //UE5/Dev-ParallelRendering. A brief summary of the work is as follows:
Refactored RHI command lists
- Removal of the "immediate" async compute command list
- Introduced an "active pipe" on each command list, allowing RHICmdLists to record work for either graphics or async compute. Pipes can be selected using the SwitchPipeline() function, or the FRHICommandListScopedPipeline helper.
- New explicit command list submission RHI API (RHIFinalizeContext, RHISubmitCommandLists). The IRHICommandContextContainer type has been removed.
- Explicit GPU submission is automatically appended to the immediate command list when it is dispatched to the RHI thread.
Platform RHI implementations
- The new submission API has been implemented across all platforms. Some platforms required a significant refactor.
#rb Mihnea.Balta,Kenzo.Terelst
#jira UE-139550
#preflight 6332e3641003050806d802ef
[CL 22239063 by luke thatcher in ue5-main branch]
thread-safe delegates are not zero-initializable and so can't be used as global vars because they are vulnerable to static initialization order fiasco.
#jira UE-163668
#rb steve.robb
#preflight 632462db3752284a3179ec02
[CL 22094531 by Andriy Tylychko in ue5-main branch]