Replaced nullptr_t with TYPE_OF_NULLPTR to prevent error reporting in IDE's utilizing clangd like QT Creator
#rb steve.robb
#jira UE-153483
#preflight 62962084d86c0bf739afa06c
[CL 20436963 by Steve Robb in ue5-main branch]
When worker threads are heavily utilized by slow tasks, ParallelFor may execute most of the work on the calling thread before most (or any) of its tasks have executed. Allowing these tasks to execute later is wasteful because each task executed on a background worker pays about 0.3us to lower and then raise thread priority. Canceling the tasks can avoid that cost when paired with an upcoming change to the scheduler, which saves about 40us for each call to ParallelFor in a heavily-utilized pool of 126 worker threads.
#preflight 62587f45010ebc5d4e89d347
#rb Andriy.Tylychko, Arne.Schober
[CL 20392225 by Devin Doucette in ue5-main branch]
1) to use "inline" priority publicly, which is often helpful for perf
2) to use Tasks System with named threads (only if "tasks integration" is enabled - `TASKGRAPH_NEW_FRONTEND`)
#preflight 6271491cfe09c0cfbc3c5b69
[CL 20027004 by Andriy Tylychko in ue5-main branch]
also includes the fix for parallel animation evaluation to work correctly with task retraction that is globally enabled by these change. animation fix was reviewed by evgenii.babinets
#rb francis.hurteau, danny.couture
#preflight 6268163bdd35c0d6cab2c267
[CL 19924083 by Andriy Tylychko in ue5-main branch]
Where Revival tries to revert any Cancellation as if it never happened. If the canceled Task was already executed by the Scheduler the revival will fail
(the Task will not be relaunched if revival fails). And where Expediting tries to fast track a task if the result is needed immediately on the current Context.
#preflight 6230cb60f41c515c3704cf08
#RB Francis.Hurteau
[CL 19388819 by Arne Schober in ue5-main branch]
- Only the first 20 bytes of the RawHash field in the header will be consumed.
- In a subsequent change, the last 12 bytes of the RawHash field will be set to zero for new compressed buffers.
- Leveraged composite buffers to avoid performing an extra copy of compressed blocks.
- Updated FBlockEncoder::Compress to always use ParallelFor.
- Added ParallelForWithPreWorkWithTaskContext.
#preflight 622ba3869b7ce6ea5d44b7ab
#rb Zousar.Shaker
#rnx
[CL 19360767 by Devin Doucette in ue5-main branch]
- This restore proper prioritization support that was lost with the new task backend while keeping a sane number of threads
- This helps to prevent latency sensitive tasks from going to efficient cores for Alder Lake
- This fixes performance problems caused by high prio task getting picked up by background threads and being preempted under high-load, causing FPS hiccups.
- SetThreadPriority takes ~20us on average on Windows System and is only paid for background work
- Longer SetThreadPriority can be expected when lowering the priority of a task under heavy load, which might cause the caller to be preempted right away, this is expected.
- Can be A/B tested from command-line with -TaskGraphUseDynamicPrioritization=1/0
#rb Andriy.Tylychko, Arne.Schober, Stefan.Boberg
#preflight 622786a7e83598518f3745a1
[CL 19314282 by danny couture in ue5-main branch]
Also staring to remove some of the legacy TaskBackend Code to reduce the maintenence effort.
#preflight 6206a235c663666c89aa0e96
[CL 18955688 by Arne Schober in ue5-main branch]
#ushell-cherrypick of 18452559 by arne.schober
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 18452544 via CL 18452545 via CL 18452554 via CL 18883856 via CL 18883880 via CL 18883884 via CL 18884166 via CL 18884239
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v910-18824042)
[CL 18884913 by andriy tylychko in ue5-main branch]
[FYI] Andriy.Tylychko, Francis.Hurteau, Mihnea.Balta
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 18764566 via CL 18764592 via CL 18764599 via CL 18765175 via CL 18765413
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18765421 by arne schober in ue5-main branch]
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 18719672 via CL 18719675 via CL 18719677 via CL 18720056 via CL 18720138
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18720140 by arne schober in ue5-main branch]
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 18713882 via CL 18713934 via CL 18713942 via CL 18714811 via CL 18715173
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18716923 by arne schober in ue5-main branch]
#ROBOMERGE-AUTHOR: arne.schober
#ROBOMERGE-SOURCE: CL 18706010 via CL 18706012 via CL 18706014 via CL 18706159 via CL 18706184 via CL 18706255
#ROBOMERGE-BOT: UE5 (Release-Engine-Test -> Main) (v903-18687472)
[CL 18706278 by arne schober in ue5-main branch]